Version: 5.1.6

ParaMEDMEM.ElementLocator Class Reference

#include <ElementLocator.hxx>

Inheritance diagram for ParaMEDMEM.ElementLocator:
Inheritance graph

Public Member Functions

 ElementLocator (const ParaFIELD &sourceField, const ProcessorGroup &distant_group, const ProcessorGroup &local_group)
virtual ~ElementLocator ()
void exchangeMesh (int idistantrank, MEDCouplingPointSet *&target_mesh, int *&distant_ids)
void exchangeMethod (const std::string &sourceMeth, int idistantrank, std::string &targetMeth)
const std::vector< int > & getDistantProcIds () const
const MPI_Comm * getCommunicator () const
NatureOfField getLocalNature () const
bool isM1DCorr () const
 This method is used to informed if there is -1D mesh on distant_group side or on local_group side.
void recvPolicyFromLazySideW (std::vector< int > &policy)
void sendSumToLazySideW (const std::vector< std::vector< int > > &distantLocEltIds, const std::vector< std::vector< double > > &partialSumRelToDistantIds)
void recvSumFromLazySideW (std::vector< std::vector< double > > &globalSumRelToDistantIds)
void sendCandidatesForAddElementsW (const std::vector< int > &distantGlobIds)
void recvAddElementsFromLazyProcsW (std::vector< std::vector< int > > &elementsToAdd)
void sendLocalIdsToLazyProcsW (const std::vector< std::vector< int > > &distantLocEltIds)
void recvGlobalIdsFromLazyProcsW (const std::vector< std::vector< int > > &distantLocEltIds, std::vector< std::vector< int > > &globalIds)
void recvCandidatesGlobalIdsFromLazyProcsW (std::vector< std::vector< int > > &globalIds)
void sendPartialSumToLazyProcsW (const std::vector< int > &distantGlobIds, const std::vector< double > &sum)
int sendPolicyToWorkingSideL ()
void recvFromWorkingSideL ()
void sendToWorkingSideL ()
void recvLocalIdsFromWorkingSideL ()
void sendGlobalIdsToWorkingSideL ()
void sendCandidatesGlobalIdsToWorkingSideL ()
void recvSumFromWorkingSideL ()
void recvCandidatesForAddElementsL ()
void sendAddElementsToWorkingSideL ()
void _computeBoundingBoxes ()
bool _intersectsBoundingBox (int irank)
void _exchangeMesh (MEDCouplingPointSet *local_mesh, MEDCouplingPointSet *&distant_mesh, int iproc_distant, const DataArrayInt *distant_ids_send, int *&distant_ids_recv)

Data Fields

const ParaFIELD_local_para_field
MEDCouplingPointSet_local_cell_mesh
int _local_cell_mesh_space_dim
bool _is_m1d_corr
MEDCouplingPointSet_local_face_mesh
std::vector
< MEDCouplingPointSet * > 
_distant_cell_meshes
std::vector
< MEDCouplingPointSet * > 
_distant_face_meshes
double_domain_bounding_boxes
const ProcessorGroup_distant_group
const ProcessorGroup_local_group
ProcessorGroup_union_group
std::vector< int_distant_proc_ids
const MPI_Comm * _comm
std::vector< double_values_added
std::vector< std::vector< int > > _ids_per_working_proc
std::vector< std::vector< int > > _ids_per_working_proc3
std::vector< std::vector
< double > > 
_values_per_working_proc

Static Public Attributes

static const int CUMULATIVE_POLICY = 3
static const int NO_POST_TREATMENT_POLICY = 7

Constructor & Destructor Documentation

ParaMEDMEM.ElementLocator::ElementLocator ( const ParaFIELD sourceField,
const ProcessorGroup distant_group,
const ProcessorGroup local_group 
)
ParaMEDMEM.ElementLocator::~ElementLocator (  )  [virtual]

Member Function Documentation

void ParaMEDMEM.ElementLocator::exchangeMesh ( int  idistantrank,
MEDCouplingPointSet *&  target_mesh,
int *&  distant_ids 
)
void ParaMEDMEM.ElementLocator::exchangeMethod ( const std::string &  sourceMeth,
int  idistantrank,
std::string &  targetMeth 
)
const std::vector<int>& ParaMEDMEM.ElementLocator.getDistantProcIds (  )  const
const MPI_Comm * ParaMEDMEM.ElementLocator::getCommunicator (  )  const
NatureOfField ParaMEDMEM.ElementLocator::getLocalNature (  )  const
bool ParaMEDMEM.ElementLocator.isM1DCorr (  )  const

This method is used to informed if there is -1D mesh on distant_group side or on local_group side.

References ParaMEDMEM.ElementLocator._is_m1d_corr.

void ParaMEDMEM.ElementLocator::recvPolicyFromLazySideW ( std::vector< int > &  policy  ) 
void ParaMEDMEM.ElementLocator::sendSumToLazySideW ( const std::vector< std::vector< int > > &  distantLocEltIds,
const std::vector< std::vector< double > > &  partialSumRelToDistantIds 
)
void ParaMEDMEM.ElementLocator::recvSumFromLazySideW ( std::vector< std::vector< double > > &  globalSumRelToDistantIds  ) 
void ParaMEDMEM.ElementLocator::sendCandidatesForAddElementsW ( const std::vector< int > &  distantGlobIds  ) 
void ParaMEDMEM.ElementLocator::recvAddElementsFromLazyProcsW ( std::vector< std::vector< int > > &  elementsToAdd  ) 
void ParaMEDMEM.ElementLocator::sendLocalIdsToLazyProcsW ( const std::vector< std::vector< int > > &  distantLocEltIds  ) 
void ParaMEDMEM.ElementLocator::recvGlobalIdsFromLazyProcsW ( const std::vector< std::vector< int > > &  distantLocEltIds,
std::vector< std::vector< int > > &  globalIds 
)
void ParaMEDMEM.ElementLocator::recvCandidatesGlobalIdsFromLazyProcsW ( std::vector< std::vector< int > > &  globalIds  ) 
void ParaMEDMEM.ElementLocator::sendPartialSumToLazyProcsW ( const std::vector< int > &  distantGlobIds,
const std::vector< double > &  sum 
)
int ParaMEDMEM.ElementLocator::sendPolicyToWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::recvFromWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::sendToWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::recvLocalIdsFromWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::sendGlobalIdsToWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::sendCandidatesGlobalIdsToWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::recvSumFromWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::recvCandidatesForAddElementsL (  ) 

Foreach working procs Wi compute and push it in _ids_per_working_proc3, if it exist, local id of nodes that are in interaction with an another lazy proc than this and that exists in this but with no interaction with this. The computation is performed here. sendAddElementsToWorkingSideL is only in charge to send precomputed _ids_per_working_proc3 attribute. connected with ElementLocator.sendCandidatesForAddElementsW

References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._ids_per_working_proc, ParaMEDMEM.ElementLocator._ids_per_working_proc3, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.RefCountObject.decrRef(), ParaMEDMEM.DataArrayInt.getConstPointer(), ParaMEDMEM.DataArray.getNumberOfTuples(), ParaMEDMEM.CommInterface.recv(), ParaMEDMEM.ParaFIELD.returnGlobalNumbering(), and testMedMemCxxTests.status.

void ParaMEDMEM.ElementLocator::sendAddElementsToWorkingSideL (  ) 
void ParaMEDMEM.ElementLocator::_computeBoundingBoxes (  ) 
bool ParaMEDMEM.ElementLocator::_intersectsBoundingBox ( int  irank  ) 
void ParaMEDMEM.ElementLocator::_exchangeMesh ( MEDCouplingPointSet local_mesh,
MEDCouplingPointSet *&  distant_mesh,
int  iproc_distant,
const DataArrayInt distant_ids_send,
int *&  distant_ids_recv 
)

Field Documentation