Functions | |
ParaMEDMEM::DisjointDEC::DisjointDEC (ProcessorGroup &source_group, ProcessorGroup &target_group) | |
ParaMEDMEM::DisjointDEC::DisjointDEC (const DisjointDEC &) | |
DisjointDEC & | ParaMEDMEM::DisjointDEC::operator= (const DisjointDEC &s) |
void | ParaMEDMEM::DisjointDEC::copyInstance (const DisjointDEC &other) |
ParaMEDMEM::DisjointDEC::DisjointDEC (const std::set< int > &src_ids, const std::set< int > &trg_ids, const MPI_Comm &world_comm=MPI_COMM_WORLD) | |
virtual | ParaMEDMEM::DisjointDEC::~DisjointDEC () |
void | ParaMEDMEM::DisjointDEC::cleanInstance () |
void | ParaMEDMEM::DisjointDEC::setNature (NatureOfField nature) |
void | ParaMEDMEM::DisjointDEC::attachLocalField (const ParaFIELD *field, bool ownPt=false) |
void | ParaMEDMEM::DisjointDEC::attachLocalField (MEDCouplingFieldDouble *field) |
void | ParaMEDMEM::DisjointDEC::attachLocalField (const ICoCo::Field *field) |
void | ParaMEDMEM::DisjointDEC::renormalizeTargetField (bool isWAbs) |
Interface class for creation of a link between two processor groups for exhanging mesh or field data. The DEC
is defined by attaching a field on the receiving or on the sending side. On top of attaching a ParaMEDMEM::FIELD
, it is possible to attach a ICoCo::Field. This class is an abstract class that enables coupling of codes that respect the ICoCo interface icoco. It has two implementations: one for codes that express their fields as medoupling fields (ICoCo::MEDField) and one for codes that express their fields as Trio/U fields.
Options supported by DEC
objects are
Option | Description | Default value |
ForcedRenormalization | After receiving data, the target field is renormalized so that L2-norms of the source and target fields match. | false |
The following code excerpt shows how to set options for an object that inherits from DEC
:
ParaMEDMEM::DisjointDEC::DisjointDEC | ( | ProcessorGroup & | source_group, |
ProcessorGroup & | target_group | ||
) |
References ParaMEDMEM::DisjointDEC::_union_group.
ParaMEDMEM::DisjointDEC::DisjointDEC | ( | const DisjointDEC & | s | ) |
References ParaMEDMEM::DisjointDEC::copyInstance().
DisjointDEC & ParaMEDMEM::DisjointDEC::operator= | ( | const DisjointDEC & | s | ) |
|
protected |
ParaMEDMEM::DisjointDEC::DisjointDEC | ( | const std::set< int > & | src_ids, |
const std::set< int > & | trg_ids, | ||
const MPI_Comm & | world_comm = MPI_COMM_WORLD |
||
) |
|
virtual |
References ParaMEDMEM::DisjointDEC::cleanInstance().
|
protected |
References ParaMEDMEM::DisjointDEC::_local_field, ParaMEDMEM::DisjointDEC::_owns_field, ParaMEDMEM::DisjointDEC::_owns_groups, ParaMEDMEM::DisjointDEC::_source_group, ParaMEDMEM::DisjointDEC::_target_group, and ParaMEDMEM::DisjointDEC::_union_group.
Referenced by ParaMEDMEM::DisjointDEC::operator=(), and ParaMEDMEM::DisjointDEC::~DisjointDEC().
void ParaMEDMEM::DisjointDEC::setNature | ( | NatureOfField | nature | ) |
void ParaMEDMEM::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 ParaMEDMEM::DisjointDEC::_comm_interface, ParaMEDMEM::DisjointDEC::_local_field, ParaMEDMEM::DisjointDEC::_owns_field, ParaMEDMEM::DisjointDEC::compareFieldAndMethod(), ParaMEDMEM::ParaFIELD::getTopology(), and ParaMEDMEM::DisjointDEC::isInUnion().
void ParaMEDMEM::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 ParaMEDMEM::DisjointDEC::_source_group, ParaMEDMEM::DisjointDEC::_target_group, ParaMEDMEM::MEDCouplingField::getMesh(), ParaMEDMEM::MEDCouplingMesh::getName(), and ParaMEDMEM::DisjointDEC::isInUnion().
Referenced by ParaMEDMEM::DisjointDEC::attachLocalField(), ParaMEDMEM::ParaFIELD::synchronizeSource(), and ParaMEDMEM::ParaFIELD::synchronizeTarget().
void ParaMEDMEM::DisjointDEC::attachLocalField | ( | const ICoCo::Field * | 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 ParaMEDMEM::DisjointDEC::_source_group, ParaMEDMEM::DisjointDEC::_target_group, ParaMEDMEM::DisjointDEC::attachLocalField(), and ParaMEDMEM::DisjointDEC::isInUnion().
void ParaMEDMEM::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 ParaMEDMEM::DisjointDEC::_comm_interface, ParaMEDMEM::DisjointDEC::_local_field, ParaMEDMEM::DisjointDEC::_source_group, ParaMEDMEM::DisjointDEC::_target_group, ParaMEDMEM::DisjointDEC::_union_group, ParaMEDMEM::MEDCouplingFieldDouble::applyLin(), ParaMEDMEM::CommInterface::broadcast(), ParaMEDMEM::MEDCouplingFieldDouble::getArray(), ParaMEDMEM::ParaFIELD::getField(), ParaMEDMEM::DataArray::getNumberOfComponents(), and ParaMEDMEM::ParaFIELD::getVolumeIntegral().
Referenced by ParaMEDMEM::InterpKernelDEC::recvData(), and ParaMEDMEM::InterpKernelDEC::sendData().