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

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)
 

Member Function/Subroutine Documentation

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

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

integer function sparitercomm::meshneighbours ( type(mesh_t)  Mesh,
logical, dimension(:)  IsNeighbour 
)

Referenced by particleutils::changeparticlepartition(), particleutils::createghostparticles(), sparedgenumbering(), and sparfacenumbering().

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sparitercomm::parenvfinalize ( )

Finalize MPI environment.

References messages::fatal().

Referenced by parallelutils::parallelfinalize().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sparitercomm::send_locif_old ( type (splittedmatrixt)  SplittedMatrix)

Send our part of the interface matrix blocks to neighbours.

References checkbuffer().

Referenced by sparitersolve::sparcmatrixvector().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

subroutine sparitercomm::sparactivesum ( real(kind=dp)  tsum,
integer  oper 
)

Referenced by interpolatemeshtomesh(), parallelutils::parallelreduction(), sparcnorm(), spardotprod(), and sparnorm().

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

subroutine sparitercomm::spariteractive ( logical  L)

Referenced by parallelutils::parallelactive().

Here is the caller graph for this function:

subroutine sparitercomm::spariteractivebarrier ( )

Referenced by exchangeresult(), parallelutils::parallelactivebarrier(), and sparitersolve::sparmatrixvector().

Here is the caller graph for this function:

subroutine sparitercomm::spariterallreduceand ( logical  L)

Referenced by parallelutils::parallelallreduceand().

Here is the caller graph for this function:

subroutine sparitercomm::spariterbarrier ( )

Referenced by parallelutils::parallelactive(), and parallelutils::parallelbarrier().

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:


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