|
DOUG 0.2
|
Element matrix distribution logic. More...
Data Types | |
| type | ElemMtxsIntf |
| ElemMtxsIntf type. More... | |
Functions/Subroutines | |
| type(ElemMtxsIntf) | ElemMtxsIntf_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. | |
Element matrix distribution logic.
| 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 | ||
| ) |
Reads in element stiffness/mass matrices and their RHSs and then distributes data to slaves by chunks Intended for master only!
| fnElemMatrs | name of the file containing element matrices |
| A | assembled non-interface elements |
| b | assembled RHS vector |
| A_intf | optional matrix containing assembled interface elements |
Definition at line 509 of file ElemMtxs_distribute.F90.
References ElemMtxs_assemble::ElemMtxsAssembleContext_addChunk(), ElemMtxs_assemble::ElemMtxsAssembleContext_Destroy(), ElemMtxs_assemble::ElemMtxsAssembleContext_extractSpMtx(), ElemMtxs_assemble::ElemMtxsAssembleContext_extractVect(), ElemMtxs_assemble::ElemMtxsAssembleContext_newInit(), ElemMtxs_base::ElemMtxsChunk_Destroy(), ElemMtxsIntf_addChunk(), ElemMtxsIntf_Destroy(), ElemMtxsIntf_distAndAssemble(), ElemMtxsIntf_newInit(), ElemMtxs_base::ElemMtxsPacket_Init(), ElemMtxs_base::ElemMtxsPacket_send(), ElemMtxs_base::ElemMtxsPacket_sendInProgress(), ElemMtxs_base::ElemMtxsPacket_wait(), not, globals::sctls, globals::stream, Vect_mod::Vect_exchangeIntf(), and Vect_mod::Vect_readAndBroadcastRHS().
| 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 | ||
| ) |
Waits for element matrix chunks from master - final matrix is assembled bit by bit.
Intended for slaves only!
| A | assembled non-interface elements |
| b | assembled RHS vector |
| A_intf | optional matrix containing assembled interface elements |
Definition at line 639 of file ElemMtxs_distribute.F90.
References ElemMtxs_base::D_ELEMMTXS_IN_PACKET, ElemMtxs_assemble::ElemMtxsAssembleContext_addChunk(), ElemMtxs_assemble::ElemMtxsAssembleContext_Destroy(), ElemMtxs_assemble::ElemMtxsAssembleContext_extractSpMtx(), ElemMtxs_assemble::ElemMtxsAssembleContext_extractVect(), ElemMtxs_assemble::ElemMtxsAssembleContext_newInit(), ElemMtxs_base::ElemMtxsChunk_Destroy(), ElemMtxs_base::ElemMtxsChunk_Init(), ElemMtxs_base::ElemMtxsChunk_recv(), ElemMtxsIntf_addChunk(), ElemMtxsIntf_Destroy(), ElemMtxsIntf_distAndAssemble(), ElemMtxsIntf_newInit(), globals::sctls, Vect_mod::Vect_exchangeIntf(), and Vect_mod::Vect_readAndBroadcastRHS().
| 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.
| chunk | chunk 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 | ) |
Destructor.
Definition at line 143 of file ElemMtxs_distribute.F90.
References ElemMtxs_base::ElemMtxsPacket_Destroy().
Referenced by ElemMtxs_readAndDistribute(), and ElemMtxs_recvAndAssemble().
| subroutine ElemMtxs_distribute::ElemMtxsIntf_distAndAssemble | ( | type(ElemMtxsIntf),intent(inout) | E, |
| type(SpMtx),intent(out) | A_interf, | ||
| type(Mesh),intent(in) | Msh | ||
| ) |
Distribute and assemble interface elements.
Definition at line 438 of file ElemMtxs_distribute.F90.
References DOUG_utils::DOUG_abort(), ElemMtxs_assemble::ElemMtxsAssembleContext_addChunk(), ElemMtxs_assemble::ElemMtxsAssembleContext_Destroy(), ElemMtxs_assemble::ElemMtxsAssembleContext_extractSpMtx(), ElemMtxs_assemble::ElemMtxsAssembleContext_newInit(), ElemMtxs_base::ElemMtxsChunk_Destroy(), ElemMtxs_base::ElemMtxsChunk_Init(), ElemMtxs_base::ElemMtxsChunk_recv(), ElemMtxsIntf_waitMapsMasks(), ElemMtxs_base::ElemMtxsPacket_send(), ElemMtxs_base::ElemMtxsPacket_wait(), and not.
Referenced by ElemMtxs_readAndDistribute(), and ElemMtxs_recvAndAssemble().
| 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 | ) |
Basic constructor for interface elements.
Definition at line 102 of file ElemMtxs_distribute.F90.
References ElemMtxsIntf_buildMapsMasks(), ElemMtxsIntf_exchangeMapsMasks(), and ElemMtxs_base::ElemMtxsPacket_Init().
Referenced by ElemMtxs_readAndDistribute(), and ElemMtxs_recvAndAssemble().
| 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().
1.7.3-20110217