|
FEDEM Solver
R8.0
Source code of the dynamics solver
|
Module for general rectangular matrices with disk storage,. More...
Data Types | |
| type | diskmatrixtype |
| Data type representing a rectangular matrix with disk storage. More... | |
| interface | dmmattimesvec |
| Multiplies a disk matrix with a given vector. More... | |
Functions/Subroutines | |
| integer function | dmgetswapsize () |
| Returns requested size of one swap section from command-line option. More... | |
| subroutine | dmnullify (this) |
| Initializes a disk matrix object. More... | |
| subroutine | dmwrite (this, lpu, name) |
| Writes out the content of a disk matrix. More... | |
| subroutine | dmopen (this, fileName, fileChkSum, nRows, nCols, status, err, nColSwap, swapSize, wantTag) |
| Opens a disk matrix file for ReadOnly operations. More... | |
| integer(i8) function | dmsize (this, iDim) |
| Returns the size of the given disk matrix. More... | |
| subroutine | dmclose (this, err) |
| Closes the disk matrix file and releases the associated swap array. More... | |
| subroutine, private | dmgetaddress (this, rInd, cInd, section, index, err) |
| Gets swap section number and local array index for matrix element. More... | |
| subroutine, private | dmswap (this, newSection, err) |
| Writes current section to disk and reads a new one into core. More... | |
| subroutine, private | dmsinglecast (this, ielSwap, nelSwap) |
| Casts the in-core matrix elements from double to single precision. More... | |
| real(sp) function | dmgetvalue (this, rInd, cInd, err) |
| Returns the value of a matrix element. More... | |
| real(sp) function, dimension(:,:), pointer | dmgetswapsecptr (this, cInd, err) |
| Returns a pointer to a matrix containing a swap section. More... | |
| real(sp) function, dimension(:), pointer | dmgetcolptr (this, cInd, err) |
| Returns a pointer to column cInd of the given disk matrix. More... | |
| subroutine | dmgetcol (this, cInd, col, err) |
| Gets a column of the given disk matrix. More... | |
| subroutine | dmgetrow (this, rInd, row, err) |
| Gets a row of the given disk matrix. More... | |
| subroutine, private | dmmattimesvec_sp (this, xVec, yVec, err, doInitialize) |
| Multiplies a disk matrix with a given single precision vector. More... | |
| subroutine, private | dmmattimesvec_dp (this, xVec, yVec, err, doInitialize) |
| Multiplies a disk matrix with a given double precision vector. More... | |
| subroutine | dmmattranstimesvec (this, xVec, yVec, err) |
| Multiplies the transpose of a disk matrix with a given vector. More... | |
| subroutine | dmfindabsmaxrowvalues (this, maxRowVal, err) |
| Finds the absolute maximum value for each row in a disk matrix. More... | |
Module for general rectangular matrices with disk storage,.
This module contains a data type and associated utility routines for representing a general rectangular matrix stored on a disk file. This module is single-precision limited version of diskmatrixmodule. It supports ReadOnly matrices only.
| subroutine sdiskmatrixmodule::dmclose | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(out) | err | ||
| ) |
Closes the disk matrix file and releases the associated swap array.
| this | The sdiskmatrixmodule::diskmatrixtype object to close | |
| [out] | err | Error indicator |


| subroutine sdiskmatrixmodule::dmfindabsmaxrowvalues | ( | type(diskmatrixtype), intent(inout) | this, |
| real(sp), dimension(:), intent(out) | maxRowVal, | ||
| integer, intent(out) | err | ||
| ) |
Finds the absolute maximum value for each row in a disk matrix.
| this | The sdiskmatrixmodule::diskmatrixtype object to address | |
| [out] | maxRowVal | Absolute maximum row values |
| [out] | err | Error indicator |

|
private |
Gets swap section number and local array index for matrix element.
| [in] | this | The sdiskmatrixmodule::diskmatrixtype object to address |
| [in] | rInd | Row index of matrix element to get address of |
| [in] | cInd | Column index of matrix element to get address of |
| [out] | section | Index of swap section containing the matrix element |
| [out] | index | Array index within that swap section for matrix element |
| [out] | err | Error indicator |

| subroutine sdiskmatrixmodule::dmgetcol | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | cInd, | ||
| real(sp), dimension(:), intent(out) | col, | ||
| integer, intent(out) | err | ||
| ) |
Gets a column of the given disk matrix.
| this | The sdiskmatrixmodule::diskmatrixtype object to return for | |
| [in] | cInd | Column index to return for |
| [out] | col | Content of the matrix column |
| [out] | err | Error indicator |

| real(sp) function, dimension(:), pointer sdiskmatrixmodule::dmgetcolptr | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | cInd, | ||
| integer, intent(out) | err | ||
| ) |
Returns a pointer to column cInd of the given disk matrix.
| this | The sdiskmatrixmodule::diskmatrixtype object to return for | |
| [in] | cInd | Column index to return pointer for |
| [out] | err | Error indicator |


| subroutine sdiskmatrixmodule::dmgetrow | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | rInd, | ||
| real(sp), dimension(:), intent(out) | row, | ||
| integer, intent(out) | err | ||
| ) |
Gets a row of the given disk matrix.
| this | The sdiskmatrixmodule::diskmatrixtype object to return for | |
| [in] | rInd | Row index to return for |
| [out] | row | Content of the matrix row |
| [out] | err | Error indicator |

| real(sp) function, dimension(:,:), pointer sdiskmatrixmodule::dmgetswapsecptr | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | cInd, | ||
| integer, intent(out) | err | ||
| ) |
Returns a pointer to a matrix containing a swap section.
| this | The sdiskmatrixmodule::diskmatrixtype object to return for | |
| [in] | cInd | Column index for start of swap section to return for |
| [out] | err | Error indicator |
The pointer to the entire swap section starting at column cInd of the given disk matrix. The function can be used for speedy random access of the matrix elements.


| integer function sdiskmatrixmodule::dmgetswapsize |
Returns requested size of one swap section from command-line option.

| real(sp) function sdiskmatrixmodule::dmgetvalue | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | rInd, | ||
| integer, intent(in) | cInd, | ||
| integer, intent(out) | err | ||
| ) |
Returns the value of a matrix element.
| this | The sdiskmatrixmodule::diskmatrixtype object to return for | |
| [in] | rInd | Row index of matrix element to return |
| [in] | cInd | Column index of matrix element to return |
| [out] | err | Error indicator |

|
private |
Multiplies a disk matrix with a given double precision vector.
| this | The sdiskmatrixmodule::diskmatrixtype object (A) to multiply | |
| [in] | xVec | The vector (x) to multiply matrix A with |
| yVec | The resulting vector (y) | |
| [out] | err | Error indicator |
| [in] | doInitialize | If not present or .true., the existing content of yVec is discarded |
One of of the following operations are performed y = A*x y = y + A*x depending on the value of doInitialize.
|
private |
Multiplies a disk matrix with a given single precision vector.
| this | The sdiskmatrixmodule::diskmatrixtype object (A) to multiply | |
| [in] | xVec | The vector (x) to multiply matrix A with |
| yVec | The resulting vector (y) | |
| [out] | err | Error indicator |
| [in] | doInitialize | If not present or .true., the existing content of yVec is discarded |
One of of the following operations are performed y = A*x y = y + A*x depending on the value of doInitialize.
| subroutine sdiskmatrixmodule::dmmattranstimesvec | ( | type(diskmatrixtype), intent(inout) | this, |
| real(sp), dimension(:), intent(in) | xVec, | ||
| real(sp), dimension(:), intent(out) | yVec, | ||
| integer, intent(out) | err | ||
| ) |
Multiplies the transpose of a disk matrix with a given vector.
| this | The sdiskmatrixmodule::diskmatrixtype object (A) to multiply | |
| [in] | xVec | The vector (x) to multiply matrix A with |
| yVec | The resulting vector (y) | |
| [out] | err | Error indicator |
The following operation is performed y = A^t*x

| subroutine sdiskmatrixmodule::dmnullify | ( | type(diskmatrixtype), intent(out) | this | ) |
Initializes a disk matrix object.
| [out] | this | The sdiskmatrixmodule::diskmatrixtype object to be initialized |

| subroutine sdiskmatrixmodule::dmopen | ( | type(diskmatrixtype), intent(out) | this, |
| character(len=*), intent(in) | fileName, | ||
| integer, intent(inout) | fileChkSum, | ||
| integer, intent(in) | nRows, | ||
| integer, intent(in) | nCols, | ||
| integer, intent(in) | status, | ||
| integer, intent(out) | err, | ||
| integer, intent(in), optional | nColSwap, | ||
| integer, intent(in), optional | swapSize, | ||
| character(len=*), intent(in), optional | wantTag | ||
| ) |
Opens a disk matrix file for ReadOnly operations.
| [out] | this | The sdiskmatrixmodule::diskmatrixtype object to open |
| [in] | fileName | Name of file to read/write matrix content from/to |
| fileChkSum | Check-sum value of the FE part associated with this | |
| [in] | nRows | Number of matrix rows |
| [in] | nCols | Number of matrix columns |
| [in] | status | File opening mode, must be diskmatrixmodule::dmold_p |
| [out] | err | Error indicator |
| [in] | nColSwap | Optional number of matrix columns per swap section |
| [in] | swapSize | Optional size of swap section in double precision words |
| [in] | wantTag | Expected file tag for ReadOnly matrices |


|
private |
Casts the in-core matrix elements from double to single precision.
| this | The sdiskmatrixmodule::diskmatrixtype object to cast for | |
| [in] | ielSwap | Index to first element in swap section |
| [in] | nelSwap | Number of elements in swap section to cast for |
It is assumed that the double-precision buffer array sdiskmatrixmodule::diskmatrixtype::vald is not larger than one column.

| integer(i8) function sdiskmatrixmodule::dmsize | ( | type(diskmatrixtype), intent(in) | this, |
| integer, intent(in), optional | iDim | ||
| ) |
Returns the size of the given disk matrix.
| [in] | this | The sdiskmatrixmodule::diskmatrixtype object to address |
| [in] | iDim | Which size parameter to return:
|

|
private |
Writes current section to disk and reads a new one into core.
| [in] | this | The sdiskmatrixmodule::diskmatrixtype object to swap for |
| [in] | newSection | Index of the swap section to read into core |
| [out] | err | Error indicator |


| subroutine sdiskmatrixmodule::dmwrite | ( | type(diskmatrixtype), intent(inout) | this, |
| integer, intent(in) | lpu, | ||
| character(len=*), intent(in) | name | ||
| ) |
Writes out the content of a disk matrix.
| [in] | this | The sdiskmatrixmodule::diskmatrixtype object to write out |
| [in] | lpu | File unit number to write to |
| [in] | name | Matrix identifier |