Elmer FEM solver
Elmer is an open source finite element software for multiphysical problems
|
Data Types | |
type | buff_t |
type | ibuff_t |
type | vbuff_t |
Public Member Functions | |
subroutine | sparfacenumbering (Mesh, Allmesh) |
subroutine | sparglobalnumbering (Mesh, OldMesh, NewNodeCnt, OldIntCnts, OldIntArray, Reorder) |
subroutine | exchangeifvalues (NbsIfMatrix, RecvdIfMatrix, NeedMass, NeedDamp, NeedPrec) |
subroutine | exchangesourcevec (SourceMatrix, SplittedMatrix, ParallelInfo, SourceVec, op) |
subroutine | buildrevvecindices (SplittedMatrix) |
subroutine | recv_locif_old (SplittedMatrix, ndim, v) |
subroutine | send_locif_size (SplittedMatrix, n, neigh) |
subroutine | send_locif (SplittedMatrix, n, neigh) |
subroutine | recv_locif_size (n, neigh, sizes) |
subroutine | recv_locif (SplittedMatrix, n, neigh, sizes, requests, buffer) |
subroutine | recv_locif_wait (SplittedMatrix, ndim, v, n, neigh, sizes, requests, buffer) |
subroutine | sparactivesum (tsum, oper) |
integer function | searchiaitem (N, IArray, Item, SortOrder, sIndx) |
integer function | searchiaitemlinear (N, IArray, Item) |
subroutine | checkbuffer (n) |
type(parenv_t) function, pointer | parcomminit () |
subroutine | parenvinit (SPMatrix, ParallelInfo, SourceMatrix) |
subroutine | spariteractive (L) |
subroutine | findactivepes (ParallelInfo, SourceMatrix, JustNeighbours) |
subroutine | addtocommonlist (list, ENTRY) |
integer function | meshneighbours (Mesh, IsNeighbour) |
subroutine | sparedgenumbering (Mesh, Allmesh) |
subroutine | spariterbarrier |
subroutine | spariteractivebarrier |
subroutine | spariterallreduceand (L) |
subroutine | exchangeinterfaces (NbsIfMatrix, RecvdIfMatrix) |
subroutine | exchangerhsif (SourceMatrix, SplittedMatrix, ParallelInfo, SourceRHS, TargetRHS) |
subroutine | exchangeresult (SourceMatrix, SplittedMatrix, ParallelInfo, XVec) |
subroutine | send_locif_old (SplittedMatrix) |
real(kind=dp) function | spardotprod (ndim, x, xind, y, yind) |
real(kind=dp) function | sparnorm (ndim, x, xind) |
complex(kind=dp) function | sparcdotprod (ndim, x, xind, y, yind) |
real(kind=dp) function | sparcnorm (ndim, x, xind) |
subroutine | parenvfinalize () |
integer function | searchnode (ParallelInfo, QueriedNode, First, Last, Order) |
subroutine sparitercomm::addtocommonlist | ( | integer, dimension(:), pointer | list, |
integer | ENTRY | ||
) |
Try to agree about global numbering of nodes among active processes.
Referenced by sparedgenumbering(), sparfacenumbering(), and sparglobalnumbering().
subroutine sparitercomm::buildrevvecindices | ( | type (splittedmatrixt) | SplittedMatrix) |
Build index tables for faster vector element combination (in parallel matrix-vector operation).
References checkbuffer(), and searchiaitem().
Referenced by sparitersolve::splitmatrix().
subroutine sparitercomm::checkbuffer | ( | integer | n) |
References messages::fatal().
Referenced by buildrevvecindices(), particleutils::changeparticlepartition(), particleutils::createghostparticles(), exchangeifvalues(), exchangeinterfaces(), exchangeresult(), exchangerhsif(), exchangesourcevec(), findactivepes(), send_locif(), send_locif_old(), sendpoints(), sparedgenumbering(), sparfacenumbering(), and sparglobalnumbering().
subroutine sparitercomm::exchangeifvalues | ( | type (basicmatrix_t), dimension(:) | NbsIfMatrix, |
type (basicmatrix_t), dimension(:) | RecvdIfMatrix, | ||
logical | NeedMass, | ||
logical | NeedDamp, | ||
logical | NeedPrec | ||
) |
Send all of the interface matrix blocks (in NbsIfMatrices) to neighbour processors. This is done only once so there is no need to optimize communication...
References checkbuffer().
Referenced by sparitersolve::gluefinalize().
subroutine sparitercomm::exchangeinterfaces | ( | type (basicmatrix_t), dimension(:) | NbsIfMatrix, |
type (basicmatrix_t), dimension(:) | RecvdIfMatrix | ||
) |
Send all of the interface matrix blocks (in NbsIfMatrices) to neighbour processors. This is done only once so there is no need to optimize communication...
References checkbuffer().
Referenced by sparitersolve::splitmatrix().
subroutine sparitercomm::exchangeresult | ( | type(matrix_t) | SourceMatrix, |
type(splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo, | ||
real(kind=dp), dimension(:) | XVec | ||
) |
Send parts of the result vector to neighbours.
References checkbuffer(), searchnode(), and spariteractivebarrier().
Referenced by sparitersolve::solve(), sparitersolve::sparitersolver(), and sparitersolve::sparupdateresult().
subroutine sparitercomm::exchangerhsif | ( | type (matrix_t) | SourceMatrix, |
type (splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo, | ||
real(kind=dp), dimension(:) | SourceRHS, | ||
real(kind=dp), dimension(:) | TargetRHS | ||
) |
Exchange right-hand-side elements on the interface with neighbours.
References checkbuffer(), and searchnode().
Referenced by sparitersolve::solve(), and sparitersolve::sparupdaterhs().
subroutine sparitercomm::exchangesourcevec | ( | type (matrix_t) | SourceMatrix, |
type (splittedmatrixt) | SplittedMatrix, | ||
type (parallelinfo_t) | ParallelInfo, | ||
real(kind=dp), dimension(:) | SourceVec, | ||
integer, optional | op | ||
) |
References checkbuffer(), and searchnode().
Referenced by parallelutils::parallelsumvector().
subroutine sparitercomm::findactivepes | ( | type(parallelinfo_t) | ParallelInfo, |
type(matrix_t) | SourceMatrix, | ||
logical, optional | JustNeighbours | ||
) |
Find active PEs using ParallelInfo % NeighbourList.
References addtonlist(), buf, checkbuffer(), and searchnode().
Referenced by parenvinit().
integer function sparitercomm::meshneighbours | ( | type(mesh_t) | Mesh, |
logical, dimension(:) | IsNeighbour | ||
) |
Referenced by particleutils::changeparticlepartition(), particleutils::createghostparticles(), sparedgenumbering(), and sparfacenumbering().
type (parenv_t) function, pointer sparitercomm::parcomminit | ( | ) |
Initialize parallel execution environment.
References messages::fatal(), and messages::info().
Referenced by parallelutils::parallelinit(), sparitersolve::parinitmatrix(), and resulttoresult().
subroutine sparitercomm::parenvfinalize | ( | ) |
Finalize MPI environment.
References messages::fatal().
Referenced by parallelutils::parallelfinalize().
subroutine sparitercomm::parenvinit | ( | type(sparitersolverglobald_t) | SPMatrix, |
type (parallelinfo_t) | ParallelInfo, | ||
type(matrix_t) | SourceMatrix | ||
) |
Initialize parallel execution environment.
References findactivepes().
Referenced by sparitersolve::parinitmatrix().
subroutine sparitercomm::recv_locif | ( | type (splittedmatrixt) | SplittedMatrix, |
integer | n, | ||
integer, dimension(:) | neigh, | ||
integer, dimension(:) | sizes, | ||
integer, dimension(:) | requests, | ||
type(buff_t), dimension(:) | buffer | ||
) |
Receive interface block contributions to vector from neighbours.
Referenced by sparitersolve::sparmatrixvector().
subroutine sparitercomm::recv_locif_old | ( | type (splittedmatrixt) | SplittedMatrix, |
integer | ndim, | ||
real(kind=dp), dimension(*) | v | ||
) |
Receive interface block contributions to vector from neighbours.
Referenced by sparitersolve::sparcmatrixvector().
subroutine sparitercomm::recv_locif_size | ( | integer | n, |
integer, dimension(:) | neigh, | ||
integer, dimension(:) | sizes | ||
) |
Receive interface block contributions to vector from neighbours.
Referenced by sparitersolve::sparmatrixvector().
subroutine sparitercomm::recv_locif_wait | ( | type (splittedmatrixt) | SplittedMatrix, |
integer | ndim, | ||
real(kind=dp), dimension(*) | v, | ||
integer | n, | ||
integer, dimension(:) | neigh, | ||
integer, dimension(:) | sizes, | ||
integer, dimension(:) | requests, | ||
type(buff_t), dimension(:) | buffer | ||
) |
Receive interface block contributions to vector from neighbours.
Referenced by sparitersolve::sparmatrixvector().
integer function sparitercomm::searchiaitem | ( | integer | N, |
integer, dimension(:) | IArray, | ||
integer | Item, | ||
integer, dimension(:), optional | SortOrder, | ||
integer, optional | sIndx | ||
) |
Search an element Item from an ordered integer array(N) and return Index to that array element. Return value -1 means Item was not found.
References searchiaitemlinear().
Referenced by buildrevvecindices(), sparitersolve::clearinsidec(), sparitersolve::combinecrsmatindices(), sparitersolve::continuousnumbering(), fetisolve::fetisendreceiveinit(), sparitersolve::gluefinalize(), sparedgenumbering(), sparfacenumbering(), sparitersolve::sparinitsolve(), and sparitersolve::sparitersolver().
integer function sparitercomm::searchiaitemlinear | ( | integer | N, |
integer, dimension(*) | IArray, | ||
integer | Item | ||
) |
Search an element Item from an ordered integer array(N) and return Index to that array element. Return value -1 means Item was not found.
Referenced by searchiaitem().
integer function sparitercomm::searchnode | ( | type (parallelinfo_t) | ParallelInfo, |
integer | QueriedNode, | ||
integer, optional | First, | ||
integer, optional | Last, | ||
integer, dimension(:), optional | Order | ||
) |
Search an element QueriedNode from an ordered set Nodes and return Index to Nodes structure. Return value -1 means QueriedNode was not found.
Referenced by sparitersolve::clearinsidec(), particleutils::createghostparticles(), exchangeresult(), exchangerhsif(), exchangesourcevec(), findactivepes(), sparitersolve::gluefinalize(), sparglobalnumbering(), and vankacreate().
subroutine sparitercomm::send_locif | ( | type (splittedmatrixt) | SplittedMatrix, |
integer | n, | ||
integer, dimension(:) | neigh | ||
) |
Send our part of the interface matrix blocks to neighbours.
References checkbuffer().
Referenced by sparitersolve::sparmatrixvector().
subroutine sparitercomm::send_locif_old | ( | type (splittedmatrixt) | SplittedMatrix) |
Send our part of the interface matrix blocks to neighbours.
References checkbuffer().
Referenced by sparitersolve::sparcmatrixvector().
subroutine sparitercomm::send_locif_size | ( | type (splittedmatrixt) | SplittedMatrix, |
integer | n, | ||
integer, dimension(:) | neigh | ||
) |
Send our part of the interface matrix blocks to neighbours.
Referenced by sparitersolve::sparmatrixvector().
subroutine sparitercomm::sparactivesum | ( | real(kind=dp) | tsum, |
integer | oper | ||
) |
Referenced by interpolatemeshtomesh(), parallelutils::parallelreduction(), sparcnorm(), spardotprod(), and sparnorm().
complex(kind=dp) function sparitercomm::sparcdotprod | ( | integer | ndim, |
complex(kind=dp), dimension(*) | x, | ||
integer | xind, | ||
complex(kind=dp), dimension(*) | y, | ||
integer | yind | ||
) |
Compute global dot product of vectors x and y.
References messages::fatal().
Referenced by sparitersolve::solve().
real(kind=dp) function sparitercomm::sparcnorm | ( | integer | ndim, |
complex(kind=dp), dimension(*) | x, | ||
integer | xind | ||
) |
Compute global 2-norm of vector x.
References sparactivesum().
Referenced by sparitersolve::solve().
real(kind=dp) function sparitercomm::spardotprod | ( | integer | ndim, |
real(kind=dp), dimension(*) | x, | ||
integer | xind, | ||
real(kind=dp), dimension(*) | y, | ||
integer | yind | ||
) |
References sparactivesum().
Referenced by blocksolve::blockkryloviter(), blocksolve::blockmatrixprec(), fcg(), fetisolve::feti(), parallelutils::paralleldot(), and sparitersolve::solve().
subroutine sparitercomm::sparedgenumbering | ( | type(mesh_t) | Mesh, |
logical, optional | Allmesh | ||
) |
References addtocommonlist(), buf, checkbuffer(), meshneighbours(), searchiaitem(), sort(), and generalutils::sorti().
Referenced by meshutils::loadmesh(), and particleutils::setparticlepreliminaries().
subroutine sparitercomm::sparfacenumbering | ( | type(mesh_t) | Mesh, |
logical, optional | Allmesh | ||
) |
References addtocommonlist(), buf, checkbuffer(), meshneighbours(), searchiaitem(), sort(), and generalutils::sorti().
Referenced by meshutils::loadmesh(), and particleutils::setparticlepreliminaries().
subroutine sparitercomm::sparglobalnumbering | ( | type(mesh_t) | Mesh, |
type(mesh_t) | OldMesh, | ||
integer, target | NewNodeCnt, | ||
integer, dimension(:), target | OldIntCnts, | ||
integer, dimension(:), target | OldIntArray, | ||
integer, dimension(:), target | Reorder | ||
) |
References addtocommonlist(), checkbuffer(), searchnode(), sort(), generalutils::sorti(), and swapnodes().
Referenced by parallelutils::parallelglobalnumbering().
subroutine sparitercomm::spariteractive | ( | logical | L) |
subroutine sparitercomm::spariteractivebarrier | ( | ) |
Referenced by exchangeresult(), parallelutils::parallelactivebarrier(), and sparitersolve::sparmatrixvector().
subroutine sparitercomm::spariterallreduceand | ( | logical | L) |
subroutine sparitercomm::spariterbarrier | ( | ) |
Referenced by parallelutils::parallelactive(), and parallelutils::parallelbarrier().
real(kind=dp) function sparitercomm::sparnorm | ( | integer | ndim, |
real(kind=dp), dimension(*) | x, | ||
integer | xind | ||
) |
Compute global 2-norm of vector x.
References sparactivesum().
Referenced by blocksolve::blockkryloviter(), blocksolve::blockmatrixprec(), fcg(), fetisolve::feti(), parallelutils::parallelnorm(), and sparitersolve::solve().