Salome HOME
Ensure sequential run of MEDLoader 1,2,3 tests.
[tools/medcoupling.git] / src / ParaMEDMEM / DisjointDEC.cxx
index 57e67fd2c93721871b57a49232740f8d0e8c55f6..cb14746d4ca741aa8cf182cf7fd3d0ab276d40a6 100644 (file)
 #include <iostream>
 
 
-namespace ParaMEDMEM
+namespace MEDCoupling
 {
 
   /*!
    * \anchor DisjointDEC-det
    * \class DisjointDEC
    *
-   * Interface class for creation of a link between two
-   * processor groups for exhanging mesh or field data.
-   * The \c DEC is defined by attaching a field on the receiving or on the
+   * \section DisjointDEC-over Overview
+   *
+   * 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 (\ref MEDCoupling::OverlapDEC "OverlapDEC" is to be considered otherwise).
+   * The %DEC is initialized by attaching a field on the receiving or on the
    * sending side.
-   * On top of attaching a \c ParaMEDMEM::ParaFIELD, it is possible to
-   * attach a ICoCo::Field. This class is an abstract class that enables
-   * coupling of codes that respect the ICoCo interface \ref icoco. It has two implementations:
-   * one for codes that express their fields as \ref fields "MEDCoupling fields" (ICoCo::MEDField).
    *
-   * \section dec_options DEC Options
-   * Options supported by \c DEC objects are
+   * The data is sent or received through calls to the (abstract) methods recvData() and sendData().
+   *
+   * One can attach either a \c MEDCoupling::ParaFIELD, or a
+   * \c ICoCo::Field, or directly a \c MEDCoupling::MEDCouplingFieldDouble instance.
+   * See the various signatures of the method DisjointDEC::attachLocalField()
+   *
+   * The derivations of this class should be considered for practical instanciation:
+   * - \ref InterpKernelDEC-det "InterpKernelDEC"
+   * - \ref ExplicitCoincidentDEC-det "ExplicitCoincidentDEC"
+   * - \ref StructuredCoincidentDEC-det "StructuredCoincidentDEC"
+   *
+   * \section DisjointDEC-options DisjointDEC options
+   * 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 \ref MEDCoupling::DECOptions "DECOptions"
    *
-   * <TABLE BORDER=1 >
-   * <TR><TD>Option</TD><TD>Description</TD><TD>Default value</TD></TR>
-   * <TR><TD>ForcedRenormalization</TD><TD>After receiving data, the target field is renormalized so that L2-norms of the source and target fields match.</TD><TD> false </TD></TR>
-   *</TABLE>
-
-
-   The following code excerpt shows how to set options for an object that inherits from \c DEC :
-
-   \code
-   InterpKernelDEC dec(source_group,target_group);
-   dec.setOptions("ForcedRenormalization",true);
-   dec.attachLocalField(field);
-   dec.synchronize();
-   if (source_group.containsMyRank())
-     dec.sendData();
-   else
-     dec.recvData();
-   \endcode
   */
 
-
   DisjointDEC::DisjointDEC(ProcessorGroup& source_group, ProcessorGroup& target_group):
       _local_field(0),
       _source_group(&source_group),
@@ -111,12 +103,12 @@ namespace ParaMEDMEM
     DEC::copyFrom(other);
     if(other._target_group)
       {
-        _target_group=other._target_group->deepCpy();
+        _target_group=other._target_group->deepCopy();
         _owns_groups=true;
       }
     if(other._source_group)
       {
-        _source_group=other._source_group->deepCpy();
+        _source_group=other._source_group->deepCopy();
         _owns_groups=true;
       }
     if (_source_group && _target_group)
@@ -132,13 +124,13 @@ namespace ParaMEDMEM
      _comm_interface(0),
      _union_comm(MPI_COMM_NULL)
   {
-    ParaMEDMEM::CommInterface comm;
+    MEDCoupling::CommInterface comm;
     // Create the list of procs including source and target
     std::set<int> union_ids; // source and target ids in world_comm
     union_ids.insert(source_ids.begin(),source_ids.end());
     union_ids.insert(target_ids.begin(),target_ids.end());
     if(union_ids.size()!=(source_ids.size()+target_ids.size()))
-      throw INTERP_KERNEL::Exception("DisjointDEC constructor : source_ids and target_ids overlap partially or fully. This type of DEC does not support it ! OverlapDEC class could be the solution !");
+      throw INTERP_KERNEL::Exception("DisjointDEC constructor : source_ids and target_ids overlap partially or fully. This type of DEC does not support it! OverlapDEC class could be the solution!");
     int* union_ranks_world=new int[union_ids.size()]; // ranks of sources and targets in world_comm
     std::copy(union_ids.begin(), union_ids.end(), union_ranks_world);