Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
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.

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

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 
)

References computeblocknorm(), solverutils::computenorm(), messages::fatal(), generalutils::i2s(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetstring(), solver(), and lists::variableget().

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.

References solverutils::computenorm(), messages::info(), solverutils::matrixvectormultiply(), and solver().

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.

References solverutils::addtomatrixelement(), messages::fatal(), defutils::getbc(), defutils::getbodyforce(), defutils::getcreal(), defutils::getelementdofs(), defutils::getelementnofnodes(), defutils::getlogical(), solverutils::gluelocalsubmatrix(), messages::info(), integralconstraint(), lists::listgetinteger(), lists::listgetintegerarray(), lists::listgetstring(), solverutils::moverow(), solverutils::setmatrixelement(), 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 coupledsolver::coupledsystemdirichlet ( )

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

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

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.

References messages::info(), invalidatevariable(), 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 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.

References elementdescription::elementinfo(), integration::gausspoints(), and defutils::getelementnodes().

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 ( )

References solverutils::computechange(), messages::error(), messages::fatal(), messages::info(), lists::listgetconstreal(), lists::listgetcreal(), lists::listgetlogical(), lists::listgetstring(), parallelutils::parallelallreduceand(), solver(), mainutils::solveractivate(), and messages::warn().

Referenced by mainutils::solveequations().

Here is the call graph for this function:

Here is the caller graph for this function: