Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
|
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) |
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().
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().
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().
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().
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().
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().
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().
subroutine coupledsolver::singletocoupledvector | ( | ) |
References messages::info(), lists::listgetstring(), solver(), and lists::variableget().
Referenced by mainutils::coupledsolver().
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().