#include <DisjointDEC.hxx>


Public Member Functions | |
| void | attachLocalField (const ICoCo::MEDDoubleField *field) |
| void | attachLocalField (const ParaFIELD *field, bool ownPt=false) |
| void | attachLocalField (MEDCouplingFieldDouble *field) |
| virtual void | computeProcGroup () |
| DisjointDEC () | |
| DisjointDEC (const DisjointDEC &) | |
| DisjointDEC (const std::set< int > &src_ids, const std::set< int > &trg_ids, const MPI_Comm &world_comm=MPI_COMM_WORLD) | |
| DisjointDEC (ProcessorGroup &source_group, ProcessorGroup &target_group) | |
| DisjointDEC & | operator= (const DisjointDEC &s) |
| virtual void | prepareSourceDE ()=0 |
| virtual void | prepareTargetDE ()=0 |
| virtual void | recvData ()=0 |
| void | renormalizeTargetField (bool isWAbs) |
| virtual void | sendData ()=0 |
| void | sendRecvData (bool way=true) |
| void | setNature (NatureOfField nature) |
| virtual void | synchronize ()=0 |
| virtual | ~DisjointDEC () |
Protected Member Functions | |
| void | cleanInstance () |
| void | compareFieldAndMethod () const |
Protected Attributes | |
| const ParaFIELD * | _local_field |
| bool | _owns_field |
Abstract interface class representing a link between two processor groups for exchanging mesh or field data. The two processor groups must have a void intersection (OverlapDEC is to be considered otherwise). The DEC is initialized by attaching a field on the receiving or on the sending side.
The data is sent or received through calls to the (abstract) methods recvData() and sendData().
One can attach either a MEDCoupling::ParaFIELD, or a ICoCo::Field, or directly a MEDCoupling::MEDCouplingFieldDouble instance. See the various signatures of the method DisjointDEC::attachLocalField()
The derivations of this class should be considered for practical instantiation:
The options supported by DisjointDEC objects are the same that the ones supported for all DECs in general and are all inherited from the class DECOptions
| MEDCoupling::DisjointDEC::DisjointDEC | ( | ) |
| MEDCoupling::DisjointDEC::DisjointDEC | ( | ProcessorGroup & | source_group, |
| ProcessorGroup & | target_group | ||
| ) |
References MEDCoupling::ProcessorGroup::fuse().
| MEDCoupling::DisjointDEC::DisjointDEC | ( | const DisjointDEC & | s | ) |
| MEDCoupling::DisjointDEC::DisjointDEC | ( | const std::set< int > & | src_ids, |
| const std::set< int > & | trg_ids, | ||
| const MPI_Comm & | world_comm = MPI_COMM_WORLD |
||
| ) |
|
virtual |
| DisjointDEC & MEDCoupling::DisjointDEC::operator= | ( | const DisjointDEC & | s | ) |
References cleanInstance().
| void MEDCoupling::DisjointDEC::setNature | ( | NatureOfField | nature | ) |
| void MEDCoupling::DisjointDEC::attachLocalField | ( | MEDCouplingFieldDouble * | field | ) |
Attaches a local field to a DEC. The method will test whether the processor is on the source or the target side and will associate the mesh underlying the field to the local side.
If the processor is on the receiving end of the DEC, the field will be updated by a recvData() call. Reversely, if the processor is on the sending end, the field will be read, possibly transformed, and sent appropriately to the other side.
References attachLocalField(), MEDCoupling::MEDCouplingField::getMesh(), MEDCoupling::MEDCouplingMesh::getName(), and MEDCoupling::ParaFIELD::setOwnSupport().
Referenced by attachLocalField(), MEDCoupling::ParaFIELD::synchronizeSource(), and MEDCoupling::ParaFIELD::synchronizeTarget().
| void MEDCoupling::DisjointDEC::attachLocalField | ( | const ParaFIELD * | field, |
| bool | ownPt = false |
||
| ) |
Attaches a local field to a DEC. If the processor is on the receiving end of the DEC, the field will be updated by a recvData() call. Reversely, if the processor is on the sending end, the field will be read, possibly transformed, and sent appropriately to the other side.
References _local_field, _owns_field, compareFieldAndMethod(), MEDCoupling::ProcessorGroup::getCommInterface(), MEDCoupling::Topology::getProcGroup(), and MEDCoupling::ParaFIELD::getTopology().
| void MEDCoupling::DisjointDEC::attachLocalField | ( | const ICoCo::MEDDoubleField * | field | ) |
Attaches a local field to a DEC. If the processor is on the receiving end of the DEC, the field will be updated by a recvData() call. Reversely, if the processor is on the sending end, the field will be read, possibly transformed, and sent appropriately to the other side. The field type is a generic ICoCo Field, so that the DEC can couple a number of different fields :
References attachLocalField(), and ICoCo::MEDDoubleField::getMCField().
|
pure virtual |
Implemented in MEDCoupling::ExplicitCoincidentDEC, MEDCoupling::StructuredCoincidentDEC, and MEDCoupling::InterpKernelDEC.
Referenced by MEDCoupling::ParaFIELD::synchronizeSource().
|
pure virtual |
Implemented in MEDCoupling::ExplicitCoincidentDEC, MEDCoupling::StructuredCoincidentDEC, and MEDCoupling::InterpKernelDEC.
Referenced by MEDCoupling::ParaFIELD::synchronizeTarget().
|
pure virtual |
Implemented in MEDCoupling::ExplicitCoincidentDEC, MEDCoupling::StructuredCoincidentDEC, and MEDCoupling::InterpKernelDEC.
Referenced by sendRecvData(), and MEDCoupling::ParaFIELD::synchronizeTarget().
|
pure virtual |
Implemented in MEDCoupling::ExplicitCoincidentDEC, MEDCoupling::StructuredCoincidentDEC, and MEDCoupling::InterpKernelDEC.
Referenced by sendRecvData(), and MEDCoupling::ParaFIELD::synchronizeSource().
| void MEDCoupling::DisjointDEC::sendRecvData | ( | bool | way = true | ) |
If way==true, source procs call sendData() and target procs call recvData(). if way==false, it's the other way round.
References recvData(), and sendData().
|
pure virtual |
Implemented in MEDCoupling::ExplicitCoincidentDEC, MEDCoupling::StructuredCoincidentDEC, and MEDCoupling::InterpKernelDEC.
Referenced by MEDCoupling::ParaFIELD::synchronizeSource(), and MEDCoupling::ParaFIELD::synchronizeTarget().
|
virtual |
| void MEDCoupling::DisjointDEC::renormalizeTargetField | ( | bool | isWAbs | ) |
Computes the field norm over its support on the source side and renormalizes the field on the target side so that the norms match.
References _local_field, MEDCoupling::MEDCouplingFieldDouble::applyLin(), MEDCoupling::MEDCouplingFieldT< T >::getArray(), MEDCoupling::MPIProcessorGroup::getComm(), MEDCoupling::ParaFIELD::getField(), and MEDCoupling::ParaFIELD::getVolumeIntegral().
Referenced by MEDCoupling::InterpKernelDEC::recvData(), and MEDCoupling::InterpKernelDEC::sendData().
|
protected |
References _local_field, and _owns_field.
Referenced by operator=(), MEDCoupling::InterpKernelDEC::release(), and MEDCoupling::StructuredCoincidentDEC::release().
|
protected |
References _local_field, MEDCoupling::ParaFIELD::getField(), MEDCoupling::MEDCouplingField::getTypeOfField(), MEDCoupling::ON_CELLS, and MEDCoupling::ON_NODES.
Referenced by attachLocalField().
|
protected |
Referenced by attachLocalField(), cleanInstance(), compareFieldAndMethod(), MEDCoupling::ExplicitCoincidentDEC::prepareSourceDE(), MEDCoupling::StructuredCoincidentDEC::prepareSourceDE(), MEDCoupling::ExplicitCoincidentDEC::recvData(), MEDCoupling::StructuredCoincidentDEC::recvData(), MEDCoupling::InterpKernelDEC::recvData(), renormalizeTargetField(), MEDCoupling::InterpKernelDEC::sendData(), setNature(), MEDCoupling::ExplicitCoincidentDEC::synchronize(), and MEDCoupling::InterpKernelDEC::synchronize().
|
protected |
Referenced by attachLocalField(), and cleanInstance().