DOUG 0.2
Data Types | Functions/Subroutines

ElemMtxs_distribute Module Reference

Element matrix distribution logic. More...

Data Types

type  ElemMtxsIntf
 ElemMtxsIntf type. More...

Functions/Subroutines

type(ElemMtxsIntfElemMtxsIntf_newInit (Msh)
 Basic constructor for interface elements.
subroutine ElemMtxsIntf_Destroy (E)
 Destructor.
subroutine, private ElemMtxsIntf_buildInnerInterfEMask (E, M)
 Builds inner/interface masks for elements Allocates and fills in: inner_interf_emask.
subroutine, private ElemMtxsIntf_buildMapsMasks (E, M)
 Build global to local, local to global and inner/interface maps for elements Allocates and fills in: gl_emap, lg_emap, inner_interf_emask, intfsend_emask, intfell2indx.
subroutine ElemMtxsIntf_exchangeMapsMasks (E, M)
 Synchronize send/receive maps (non-blocking)
subroutine ElemMtxsIntf_waitMapsMasks (E, M)
 Wait until send/receive maps have been synchronized.
subroutine ElemMtxsIntf_addChunk (E, chunk, Msh)
 Add chunk to interface elements Chunk may contain non-interface elements - these fill be filtered out.
subroutine ElemMtxsIntf_distAndAssemble (E, A_interf, Msh)
 Distribute and assemble interface elements.
subroutine ElemMtxs_readAndDistribute (Msh, fnElemMatrs, A, b, A_intf)
 Reads in element stiffness/mass matrices and their RHSs and then distributes data to slaves by chunks Intended for master only!
subroutine ElemMtxs_recvAndAssemble (Msh, A, b, A_intf)
 Waits for element matrix chunks from master - final matrix is assembled bit by bit.

Detailed Description

Element matrix distribution logic.


Function/Subroutine Documentation

subroutine ElemMtxs_distribute::ElemMtxs_readAndDistribute ( type(Mesh),intent(in)  Msh,
character*(*),intent(in)  fnElemMatrs,
type(SpMtx),intent(out)  A,
float(kind=rk),dimension(:),pointer  b,
type(SpMtx),intent(out),optional  A_intf 
)
subroutine ElemMtxs_distribute::ElemMtxs_recvAndAssemble ( type(Mesh),intent(in)  Msh,
type(SpMtx),intent(out)  A,
float(kind=rk),dimension(:),pointer  b,
type(SpMtx),intent(out),optional  A_intf 
)
subroutine ElemMtxs_distribute::ElemMtxsIntf_addChunk ( type(ElemMtxsIntf),intent(inout)  E,
type(ElemMtxsChunk),intent(in)  chunk,
type(Mesh),intent(in)  Msh 
)

Add chunk to interface elements Chunk may contain non-interface elements - these fill be filtered out.

Parameters:
chunkchunk of elements to be added to E

Definition at line 406 of file ElemMtxs_distribute.F90.

Referenced by ElemMtxs_readAndDistribute(), and ElemMtxs_recvAndAssemble().

subroutine,private ElemMtxs_distribute::ElemMtxsIntf_buildInnerInterfEMask ( type(ElemMtxsIntf),intent(inout)  E,
type(Mesh),intent(in)  M 
) [private]

Builds inner/interface masks for elements Allocates and fills in: inner_interf_emask.

Definition at line 182 of file ElemMtxs_distribute.F90.

References globals::D_DEBUGLVL, ElemMtxs_base::D_ELEM_INNER, ElemMtxs_base::D_ELEM_INTERF, Mesh_class::D_FREEDOM_INTERF, globals::myrank, and globals::stream.

Referenced by ElemMtxsIntf_buildMapsMasks().

subroutine,private ElemMtxs_distribute::ElemMtxsIntf_buildMapsMasks ( type(ElemMtxsIntf),intent(inout)  E,
type(Mesh),intent(in)  M 
) [private]

Build global to local, local to global and inner/interface maps for elements Allocates and fills in: gl_emap, lg_emap, inner_interf_emask, intfsend_emask, intfell2indx.

Definition at line 230 of file ElemMtxs_distribute.F90.

References ElemMtxs_base::D_ELEM_INTERF, Mesh_class::D_FREEDOM_INTERF, ElemMtxsIntf_buildInnerInterfEMask(), and globals::myrank.

Referenced by ElemMtxsIntf_newInit().

subroutine ElemMtxs_distribute::ElemMtxsIntf_Destroy ( type(ElemMtxsIntf),intent(inout)  E)
subroutine ElemMtxs_distribute::ElemMtxsIntf_distAndAssemble ( type(ElemMtxsIntf),intent(inout)  E,
type(SpMtx),intent(out)  A_interf,
type(Mesh),intent(in)  Msh 
)
subroutine ElemMtxs_distribute::ElemMtxsIntf_exchangeMapsMasks ( type(ElemMtxsIntf),intent(inout)  E,
type(Mesh),intent(in)  M 
)

Synchronize send/receive maps (non-blocking)

Definition at line 341 of file ElemMtxs_distribute.F90.

Referenced by ElemMtxsIntf_newInit().

type(ElemMtxsIntf) ElemMtxs_distribute::ElemMtxsIntf_newInit ( type(Mesh),intent(in)  Msh)
subroutine ElemMtxs_distribute::ElemMtxsIntf_waitMapsMasks ( type(ElemMtxsIntf),intent(inout)  E,
type(Mesh),intent(in)  M 
)

Wait until send/receive maps have been synchronized.

Definition at line 382 of file ElemMtxs_distribute.F90.

Referenced by ElemMtxsIntf_distAndAssemble().