Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
|
Public Member Functions | |
subroutine | dummy |
subroutine | zerosplittedmatrix (SplittedMatrix) |
subroutine | sparinitsolve (SourceMatrix, XVec, RHSVec, RVec, ParallelInfo, UpdateMatrix) |
subroutine | sparmatrixvector (u, v, ipar) |
subroutine | combinecrsmatindices (SMat1, SMat2, DMat) |
subroutine | gluefinalize (SourceMatrix, SplittedMatrix, ParallelInfo) |
subroutine | clearinsidec (SourceMatrix, InsideMatrix, RecvdIfMatrix, ParallelInfo) |
subroutine | renumberdofs (SourceMatrix, SplittedMatrix, ParallelInfo) |
subroutine | dpcond (u, v, ipar) |
subroutine | cpcond (u, v, ipar) |
type(sparitersolverglobald_t) function, pointer | parinitmatrix (SourceMatrix, ParallelInfo) |
type(splittedmatrixt) function, pointer | splitmatrix (SourceMatrix, ParallelInfo) |
subroutine | sparupdaterhs (SourceMatrix, RHSVec, ParallelInfo) |
subroutine | sparupdatesolve (SourceMatrix, x, r) |
subroutine | sparupdateresult (SourceMatrix, XVec, RVec, GlobalUpdate) |
subroutine | continuousnumbering (ParallelInfo, Mperm, Aperm, Owner) |
subroutine | sparitersolver (SourceMatrix, ParallelInfo, XVec, RHSVec, Solver, SParMatrixDesc) |
subroutine | solve (SourceMatrix, SplittedMatrix, ParallelInfo, RHSVec, XVec, Solver, ErrInfo) |
subroutine | sparcmatrixvector (u, v, ipar) |
subroutine | countneighbourconns (SourceMatrix, SplittedMatrix, ParallelInfo) |
subroutine sparitersolve::clearinsidec | ( | type (matrix_t) | SourceMatrix, |
type (matrix_t) | InsideMatrix, | ||
type (basicmatrix_t), dimension(:) | RecvdIfMatrix, | ||
type (parallelinfo_t) | ParallelInfo | ||
) |
Compress the given interface matrix deleting the inside connections. Note: modifies the structure of the input matrix RecvdIfMatrix.
References sparitercomm::searchiaitem(), and sparitercomm::searchnode().
subroutine sparitersolve::combinecrsmatindices | ( | type (basicmatrix_t), target | SMat1, |
type (basicmatrix_t), target | SMat2, | ||
type (basicmatrix_t), target | DMat | ||
) |
This subroutine combines indices of two matrices in CRS format. Row and column indices are assumed to be in sorted order.
References crsmatrix::crs_sortbasicmatrix(), and sparitercomm::searchiaitem().
Referenced by splitmatrix().
subroutine sparitersolve::continuousnumbering | ( | type(parallelinfo_t) | ParallelInfo, |
integer, dimension(:) | Mperm, | ||
integer, dimension(:) | Aperm, | ||
integer, dimension(:) | Owner | ||
) |
Create continuous numbering for the dofs expected by some linear solvers.
References sparitercomm::searchiaitem(), and generalutils::sorti().
Referenced by particleutils::initializeparticles(), directsolve::mumps_solvesystem(), and sparitersolver().
subroutine sparitersolve::countneighbourconns | ( | type (matrix_t) | SourceMatrix, |
type (splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo | ||
) |
This routine is used to count the nodes which have connections to neighbours the count of connections for neighbour. Then this information is used to allocate some communication buffers.
Referenced by splitmatrix().
subroutine sparitersolve::cpcond | ( | complex(kind=dp), dimension(*) | u, |
complex(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
subroutine sparitersolve::dpcond | ( | real(kind=dp), dimension(*) | u, |
real(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
subroutine sparitersolve::dummy | ( | ) |
subroutine sparitersolve::gluefinalize | ( | type(matrix_t) | SourceMatrix, |
type (splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo | ||
) |
Update all necessary global structures after the local matrix has been built.
References sparitercomm::exchangeifvalues(), sparitercomm::searchiaitem(), and sparitercomm::searchnode().
Referenced by sparinitsolve(), and sparitersolver().
type (sparitersolverglobald_t) function, pointer sparitersolve::parinitmatrix | ( | type (matrix_t), target | SourceMatrix, |
type (parallelinfo_t), target | ParallelInfo | ||
) |
References sparitercomm::parcomminit(), sparitercomm::parenvinit(), and splitmatrix().
Referenced by parallelutils::parallelinitmatrix().
subroutine sparitersolve::renumberdofs | ( | type( matrix_t) | SourceMatrix, |
type (splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo | ||
) |
Convert the original local DoF numbering to a compressed one to enable direct use of column indices in matrix operations.
Referenced by splitmatrix().
subroutine sparitersolve::solve | ( | type(matrix_t), target | SourceMatrix, |
type (splittedmatrixt), pointer | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo, | ||
real(kind=dp), dimension(:) | RHSVec, | ||
real(kind=dp), dimension(:) | XVec, | ||
type (solver_t) | Solver, | ||
type (errinfot) | ErrInfo | ||
) |
References sparitercomm::exchangeresult(), sparitercomm::exchangerhsif(), itersolve::itersolver(), savematrix(), solver(), sparitercomm::sparcdotprod(), sparcmatrixvector(), sparitercomm::sparcnorm(), sparitercomm::spardotprod(), sparmatrixvector(), and sparitercomm::sparnorm().
Referenced by magneticw1solver(), and sparitersolver().
subroutine sparitersolve::sparcmatrixvector | ( | complex(kind=dp), dimension(*) | u, |
complex(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
External Matrix - Vector operations (Parallel, complex version). Multiply vector u with the matrix in A_val return the result in v Called from HUTIter library.
References buf, sparitercomm::recv_locif_old(), and sparitercomm::send_locif_old().
Referenced by solve().
subroutine sparitersolve::sparinitsolve | ( | type (matrix_t) | SourceMatrix, |
real(kind=dp), dimension(:) | XVec, | ||
real(kind=dp), dimension(:) | RHSVec, | ||
real(kind=dp), dimension(:) | RVec, | ||
type (parallelinfo_t), target | ParallelInfo, | ||
logical | UpdateMatrix | ||
) |
References crsmatrix::crs_sortmatrix(), gluefinalize(), gt(), sparitercomm::searchiaitem(), sparupdaterhs(), sparupdatesolve(), and zerosplittedmatrix().
Referenced by parallelutils::parallelinitsolve().
subroutine sparitersolve::sparitersolver | ( | type (matrix_t) | SourceMatrix, |
type (parallelinfo_t) | ParallelInfo, | ||
real(kind=dp), dimension(:) | XVec, | ||
real(kind=dp), dimension(:) | RHSVec, | ||
type (solver_t) | Solver, | ||
type (sparitersolverglobald_t), pointer | SParMatrixDesc | ||
) |
Call the parallel iterative solver.
References continuousnumbering(), messages::error(), sparitercomm::exchangeresult(), messages::fatal(), gluefinalize(), gt(), messages::info(), lists::listgetconstreal(), lists::listgetinteger(), lists::listgetlogical(), lists::listgetstring(), sparitercomm::searchiaitem(), solve(), solver(), messages::warn(), and zerosplittedmatrix().
Referenced by parallelutils::paralleliter().
subroutine sparitersolve::sparmatrixvector | ( | real(kind=dp), dimension(*) | u, |
real(kind=dp), dimension(*) | v, | ||
integer, dimension(*) | ipar | ||
) |
External Matrix - Vector operations (Parallel real, version) Multiply vector u with the global matrix, return the result in v Called from HUTIter library.
References sparitercomm::recv_locif(), sparitercomm::recv_locif_size(), sparitercomm::recv_locif_wait(), sparitercomm::send_locif(), sparitercomm::send_locif_size(), and sparitercomm::spariteractivebarrier().
Referenced by blocksolve::blockmatrixprec(), solverutils::computechange(), parallelutils::parallelmatrixvector(), solve(), and vankaprec().
subroutine sparitersolve::sparupdateresult | ( | type (matrix_t) | SourceMatrix, |
real(kind=dp), dimension(:) | XVec, | ||
real(kind=dp), dimension(:) | RVec, | ||
logical | GlobalUpdate | ||
) |
References sparitercomm::exchangeresult().
Referenced by parallelutils::parallelmatrixvector(), and parallelutils::parallelupdateresult().
subroutine sparitersolve::sparupdaterhs | ( | type (matrix_t) | SourceMatrix, |
real(kind=dp), dimension(:) | RHSVec, | ||
type(parallelinfo_t) | ParallelInfo | ||
) |
References sparitercomm::exchangerhsif().
Referenced by parallelutils::parallelupdaterhs(), and sparinitsolve().
subroutine sparitersolve::sparupdatesolve | ( | type(matrix_t) | SourceMatrix, |
real(kind=dp), dimension(:) | x, | ||
real(kind=dp), dimension(:) | r | ||
) |
Referenced by parallelutils::parallelupdatesolve(), and sparinitsolve().
type (splittedmatrixt) function, pointer sparitersolve::splitmatrix | ( | type (matrix_t) | SourceMatrix, |
type (parallelinfo_t) | ParallelInfo | ||
) |
References generalutils::allocatematrix(), sparitercomm::buildrevvecindices(), combinecrsmatindices(), countneighbourconns(), messages::error(), sparitercomm::exchangeinterfaces(), listmatrix::list_addtomatrixelement(), listmatrix::list_tocrsmatrix(), listmatrix::list_tolistmatrix(), lists::listgetstring(), renumberdofs(), and generalutils::sorti().
Referenced by parinitmatrix().
subroutine sparitersolve::zerosplittedmatrix | ( | type (splittedmatrixt), pointer | SplittedMatrix) |
Zero the splitted matrix (for new non-linear iteration)
Referenced by sparinitsolve(), and sparitersolver().