]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
[ICoCo] ICoCo interface version 2
authorabn <adrien.bruneton@cea.fr>
Wed, 21 Aug 2019 13:17:44 +0000 (15:17 +0200)
committerabn <adrien.bruneton@cea.fr>
Fri, 12 Mar 2021 09:04:12 +0000 (10:04 +0100)
+ .h files are the official definitions of the interface
+ .hxx files are now also part of the official definition, and forward to the .h
+ renamed MEDField into MEDDoubleField. Added MEDIntField.
+ rename getField() into getMCField() into MED*Field class for clarity

35 files changed:
src/ICoCo/ICoCoField.cpp [new file with mode: 0644]
src/ICoCo/ICoCoField.cxx [deleted file]
src/ICoCo/ICoCoField.h [new file with mode: 0644]
src/ICoCo/ICoCoField.hxx
src/ICoCo/ICoCoMEDDoubleField.cxx [new file with mode: 0644]
src/ICoCo/ICoCoMEDDoubleField.h [new file with mode: 0644]
src/ICoCo/ICoCoMEDDoubleField.hxx [new file with mode: 0644]
src/ICoCo/ICoCoMEDField.cxx [deleted file]
src/ICoCo/ICoCoMEDField.hxx [deleted file]
src/ICoCo/ICoCoMEDIntField.cxx [new file with mode: 0644]
src/ICoCo/ICoCoMEDIntField.h [new file with mode: 0644]
src/ICoCo/ICoCoMEDIntField.hxx [new file with mode: 0644]
src/ICoCo/Readme.txt
src/ICoCo/Swig/ICoCoMEDField.i [new file with mode: 0644]
src/MEDCoupling/CMakeLists.txt
src/MEDCoupling_Swig/CMakeLists.txt
src/MEDCoupling_Swig/ICoCoMEDFieldTest.py [new file with mode: 0755]
src/MEDCoupling_Swig/MEDCoupling.i
src/MEDCoupling_Swig/tests.set
src/ParaMEDMEM/DEC.cxx
src/ParaMEDMEM/DisjointDEC.cxx
src/ParaMEDMEM/DisjointDEC.hxx
src/ParaMEDMEM/OverlapDEC.cxx
src/ParaMEDMEM/OverlapDEC.hxx
src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_StructuredCoincidentDEC.cxx
src/ParaMEDMEMTest/test_perf.cxx
src/ParaMEDMEM_Swig/CMakeLists.txt
src/ParaMEDMEM_Swig/ParaMEDMEM.i
src/ParaMEDMEM_Swig/ParaMEDMEMCommon.i
src/ParaMEDMEM_Swig/test_InterpKernelDEC.py
src/ParaMEDMEM_Swig/test_NonCoincidentDEC.py
src/ParaMEDMEM_Swig/test_StructuredCoincidentDEC.py
src/PyWrapping/CMakeLists.txt
src/PyWrapping/medcoupling.i

diff --git a/src/ICoCo/ICoCoField.cpp b/src/ICoCo/ICoCoField.cpp
new file mode 100644 (file)
index 0000000..28ab091
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+// ICoCo file common to several codes
+// ICoCoField.cxx
+// version 1.2 10/05/2010
+
+#include "ICoCoField.hxx"
+
+#include <string>
+
+using namespace ICoCo;
+using std::string;
+
+Field::Field() {
+  _name=new string;
+}
+
+Field::~Field() {
+  delete _name;
+}
+
+void Field::setName(const string& name) {
+  *_name=name;
+}
+
+const string& Field::getName() const {
+  return *_name;
+}
+
+const char* Field::getCharName() const {
+  return _name->c_str();
+}
diff --git a/src/ICoCo/ICoCoField.cxx b/src/ICoCo/ICoCoField.cxx
deleted file mode 100644 (file)
index b12a8ac..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// ICoCo file common to several codes
-// ICoCoField.cxx
-// version 1.2 10/05/2010
-
-#include "ICoCoField.hxx"
-
-#include <string>
-
-using namespace ICoCo;
-using std::string;
-
-Field::Field() {
-  _name=new string;
-}
-
-Field::~Field() {
-  delete _name;
-}
-
-void Field::setName(const string& name) {
-  *_name=name;
-}
-
-const string& Field::getName() const {
-  return *_name;
-}
-
-const char* Field::getCharName() const {
-  return _name->c_str();
-}
diff --git a/src/ICoCo/ICoCoField.h b/src/ICoCo/ICoCoField.h
new file mode 100644 (file)
index 0000000..7b03214
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+#ifndef _ICoCoField_included_
+#define _ICoCoField_included_
+#include <string>
+
+namespace ICoCo {
+
+  /*! @brief Top abstract class defining field objects that can be exchanged via the ICoCo interface.
+   *
+   * The Field class holds the name of the field.
+   */
+  class Field {
+  public:
+    /*! @brief Set the name of the field.
+     * @param name name of the field
+     */
+    void setName(const std::string& name);
+
+    /*! @brief Retrieves the name of the field.
+     * @return name of the field.
+     */
+    const std::string& getName() const;
+
+    /*!
+     * @brief Retrieves the name of the field as a char *
+     * @return name of the field.
+     */
+    const char* getCharName() const;
+
+  protected:
+    Field();
+    virtual ~Field();
+
+  private:
+    std::string* _name;
+  };
+}
+#endif
index 8e003c18d1798e88a15af114f6726b3b5f866de3..50f8fe1edbb83d6822edaf203555f8c8f27449ac 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-// ICoCo file common to several codes
-// ICoCoField.h
-// version 1.2 10/05/2010
-
-#ifndef _ICoCoField_included_
-#define _ICoCoField_included_
-#include <string>
-
-
-namespace ICoCo {
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
 
-  class Field {
-  public:
-    Field();
-    virtual ~Field();
-    void setName(const std::string& name);
-    const std::string& getName() const;
-    const char* getCharName() const;
-    
-  private:
-    std::string* _name;
-  };
-}
-#endif
+#include <ICoCoField.h>
diff --git a/src/ICoCo/ICoCoMEDDoubleField.cxx b/src/ICoCo/ICoCoMEDDoubleField.cxx
new file mode 100644 (file)
index 0000000..801c6f1
--- /dev/null
@@ -0,0 +1,75 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "ICoCoMEDDoubleField.hxx"
+
+#include "MEDCouplingFieldDouble.hxx"
+
+namespace ICoCo
+{
+  MEDDoubleField::MEDDoubleField() : _field(0) {}
+
+  /*! Constructor directly attaching a MEDCouplingFieldDouble
+    the object does not take the control the objects pointed by 
+    \a field.
+   */
+  MEDDoubleField::MEDDoubleField(MEDCoupling::MEDCouplingFieldDouble *field):_field(field)
+  {
+    if(_field)
+      _field->incrRef();
+  }
+
+  MEDDoubleField::MEDDoubleField(const MEDDoubleField& field):_field(field.getMCField())
+  {
+    if(_field)
+      _field->incrRef();
+  }
+
+  MEDDoubleField::~MEDDoubleField()
+  {
+    if(_field)
+      _field->decrRef();
+  }
+
+  MEDDoubleField& MEDDoubleField::operator=(const MEDDoubleField& field)
+  {
+    if (_field)
+      _field->decrRef();
+
+    _field=field.getMCField();
+    if(_field)
+      _field->incrRef();
+    return *this;
+  }
+
+  MEDCoupling::MEDCouplingFieldDouble *MEDDoubleField::getMCField() const
+  {
+    return _field;
+  }
+
+  void MEDDoubleField::setMCField(MEDCoupling::MEDCouplingFieldDouble * f)
+  {
+    if(_field)
+      _field->decrRef();
+    _field = f;
+    if(f)
+      _field->incrRef();
+  }
+
+}
diff --git a/src/ICoCo/ICoCoMEDDoubleField.h b/src/ICoCo/ICoCoMEDDoubleField.h
new file mode 100644 (file)
index 0000000..1e5ce16
--- /dev/null
@@ -0,0 +1,94 @@
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+#ifndef _ICoCoMEDDoubleField_included_
+#define _ICoCoMEDDoubleField_included_
+
+#include "ICoCoField.h"
+
+namespace MEDCoupling
+{
+  class MEDCouplingFieldDouble;
+}
+
+namespace ICoCo
+{
+  /*! @brief Field data stored internally as a MEDCoupling object.
+   *
+   * This class is a wrapper around a MEDCoupling::MEDCouplingFieldDouble object, which holds the field data.
+   * In version 2 of ICoCo, MEDCoupling::MEDCouplingFieldDouble objects are not anymore exposed directly into the API
+   * of ICoCo::Problem. The rationale is to make the interface ICoCo::Problem free of external dependencies
+   * (MEDCoupling particularly).
+   *
+   * @sa the MEDCoupling documentation, notably the reference counter mechanism used to manage the lifecycle of
+   * MEDCoupling objects.
+   */
+  class MEDDoubleField : public ICoCo::Field
+  {
+  public:
+    /*! Builds an empty field (internal MEDCoupling object not set).
+     */
+    MEDDoubleField();
+
+    /*! @brief Builds a field and assign its internal MEDCouplingField object.
+     * @param field MEDCoupling field instance to use for field data. The field reference counter is incremented.
+     */
+    MEDDoubleField(MEDCoupling::MEDCouplingFieldDouble* field);
+
+    /*! @brief Copy construcotr.
+     */
+    MEDDoubleField(const MEDDoubleField& field);
+
+    /*! @brief Assignement operator.
+     * @param field another MEDDoubleField instance. The previous internal MEDCoupling field reference (if any) has
+     * its counter decremented.
+     */
+    MEDDoubleField& operator=(const MEDDoubleField& field);
+
+    /*! @brief Destructor.
+     */
+    virtual ~MEDDoubleField();
+
+    /*! @brief Get the internal MEDCoupling field object.
+     * @return a pointer to the MEDCouplingField object detained by this instance. Note that the corresponding
+     * object should not be deleted, or its reference counter should not be decreased! Doing so will result in an
+     * invalid instance of the current MEDField.
+     */
+    MEDCoupling::MEDCouplingFieldDouble *getMCField() const;
+
+    /*! @brief Set the internal MEDCoupling field object.
+     *
+     * Any previously set field is discarded (its reference counter is decreased) and the reference counter of the
+     * field being set is increased.
+     *
+     * @param field MEDCouplingFieldDouble object to be used.
+     */
+    void setMCField(MEDCoupling::MEDCouplingFieldDouble * field);
+
+  private:
+    MEDCoupling::MEDCouplingFieldDouble *_field;
+  };
+}
+
+#endif
diff --git a/src/ICoCo/ICoCoMEDDoubleField.hxx b/src/ICoCo/ICoCoMEDDoubleField.hxx
new file mode 100644 (file)
index 0000000..14a26c0
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+#include "ICoCoMEDDoubleField.h"
diff --git a/src/ICoCo/ICoCoMEDField.cxx b/src/ICoCo/ICoCoMEDField.cxx
deleted file mode 100644 (file)
index 455ce58..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#include "ICoCoMEDField.hxx"
-//#include "ProcessorGroup.hxx"
-#include "MEDCouplingUMesh.hxx"
-#include "MEDCouplingFieldDouble.hxx"
-#include "NormalizedUnstructuredMesh.hxx"
-
-namespace ICoCo
-{
-
-  /*! Constructor directly attaching a MEDCouplingFieldDouble
-    the object does not take the control the objects pointed by 
-    \a field.
-  */
-    
-  MEDField::MEDField(MEDCoupling::MEDCouplingFieldDouble *field):_field(field)
-  {
-    if(_field)
-      _field->incrRef();
-  }
- MEDField::MEDField(const MEDField& field):_field(field.getField())
-  {
-    if(_field)
-      _field->incrRef();
-  }
-
-  MEDField::~MEDField()
-  {
-    if(_field)
-      _field->decrRef();
-  }
-
-
-  MEDField& MEDField::operator=(const MEDField& field)
-  {
-    if (_field)
-      _field->decrRef();
-     
-    _field=field.getField();
-    if(_field)
-      _field->incrRef();
-    return *this;
-  }
-}
diff --git a/src/ICoCo/ICoCoMEDField.hxx b/src/ICoCo/ICoCoMEDField.hxx
deleted file mode 100644 (file)
index 7490ad2..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-#ifndef __ICOCOMEDFIELD_HXX__
-#define __ICOCOMEDFIELD_HXX__
-
-#include "MEDCouplingUMesh.hxx"
-#include "MEDCouplingFieldDouble.hxx"
-
-#include <vector>
-#include "ICoCoField.hxx"
-
-namespace ICoCo
-{
-  class MEDField : public ICoCo::Field
-  {
-  public:
-    MEDField():_field(0) { }
-    MEDField(MEDCoupling::MEDCouplingFieldDouble* field);
-    MEDField(const MEDField& field);
-    MEDField& operator=(const MEDField& field);
-    virtual ~MEDField();
-    MEDCoupling::MEDCouplingFieldDouble *getField() const  { return _field; }
-    const MEDCoupling::MEDCouplingMesh *getMesh() const { return _field->getMesh(); }
-  private:
-    MEDCoupling::MEDCouplingFieldDouble *_field;
-  };
-}
-
-#endif
diff --git a/src/ICoCo/ICoCoMEDIntField.cxx b/src/ICoCo/ICoCoMEDIntField.cxx
new file mode 100644 (file)
index 0000000..cf46cbf
--- /dev/null
@@ -0,0 +1,76 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "ICoCoMEDIntField.h"
+#include "MEDCouplingFieldInt.hxx"
+
+namespace ICoCo
+{
+
+  MEDIntField::MEDIntField() : _field(0) {}
+
+  /*! Constructor directly attaching a MEDCouplingFieldInt
+    the object does not take the control the objects pointed by 
+    \a field.
+   */
+  MEDIntField::MEDIntField(MEDCoupling::MEDCouplingFieldInt *field):_field(field)
+  {
+    if(_field)
+      _field->incrRef();
+  }
+
+  MEDIntField::MEDIntField(const MEDIntField& field):_field(field.getMCField())
+  {
+    if(_field)
+      _field->incrRef();
+  }
+
+  MEDIntField::~MEDIntField()
+  {
+    if(_field)
+      _field->decrRef();
+  }
+
+
+  MEDIntField& MEDIntField::operator=(const MEDIntField& field)
+  {
+    if (_field)
+      _field->decrRef();
+
+    _field=field.getMCField();
+    if(_field)
+      _field->incrRef();
+    return *this;
+  }
+
+  MEDCoupling::MEDCouplingFieldInt *MEDIntField::getMCField() const
+  {
+    return _field;
+  }
+
+  void MEDIntField::setMCField(MEDCoupling::MEDCouplingFieldInt * f)
+  {
+    if(_field)
+      _field->decrRef();
+    _field = f;
+    if(f)
+      _field->incrRef();
+  }
+
+}
diff --git a/src/ICoCo/ICoCoMEDIntField.h b/src/ICoCo/ICoCoMEDIntField.h
new file mode 100644 (file)
index 0000000..325d606
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright (C) 2007-2019  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+#ifndef _ICoCoMEDIntField_included_
+#define _ICoCoMEDIntField_included_
+
+#include "ICoCoField.h"
+
+namespace MEDCoupling
+{
+  class MEDCouplingFieldInt32;
+  using MEDCouplingFieldInt = MEDCouplingFieldInt32;
+}
+
+namespace ICoCo
+{
+  class MEDIntField : public ICoCo::Field
+  {
+  public:
+    MEDIntField();
+    MEDIntField(MEDCoupling::MEDCouplingFieldInt* field);
+    MEDIntField(const MEDIntField& field);
+    MEDIntField& operator=(const MEDIntField& field);
+    virtual ~MEDIntField();
+    MEDCoupling::MEDCouplingFieldInt *getMCField() const;
+    void setMCField(MEDCoupling::MEDCouplingFieldInt * f);
+
+  private:
+    MEDCoupling::MEDCouplingFieldInt *_field;
+  };
+}
+
+#endif
diff --git a/src/ICoCo/ICoCoMEDIntField.hxx b/src/ICoCo/ICoCoMEDIntField.hxx
new file mode 100644 (file)
index 0000000..978f427
--- /dev/null
@@ -0,0 +1,25 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+// WARNING: this file is part of the official ICoCo API and should not be modified.
+// The official version can be found in the TRUST repository:
+//
+//    https://sourceforge.net/projects/trust/
+
+#include "ICoCoMEDIntField.h"
index 5117faae394d6127d5f654671fd7020430fcad77..0880fd3d13021d39a594dda9301274ece1d3e0c6 100644 (file)
@@ -1 +1,14 @@
-Linked into target 'medcoupling' library. 
+Linked into target 'paramedmem' library. 
+
+The files below are part of the official ICoCo API and should NOT be modified:
+    - ICoCoField.h
+    - ICoCoField.hxx
+    - ICoCoField.cxx
+    - ICoCoMEDDoubleField.h
+    - ICoCoMEDDoubleField.hxx
+    - ICoCoMEDIntField.h
+    - ICoCoMEDIntField.hxx
+
+Their official version can be found in the TRUST repository:
+
+    https://sourceforge.net/projects/trust/
diff --git a/src/ICoCo/Swig/ICoCoMEDField.i b/src/ICoCo/Swig/ICoCoMEDField.i
new file mode 100644 (file)
index 0000000..580740c
--- /dev/null
@@ -0,0 +1,34 @@
+// Copyright (C) 2017-2019  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+// Author : Adrien Bruneton (CEA)
+
+%{
+#include "ICoCoMEDDoubleField.h"
+#include "ICoCoMEDIntField.h"
+%}
+
+%include "std_string.i"
+%include "ICoCoField.h"
+
+// %rename has to be before %include ... !!
+%rename (ICoCoMEDDoubleField) ICoCo::MEDDoubleField;
+%rename (ICoCoMEDIntField) ICoCo::MEDIntField;
+
+%include "ICoCoMEDDoubleField.h"
+%include "ICoCoMEDIntField.h"
index c039ca0308283b667933333c30f1b3172c1ea9ff..8735393e47ee0dd0eab7aa0da0021c1c3ee752e3 100644 (file)
@@ -37,6 +37,7 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
+  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
   )
 
 SET(medcoupling_SOURCES
@@ -77,9 +78,10 @@ SET(medcoupling_SOURCES
   MEDCouplingPartDefinition.cxx
   MEDCouplingSkyLineArray.cxx
   MEDCouplingVoronoi.cxx
-  ../ICoCo/ICoCoField.cxx
-  ../ICoCo/ICoCoMEDField.cxx
-  )
+  ../ICoCo/ICoCoField.cpp      # [ABN] Yes, .cpp, this is imposed by ICoCo.
+  ../ICoCo/ICoCoMEDDoubleField.cxx
+  ../ICoCo/ICoCoMEDIntField.cxx
+)
 
 SET(medcouplingremapper_SOURCES
   MEDCouplingRemapper.cxx
@@ -94,7 +96,9 @@ ADD_LIBRARY(medcouplingremapper ${medcouplingremapper_SOURCES})
 TARGET_LINK_LIBRARIES(medcouplingremapper medcouplingcpp)
 INSTALL(TARGETS medcouplingremapper EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${MEDCOUPLING_INSTALL_LIBS})
 
-FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx")
+FILE(GLOB medcoupling_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/*.hxx" 
+                                  "${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/*.hxx"
+                                  "${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/*.h")
 FILE(GLOB medcoupling_HEADERS_TXX "${CMAKE_CURRENT_SOURCE_DIR}/*.txx")
 FILE(GLOB icoco_HEADERS_HXX "${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/*.hxx")
 INSTALL(FILES ${medcoupling_HEADERS_HXX} ${medcoupling_HEADERS_TXX} ${icoco_HEADERS_HXX} MEDCouplingNatureOfFieldEnum DESTINATION ${MEDCOUPLING_INSTALL_HEADERS})
index 5eaa3d1acd4d3075c45949989033c3ae0b6f9153..37dda7e1477762d3a7a21412ba2f978864e1a3fe 100644 (file)
@@ -44,7 +44,9 @@ SET (MEDCoupling_SWIG_DPYS_FILES
     DataArrayInt.i
     MEDCouplingFieldDiscretization.i
     MEDCouplingFinalize.i
-    MEDCouplingTypemaps.i)
+    MEDCouplingTypemaps.i
+    ../ICoCo/Swig/ICoCoMEDField.i
+)
 
 SET (MC_pyTestFiles
     ${ALL_TESTS}
@@ -65,6 +67,7 @@ SET (MC_Swig_interf
     MEDCouplingTypemaps.i
     MEDCouplingDataArrayTypemaps.i
     MEDCouplingDataArrayTraits.hxx
+    ../ICoCo/Swig/ICoCoMEDField.i
 )
 
 INCLUDE_DIRECTORIES(
@@ -79,6 +82,8 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/Geometric2D
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/ExprEval
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL/GaussPoints
+  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
+  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/Swig
   ${PROJECT_BINARY_DIR}/doc
   )
 
diff --git a/src/MEDCoupling_Swig/ICoCoMEDFieldTest.py b/src/MEDCoupling_Swig/ICoCoMEDFieldTest.py
new file mode 100755 (executable)
index 0000000..53c28ca
--- /dev/null
@@ -0,0 +1,76 @@
+#  -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2019  CEA/DEN, EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+from medcoupling import *
+
+import unittest
+
+class ICoCoICoCoMEDDoubleFieldTest(unittest.TestCase):
+  def generate_fields(self):
+    ## Dummy MCFieldDouble
+    msh = MEDCouplingCMesh("toto")
+    msh.setCoords(DataArrayDouble([0.,1.,2.]))
+    msh = msh.buildUnstructured()
+    f1 = MEDCouplingFieldDouble(ON_CELLS, ONE_TIME)
+    f1.setMesh(msh)
+    f1.setArray(DataArrayDouble([0.,1.,2.,3.]))
+
+    f2 = f1.deepCopy()
+    da = f2.getArray()
+    da += 3.0
+    da2 = f2.getArray()
+    return f1, f2
+
+  def test1(self):
+    f1, f2 = self.generate_fields()
+    mf = ICoCoMEDDoubleField()
+    mf.setName("titi")
+    self.assertEqual(mf.getName(), "titi")
+    mfd = mf.getMCField()
+    self.assertTrue(mfd is None)
+    mf.setMCField(f1)
+    f11 = mf.getMCField()
+    self.assertEqual(f1.getHiddenCppPointer(), f11.getHiddenCppPointer())  # strictly the same
+    mf.setMCField(f2)
+    f22 = mf.getMCField()
+    self.assertEqual(f2.getHiddenCppPointer(), f22.getHiddenCppPointer())  # strictly the same
+
+    mf = ICoCoMEDDoubleField(f1)   # ctor with MC object
+    mfd = mf.getMCField()
+    self.assertEqual(mfd.getHiddenCppPointer(), f1.getHiddenCppPointer())  # strictly the same
+
+    mf.setMCField(None)
+    mfd = mf.getMCField()
+    self.assertTrue(mfd is None)
+
+    mf.setMCField(f2)
+    f22 = mf.getMCField()
+    self.assertEqual(f2.getHiddenCppPointer(), f22.getHiddenCppPointer())  # strictly the same
+
+    mf2 = ICoCoMEDDoubleField(mf)  # copy ctor
+    f22 = mf2.getMCField()
+    self.assertEqual(f2.getHiddenCppPointer(), f22.getHiddenCppPointer())  # strictly the same
+
+    mf2 = mf  # assignement op
+    f22 = mf2.getMCField()
+    self.assertEqual(f2.getHiddenCppPointer(), f22.getHiddenCppPointer())  # strictly the same
+
+if __name__ == '__main__':
+    unittest.main()
index 3e5c37e87f97a9fe1260411d572c8e3990d743b1..d67e91fae5f9591bb90f3aa34ac389dddd38a735 100644 (file)
@@ -24,6 +24,7 @@
 #endif
 
 %include "MEDCouplingCommon.i"
+%include "ICoCoMEDField.i"
 
 %pythoncode %{
 def MEDCouplingDataArrayDoubleIadd(self,*args):
index a87dbb42ef17f7fcb6b757bebaeef428baa0298a..a07091f2b4a3f2a2902240963250aa1769e87eb5 100644 (file)
@@ -29,6 +29,7 @@ SET(BASE_TESTS
   MEDCouplingExamplesTest.py
   MEDCouplingRemapperTest.py
   UsersGuideExamplesTest.py
+  ICoCoMEDFieldTest.py
 )
 
 # if numpy is used
index 307b63b372ff064b7bac856affd45547e663f357..91e36601f54398b3fc3b007932f1f7c18bb163b0 100644 (file)
 #include "ParaMESH.hxx"
 #include "DEC.hxx"
 #include "ICoCoField.hxx"
-#include "ICoCoMEDField.hxx"
 #include "MPIProcessorGroup.hxx"
 
 #include <cmath>
+#include "../ICoCo/ICoCoMEDDoubleField.hxx"
 
 namespace MEDCoupling
 {
index 3d6be30b3cd20adfaec633959ced803c0848af99..4a0efd1cb230f7643c48bf0d52cfaf71d4a00178 100644 (file)
@@ -25,7 +25,7 @@
 #include "ParaFIELD.hxx"
 #include "ParaMESH.hxx"
 #include "ICoCoField.hxx"
-#include "ICoCoMEDField.hxx"
+#include "ICoCoMEDDoubleField.hxx"
 #include "MPIProcessorGroup.hxx"
 
 #include <cmath>
@@ -269,16 +269,16 @@ namespace MEDCoupling
     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 :
-    - a ICoCo::MEDField, that is created from a MEDCoupling structure
+    - a ICoCo::MEDDoubleField, that is created from a MEDCoupling structure
     
   */
-  void DisjointDEC::attachLocalField(const ICoCo::MEDField *field)
+  void DisjointDEC::attachLocalField(const ICoCo::MEDDoubleField *field)
   {
     if(!isInUnion())
       return ;
     if(!field)
-      throw INTERP_KERNEL::Exception("DisjointDEC::attachLocalField : ICoCo::MEDField pointer is NULL !");
-    attachLocalField(field->getField());
+      throw INTERP_KERNEL::Exception("DisjointDEC::attachLocalField : ICoCo::MEDDoubleField pointer is NULL !");
+    attachLocalField(field->getMCField());
   }
   
   /*!
index 8f7e73ba34e2db752dee214d7e5a7b9107229bab..4f072c9206dd0631e7611466132928c41277f798 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace ICoCo
 {
-  class MEDField;
+  class MEDDoubleField;
 }
 
 namespace MEDCoupling
@@ -84,8 +84,8 @@ namespace MEDCoupling
     void setNature(NatureOfField nature);
     void attachLocalField( MEDCouplingFieldDouble *field);
     void attachLocalField(const ParaFIELD *field, bool ownPt=false);
-    void attachLocalField(const ICoCo::MEDField *field);
-
+    void attachLocalField(const ICoCo::MEDDoubleField *field);
+    
     virtual void prepareSourceDE() = 0;
     virtual void prepareTargetDE() = 0;
     virtual void recvData() = 0;
index 2be96a941eabf865d6c10d18698350e56ba1e05f..21ca5a0ec89cbc256fe781679be5cffa6a0e6d0e 100644 (file)
@@ -25,7 +25,7 @@
 #include "MPIProcessorGroup.hxx"
 #include "OverlapElementLocator.hxx"
 #include "OverlapInterpolationMatrix.hxx"
-#include "ICoCoMEDField.hxx"
+#include "ICoCoMEDDoubleField.hxx"
 
 namespace MEDCoupling
 {
@@ -189,14 +189,14 @@ namespace MEDCoupling
     attachTargetLocalField(tmpField,true);
   }
 
-  void OverlapDEC::attachSourceLocalField(ICoCo::MEDField *field)
+  void OverlapDEC::attachSourceLocalField(ICoCo::MEDDoubleField *field)
   {
-    attachSourceLocalField(field->getField());
+    attachSourceLocalField(field->getMCField());
   }
 
-  void OverlapDEC::attachTargetLocalField(ICoCo::MEDField *field)
+  void OverlapDEC::attachTargetLocalField(ICoCo::MEDDoubleField *field)
   {
-    attachTargetLocalField(field->getField());
+    attachTargetLocalField(field->getMCField());
   }
 
   bool OverlapDEC::isInGroup() const
index ef0fe77a0a903e0afef85cb3b006120a33cc02c7..623d8684146cb325118e2dc6c6e74c8df2585f54 100644 (file)
@@ -28,7 +28,7 @@
 #include <string>
 
 namespace ICoCo {
-  class MEDField;
+  class MEDDoubleField;
 }
 
 namespace MEDCoupling
@@ -234,8 +234,8 @@ namespace MEDCoupling
     void attachTargetLocalField(ParaFIELD *field, bool ownPt=false);
     void attachSourceLocalField(MEDCouplingFieldDouble *field);
     void attachTargetLocalField(MEDCouplingFieldDouble *field);
-    void attachSourceLocalField(ICoCo::MEDField *field);
-    void attachTargetLocalField(ICoCo::MEDField *field);
+    void attachSourceLocalField(ICoCo::MEDDoubleField *field);
+    void attachTargetLocalField(ICoCo::MEDDoubleField *field);
     ProcessorGroup *getGroup() { return _group; }
     bool isInGroup() const;
 
index bc904c487909e0b140b0aaad476b945785bbd1fb..5ce0adc3105ac83f518b58c04a61001d518e6aa0 100644 (file)
 #include "ParaMESH.hxx"
 #include "ParaFIELD.hxx"
 #include "ComponentTopology.hxx"
-#include "ICoCoMEDField.hxx"
 #include "ParaMEDLoader.hxx"
+#include "ICoCoMEDDoubleField.hxx"
 #include "MEDLoader.hxx"
+#include "MEDCouplingUMesh.hxx"
 #include "TestInterpKernelUtils.hxx"
 
  
@@ -495,7 +496,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_2D_(const char *srcMeth, const char *ta
   MEDCoupling::MEDCouplingUMesh* mesh = nullptr;
   MEDCoupling::ParaMESH* paramesh = nullptr;
   MEDCoupling::ParaFIELD* parafield = nullptr;
-  ICoCo::MEDField* icocofield = nullptr;
+  ICoCo::MEDDoubleField* icocofield = nullptr;
   
   string filename_xml1              = "square1_split";
   string filename_xml2              = "square2_split";
@@ -541,7 +542,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_2D_(const char *srcMeth, const char *ta
         value[ielem]=1.0;
     
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       dec.setMethod(srcMeth);
       dec.attachLocalField(icocofield);
     }
@@ -577,7 +578,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_2D_(const char *srcMeth, const char *ta
       for(int ielem=0; ielem<nb_local;ielem++)
         value[ielem]=0.0;
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       dec.setMethod(targetMeth);
       dec.attachLocalField(icocofield);
     }
@@ -862,7 +863,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_3D_(const char *srcMeth, const char *ta
   MEDCoupling::MEDCouplingUMesh* mesh = nullptr;
   MEDCoupling::ParaMESH* paramesh = nullptr;
   MEDCoupling::ParaFIELD* parafield = nullptr;
-  ICoCo::MEDField* icocofield = nullptr;
+  ICoCo::MEDDoubleField* icocofield = nullptr;
   
   char * tmp_dir_c                    = getenv("TMP");
   string tmp_dir;
@@ -914,7 +915,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_3D_(const char *srcMeth, const char *ta
         value[ielem]=1.0;
     
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       dec.setMethod(srcMeth);
       dec.attachLocalField(icocofield);
     }
@@ -950,7 +951,7 @@ void ParaMEDMEMTest::testInterpKernelDEC_3D_(const char *srcMeth, const char *ta
       for(int ielem=0; ielem<nb_local;ielem++)
         value[ielem]=0.0;
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       dec.setMethod(targetMeth);
       dec.attachLocalField(icocofield);
     }  
@@ -2116,7 +2117,7 @@ void ParaMEDMEMTest::testAsynchronousInterpKernelDEC_2D(double dtA, double tmaxA
   MEDCoupling::MEDCouplingUMesh* mesh = nullptr;
   MEDCoupling::ParaMESH* paramesh = nullptr;
   MEDCoupling::ParaFIELD* parafield = nullptr;
-  ICoCo::MEDField* icocofield = nullptr;
+  ICoCo::MEDDoubleField* icocofield = nullptr;
 
   char * tmp_dir_c                    = getenv("TMP");
   string tmp_dir;
@@ -2169,7 +2170,7 @@ void ParaMEDMEMTest::testAsynchronousInterpKernelDEC_2D(double dtA, double tmaxA
         value[ielem]=0.0;
     
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
      
       dec.attachLocalField(icocofield);
 
@@ -2209,7 +2210,7 @@ void ParaMEDMEMTest::testAsynchronousInterpKernelDEC_2D(double dtA, double tmaxA
       for(int ielem=0; ielem<nb_local;ielem++)
         value[ielem]=0.0;
       //      ICoCo::Field* icocofield=new ICoCo::MEDField(paramesh,parafield);
-      icocofield=new ICoCo::MEDField(parafield->getField());
+      icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       
       dec.attachLocalField(icocofield);
     }
index 042d45b946266dd73a1875fc6fe40f559b355207..050c5b5bfa21fd835385d50d8913e56956662ba2 100644 (file)
@@ -29,8 +29,9 @@
 #include "ParaMESH.hxx"
 #include "ParaFIELD.hxx"
 #include "ComponentTopology.hxx"
-#include "ICoCoMEDField.hxx"
+#include "ICoCoMEDDoubleField.hxx"
 #include "MEDLoader.hxx"
+#include "MEDCouplingUMesh.hxx"
 #include "TestInterpKernelUtils.hxx"
 
 #include <string>
index ee5b273eb6b5a61534460de658eac72891897bce..ff27c8de1c104c00c030b79e0ba270b02a0c2380 100644 (file)
 #include "ParaMESH.hxx"
 #include "ParaFIELD.hxx"
 #include "ComponentTopology.hxx"
-#include "ICoCoMEDField.hxx"
 #include "MEDLoader.hxx"
+#include "ICoCoMEDDoubleField.hxx"
+#include "MEDCouplingUMesh.hxx"
  
 #include <string>
 #include <cstring>
 
+
 // use this define to enable lines, execution of which leads to Segmentation Fault
 #define ENABLE_FAULTS
 
@@ -149,7 +151,7 @@ void testInterpKernelDEC_2D(const string& filename_xml1, const string& meshname1
   MEDCoupling::MEDCouplingUMesh* mesh = nullptr;
   MEDCoupling::ParaMESH* paramesh = nullptr;
   MEDCoupling::ParaFIELD* parafield = nullptr;
-  ICoCo::MEDField* icocofield = nullptr;
+  ICoCo::MEDDoubleField* icocofield = nullptr;
   
   // To remove tmp files from disk
   ParaMEDMEMTest_TmpFilesRemover aRemover;
@@ -187,7 +189,7 @@ void testInterpKernelDEC_2D(const string& filename_xml1, const string& meshname1
     for(int ielem=0; ielem<nb_local;ielem++)
       value[ielem]=1.0;
     
-    icocofield=new ICoCo::MEDField(parafield->getField());
+    icocofield=new ICoCo::MEDDoubleField(parafield->getField());
      
     dec.attachLocalField(icocofield);
   }
@@ -219,7 +221,7 @@ void testInterpKernelDEC_2D(const string& filename_xml1, const string& meshname1
     double *value=parafield->getField()->getArray()->getPointer();
     for(int ielem=0; ielem<nb_local;ielem++)
       value[ielem]=0.0;
-    icocofield=new ICoCo::MEDField(parafield->getField());
+    icocofield=new ICoCo::MEDDoubleField(parafield->getField());
       
     dec.attachLocalField(icocofield);
   }
index 71cc03a38bf6e5fb0b493d720af5b20a7974f360..e1bd949b1c19a211ecdbb17167309c84a74da59e 100644 (file)
@@ -45,6 +45,7 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM
   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM/MPIAccess
   ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
+  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling_Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDCoupling
   ${CMAKE_CURRENT_SOURCE_DIR}/../INTERP_KERNEL
index 5ba926d7fc34034ecfa478a1c857eaae75413c58..95778ca0524e18534e29cad5cec8b6308020559a 100644 (file)
@@ -25,6 +25,7 @@
 #define INTERPKERNEL_EXPORT
 
 %include "MEDCouplingCommon.i"
+%include "ICoCoMEDField.i"
 
 %include "ParaMEDMEMCommon.i"
 
index d1537c9ebcbf0acce97bfed2ed366bfe9f1d8f7a..04e6c48a99b5a247d783544e2a071daf33d24216 100644 (file)
@@ -33,7 +33,8 @@
 #include "OverlapDEC.hxx"
 #include "ParaMESH.hxx"
 #include "ParaFIELD.hxx"
-#include "ICoCoMEDField.hxx"
+#include "ICoCoMEDDoubleField.hxx"
+#include "ICoCoMEDIntField.hxx"
 #include "ComponentTopology.hxx"
 #include "ParaUMesh.hxx"
 #include "ParaSkyLineArray.hxx"
@@ -57,10 +58,6 @@ using namespace ICoCo;
 %include "StructuredCoincidentDEC.hxx"
 %include "OverlapDEC.hxx"
 
-%include "ICoCoField.hxx"
-%rename(ICoCoMEDField) ICoCo::MEDField;
-%include "ICoCoMEDField.hxx"
-
 %newobject MEDCoupling::ParaUMesh::New;
 %newobject MEDCoupling::ParaUMesh::getMesh;
 %newobject MEDCoupling::ParaUMesh::getGlobalCellIds;
index be4c1346a3634a445ba433dae5584aac326a085c..b1482eb2e1188ab14fef46476a3d01fe0b2b6a3e 100755 (executable)
@@ -181,7 +181,7 @@ class ParaMEDMEM_IK_DEC_Tests(unittest.TestCase):
             nb_local=mesh.getNumberOfCells()
             value = [1.0]*nb_local
             parafield.getField().setValues(value)
-            icocofield = ICoCoMEDField(parafield.getField())
+            icocofield = ICoCoMEDDoubleField(parafield.getField())
             dec.attachLocalField(icocofield)
             pass
         else:
@@ -195,7 +195,7 @@ class ParaMEDMEM_IK_DEC_Tests(unittest.TestCase):
             nb_local=mesh.getNumberOfCells()
             value = [0.0]*nb_local
             parafield.getField().setValues(value)
-            icocofield = ICoCoMEDField(parafield.getField())
+            icocofield = ICoCoMEDDoubleField(parafield.getField())
             dec.attachLocalField(icocofield)
             pass
 
index a4b0e7da19bc862532499248bdacbc87ea9c61c3..4632f756143f815eb71c450229686255849c37db 100755 (executable)
@@ -73,7 +73,7 @@ class ParaMEDMEM_DEC_Tests(unittest.TestCase):
             value = [1.0]*nb_local
 
             parafield.getField().setValue(value)
-            icocofield = ICoCo_MEDField(paramesh,parafield)
+            icocofield = ICoCoMEDDoubleField(paramesh,parafield)
             dec.attachLocalField(icocofield,'P0')
             pass
 
@@ -93,7 +93,7 @@ class ParaMEDMEM_DEC_Tests(unittest.TestCase):
             value = [0.0]*nb_local
 
             parafield.getField().setValue(value)
-            icocofield = ICoCo_MEDField(paramesh,parafield)
+            icocofield = ICoCoMEDDoubleField(paramesh,parafield)
 
             dec.attachLocalField(icocofield, 'P0')
             pass
index 11c5b7a16636cbdd96c4ab3cf496df90550ad225..a2eb201188eb04a91618e439ffe7a6854903a2a7 100755 (executable)
@@ -182,7 +182,7 @@ class ParaMEDMEM_SC_DEC_Tests(unittest.TestCase):
                 for icomp in range(6):
                     value.append(global_numbering[ielem]*6.0+icomp);
             parafield.getField().setValues(value)
-            icocofield = ICoCoMEDField(parafield.getField())
+            icocofield = ICoCoMEDDoubleField(parafield.getField())
             dec.setMethod("P0")
             dec.attachLocalField(parafield)
             dec.synchronize()
@@ -198,7 +198,7 @@ class ParaMEDMEM_SC_DEC_Tests(unittest.TestCase):
             nb_local=mesh.getNumberOfCells()
             value = [0.0]*(nb_local*comptopo.nbLocalComponents())
             parafield.getField().setValues(value)
-            icocofield = ICoCoMEDField(parafield.getField())
+            icocofield = ICoCoMEDDoubleField(parafield.getField())
             dec.setMethod("P0")
             dec.attachLocalField(parafield)
             dec.synchronize()
index 0199e17bd81fa2d36609c1a0f5983295ae864a8a..2f2740909766d8bd3177c4f0744e20b7c3790030 100644 (file)
@@ -59,6 +59,7 @@ INCLUDE_DIRECTORIES(
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDPartitioner
   ${CMAKE_CURRENT_SOURCE_DIR}/../MEDPartitioner_Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo
+  ${CMAKE_CURRENT_SOURCE_DIR}/../ICoCo/Swig
   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM
   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM/MPIAccess
   ${CMAKE_CURRENT_SOURCE_DIR}/../ParaMEDMEM_Swig
index 5de7fcc362db1f6225ee5024f4320ced167f6b4e..b482fc5f52374a50504a8d373e3d6b824d6cbe57 100644 (file)
@@ -30,6 +30,8 @@
 
 %include "MEDCouplingRemapperCommon.i"
 
+%include "ICoCoMEDField.i"
+
 #ifdef WITH_MED_FILE
 %include "MEDLoaderCommon.i"
 #endif