Elmer FEM solver Elmer is an open source finite element software for multiphysical problems
MainUtils.src File Reference

## Data Types

module  mainutils

## Functions/Subroutines

subroutine solvecoupled ()

subroutine integralconstraint (Mass, Damp, Stiff, Force, Element, n)

subroutine coupledsystemdirichlet ()

subroutine singletocoupledvector ()

subroutine coupledtosinglevector ()

subroutine coupledconstraintassembly ()

subroutine blocksystemdirichlet (BlockMatrix, NoRow, NoCol)

real(kind=dp) function computeblocknorm (BlockMatrix, DiagonalOnly, MatrixOnly)

logical function checkstepsizeblock (BlockMatrix, FirstTrial, PrevResidual, Residual)

## Function/Subroutine Documentation

 subroutine blocksolver::blocksystemdirichlet ( type(blockmatrix_t) BlockMatrix, integer NoRow, integer NoCol )

Subroutine sets the Dirichlet conditions for the block system using the single system vector names and sizes. For that aim there is an additional flag that is used to detect that the matrix cannot have the digonal entry that is by default set to unity and the r.h.s. to the target value. Now for off-diagonal matrices they will be both omitted. The routine assumes that the r.h.s. of the off diagonal matrices is zero.

Referenced by mainutils::blocksolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 logical function blocksolver::checkstepsizeblock ( type(blockmatrix_t) BlockMatrix, logical FirstTrial, real(kind=dp) PrevResidual, real(kind=dp) Residual )

Referenced by mainutils::blocksolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 real(kind=dp) function blocksolver::computeblocknorm ( type(blockmatrix_t), target BlockMatrix, logical, optional DiagonalOnly, logical, optional MatrixOnly )

Compute the block norm, optionally.

Referenced by checkstepsizeblock().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine coupledsolver::coupledconstraintassembly ( )

Perform constraints assembly Some constraints are assembled by integration while others are done by elimination. It is important that constraints are applied after the normal assembly process.

Referenced by mainutils::coupledsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine coupledsolver::coupledsystemdirichlet ( )

Subroutine sets the Dirichlet conditions for the coupled system using the single system vector names and sizes.

Referenced by mainutils::coupledsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine coupledsolver::coupledtosinglevector ( )

Subroutine copies results from the coupled system vector back to the original vectors.

Referenced by mainutils::coupledsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine coupledsolver::integralconstraint ( real(kind=dp), dimension(:,:) Mass, real(kind=dp), dimension(:,:) Damp, real(kind=dp), dimension(:,:) Stiff, real(kind=dp), dimension(:) Force, type(element_t), pointer Element, integer n )

Integration routine for integral type of constraints i.e. body or boundary integral of some dof is known a priori.

Referenced by coupledconstraintassembly().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine coupledsolver::singletocoupledvector ( )

References messages::info(), lists::listgetstring(), solver(), and lists::variableget().

Referenced by mainutils::coupledsolver().

Here is the call graph for this function:

Here is the caller graph for this function:

 subroutine solveequations::solvecoupled ( )

Referenced by mainutils::solveequations().

Here is the call graph for this function:

Here is the caller graph for this function: