|
C++ mpi module for stochmagnet_main Package
|
This class describes a macro cell network for one master core implementation. More...
#include <SMOMPI_OneMasterMacroCellsNetwork.h>


Public Member Functions | |
| virtual CORE_UniquePointer< SM_MacroCellsNetwork > | newInstance () const override |
| create a New instance of this More... | |
| virtual tMemSize | getMemorySize () const |
| return the memory size of the class and the memory size of all its attributes/associations More... | |
| virtual tMemSize | getContentsMemorySize () const |
| return the memory size of the included associations More... | |
| const tMPICoreId & | getMasterCoreId () const |
| get the master core id | |
| void | setMasterCoreId (const tMPICoreId &coreId) |
| set the master core id More... | |
| const std::valarray< tInteger > & | getBoundingBoxMacroCellsIndex () const |
| return the index of the macro cell within the not empty macro cells list of the boundig box More... | |
| tInteger | getBoundingBoxMacroCellsNumber () const |
| return the number of not empty macro cells of the bouning box More... | |
| const SM_RealField & | getBoundingBoxMacroCellsMassCenter () const |
| get the mass center on all not empty macro cells of the bouding box of macro cells More... | |
| const std::valarray< tReal > & | getBoundingBoxMacroCellsVolume () const |
| get the volume on all not empty macro cells of the bouding box of macro cells More... | |
| virtual void | computeMacroCells (const SM_Material &material, const SM_Network &network) override |
| compute the macro cells of the network More... | |
| virtual void | computeMacroCellsMassCenter (const SM_Material &material, const SM_Network &network) override |
| compute the macro cells of the network More... | |
| virtual tString | toString () const override |
| return string representaton of the operator | |
Public Member Functions inherited from SM_MacroCellsNetwork | |
| void | setMacroCellMargin (const tReal &w) |
| set margin More... | |
| const tReal & | getMacroCellMargin () const |
| get margin More... | |
| void | setMacroCellSize (const std::array< tReal, SM_Constants::DIM > &H) |
| set the macro cell size in angstrom More... | |
| void | setMacroCellSize (const std::vector< tReal > &H) |
| set the macro cell size in angstrom More... | |
| const std::array< tReal, SM_Constants::DIM > & | getMacroCellSize () const |
| get the macro cell size | |
| void | setMacroCellsNumber (const tInteger &n) |
| set the number of macro cells | |
| const tInteger & | getMacroCellsNumber () const |
| get the number of macro cells | |
| const SM_RealField & | getMacroCellsMassCenter () const |
| get the mass center of the macro cells for reading | |
| SM_RealField & | getMacroCellsMassCenter () |
| get the mass center of the macro cells for writing | |
| const std::valarray< tInteger > & | getMacroCellsList () const |
| get the index of macro cell containing each particle p | |
| std::valarray< tInteger > & | getMacroCellsList () |
| get the index of macro cell containing each particle p | |
| const std::valarray< tReal > & | getMacroCellsVolume () const |
| get volume of macro cells in Angstrom | |
| std::valarray< tReal > & | getMacroCellsVolume () |
| get volume of macro cells in Angstrom | |
| const tReal & | getMacroCellVolume (const tInteger &m) const |
| get volume of macro cell at index m in Angstrom More... | |
| const tInteger & | getMacroCellIndex (const tInteger &p) const |
| get the local index of the macro cell containing particle p More... | |
Public Member Functions inherited from SM_Object | |
| SM_Object (void) | |
| create | |
| virtual | ~SM_Object (void) |
| destroy | |
Public Member Functions inherited from CORE_Object | |
| template<class T > | |
| std::shared_ptr< T > | getSharedPointer () |
| return the shared pointer for this More... | |
| template<class T > | |
| std::shared_ptr< const T > | getConstSharedPointer () const |
| return a const shared pointer for this More... | |
| template<class T > | |
| tBoolean | isInstanceOf () const |
| test if the clas T is an instance of this class More... | |
| tString | getClassName () const |
| return the name of the class More... | |
| tString | getPointerString () const |
| retrun the pointer of the class as a string More... | |
| tString | getIdentityString () const |
| retrun the string identification of the class More... | |
Static Public Member Functions | |
| static CORE_UniquePointer< SelfClass > | New () |
| return a new unique instnace of class This More... | |
| static tBoolean | WaitForBoundingBoxMacroCellsIndexFromNeighborCore (const MPI_Environment &mpiEnv, tMPICoreId &c, const tMPITag &tag, tMPICount &nValues, std::valarray< tInteger > &boundingBoxMacroCellsIndex, tMPIBoolean &isAvaliable, tMPIStatus &status, std::map< tMPICoreId, tBoolean > &isDataReceivedFromCore) |
| wait for receiveing the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ from the core c with tag. More... | |
| static tBoolean | WaitForWeightFieldFromNeighborCore (const MPI_Environment &mpiEnv, tMPICoreId &c, const tMPITag &tagIndices, tMPICount &nIndices, std::valarray< tInteger > &boundingBoxMacroCellsIndex, const tMPITag &tagX, tMPICount &sX, std::valarray< tReal > &X, const tMPITag &tagW, tMPICount &nW, std::valarray< tInteger > &W, tMPIBoolean &isAvaliable, tMPIStatus &status, std::array< tMPIRequest, 3 > &requests, std::map< tMPICoreId, tBoolean > &isDataReceivedFromCore) |
| wait for receiving the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ and fields (W,X) from the core c with tag. More... | |
| static tBoolean | WaitForFieldFromNeighborCore (const MPI_Environment &mpiEnv, tMPICoreId &c, const tMPITag &tagIndices, tMPICount &nIndices, std::valarray< tInteger > &boundingBoxMacroCellsIndex, const tMPITag &tagX, tMPICount &sX, std::valarray< tReal > &X, tMPIBoolean &isAvaliable, tMPIStatus &status, std::array< tMPIRequest, 2 > &requests, std::map< tMPICoreId, tBoolean > &isDataReceivedFromCore) |
| wait for receiving the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ and fields X from the core c with tag. More... | |
| static void | SumReduceField (const MPI_Environment &mpiEnv, const tMPICoreId &masterCoreId, const tMPITag &tagX, const std::valarray< tInteger > &BBMacroCellsIndexMap, const SM_RealField &Xc, const std::valarray< tInteger > &Wc, SM_RealField &X, std::valarray< tInteger > &W, std::valarray< tInteger > &coreBBMacroCellsIndex, std::valarray< tReal > &corePX, std::valarray< tInteger > &corePW) |
| make the sum reduction of the field Xc into X (Wc into W) with the map BBMacroCellsIndexMap More... | |
| static void | SumReduceField (const MPI_Environment &mpiEnv, const tMPICoreId &masterCoreId, const tMPITag &tagX, const std::valarray< tInteger > &BBMacroCellsIndexMap, const SM_RealField &Xc, SM_RealField &X, std::valarray< tInteger > &coreBBMacroCellsIndex, std::valarray< tReal > &corePX) |
| make the sum reduction of the field Xc into X with the map BBMacroCellsIndexMap More... | |
| static void | ScatterField (const MPI_Environment &mpiEnv, const tMPICoreId &masterCoreId, const tMPITag &tagX, const SM_RealField &X, const std::valarray< tInteger > &BBMacroCellsIndexMap, SM_RealField &Xc, std::valarray< tInteger > &coreBBMacroCellsIndex, std::valarray< tReal > &coreX) |
| scatter he field X into Xc with the map BBMacroCellsIndexMap More... | |
| static void | ISendFieldToCore (const MPI_Environment &mpiEnv, const tMPICoreId &c, const tMPICount &nMCs, const tInteger *BBMacroCellsIndexMap, const SM_RealField &X, const tMPITag &tagX, tMPIRequest &request, tReal *vXc) |
| non blocking end message to send selected values of X with the map BMacroCellsIndexMap to values of Xc More... | |
| static void | SelectFieldValues (const tMPICount &nMCs, const tInteger *BBMacroCellsIndexMap, const SM_RealField &X, tReal *Xs) |
| selected value from X with map BBMacroCellsIndex, More... | |
Static Public Member Functions inherited from CORE_Object | |
| static tBoolean | EnableMemoryStack (const tBoolean &isMemoryChecked) |
| enable the memory stack More... | |
| static void | EnableMemoryStack () |
| enable the memory stack | |
| static void | DisableMemoryStack () |
| disable the memory stack | |
| static tBoolean | IsMemoryStackEnabled () |
| return trur if the memory stack is enabled | |
| static tString | MemoryStackToString () |
| get the memory stack in string More... | |
| static tIndex | GetRegisteredClassesNumber () |
| get the memory stack in string More... | |
Protected Member Functions | |
| SMOMPI_OneMasterMacroCellsNetwork (void) | |
| create a network class | |
| virtual | ~SMOMPI_OneMasterMacroCellsNetwork (void) |
| destroy | |
| virtual void | computeBoundingBoxMacroCells (const SM_Material &material, const SM_Network &network, const std::array< tReal, SM_Constants::DIM > &P, const std::array< tReal, SM_Constants::DIM > &Q) override |
| compute the macro cells of the network More... | |
Protected Member Functions inherited from SM_MacroCellsNetwork | |
| SM_MacroCellsNetwork (void) | |
| create a network class | |
| virtual | ~SM_MacroCellsNetwork (void) |
| destroy | |
Protected Member Functions inherited from CORE_Object | |
| CORE_Object () | |
| build an instance of the object | |
| virtual | ~CORE_Object () |
| destroy the instance of object std | |
Additional Inherited Members | |
Static Protected Member Functions inherited from SM_MacroCellsNetwork | |
| static tInteger | ComputeMacroCells (const SM_Material &material, const SM_Network &network, const std::array< tReal, SM_Constants::DIM > &P, const std::array< tReal, SM_Constants::DIM > &Q, const std::array< tReal, SM_Constants::DIM > ¯oCellSize, const tReal &margin, const tReal &epsVW, std::valarray< tReal > &MCsVolume, std::valarray< tInteger > ¯oCellsList) |
| compute the macro cells points and magnetization More... | |
| static void | EliminateEmptyMacroCells (const tReal &epsVM, std::valarray< tReal > &gMCVolume, std::valarray< tReal > &lMCVolume, std::valarray< tInteger > &gMCLocalIndices) |
| eliminate empty macro cells form lists More... | |
| static void | BuildParticlesListOrderedPerMacroCells (const SM_Network &network, const tInteger &nMacroCells, const std::valarray< tInteger > ¯oCellsPList, std::valarray< tInteger > &particlesMCList, std::valarray< tInteger > &particlesMCListOffset) |
| build the particles list for all not empty macro cells More... | |
| static void | ConvertIndices (const std::valarray< tInteger > &indicesConverter, std::valarray< tInteger > &indicesList) |
| convert indices More... | |
| static void | ConvertIndices (const std::valarray< tInteger > &indicesConverter, const tInteger &n, tInteger *iIndicesList) |
| convert indices More... | |
| static void | ComputeMacroCellX (const tInteger &nParticles, const tReal *iX, const tInteger *iMacroCellsList, SM_RealField &C, std::valarray< tInteger > &nMCParticles) |
| compute the sum of coordinantes of the particles in each macro cell More... | |
| static void | MeanX (const tInteger &n, const tInteger *iNs, tReal *iX) |
| compute the macro cells points and magnetization More... | |
This class describes a macro cell network for one master core implementation.
|
overrideprotectedvirtual |
compute the macro cells of the network
| [in] | material | :material data |
| [in] | network | : network of the macro cells |
| [in] | P | min point of the box to compute macro cells |
| [in] | Q | max point of the box to compute macro cells |
Reimplemented from SM_MacroCellsNetwork.
|
overridevirtual |
compute the macro cells of the network
| [in] | material | :material data |
| [in] | network | : network of the macro cells |
Reimplemented from SM_MacroCellsNetwork.
|
overridevirtual |
compute the macro cells of the network
| [in] | material | :material data |
| [in] | network | : network of the macro cells |
Reimplemented from SM_MacroCellsNetwork.
|
inline |
return the index of the macro cell within the not empty macro cells list of the boundig box
|
inline |
get the mass center on all not empty macro cells of the bouding box of macro cells
|
inline |
return the number of not empty macro cells of the bouning box
|
inline |
get the volume on all not empty macro cells of the bouding box of macro cells
|
inlinevirtual |
return the memory size of the included associations
Reimplemented from SM_MacroCellsNetwork.
|
inlinevirtual |
return the memory size of the class and the memory size of all its attributes/associations
Reimplemented from SM_MacroCellsNetwork.
|
static |
non blocking end message to send selected values of X with the map BMacroCellsIndexMap to values of Xc
| [in] | mpiEnv | : mpi environment |
| [in] | c | : core to send data |
| [in] | nMCs | size of data defined on core (vXc & BBMacroCellsIndexMap) |
| [in] | BBMacroCellsIndexMap | : map Ic: [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c \( I_c[l_m]=b_m \) |
| [in] | X | : values of the field X:[0,nBBMCs[ -> RxRxR in the core masterCoreId |
| [in] | tagX | : tag of the mpi-messages |
| [out] | request | : request of the non blocking mpi-message |
| [out] | vXc | : values of X of size nMCs defineed in core c \( X_c[l_m]=X[I_c[l_m]] \) |
|
inlinestatic |
return a new unique instnace of class This
|
inlineoverridevirtual |
create a New instance of this
Implements SM_MacroCellsNetwork.
|
static |
scatter he field X into Xc with the map BBMacroCellsIndexMap
| [in] | mpiEnv | : mpi environment |
| [in] | masterCoreId | id of the master core where X is defined |
| [in] | tagX | : tag of the mpi-messages |
| [in] | X | values of the field X:[0,nBBMCs[ -> RxRxR in the core masterCoreId |
| [in] | BBMacroCellsIndexMap | map Ic: [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c \( I_c[l_m]=b_m \) |
| [out] | Xc | values of the field Xc:[0,nMCs[ -> RxRxR in the core c \( X_c[l_m]=X[b_m] \) |
| [out] | coreBBMacroCellsIndex | work array to receive I data of core c of size nMCs which depends on core c |
| [out] | coreX | work array to send Xc data to core c of size D x nMCs where nMCs depends on core c |
|
static |
selected value from X with map BBMacroCellsIndex,
| [in] | nMCs | size of data to selectd from X |
| [in] | BBMacroCellsIndexMap | map I: [0,nMCs[ -> [0,nBBMCs[ of size nMCs \( I[l_m]=b_m \) |
| [in] | X | values of the field X:[0,nBBMCs[ -> RxRxR |
| [out] | Xs | : selected values \(X_s[l_m]=X[b_m] \) with \( b_m=I[l_m]\) |
|
inline |
set the master core id
| [in] | coreid | id of the master core |
|
static |
make the sum reduction of the field Xc into X (Wc into W) with the map BBMacroCellsIndexMap
| [in] | mpiEnv | : mpi environment |
| [in] | masterCoreId | id of the master core where X and W is defined |
| [in] | tagX | : tag of the mpi-messages |
| [in] | BBMacroCellsIndexMap | received map Ic: [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c \( I_c[l_m]=b_m \) |
| [in] | Xc | values of the field Xc:[0,nMCs[ -> RxRxR in the core c |
| [in] | Wc | values of the vector Wc:[0,nMCs[ -> N in the core c |
| [out] | X | values of the reduced field X:[0,nBBMCs[ -> RxRxR in the core masterCoreId \( X[b_m]=\sum_{c} C_c[l_m] \) |
| [out] | W | values of the reduced vector W:[0,nBBMCs[ -> N in the core c : \( W[b_m]=\sum_{c} W_c[l_m] \) |
| [out] | coreBBMacroCellsIndex | work array to receive I data of core c of size nMCs which depends on core c |
| [out] | corePX | work array to receive Xc data of core c of size D x nMCs where nMCs depends on core c |
| [out] | corePW | work array to receive Wc data of core c of size nMCs where nMCs depends on core c |
|
static |
make the sum reduction of the field Xc into X with the map BBMacroCellsIndexMap
| [in] | mpiEnv | : mpi environment |
| [in] | masterCoreId | id of the master core where X and W is defined |
| [in] | tagX | : tag of the mpi-messages |
| [in] | BBMacroCellsIndexMap | received map Ic: [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c \( I_c[l_m]=b_m \) |
| [in] | Xc | values of the field Xc:[0,nMCs[ -> RxRxR in the core c |
| [out] | X | values of the reduced field X:[0,nBBMCs[ -> RxRxR in the core masterCoreId \( X[b_m]=\sum_{c} C_c[l_m] \) |
| [out] | coreBBMacroCellsIndex | work array to receive I data of core c of size nMCs which depends on core c |
| [out] | corePX | work array to receive Xc data of core c of size D x nMCs where nMCs depends on core c |
|
static |
wait for receiveing the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ from the core c with tag.
| [in] | mpiEnv | : mpi environment |
| [out] | c | index of the core from which the data are received |
| [in] | tag | tag of the mpi-message to received |
| [out] | nValues | number of values of the received mpi-message |
| [out] | boundingBoxMacroCellsIndex | received map [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c |
| [out] | isAvaliable | indicates if the mpi-message is avaliable |
| [out] | status | data on the mpi-message |
| [out] | isDataReceivedFromCore | list of cores from which the data are received |
|
static |
wait for receiving the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ and fields X from the core c with tag.
| [in] | mpiEnv | : mpi environment |
| [out] | c | index of the core from which the data are received |
| [in] | tagI | tag of the map mpi-message to received |
| [out] | nIndices | number of values of the received mpi-message |
| [out] | boundingBoxMacroCellsIndex | received map [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c |
| [in] | tagX | tag of the X-field mpi-message to received |
| [out] | sX | number of values of the X-field mpi-message to received |
| [out] | X | values of the X-field mpi-message to received |
| [out] | isAvaliable | indicates if the mpi-message is avaliable |
| [out] | status | data on the mpi-message |
| [out] | requests | reauest of the non-blocking messages |
| [out] | isDataReceivedFromCore | list of cores from which the data are received |
|
static |
wait for receiving the map boundingBoxMacroCellsIndex [0,nMCs[ -> [0,nBBMCs[ and fields (W,X) from the core c with tag.
| [in] | mpiEnv | : mpi environment |
| [out] | c | index of the core from which the data are received |
| [in] | tagI | tag of the map mpi-message to received |
| [out] | nIndices | number of values of the received mpi-message |
| [out] | boundingBoxMacroCellsIndex | received map [0,nMCs[ -> [0,nBBMCs[ of size nMCs from core c |
| [in] | tagX | tag of the X-field mpi-message to received |
| [out] | sX | number of values of the X-field mpi-message to received |
| [out] | X | values of the X-field mpi-message to received |
| [in] | tagW | tag of the W-vector mpi-message to received |
| [out] | nW | number of values of the W-vector mpi-message to received |
| [out] | W | values of the W-vector mpi-message to received |
| [out] | isAvaliable | indicates if the mpi-message is avaliable |
| [out] | status | data on the mpi-message |
| [out] | requests | request of the non-blocking messages |
| [out] | isDataReceivedFromCore | list of cores from which the data are received |