Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
 All Classes Files Functions Variables Typedefs Macros Groups Pages
sparitersolve Module Reference

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)
 

Member Function/Subroutine Documentation

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

Here is the call graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Referenced by modeldescription::writepostfile().

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sparitersolve::sparupdatesolve ( type(matrix_t)  SourceMatrix,
real(kind=dp), dimension(:)  x,
real(kind=dp), dimension(:)  r 
)

Referenced by parallelutils::parallelupdatesolve(), and sparinitsolve().

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sparitersolve::zerosplittedmatrix ( type (splittedmatrixt), pointer  SplittedMatrix)

Zero the splitted matrix (for new non-linear iteration)

Referenced by sparinitsolve(), and sparitersolver().

Here is the caller graph for this function:


The documentation for this module was generated from the following file: