#include <ElementLocator.hxx>

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 () |
Static Public Attributes | |
| static const int | CUMULATIVE_POLICY = 3 |
| static const int | NO_POST_TREATMENT_POLICY = 7 |
Private Member Functions | |
| 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) |
Private Attributes | |
| 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 |
| ParaMEDMEM.ElementLocator::ElementLocator | ( | const ParaFIELD & | sourceField, |
| const ProcessorGroup & | distant_group, | ||
| const ProcessorGroup & | local_group | ||
| ) |
| ParaMEDMEM.ElementLocator::~ElementLocator | ( | ) | [virtual] |
| void ParaMEDMEM.ElementLocator::exchangeMesh | ( | int | idistantrank, |
| MEDCouplingPointSet *& | target_mesh, | ||
| int *& | distant_ids | ||
| ) |
References ParaMEDMEM.ElementLocator._distant_group, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._domain_bounding_boxes, ParaMEDMEM.ElementLocator._exchangeMesh(), ParaMEDMEM.ElementLocator._local_cell_mesh, ParaMEDMEM.ElementLocator._local_cell_mesh_space_dim, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.ElementLocator._union_group, ParaMEDMEM.MEDCouplingField.buildSubMeshData(), INTERP_KERNEL.DirectedBoundingBox.dataSize(), ParaMEDMEM.RefCountObject.decrRef(), INTERP_KERNEL.InterpolationOptions.getBoundingBoxAdjustment(), ParaMEDMEM.MEDCouplingPointSet.getCellsInBoundingBox(), ParaMEDMEM.ParaFIELD.getField(), test_NonCoincidentDEC.rank, INTERP_KERNEL.DirectedBoundingBox.setData(), and ParaMEDMEM.ProcessorGroup.translateRank().
| void ParaMEDMEM.ElementLocator::exchangeMethod | ( | const std::string & | sourceMeth, |
| int | idistantrank, | ||
| std::string & | targetMeth | ||
| ) |
References ParaMEDMEM.ElementLocator._distant_group, ParaMEDMEM.ElementLocator._union_group, ParaMEDMEM.MPIProcessorGroup.getComm(), ParaMEDMEM.ProcessorGroup.getCommInterface(), med_test1.group, ParaMEDMEM.CommInterface.sendRecv(), testMedMemCxxTests.status, and ParaMEDMEM.MPIProcessorGroup.translateRank().
| const std::vector<int>& ParaMEDMEM.ElementLocator.getDistantProcIds | ( | ) | const |
References ParaMEDMEM.ElementLocator._distant_proc_ids.
| 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 | ||
| ) |
connected with ElementLocator.recvFromWorkingSideL
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, and ParaMEDMEM.CommInterface.send().
| 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::recvCandidatesGlobalIdsFromLazyProcsW | ( | std::vector< std::vector< int > > & | globalIds | ) |
| void ParaMEDMEM.ElementLocator::sendPartialSumToLazyProcsW | ( | const std::vector< int > & | distantGlobIds, |
| const std::vector< double > & | sum | ||
| ) |
connected with ElementLocator.recvSumFromWorkingSideL
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, and ParaMEDMEM.CommInterface.send().
| int ParaMEDMEM.ElementLocator::sendPolicyToWorkingSideL | ( | ) |
connected with ElementLocator.recvPolicyFromLazySideW
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.ElementLocator.CUMULATIVE_POLICY, ParaMEDMEM.RefCountObject.decrRef(), ParaMEDMEM.ElementLocator.NO_POST_TREATMENT_POLICY, ParaMEDMEM.ParaFIELD.returnCumulativeGlobalNumbering(), and ParaMEDMEM.CommInterface.send().
| void ParaMEDMEM.ElementLocator::recvFromWorkingSideL | ( | ) |
connected with ElementLocator.sendSumToLazySideW
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._ids_per_working_proc, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.ElementLocator._values_added, ParaMEDMEM.ParaFIELD.getField(), ParaMEDMEM.MEDCouplingFieldDouble.getNumberOfTuples(), ParaMEDMEM.CommInterface.recv(), testMedMemCxxTests.status, and medMeshing_test.values.
| void ParaMEDMEM.ElementLocator::sendToWorkingSideL | ( | ) |
| void ParaMEDMEM.ElementLocator::recvLocalIdsFromWorkingSideL | ( | ) |
| void ParaMEDMEM.ElementLocator::sendGlobalIdsToWorkingSideL | ( | ) |
connected with ElementLocator.recvGlobalIdsFromLazyProcsW
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._ids_per_working_proc, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.RefCountObject.decrRef(), ParaMEDMEM.DataArrayInt.getConstPointer(), ParaMEDMEM.ParaFIELD.returnGlobalNumbering(), and ParaMEDMEM.CommInterface.send().
| void ParaMEDMEM.ElementLocator::sendCandidatesGlobalIdsToWorkingSideL | ( | ) |
This method sends to working side Wi only nodes in interaction with Wi and located on boundary, to reduce number. connected with ElementLocator.recvCandidatesGlobalIdsFromLazyProcsW
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._ids_per_working_proc, ParaMEDMEM.ElementLocator._local_para_field, ParaMEDMEM.RefCountObject.decrRef(), ParaMEDMEM.MEDCouplingPointSet.findBoundaryNodes(), ParaMEDMEM.ParaMESH.getCellMesh(), ParaMEDMEM.DataArrayInt.getConstPointer(), ParaMEDMEM.ParaFIELD.getSupport(), ParaMEDMEM.ParaFIELD.returnGlobalNumbering(), and ParaMEDMEM.CommInterface.send().
| void ParaMEDMEM.ElementLocator::recvSumFromWorkingSideL | ( | ) |
connected with ElementLocator.sendPartialSumToLazyProcsW
References ParaMEDMEM.ElementLocator._comm, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._ids_per_working_proc, ParaMEDMEM.ElementLocator._values_per_working_proc, ParaMEDMEM.CommInterface.recv(), and testMedMemCxxTests.status.
| 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 | ( | ) | [private] |
References ParaMEDMEM.ElementLocator._distant_group, ParaMEDMEM.ElementLocator._distant_proc_ids, ParaMEDMEM.ElementLocator._domain_bounding_boxes, ParaMEDMEM.ElementLocator._intersectsBoundingBox(), ParaMEDMEM.ElementLocator._is_m1d_corr, ParaMEDMEM.ElementLocator._local_cell_mesh, ParaMEDMEM.ElementLocator._local_cell_mesh_space_dim, ParaMEDMEM.ElementLocator._union_group, ParaMEDMEM.CommInterface.allGather(), INTERP_KERNEL.DirectedBoundingBox.dataSize(), ParaMEDMEM.MEDCouplingPointSet.getBoundingBox(), ParaMEDMEM.MPIProcessorGroup.getComm(), ParaMEDMEM.ProcessorGroup.getCommInterface(), ParaMEDMEM.MEDCouplingPointSet.getCoords(), INTERP_KERNEL.DirectedBoundingBox.getData(), ParaMEDMEM.MEDCouplingMesh.getMeshDimension(), ParaMEDMEM.MEDCouplingPointSet.getNumberOfNodes(), ParaMEDMEM.DataArrayDouble.getPointer(), ParaMEDMEM.MEDCouplingPointSet.getSpaceDimension(), med_test1.group, test_NonCoincidentDEC.rank, ParaMEDMEM.ProcessorGroup.size(), and ParaMEDMEM.ProcessorGroup.translateRank().
| bool ParaMEDMEM.ElementLocator::_intersectsBoundingBox | ( | int | irank | ) | [private] |
References ParaMEDMEM.ElementLocator._domain_bounding_boxes, ParaMEDMEM.ElementLocator._local_cell_mesh_space_dim, ParaMEDMEM.ElementLocator._union_group, INTERP_KERNEL.DirectedBoundingBox.dataSize(), INTERP_KERNEL.DirectedBoundingBox.isDisjointWith(), ParaMEDMEM.ProcessorGroup.myRank(), and INTERP_KERNEL.DirectedBoundingBox.setData().
| void ParaMEDMEM.ElementLocator::_exchangeMesh | ( | MEDCouplingPointSet * | local_mesh, |
| MEDCouplingPointSet *& | distant_mesh, | ||
| int | iproc_distant, | ||
| const DataArrayInt * | distant_ids_send, | ||
| int *& | distant_ids_recv | ||
| ) | [private] |
References ParaMEDMEM.ElementLocator._distant_group, ParaMEDMEM.ElementLocator._union_group, ParaMEDMEM.MEDCouplingPointSet.BuildInstanceFromMeshType(), ParaMEDMEM.RefCountObject.decrRef(), MEDMEM.fill(), ParaMEDMEM.MPIProcessorGroup.getComm(), ParaMEDMEM.ProcessorGroup.getCommInterface(), ParaMEDMEM.DataArrayInt.getConstPointer(), ParaMEDMEM.DataArray.getNbOfElems(), ParaMEDMEM.DataArray.getNumberOfTuples(), ParaMEDMEM.DataArrayDouble.getPointer(), ParaMEDMEM.DataArrayInt.getPointer(), ParaMEDMEM.MEDCouplingPointSet.getTinySerializationInformation(), med_test1.group, ParaMEDMEM.DataArrayDouble.New(), ParaMEDMEM.DataArrayInt.New(), ParaMEDMEM.MEDCouplingPointSet.resizeForUnserialization(), ParaMEDMEM.CommInterface.sendRecv(), ParaMEDMEM.MEDCouplingPointSet.serialize(), testMedMemCxxTests.status, and ParaMEDMEM.MEDCouplingPointSet.unserialization().
const ParaFIELD& ParaMEDMEM.ElementLocator._local_para_field [private] |
bool ParaMEDMEM.ElementLocator._is_m1d_corr [private] |
std::vector<MEDCouplingPointSet*> ParaMEDMEM.ElementLocator._distant_cell_meshes [private] |
std::vector<MEDCouplingPointSet*> ParaMEDMEM.ElementLocator._distant_face_meshes [private] |
const ProcessorGroup& ParaMEDMEM.ElementLocator._distant_group [private] |
const ProcessorGroup& ParaMEDMEM.ElementLocator._local_group [private] |
std::vector<int> ParaMEDMEM.ElementLocator._distant_proc_ids [private] |
const MPI_Comm* ParaMEDMEM.ElementLocator._comm [private] |
std::vector<double> ParaMEDMEM.ElementLocator._values_added [private] |
std::vector< std::vector<int> > ParaMEDMEM.ElementLocator._ids_per_working_proc [private] |
std::vector< std::vector<int> > ParaMEDMEM.ElementLocator._ids_per_working_proc3 [private] |
std::vector< std::vector<double> > ParaMEDMEM.ElementLocator._values_per_working_proc [private] |
const int ParaMEDMEM.ElementLocator.CUMULATIVE_POLICY = 3 [static] |
const int ParaMEDMEM.ElementLocator.NO_POST_TREATMENT_POLICY = 7 [static] |