Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
|
Public Member Functions | |
subroutine | band_zeromatrix (A) |
subroutine | band_zerorow (A, n) |
subroutine | band_addtomatrixelement (A, i, j, value) |
subroutine | band_setmatrixelement (A, i, j, value) |
real(kind=dp) function | band_getmatrixelement (A, i, j) |
subroutine | band_gluelocalmatrix (A, N, Dofs, Indeces, LocalMatrix) |
subroutine | sband_setdirichlet (A, b, n, Value) |
type(matrix_t) function, pointer | band_creatematrix (N, Subband, Symmetric, AllocValues) |
subroutine | band_matrixvectormultiply (A, u, v) |
subroutine | band_matrixvectorprod (u, v, ipar) |
subroutine | band_diagprecondition (u, v, ipar) |
subroutine bandmatrix::band_addtomatrixelement | ( | type(matrix_t) | A, |
integer | i, | ||
integer | j, | ||
real(kind=dp) | value | ||
) |
Add a given element to the band matrix.
a | Structure holding matrix |
i | row number of the matrix element |
j | column number of the matrix element |
value | Value to be added |
Referenced by solverutils::addtomatrixelement().
type(matrix_t) function, pointer bandmatrix::band_creatematrix | ( | integer | N, |
integer | Subband, | ||
logical | Symmetric, | ||
logical | AllocValues | ||
) |
Create the structures required for a Band format matrix.
n | Number of rows for the matrix |
subband | Max(ABS(Col-Diag(Row))) of the matrix |
symmetric | Symmetric or not |
allocvalues | Should the values arrays be allocated ? |
References generalutils::allocatematrix(), and messages::fatal().
Referenced by elementutils::creatematrix().
subroutine bandmatrix::band_diagprecondition | ( | real(kind=dp), dimension(*) | u, |
real(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
Diagonal preconditioning of a Band format matrix.
u | Vector to be multiplied |
v | Result vector of the multiplication |
ipar | structure holding info from (HUTIter-iterative solver package) |
real(kind=dp) function bandmatrix::band_getmatrixelement | ( | type(matrix_t) | A, |
integer | i, | ||
integer | j | ||
) |
Get a given matrix element of a band matrix format.
a | Structure holding matrix |
i | row number of the matrix element |
j | column number of the matrix element |
Referenced by solverutils::getmatrixelement().
subroutine bandmatrix::band_gluelocalmatrix | ( | type(matrix_t) | A, |
integer | N, | ||
integer | Dofs, | ||
integer, dimension(:) | Indeces, | ||
real(kind=dp), dimension(:,:) | LocalMatrix | ||
) |
Add a set of values (.i.e. element stiffness matrix) to a Band format matrix.
localmatrix | A (N x Dofs) x ( N x Dofs) matrix holding the values to be added to the Band format matrix |
a | Structure holding matrix, values are affected in the process |
n | Number of nodes in element |
dofs | Number of degrees of freedom for one node |
indeces | Maps element node numbers to global (or partition) node numbers (to matrix rows and columns, if Dofs = 1) |
References localmatrix().
Referenced by solverutils::updateglobalequations(), updateglobalpreconditioner(), and solverutils::updatemassmatrix().
subroutine bandmatrix::band_matrixvectormultiply | ( | type(matrix_t) | A, |
real(kind=dp), dimension(*) | u, | ||
real(kind=dp), dimension(*) | v | ||
) |
Matrix vector product (v = Au) for a matrix given in Band format.
u | vector to be multiplied |
v | result vector |
a | Structure holding the matrix |
Referenced by solverutils::matrixvectormultiply().
subroutine bandmatrix::band_matrixvectorprod | ( | real(kind=dp), dimension(*) | u, |
real(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
Matrix vector product (v = Au) for a matrix given in Band format. The matrix is accessed from a global variable GlobalMatrix.
u | Vector to be multiplied |
v | Result vector of the multiplication |
ipar | structure holding info from (HUTIter-iterative solver package) |
subroutine bandmatrix::band_setmatrixelement | ( | type(matrix_t) | A, |
integer | i, | ||
integer | j, | ||
real(kind=dp) | value | ||
) |
Set a given element in the band matrix.
a | Structure holding matrix |
i | row number of the matrix element |
j | column number of the matrix element |
value | Value to be set |
Referenced by solverutils::setmatrixelement().
subroutine bandmatrix::band_zeromatrix | ( | type(matrix_t) | A) |
Zero a Band format matrix.
a | Structure holding matrix |
Referenced by solverutils::initializetozero().
subroutine bandmatrix::band_zerorow | ( | type(matrix_t) | A, |
integer | n | ||
) |
Zero given row from a Band format matrix.
a | Structure holding matrix |
n | Row number to be zerod |
Referenced by solverutils::zerorow().
subroutine bandmatrix::sband_setdirichlet | ( | type(matrix_t) | A, |
real(kind=dp), dimension(:) | b, | ||
integer, intent(in) | n, | ||
real(kind=dp), intent(in) | Value | ||
) |
Set value of unkown x_n to given value for symmetric band matrix. This is done by replacing the equation of the unknown by x_n = Value (i.e. zeroing the row of the unkown in the matrix, and setting diagonal to identity). Also the respective column is set to zero (except for the diagonal) to preserve symmetry, while also substituting the rhs by by rhs(i) = rhs(i) - A(i,n) * Value.
a | Structure holding matrix, values are affected in the process | |
b | RHS vector | |
[in] | value | Value for the unknown |
[in] | n | Ordered number of the unkown (i.e. matrix row and column number) |
Referenced by outletcompute(), solverutils::setdirichletpoint(), setdirichletpoints(), setelementvalues(), setlimitervalues(), and setpointvalues().