]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
merge from 631 BR
authorvbd <vbd>
Wed, 13 Jul 2011 08:46:49 +0000 (08:46 +0000)
committervbd <vbd>
Wed, 13 Jul 2011 08:46:49 +0000 (08:46 +0000)
126 files changed:
src/ParaMEDLoader/Makefile.am
src/ParaMEDLoader/ParaMEDLoader.cxx
src/ParaMEDLoader/ParaMEDLoader.hxx
src/ParaMEDMEM/BlockTopology.cxx
src/ParaMEDMEM/BlockTopology.hxx
src/ParaMEDMEM/CommInterface.cxx
src/ParaMEDMEM/CommInterface.hxx
src/ParaMEDMEM/ComponentTopology.cxx
src/ParaMEDMEM/ComponentTopology.hxx
src/ParaMEDMEM/DEC.cxx
src/ParaMEDMEM/DEC.hxx
src/ParaMEDMEM/DECOptions.hxx
src/ParaMEDMEM/DisjointDEC.cxx [new file with mode: 0644]
src/ParaMEDMEM/DisjointDEC.hxx [new file with mode: 0644]
src/ParaMEDMEM/ElementLocator.cxx
src/ParaMEDMEM/ElementLocator.hxx
src/ParaMEDMEM/ExplicitCoincidentDEC.cxx
src/ParaMEDMEM/ExplicitCoincidentDEC.hxx
src/ParaMEDMEM/ExplicitMapping.hxx
src/ParaMEDMEM/ExplicitTopology.cxx
src/ParaMEDMEM/ExplicitTopology.hxx
src/ParaMEDMEM/ICoCoField.cxx
src/ParaMEDMEM/ICoCoField.hxx
src/ParaMEDMEM/ICoCoMEDField.cxx
src/ParaMEDMEM/ICoCoMEDField.hxx
src/ParaMEDMEM/ICoCoTrioField.cxx
src/ParaMEDMEM/ICoCoTrioField.hxx
src/ParaMEDMEM/InterpKernelDEC.cxx
src/ParaMEDMEM/InterpKernelDEC.hxx
src/ParaMEDMEM/InterpolationMatrix.cxx
src/ParaMEDMEM/InterpolationMatrix.hxx
src/ParaMEDMEM/LinearTimeInterpolator.cxx
src/ParaMEDMEM/LinearTimeInterpolator.hxx
src/ParaMEDMEM/MPIAccess.cxx
src/ParaMEDMEM/MPIAccess.hxx
src/ParaMEDMEM/MPIAccessDEC.cxx
src/ParaMEDMEM/MPIAccessDEC.hxx
src/ParaMEDMEM/MPIProcessorGroup.cxx
src/ParaMEDMEM/MPIProcessorGroup.hxx
src/ParaMEDMEM/Makefile.am
src/ParaMEDMEM/MxN_Mapping.cxx
src/ParaMEDMEM/MxN_Mapping.hxx
src/ParaMEDMEM/NonCoincidentDEC.cxx
src/ParaMEDMEM/NonCoincidentDEC.hxx
src/ParaMEDMEM/OverlapDEC.cxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapDEC.hxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapElementLocator.cxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapElementLocator.hxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapInterpolationMatrix.cxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapInterpolationMatrix.hxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapMapping.cxx [new file with mode: 0644]
src/ParaMEDMEM/OverlapMapping.hxx [new file with mode: 0644]
src/ParaMEDMEM/ParaFIELD.cxx
src/ParaMEDMEM/ParaFIELD.hxx
src/ParaMEDMEM/ParaGRID.cxx
src/ParaMEDMEM/ParaGRID.hxx
src/ParaMEDMEM/ParaMESH.cxx
src/ParaMEDMEM/ParaMESH.hxx
src/ParaMEDMEM/ProcessorGroup.cxx
src/ParaMEDMEM/ProcessorGroup.hxx
src/ParaMEDMEM/StructuredCoincidentDEC.cxx
src/ParaMEDMEM/StructuredCoincidentDEC.hxx
src/ParaMEDMEM/TimeInterpolator.cxx
src/ParaMEDMEM/TimeInterpolator.hxx
src/ParaMEDMEM/Topology.cxx
src/ParaMEDMEM/Topology.hxx
src/ParaMEDMEMTest/MPI2Connector.cxx
src/ParaMEDMEMTest/MPI2Connector.hxx
src/ParaMEDMEMTest/MPIAccessDECTest.cxx
src/ParaMEDMEMTest/MPIAccessDECTest.hxx
src/ParaMEDMEMTest/MPIAccessTest.cxx
src/ParaMEDMEMTest/MPIAccessTest.hxx
src/ParaMEDMEMTest/MPIMainTest.hxx
src/ParaMEDMEMTest/Makefile.am
src/ParaMEDMEMTest/ParaMEDMEMTest.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest.hxx
src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_1.cxx
src/ParaMEDMEMTest/ParaMEDMEMTestMPI2_2.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_BlockTopology.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_FabienAPI.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_Gauthier1.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_ICocoTrio.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_InterpKernelDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_MEDLoader.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_MPIProcessorGroup.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_NonCoincidentDEC.cxx
src/ParaMEDMEMTest/ParaMEDMEMTest_OverlapDEC.cxx [new file with mode: 0644]
src/ParaMEDMEMTest/ParaMEDMEMTest_StructuredCoincidentDEC.cxx
src/ParaMEDMEMTest/TestMPIAccess.cxx
src/ParaMEDMEMTest/TestMPIAccessDEC.cxx
src/ParaMEDMEMTest/TestParaMEDMEM.cxx
src/ParaMEDMEMTest/test_AllToAllDEC.cxx
src/ParaMEDMEMTest/test_AllToAllTimeDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvTimeDEC.cxx
src/ParaMEDMEMTest/test_AllToAllvTimeDoubleDEC.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cancel.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cyclic_ISend_IRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Cyclic_Send_Recv.cxx
src/ParaMEDMEMTest/test_MPI_Access_IProbe.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISendRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_BottleNeck.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length.cxx
src/ParaMEDMEMTest/test_MPI_Access_ISend_IRecv_Length_1.cxx
src/ParaMEDMEMTest/test_MPI_Access_Probe.cxx
src/ParaMEDMEMTest/test_MPI_Access_SendRecv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Send_Recv.cxx
src/ParaMEDMEMTest/test_MPI_Access_Send_Recv_Length.cxx
src/ParaMEDMEMTest/test_MPI_Access_Time.cxx
src/ParaMEDMEMTest/test_MPI_Access_Time_0.cxx
src/ParaMEDMEMTest/test_perf.cxx
src/ParaMEDMEM_Swig/Makefile.am
src/ParaMEDMEM_Swig/test_InterpKernelDEC.py
src/ParaMEDMEM_Swig/test_NonCoincidentDEC.py
src/RENUMBER/Makefile.am
src/RENUMBER/RENUMBER_BOOSTRenumbering.cxx
src/RENUMBER/RENUMBER_BOOSTRenumbering.hxx
src/RENUMBER/RENUMBER_METISRenumbering.cxx
src/RENUMBER/RENUMBER_METISRenumbering.hxx
src/RENUMBER/RENUMBER_Renumbering.cxx
src/RENUMBER/RENUMBER_Renumbering.hxx
src/RENUMBER/RenumberingFactory.cxx
src/RENUMBER/RenumberingFactory.hxx
src/RENUMBER/renumbering.cxx
src/RENUMBER/testRenumbering.py

index 624e6148b745dde84e8c7ba62dfa8ad04f1693d0..aa3a4904668ba687b14c2ddb988f19b2aad6178c 100755 (executable)
@@ -1,20 +1,20 @@
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
index 6aa090c715e502f23cab2497e1cf0f34e395b38a..d0d9b44da328811776920b6db3f00a9829e8dc32 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDLoader.hxx"
index da127d8c09538b2881d0179b990ff1778756954f..fd03d89fb024ce3e24cb57ebd4ce32ece4058a60 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __PARAMEDLOADER_HXX__
index 5d7cf05986eb3bd55bb4d5e9c18fcf9fd8e2731b..5bf9f4034542cb5300c428cdc8440c382f2801aa 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "BlockTopology.hxx"
index 50dc3db388318a97e1b1b7ce845752a68a419226..a148fdec33bf39df0ca51e058a22957277f02744 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __BLOCKTOPOLOGY_HXX__
index 9f2ec299dd9391477233b9a06479dd8afe847077..902daded702cc609cbd486d7d67520bc97648ffc 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "CommInterface.hxx"
index 2be3f4c10635526df0766b6f83559778f6dde532..e04391b1741b38ce2f10b7e5282e9b5e35372b80 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __COMMINTERFACE_HXX__
index 60bed682f26dc97b79db54661354069c2e862d6f..ce9ee31950cf87f1867698546b6a030d334193a6 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ComponentTopology.hxx"
index 4fd34616e9c7d7b22ad44c983a9696da39caf081..13d6f70b74de69d59d14f62101a6b17a22986d2b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __COMPONENTTOPOLOGY_HXX__
index 4003b65fce0040b5d7205434d48b10882d2df07e..d3be38c22c863d917afab33e2ead4d79790e4e01 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "CommInterface.hxx"
 
 #include <cmath>
 
-/*! \defgroup dec DEC
- *
- * \section decintroduction Introduction
- *
- * 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 \ref icoco. It has two implementations:
- * one for codes that express their fields as MEDCoupling fields (ICoCo::MEDField) and one
- * for codes that express their fields as Trio/U fields.
- * 
- * \section dec_options DEC Options
- * Options supported by DEC objects are
- *
- * <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 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
-*/
-
 namespace ParaMEDMEM
 {
-
-
-  /*! \addtogroup dec
-    @{ 
-  */
-  DEC::DEC(ProcessorGroup& source_group, ProcessorGroup& target_group):_local_field(0), 
-                                                                       _source_group(&source_group),
-                                                                       _target_group(&target_group),
-                                                                       _owns_field(false),
-                                                                       _owns_groups(false),
-                                                                       _icoco_field(0)
-  {
-    _union_group = source_group.fuse(target_group);  
-  }
-  DEC::DEC(const std::set<int>& source_ids, const std::set<int>& target_ids, const MPI_Comm& world_comm):_local_field(0), 
-                                                                                                         _owns_field(false),
-                                                                                                         _owns_groups(true),
-                                                                                                         _icoco_field(0)
-  {
-    ParaMEDMEM::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());
-    int* union_ranks_world=new int[union_ids.size()]; // ranks of sources and targets in world_comm
-    std::copy<std::set<int>::const_iterator,int*> (union_ids.begin(), union_ids.end(), union_ranks_world);
-
-    // Create a communicator on these procs
-    MPI_Group union_group,world_group;
-    comm.commGroup(world_comm,&world_group);
-    comm.groupIncl(world_group,union_ids.size(),union_ranks_world,&union_group);
-    MPI_Comm union_comm;
-    comm.commCreate(world_comm,union_group,&union_comm);
-    delete[] union_ranks_world;
-
-    if (union_comm==MPI_COMM_NULL)
-      { // This process is not in union
-        _source_group=0;
-        _target_group=0;
-        _union_group=0;
-        return;
-      }
-
-    // Translate source_ids and target_ids from world_comm to union_comm
-    int* source_ranks_world=new int[source_ids.size()]; // ranks of sources in world_comm
-    std::copy<std::set<int>::const_iterator,int*> (source_ids.begin(), source_ids.end(),source_ranks_world);
-    int* source_ranks_union=new int[source_ids.size()]; // ranks of sources in union_comm
-    int* target_ranks_world=new int[target_ids.size()]; // ranks of targets in world_comm
-    std::copy<std::set<int>::const_iterator,int*> (target_ids.begin(), target_ids.end(),target_ranks_world);
-    int* target_ranks_union=new int[target_ids.size()]; // ranks of targets in union_comm
-    MPI_Group_translate_ranks(world_group,source_ids.size(),source_ranks_world,union_group,source_ranks_union);
-    MPI_Group_translate_ranks(world_group,target_ids.size(),target_ranks_world,union_group,target_ranks_union);
-    std::set<int> source_ids_union;
-    for (int i=0;i<(int)source_ids.size();i++)
-      source_ids_union.insert(source_ranks_union[i]);
-    std::set<int> target_ids_union;
-    for (int i=0;i<(int)target_ids.size();i++)
-      target_ids_union.insert(target_ranks_union[i]);
-    delete [] source_ranks_world;
-    delete [] source_ranks_union;
-    delete [] target_ranks_world;
-    delete [] target_ranks_union;
-
-    // Create the MPIProcessorGroups
-    _source_group= new MPIProcessorGroup(comm,source_ids_union,union_comm);
-    _target_group = new MPIProcessorGroup(comm,target_ids_union,union_comm);
-    _union_group = _source_group->fuse(*_target_group);
-
-  }
-
   DEC::~DEC()
   {
-    if(_owns_field)
-      delete _local_field;
-    if(_owns_groups)
-      {
-        delete _source_group;
-        delete _target_group;
-      }
-    delete _icoco_field;
-    delete _union_group;
-  }
-
-  void DEC::setNature(NatureOfField nature)
-  {
-    if(_local_field)
-      _local_field->getField()->setNature(nature);
-  }
-
-  /*! 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.
-  */
-  void DEC::attachLocalField(const ParaFIELD* field, bool ownPt) 
-  {
-    if(!isInUnion())
-      return ;
-    if(_owns_field)
-      delete _local_field;
-    _local_field=field;
-    _owns_field=ownPt;
-    _comm_interface=&(field->getTopology()->getProcGroup()->getCommInterface());
-    compareFieldAndMethod();
-  }
-
-  /*! 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.
-  */
-
-  void DEC::attachLocalField(MEDCouplingFieldDouble* field) 
-  {
-    if(!isInUnion())
-      return ;
-    ProcessorGroup* local_group;
-    if (_source_group->containsMyRank())
-      local_group=_source_group;
-    else if (_target_group->containsMyRank())
-      local_group=_target_group;
-    else
-      throw INTERP_KERNEL::Exception("Invalid procgroup for field attachment to DEC");
-    ParaMESH *paramesh=new ParaMESH((MEDCouplingPointSet *)field->getMesh(),*local_group,field->getMesh()->getName());
-    ParaFIELD *tmp=new ParaFIELD(field, paramesh, *local_group);
-    tmp->setOwnSupport(true);
-    attachLocalField(tmp,true);
-    //_comm_interface=&(local_group->getCommInterface());
-  }
-
-  /*! 
-    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 :
-    - a ICoCo::MEDField, that is created from a MEDCoupling structure
-    - a ICOCo::TrioField, that is created from tables extracted from a TRIO-U structure.
-    
-  */
-  
-  void DEC::attachLocalField(const ICoCo::Field* field)
-  {
-    if(!isInUnion())
-      return ;
-    const ICoCo::MEDField* medfield=dynamic_cast<const ICoCo::MEDField*> (field);
-    if(medfield !=0)
-      {
-        attachLocalField(medfield->getField());
-        return;
-      }
-    const ICoCo::TrioField* triofield=dynamic_cast<const ICoCo::TrioField*> (field);
-    if (triofield !=0)
-      {
-        ProcessorGroup* localgroup;
-        if (_source_group->containsMyRank())
-          localgroup=_source_group;
-        else
-          localgroup=_target_group;
-        delete _icoco_field;
-        
-        _icoco_field=new ICoCo::MEDField(*const_cast<ICoCo::TrioField* >(triofield));
-        attachLocalField(_icoco_field);
-        return;
-      }
-    throw INTERP_KERNEL::Exception("incompatible field type");
-  }
-  
-  /*!
-    Computes the field norm over its support 
-    on the source side and renormalizes the field on the target side
-    so that the norms match.
-
-    \f[
-    I_{source}=\sum_{i=1}^{n_{source}}V_{i}.|\Phi^{source}_{i}|^2,
-    \f]
-
-    \f[
-    I_{target}=\sum_{i=1}^{n_{target}}V_{i}.|\Phi^{target}_{i}|^2,
-    \f]
-    
-    \f[
-    \Phi^{target}:=\Phi^{target}.\sqrt{I_{source}/I_{target}}.
-    \f]
-
-  */
-  void DEC::renormalizeTargetField(bool isWAbs)
-  {
-    if (_source_group->containsMyRank())
-      for (int icomp=0; icomp<_local_field->getField()->getArray()->getNumberOfComponents(); icomp++)
-        {
-          double total_norm = _local_field->getVolumeIntegral(icomp+1,isWAbs);
-          double source_norm = total_norm;
-          _comm_interface->broadcast(&source_norm, 1, MPI_DOUBLE, 0,* dynamic_cast<MPIProcessorGroup*>(_union_group)->getComm());
-
-        }
-    if (_target_group->containsMyRank())
-      {
-        for (int icomp=0; icomp<_local_field->getField()->getArray()->getNumberOfComponents(); icomp++)
-          {
-            double total_norm = _local_field->getVolumeIntegral(icomp+1,isWAbs);
-            double source_norm=total_norm;
-            _comm_interface->broadcast(&source_norm, 1, MPI_DOUBLE, 0,* dynamic_cast<MPIProcessorGroup*>(_union_group)->getComm());
-
-            if (fabs(total_norm)>1e-100)
-              _local_field->getField()->applyLin(source_norm/total_norm,0.0,icomp+1);
-          }
-      }
-  }
-  /*! @} */
-
-  bool DEC::isInSourceSide() const
-  {
-    if(!_source_group)
-      return false;
-    return _source_group->containsMyRank();
-  }
-
-  bool DEC::isInTargetSide() const
-  {
-    if(!_target_group)
-      return false;
-    return _target_group->containsMyRank();
-  }
-
-  bool DEC::isInUnion() const
-  {
-    if(!_union_group)
-      return false;
-    return _union_group->containsMyRank();
-  }
-
-  void DEC::compareFieldAndMethod() const throw(INTERP_KERNEL::Exception)
-  {
-    if (_local_field)
-      {
-        TypeOfField entity = _local_field->getField()->getTypeOfField();
-        if ( getMethod() == "P0" )
-          {
-            if ( entity != ON_CELLS )
-              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
-                                             " For P0 interpolation, field must be on MED_CELL's");
-          }
-        else if ( getMethod() == "P1" )
-          {
-            if ( entity != ON_NODES )
-              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
-                                             " For P1 interpolation, field must be on MED_NODE's");
-          }
-        else if ( getMethod() == "P1d" )
-          {
-            if ( entity != ON_CELLS )
-              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
-                                             " For P1d interpolation, field must be on MED_CELL's");
-            if ( _target_group->containsMyRank() )
-              throw INTERP_KERNEL::Exception("Projection to P1d field not supported");
-          }
-        else
-          {
-            throw INTERP_KERNEL::Exception("Unknown interpolation method. Possible methods: P0, P1, P1d");
-          }
-      }
-  }
-
-  /*!
-    If way==true, source procs call sendData() and target procs call recvData().
-    if way==false, it's the other way round.
-  */
-  void DEC::sendRecvData(bool way)
-  {
-    if(!isInUnion())
-      return;
-    if(isInSourceSide())
-      {
-        if(way)
-          sendData();
-        else
-          recvData();
-      }
-    else if(isInTargetSide())
-      {
-        if(way)
-          recvData();
-        else
-          sendData();
-      }
   }
 }
index 3c5ddf8fb72acdfb001f848234a521257303b2d3..8550b90878876d2dda73bc0fdbf7951c9e1c7285 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __DEC_HXX__
 #include "NormalizedUnstructuredMesh.hxx"
 #include "DECOptions.hxx"
 
-#include <set>
-
-namespace ICoCo
-{
-  class Field;
-}
-
 namespace ParaMEDMEM
 {
-  class ProcessorGroup;
-  class ParaFIELD;
   class CommInterface;
   class DEC : public DECOptions
   {
   public:
-    DEC():_local_field(0) { }
-    DEC(ProcessorGroup& source_group, ProcessorGroup& target_group);
-    DEC(const std::set<int>& src_ids, const std::set<int>& trg_ids,
-        const MPI_Comm& world_comm=MPI_COMM_WORLD);
-    void setNature(NatureOfField nature);
-    void attachLocalField( MEDCouplingFieldDouble* field);
-    void attachLocalField(const ParaFIELD* field, bool ownPt=false);
-    void attachLocalField(const ICoCo::Field* field);
-    
-    virtual void prepareSourceDE() = 0;
-    virtual void prepareTargetDE() = 0;
-    virtual void recvData() = 0;
-    virtual void sendData() = 0;
-    void sendRecvData(bool way=true);
     virtual void synchronize() = 0;
+    virtual void sendRecvData(bool way=true) = 0;
     virtual ~DEC();
-    virtual void computeProcGroup() { }
-    void renormalizeTargetField(bool isWAbs);
-    //
-    ProcessorGroup *getSourceGrp() const { return _source_group; }
-    ProcessorGroup *getTargetGrp() const { return _target_group; }
-    bool isInSourceSide() const;
-    bool isInTargetSide() const;
-    bool isInUnion() const;
-  protected:
-    void compareFieldAndMethod() const throw(INTERP_KERNEL::Exception);
   protected:
-    const ParaFIELD* _local_field;
-    //! Processor group representing the union of target and source processors
-    ProcessorGroup* _union_group;
-    ProcessorGroup* _source_group;
-    ProcessorGroup* _target_group;
-    
     const CommInterface* _comm_interface;
-    bool _owns_field;
-    bool _owns_groups;
-  private:
-    ICoCo::Field* _icoco_field;
   };
 }
 
index 33f35d396a3a5c80f2ce90ec8e5c47bce0d07a7e..c39d7dd4a899e03115bd611649744a2f80545cb1 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __DECOPTIONS_HXX__
diff --git a/src/ParaMEDMEM/DisjointDEC.cxx b/src/ParaMEDMEM/DisjointDEC.cxx
new file mode 100644 (file)
index 0000000..f425003
--- /dev/null
@@ -0,0 +1,366 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "DisjointDEC.hxx"
+#include "CommInterface.hxx"
+#include "Topology.hxx"
+#include "BlockTopology.hxx"
+#include "ComponentTopology.hxx"
+#include "ParaFIELD.hxx"
+#include "ParaMESH.hxx"
+#include "ICoCoField.hxx"
+#include "ICoCoMEDField.hxx"
+#include "ICoCoTrioField.hxx"
+#include "MPIProcessorGroup.hxx"
+
+#include <cmath>
+
+/*! \defgroup dec DEC
+ *
+ * \section decintroduction Introduction
+ *
+ * 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 
+ * sending side. 
+ * On top of attaching a \c 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 \ref icoco. It has two implementations:
+ * one for codes that express their fields as \ref medoupling fields (ICoCo::MEDField) and one
+ * for codes that express their fields as Trio/U fields.
+ * 
+ * \section dec_options DEC Options
+ * Options supported by \c DEC objects are
+ *
+ * <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
+*/
+
+namespace ParaMEDMEM
+{
+
+
+  /*! \addtogroup dec
+    @{ 
+  */
+  DisjointDEC::DisjointDEC(ProcessorGroup& source_group, ProcessorGroup& target_group):_local_field(0), 
+                                                                                       _source_group(&source_group),
+                                                                                       _target_group(&target_group),
+                                                                                       _owns_field(false),
+                                                                                       _owns_groups(false),
+                                                                                       _icoco_field(0)
+  {
+    _union_group = source_group.fuse(target_group);  
+  }
+  
+  DisjointDEC::DisjointDEC(const std::set<int>& source_ids, const std::set<int>& target_ids, const MPI_Comm& world_comm):_local_field(0), 
+                                                                                                                         _owns_field(false),
+                                                                                                                         _owns_groups(true),
+                                                                                                                         _icoco_field(0)
+  {
+    ParaMEDMEM::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 !");
+    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);
+
+    // Create a communicator on these procs
+    MPI_Group union_group,world_group;
+    comm.commGroup(world_comm,&world_group);
+    comm.groupIncl(world_group,union_ids.size(),union_ranks_world,&union_group);
+    MPI_Comm union_comm;
+    comm.commCreate(world_comm,union_group,&union_comm);
+    delete[] union_ranks_world;
+
+    if (union_comm==MPI_COMM_NULL)
+      { // This process is not in union
+        _source_group=0;
+        _target_group=0;
+        _union_group=0;
+        return;
+      }
+
+    // Translate source_ids and target_ids from world_comm to union_comm
+    int* source_ranks_world=new int[source_ids.size()]; // ranks of sources in world_comm
+    std::copy(source_ids.begin(), source_ids.end(),source_ranks_world);
+    int* source_ranks_union=new int[source_ids.size()]; // ranks of sources in union_comm
+    int* target_ranks_world=new int[target_ids.size()]; // ranks of targets in world_comm
+    std::copy(target_ids.begin(), target_ids.end(),target_ranks_world);
+    int* target_ranks_union=new int[target_ids.size()]; // ranks of targets in union_comm
+    MPI_Group_translate_ranks(world_group,source_ids.size(),source_ranks_world,union_group,source_ranks_union);
+    MPI_Group_translate_ranks(world_group,target_ids.size(),target_ranks_world,union_group,target_ranks_union);
+    std::set<int> source_ids_union;
+    for (int i=0;i<(int)source_ids.size();i++)
+      source_ids_union.insert(source_ranks_union[i]);
+    std::set<int> target_ids_union;
+    for (int i=0;i<(int)target_ids.size();i++)
+      target_ids_union.insert(target_ranks_union[i]);
+    delete [] source_ranks_world;
+    delete [] source_ranks_union;
+    delete [] target_ranks_world;
+    delete [] target_ranks_union;
+
+    // Create the MPIProcessorGroups
+    _source_group = new MPIProcessorGroup(comm,source_ids_union,union_comm);
+    _target_group = new MPIProcessorGroup(comm,target_ids_union,union_comm);
+    _union_group = _source_group->fuse(*_target_group);
+
+  }
+
+  DisjointDEC::~DisjointDEC()
+  {
+    if(_owns_field)
+      delete _local_field;
+    if(_owns_groups)
+      {
+        delete _source_group;
+        delete _target_group;
+      }
+    delete _icoco_field;
+    delete _union_group;
+  }
+
+  void DisjointDEC::setNature(NatureOfField nature)
+  {
+    if(_local_field)
+      _local_field->getField()->setNature(nature);
+  }
+
+  /*! 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.
+  */
+  void DisjointDEC::attachLocalField(const ParaFIELD* field, bool ownPt) 
+  {
+    if(!isInUnion())
+      return ;
+    if(_owns_field)
+      delete _local_field;
+    _local_field=field;
+    _owns_field=ownPt;
+    _comm_interface=&(field->getTopology()->getProcGroup()->getCommInterface());
+    compareFieldAndMethod();
+  }
+
+  /*! 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.
+  */
+
+  void DisjointDEC::attachLocalField(MEDCouplingFieldDouble* field) 
+  {
+    if(!isInUnion())
+      return ;
+    ProcessorGroup* local_group;
+    if (_source_group->containsMyRank())
+      local_group=_source_group;
+    else if (_target_group->containsMyRank())
+      local_group=_target_group;
+    else
+      throw INTERP_KERNEL::Exception("Invalid procgroup for field attachment to DEC");
+    ParaMESH *paramesh=new ParaMESH((MEDCouplingPointSet *)field->getMesh(),*local_group,field->getMesh()->getName());
+    ParaFIELD *tmp=new ParaFIELD(field, paramesh, *local_group);
+    tmp->setOwnSupport(true);
+    attachLocalField(tmp,true);
+    //_comm_interface=&(local_group->getCommInterface());
+  }
+
+  /*! 
+    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 :
+    - a ICoCo::MEDField, that is created from a MEDCoupling structure
+    - a ICOCo::TrioField, that is created from tables extracted from a TRIO-U structure.
+    
+  */
+  void DisjointDEC::attachLocalField(const ICoCo::Field* field)
+  {
+    if(!isInUnion())
+      return ;
+    const ICoCo::MEDField* medfield=dynamic_cast<const ICoCo::MEDField*> (field);
+    if(medfield !=0)
+      {
+        attachLocalField(medfield->getField());
+        return;
+      }
+    const ICoCo::TrioField* triofield=dynamic_cast<const ICoCo::TrioField*> (field);
+    if (triofield !=0)
+      {
+        ProcessorGroup* localgroup;
+        if (_source_group->containsMyRank())
+          localgroup=_source_group;
+        else
+          localgroup=_target_group;
+        delete _icoco_field;
+        
+        _icoco_field=new ICoCo::MEDField(*const_cast<ICoCo::TrioField* >(triofield));
+        attachLocalField(_icoco_field);
+        return;
+      }
+    throw INTERP_KERNEL::Exception("incompatible field type");
+  }
+  
+  /*!
+    Computes the field norm over its support 
+    on the source side and renormalizes the field on the target side
+    so that the norms match.
+
+    \f[
+    I_{source}=\sum_{i=1}^{n_{source}}V_{i}.|\Phi^{source}_{i}|^2,
+    \f]
+
+    \f[
+    I_{target}=\sum_{i=1}^{n_{target}}V_{i}.|\Phi^{target}_{i}|^2,
+    \f]
+    
+    \f[
+    \Phi^{target}:=\Phi^{target}.\sqrt{I_{source}/I_{target}}.
+    \f]
+
+  */
+  void DisjointDEC::renormalizeTargetField(bool isWAbs)
+  {
+    if (_source_group->containsMyRank())
+      for (int icomp=0; icomp<_local_field->getField()->getArray()->getNumberOfComponents(); icomp++)
+        {
+          double total_norm = _local_field->getVolumeIntegral(icomp+1,isWAbs);
+          double source_norm = total_norm;
+          _comm_interface->broadcast(&source_norm, 1, MPI_DOUBLE, 0,* dynamic_cast<MPIProcessorGroup*>(_union_group)->getComm());
+
+        }
+    if (_target_group->containsMyRank())
+      {
+        for (int icomp=0; icomp<_local_field->getField()->getArray()->getNumberOfComponents(); icomp++)
+          {
+            double total_norm = _local_field->getVolumeIntegral(icomp+1,isWAbs);
+            double source_norm=total_norm;
+            _comm_interface->broadcast(&source_norm, 1, MPI_DOUBLE, 0,* dynamic_cast<MPIProcessorGroup*>(_union_group)->getComm());
+
+            if (fabs(total_norm)>1e-100)
+              _local_field->getField()->applyLin(source_norm/total_norm,0.0,icomp+1);
+          }
+      }
+  }
+  /*! @} */
+
+  bool DisjointDEC::isInSourceSide() const
+  {
+    if(!_source_group)
+      return false;
+    return _source_group->containsMyRank();
+  }
+
+  bool DisjointDEC::isInTargetSide() const
+  {
+    if(!_target_group)
+      return false;
+    return _target_group->containsMyRank();
+  }
+
+  bool DisjointDEC::isInUnion() const
+  {
+    if(!_union_group)
+      return false;
+    return _union_group->containsMyRank();
+  }
+
+  void DisjointDEC::compareFieldAndMethod() const throw(INTERP_KERNEL::Exception)
+  {
+    if (_local_field)
+      {
+        TypeOfField entity = _local_field->getField()->getTypeOfField();
+        if ( getMethod() == "P0" )
+          {
+            if ( entity != ON_CELLS )
+              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
+                                             " For P0 interpolation, field must be on MED_CELL's");
+          }
+        else if ( getMethod() == "P1" )
+          {
+            if ( entity != ON_NODES )
+              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
+                                             " For P1 interpolation, field must be on MED_NODE's");
+          }
+        else if ( getMethod() == "P1d" )
+          {
+            if ( entity != ON_CELLS )
+              throw INTERP_KERNEL::Exception("Field support and interpolation method mismatch."
+                                             " For P1d interpolation, field must be on MED_CELL's");
+            if ( _target_group->containsMyRank() )
+              throw INTERP_KERNEL::Exception("Projection to P1d field not supported");
+          }
+        else
+          {
+            throw INTERP_KERNEL::Exception("Unknown interpolation method. Possible methods: P0, P1, P1d");
+          }
+      }
+  }
+
+  /*!
+    If way==true, source procs call sendData() and target procs call recvData().
+    if way==false, it's the other way round.
+  */
+  void DisjointDEC::sendRecvData(bool way)
+  {
+    if(!isInUnion())
+      return;
+    if(isInSourceSide())
+      {
+        if(way)
+          sendData();
+        else
+          recvData();
+      }
+    else if(isInTargetSide())
+      {
+        if(way)
+          recvData();
+        else
+          sendData();
+      }
+  }
+}
diff --git a/src/ParaMEDMEM/DisjointDEC.hxx b/src/ParaMEDMEM/DisjointDEC.hxx
new file mode 100644 (file)
index 0000000..441c7ea
--- /dev/null
@@ -0,0 +1,84 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 __DISJOINTDEC_HXX__
+#define __DISJOINTDEC_HXX__
+
+#include "MEDCouplingFieldDouble.hxx"
+#include "NormalizedUnstructuredMesh.hxx"
+#include "DEC.hxx"
+
+#include <mpi.h>
+#include <set>
+
+namespace ICoCo
+{
+  class Field;
+}
+
+namespace ParaMEDMEM
+{
+  class ProcessorGroup;
+  class ParaFIELD;
+  
+  class DisjointDEC : public DEC
+  {
+  public:
+    DisjointDEC():_local_field(0) { }
+    DisjointDEC(ProcessorGroup& source_group, ProcessorGroup& target_group);
+    DisjointDEC(const std::set<int>& src_ids, const std::set<int>& trg_ids,
+                const MPI_Comm& world_comm=MPI_COMM_WORLD);
+    void setNature(NatureOfField nature);
+    void attachLocalField( MEDCouplingFieldDouble* field);
+    void attachLocalField(const ParaFIELD* field, bool ownPt=false);
+    void attachLocalField(const ICoCo::Field* field);
+    
+    virtual void prepareSourceDE() = 0;
+    virtual void prepareTargetDE() = 0;
+    virtual void recvData() = 0;
+    virtual void sendData() = 0;
+    void sendRecvData(bool way=true);
+    virtual void synchronize() = 0;
+    virtual ~DisjointDEC();
+    virtual void computeProcGroup() { }
+    void renormalizeTargetField(bool isWAbs);
+    //
+    ProcessorGroup *getSourceGrp() const { return _source_group; }
+    ProcessorGroup *getTargetGrp() const { return _target_group; }
+    bool isInSourceSide() const;
+    bool isInTargetSide() const;
+    bool isInUnion() const;
+  protected:
+    void compareFieldAndMethod() const throw(INTERP_KERNEL::Exception);
+  protected:
+    const ParaFIELD* _local_field;
+    //! Processor group representing the union of target and source processors
+    ProcessorGroup* _union_group;
+    ProcessorGroup* _source_group;
+    ProcessorGroup* _target_group;
+    
+    const CommInterface* _comm_interface;
+    bool _owns_field;
+    bool _owns_groups;
+  private:
+    ICoCo::Field* _icoco_field;
+  };
+}
+
+#endif
index e14cf117c88e7683e41b6a9b0cb2602b02694f12..4c23391e403b53f13ab5488ec1d7252164ce1eb0 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <mpi.h>
@@ -92,10 +92,10 @@ namespace ParaMEDMEM
     INTERP_KERNEL::DirectedBoundingBox dbb;
     double* distant_bb = _domain_bounding_boxes+rank*dbb.dataSize(_local_cell_mesh_space_dim);
     dbb.setData(distant_bb);
-    _local_cell_mesh->giveElemsInBoundingBox(dbb,getBoundingBoxAdjustment(),elems);
+    _local_cell_mesh->getCellsInBoundingBox(dbb,getBoundingBoxAdjustment(),elems);
 #else
     double* distant_bb = _domain_bounding_boxes+rank*2*_local_cell_mesh_space_dim;
-    _local_cell_mesh->giveElemsInBoundingBox(distant_bb,getBoundingBoxAdjustment(),elems);
+    _local_cell_mesh->getCellsInBoundingBox(distant_bb,getBoundingBoxAdjustment(),elems);
 #endif
     
     DataArrayInt *distant_ids_send;
@@ -231,11 +231,12 @@ namespace ParaMEDMEM
   
     // First stage : exchanging sizes
     // ------------------------------
+    vector<double> tinyInfoLocalD,tinyInfoDistantD(1);//not used for the moment
     vector<int> tinyInfoLocal,tinyInfoDistant;
     vector<string> tinyInfoLocalS;
     //Getting tiny info of local mesh to allow the distant proc to initialize and allocate
     //the transmitted mesh.
-    local_mesh->getTinySerializationInformation(tinyInfoLocal,tinyInfoLocalS);
+    local_mesh->getTinySerializationInformation(tinyInfoLocalD,tinyInfoLocal,tinyInfoLocalS);
     tinyInfoLocal.push_back(distant_ids_send->getNumberOfTuples());
     tinyInfoDistant.resize(tinyInfoLocal.size());
     std::fill(tinyInfoDistant.begin(),tinyInfoDistant.end(),0);
@@ -302,7 +303,7 @@ namespace ParaMEDMEM
     //
     distant_mesh=distant_mesh_tmp;
     //finish unserialization
-    distant_mesh->unserialization(tinyInfoDistant,v1Distant,v2Distant,unusedTinyDistantSts);
+    distant_mesh->unserialization(tinyInfoDistantD,tinyInfoDistant,v1Distant,v2Distant,unusedTinyDistantSts);
     //
     distant_ids_recv=new int[tinyInfoDistant.back()];
     comm_interface.sendRecv((void *)distant_ids_send->getConstPointer(),tinyInfoLocal.back(), MPI_INT,
index 6915736f3745b6d6cd4ffd503391ac7e4c904767..4e38ed227cbdd0f6471e06dfbe9bfad08cb10ec7 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __ELEMENTLOCATOR_HXX__
index 0d805af4f7f29439f658e14ca44a1d6c62e56706..6a84eb5fa0f50a081ca510c34d9e123d5ca2f0ba 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <mpi.h>
index 75ffa101bb74fe72396d3468f050e3dae345e885..20eaffe01363dc57ba5164069f2d6871002387f7 100644 (file)
@@ -1,26 +1,26 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __EXPLICITCOINCIDENTDEC_HXX__
 #define __EXPLICITCOINCIDENTDEC_HXX__
 
-#include "DEC.hxx"
+#include "DisjointDEC.hxx"
 #include "ExplicitMapping.hxx"
 #include "ExplicitTopology.hxx"
 
@@ -30,7 +30,7 @@ namespace ParaMEDMEM
 {
   class BlockTopology;
 
-  class ExplicitCoincidentDEC : public DEC
+  class ExplicitCoincidentDEC : public DisjointDEC
   {
   public:
     ExplicitCoincidentDEC();
index 825e4e53f776f6e362d354562737312f415eabf3..76e2a076b4193e9afc27fa81645fb2294e136d23 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __EXPLICITMAPPING_HXX__
index d65805828b06957b871d44085dc81426f3d2a94a..35e44262113119956a1e50105f700fa007c5b5c1 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "CommInterface.hxx"
index b4b9dae8dbc8c663127c36a9d6236ca9b2eef7e2..9376266f1a5bbe0c35aa280ecbddef96da3d8933 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __EXPLICITTOPOLOGY_HXX__
index 1251ee1d690bfe1fd928d6b1111f67241ef2d61a..ff021f07db457a775aa4a37d2540b2565647cda6 100644 (file)
@@ -1,23 +1,24 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // ICoCo file common to several codes
-// ICoCoField.cpp
+// ICoCoField.cxx
 // version 1.2 10/05/2010
 
 #include <ICoCoField.hxx>
index b38eb003437a56b4be1a04307ddb394d104683fa..63d93b8ba98f8edf16402d08b39b4d671af60f25 100644 (file)
@@ -1,3 +1,22 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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.h
 // version 1.2 10/05/2010
index f3f9e66a028932000d712c760298ea1d3b52d0a6..d73c59c890384bcacfe9de25ad9d0f3f93682abe 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ICoCoMEDField.hxx"
index e43512ad31e04d0239e19a1ffd1e60e8654133ae..bc9f1a9e481eb6c4e56cb3daf5177a62bca3a741 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __ICOCOMEDFIELD_HXX__
index 0b18196c21b537f732a0b9494daf0658f3a28cf5..02ac1fa0622cf8299df5c4e63b49eed6642e5eb9 100644 (file)
@@ -1,23 +1,24 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // ICoCo file common to several codes
-// ICoCoTrioField.cpp
+// ICoCoTrioField.cxx
 // version 1.2 10/05/2010
 
 #include <ICoCoTrioField.hxx>
index 738e312ea333c82155564704b0c07500038ba8c2..f084440dcb15c12ba61e3ddc4c921d84bc6df708 100644 (file)
@@ -1,21 +1,22 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // ICoCo file common to several codes
 // ICoCoTrioField.h
 // version 1.2 10/05/2010
index 6c4674f84131a47b74610fd43cab19a6158dc5a7..2157ab9b0a3ddb4b3fea35619bcecccd9c6c4e89 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <mpi.h>
@@ -118,13 +118,13 @@ namespace ParaMEDMEM
 
   */
   InterpKernelDEC::InterpKernelDEC(ProcessorGroup& source_group, ProcessorGroup& target_group):
-    DEC(source_group, target_group),_interpolation_matrix(0)
+    DisjointDEC(source_group, target_group),_interpolation_matrix(0)
   {
 
   }
 
   InterpKernelDEC::InterpKernelDEC(const std::set<int>& src_ids, const std::set<int>& trg_ids,
-                                   const MPI_Comm& world_comm):DEC(src_ids,trg_ids,world_comm),
+                                   const MPI_Comm& world_comm):DisjointDEC(src_ids,trg_ids,world_comm),
                                                                _interpolation_matrix(0)
   {
   }
index 7930a044d8022d2ed5357c217c106f88d43b5cc1..efe9103dadbf9aa53cbdb544ab002541d6ef6a65 100644 (file)
@@ -1,26 +1,26 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __INTERPKERNELDEC_HXX__
 #define __INTERPKERNELDEC_HXX__
 
-#include "DEC.hxx"
+#include "DisjointDEC.hxx"
 #include "MxN_Mapping.hxx"
 #include "InterpolationOptions.hxx"
 
@@ -28,7 +28,7 @@ namespace ParaMEDMEM
 {
   class InterpolationMatrix;
 
-  class InterpKernelDEC : public DEC, public INTERP_KERNEL::InterpolationOptions
+  class InterpKernelDEC : public DisjointDEC, public INTERP_KERNEL::InterpolationOptions
   {
   public:  
     InterpKernelDEC();
index 1022280b1e41e69c8cb99195cbf8fdd530d666c6..2b45c71f374512dcb7449fb4e4b3d754f9a5aef8 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMESH.hxx"
@@ -25,9 +25,9 @@
 #include "TranslationRotationMatrix.hxx"
 #include "Interpolation.hxx"
 #include "Interpolation1D.txx"
-#include "Interpolation2DCurve.txx"
+#include "Interpolation2DCurve.hxx"
 #include "Interpolation2D.txx"
-#include "Interpolation3DSurf.txx"
+#include "Interpolation3DSurf.hxx"
 #include "Interpolation3D.txx"
 #include "MEDCouplingUMesh.hxx"
 #include "MEDCouplingNormalizedUnstructuredMesh.txx"
index 9bbef5b8e2f494dd4f73e7b9d41b854bbf44d6ce..4228f156a451859df47cb6b690848be20c017dcb 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __INTERPOLATIONMATRIX_HXX__
index 23a698e4eb3b46926da0f5a6bc8917fb8fabaa63..c07191c23a87ff5d6a959611c143ac4824bd4d55 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "LinearTimeInterpolator.hxx"
index b93c47bc671299128f9e1322afe48d59909674d9..f154a11447fe2482c01235db83b9fe4adb486d73 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __LINEARTIMEINTERPOLATOR_HXX__
index 6e2e5b1f93429ed86a2df3711903c94908a7e275..634f15163910dbc0acafcb36a620e21ec720625b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "MPIAccess.hxx"
index 2770e744e787594ab424da79c3e2621960fc8095..98284dc53798441001af49e80e40c45f37ba9036 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __MPIACCESS_HXX__
index ea5cdf0d3accfe052a8d440d275b4f27fcd86317..e1b94bd5a2e511d0ec63d6414b3ca5c93c650ffd 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "MPIAccessDEC.hxx"
index 0f1862f1161a311d641f62e3b774d8548c97747c..d5fe4e2ec3abcdcf6b90dd6579d65b90071c8275 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __MPIACCESSDEC_HXX__
index 9681349f9d7cafcb8598f87b036a0536f462b1e1..5acd38614af4832b4181294b015af4773e719fa8 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ProcessorGroup.hxx"
index c43a4476d6833cd16028e1d4ec5f48de31116f59..c240edb93356654f971db31a025365a5b7ebbb6d 100644 (file)
@@ -1,31 +1,32 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __MPIPROCESSORGROUP_HXX__
 #define __MPIPROCESSORGROUP_HXX__
 
+#include "ProcessorGroup.hxx"
+
 #include <set>
 #include <mpi.h>
 
 namespace ParaMEDMEM
 {
-  class ProcessorGroup;
   class CommInterface;
 
   class MPIProcessorGroup : public ProcessorGroup
index 5bc571a2b1a801634607386c669e55ed568e478a..2251643bb5c6d01f3690ffd0fa4a6207822498db 100644 (file)
@@ -1,20 +1,20 @@
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
@@ -33,13 +33,18 @@ ComponentTopology.hxx\
 ExplicitTopology.hxx\
 ParaFIELD.hxx\
 DEC.hxx\
+DisjointDEC.hxx\
+OverlapDEC.hxx\
 DECOptions.hxx\
 MxN_Mapping.hxx\
+OverlapMapping.hxx\
 StructuredCoincidentDEC.hxx\
 InterpolationMatrix.hxx\
+OverlapInterpolationMatrix.hxx\
 InterpKernelDEC.hxx\
 ExplicitCoincidentDEC.hxx\
 ElementLocator.hxx\
+OverlapElementLocator.hxx\
 ExplicitMapping.hxx\
 ICoCoField.hxx \
 ICoCoMEDField.hxx \
@@ -56,16 +61,21 @@ ParaMESH.cxx\
 ComponentTopology.cxx\
 MPIAccess.cxx \
 InterpolationMatrix.cxx\
+OverlapInterpolationMatrix.cxx\
 StructuredCoincidentDEC.cxx\
 ExplicitCoincidentDEC.cxx\
 InterpKernelDEC.cxx\
 ElementLocator.cxx\
+OverlapElementLocator.cxx\
 MPIAccessDEC.cxx \
 TimeInterpolator.cxx \
 LinearTimeInterpolator.cxx\
 DEC.cxx\
+DisjointDEC.cxx\
+OverlapDEC.cxx\
 ExplicitTopology.cxx\
 MxN_Mapping.cxx\
+OverlapMapping.cxx\
 ICoCoMEDField.cxx\
 ICoCoField.cxx\
 ICoCoTrioField.cxx\
index 179017a9ac11bfef51a7dcf63594b5da9e90f517..bd169744d1fa827a9b1c4724857bba92555745c4 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "CommInterface.hxx" 
@@ -27,6 +27,10 @@ using namespace std;
 
 namespace ParaMEDMEM
 {
+  MxN_Mapping::MxN_Mapping()
+  {
+  }
+
 
   MxN_Mapping::MxN_Mapping(const ProcessorGroup& source_group, const ProcessorGroup& target_group,const DECOptions& dec_options)
     : DECOptions(dec_options),_union_group(source_group.fuse(target_group))
index 1242f1ee959e0cd31cdd0dd6f29bf26851f6257c..74575b7b5fd9a5576cc0855faa74fe5cec2c7bfb 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __MXN_MAPPING_HXX__
index 2ff66ca3cb011767c665979bac47094e34563c16..6375ce7bf78f866ebd2ae2c9f7a6b34bbafe1a03 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <mpi.h>
@@ -45,8 +45,7 @@ namespace ParaMEDMEM
     \c NonCoincidentDEC enables nonconservative remapping of fields 
     between two parallel codes. 
     The computation is possible for 3D meshes and 2D meshes.
-    It is not available for 3D surfaces. The computation enables fast parallel localization, based on the 
-    FVM library. The computation is based on a point in element search, followed 
+    It is not available for 3D surfaces. The computation enables fast parallel localization, and is based on a point in element search, followed 
     by a field evaluation at the point location. Thus, it is typically
     faster than the \ref interpkerneldec which gives a \ref conservativeremapping.
     It is particularly true for the initialisation phase (synchronize)
@@ -246,7 +245,7 @@ namespace ParaMEDMEM
     @{
   */
 
-  /*! Constructor of a non coincident DEC with 
+  /*! Constructor of a non coincident \ref dec with 
    * a source group on which lies a field lying on a mesh and a 
    * target group on which lies a mesh.
    * 
index f15c16ee7c5c8cb20d3dd8b33f5fdecf45b1bf89..36038faed3c21f59dabce3f61b160798f3ba9fd1 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __NONCOINCIDENTDEC_HXX__
diff --git a/src/ParaMEDMEM/OverlapDEC.cxx b/src/ParaMEDMEM/OverlapDEC.cxx
new file mode 100644 (file)
index 0000000..b9458fd
--- /dev/null
@@ -0,0 +1,261 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "OverlapDEC.hxx"
+#include "CommInterface.hxx"
+#include "ParaFIELD.hxx"
+#include "MPIProcessorGroup.hxx"
+#include "OverlapElementLocator.hxx"
+#include "OverlapInterpolationMatrix.hxx"
+/*!
+    \defgroup overlapdec OverlapDEC
+    The \c OverlapDEC enables the \ref InterpKerRemapGlobal "conservative remapping" of fields between two parallel codes. This remapping is based on the computation of intersection volumes on a \b same \b processor \b group. On this processor group are defined two field-templates called A and B. The computation is possible for 3D meshes, 2D meshes, 3D-surface meshes, 1D meshes and 2D-curve meshes. Dimensions must be similar for the distribution templates A and B.
+    The main difference with \ref interpkerneldec is that this \ref dec manages 2 field templates on each processor of the processor group (A and B) called source and target.
+    Furthermore all processors in processor group cooperates in global interpolation matrix computation. In this respect \ref InterpKernelIDEC is a specialization of \c OverlapDEC.
+
+    \section ParaMEDMEMOverlapDECAlgorithmDescription Algorithm Description
+
+    Let's consider the following use case that is ran in ParaMEDMEMTest_OverlapDEC.cxx to describes the different steps of the computation. The processor group contains 3 processors.
+    \anchor ParaMEDMEMOverlapDECImgTest1
+    \image html OverlapDEC1.png "Example showing the use case in order to explain the different steps."
+
+    \subsection ParaMEDMEMOverlapDECAlgoStep1 Step 1 : Bounding box exchange and global interaction between procs computation.
+
+    In order to reduce as much as possible the amount of communications between distant processors, every processor computes a bounding box for A and B. Then a AllToAll communication is performed so that
+    every processor can compute the \b global interactions between processor.
+    This computation leads every processor to compute the same global TODO list expressed as a list of pair. A pair (x,y) means that proc \b x fieldtemplate A can interact with fieltemplate B of proc \b y because the two bounding boxes interact.
+    In the \ref ParaMEDMEMOverlapDECImgTest1 "example above" this computation leads to the following a \b global TODO list :
+
+    \b (0,0),(0,1),(1,0),(1,2),(2,0),(2,1),(2,2)
+
+    Here the pair (0,2) does not appear because the bounding box of fieldtemplateA of proc#2 does not intersect that of fieldtemplate B on proc#0.
+
+    Stage performed by ParaMEDMEM::OverlapElementLocator::computeBoundingBoxes.
+
+    \subsection ParaMEDMEMOverlapDECAlgoStep2 Step 2 : Computation of local TODO list
+
+    Starting from the global interaction previously computed in \ref ParaMEDMEMOverlapDECAlgoStep1 "Step 1", each proc computes the TODO list per proc.
+    The following rules is chosen : a pair (x,y) can be treated by either proc #x or proc #y, in order to reduce the amount of data transfert among
+    processors. The algorithm chosen for load balancing is the following : Each processor has an empty \b local TODO list at the beginning. Then for each pair (k,m) in
+    \b global TODO list, if proc#k has less temporary local list than proc#m pair, (k,m) is added to temparary local TODO list of proc#k.
+    If proc#m has less temporary local TODO list than proc#k pair, (k,m) is added to temporary local TODO list of proc#m.
+    If proc#k and proc#m have the same amount of temporary local TODO list pair, (k,m) is added to temporary local TODO list of proc#k.
+
+    In the \ref ParaMEDMEMOverlapDECImgTest1 "example above" this computation leads to the following local TODO list :
+
+    - proc#0 : (0,0)
+    - proc#1 : (0,1),(1,0)
+    - proc#2 : (1,2),(2,0),(2,1),(2,2)
+    
+    The algorithm described here is not perfect for this use case, we hope to enhance it soon.
+
+    At this stage each proc knows precisely its \b local TODO list (with regard to interpolation). The \b local TODO list of other procs than local
+    is kept for future computations.
+
+    \subsection ParaMEDMEMOverlapDECAlgoStep3 Step 3 : Matrix echange between procs
+
+    Knowing the \b local TODO list, the aim now is to exchange field-templates between procs. Each proc computes knowing TODO list per
+    proc computed in \ref ParaMEDMEMOverlapDECAlgoStep2 "Step 2" the exchange TODO list :
+
+    In the \ref ParaMEDMEMOverlapDECImgTest1 "example above" the exchange TODO list gives the following results :
+
+    Sending TODO list per proc :
+
+    - proc #0 : Send fieldtemplate A to Proc#1, Send fieldtemplate B to Proc#1, Send fieldtemplate B to Proc#2
+    - Proc #1 : Send fieldtemplate A to Proc#2, Send fieldtemplate B to Proc#2
+    - Proc #2 : No send.
+
+    Receiving TODO list per proc :
+
+    - proc #0 : No receiving
+    - proc #1 : receiving fieldtemplate A from Proc#0,  receiving fieldtemplate B from Proc#0
+    - proc #2 : receiving fieldtemplate B from Proc#0, receiving fieldtemplate A from Proc#1,  receiving fieldtemplate B from Proc#1
+
+    To avoid as much as possible large volumes of transfers between procs, only relevant parts of meshes are sent. In order for proc#k to send fieldtemplate A to fieldtemplate B
+    of proc #m., proc#k computes the part of mesh A contained in the boundingbox B of proc#m. It implies that the corresponding cellIds or nodeIds of the
+    corresponding part are sent to proc #m too.
+
+    Let's consider the couple (k,m) in the TODO list. This couple is treated by either k or m as seen in \ref ParaMEDMEMOverlapDECAlgoStep2 "here in Step2".
+
+    As will be dealt in Step 6, for final matrix-vector computations, the resulting matrix of the couple (k,m) whereever it is computed (proc #k or proc #m)
+    will be stored in \b proc#m.
+
+    - If proc #k is in charge (performs the matrix computation) for this couple (k,m), target ids (cells or nodes) of the mesh in proc #m are renumbered, because proc #m has seelected a sub mesh of the target mesh to avoid large amounts of data to transfer. In this case as proc #m is ultimately in charge of the matrix, proc #k must keep preciously the
+    source ids needed to be sent to proc#m. No problem will appear for matrix assembling in proc m for source ids because no restriction was done.
+    Concerning source ids to be sent for the matrix-vector computation, proc k will know precisely which source ids field values to send to proc #m.
+    This is embodied by OverlapMapping::keepTracksOfTargetIds in proc m.
+
+    - If proc #m is in charge (performs matrix computation) for this couple (k,m), source ids (cells or nodes) of the mesh in proc #k are renumbered, because proc #k has selected a sub mesh of the source mesh to avoid large amounts of data to transfer. In this case as proc #k is ultimately in charge of the matrix, proc #m receives the source ids
+    from remote proc #k, and thus the matrix is directly correct, no need for renumbering as in \ref ParaMEDMEMOverlapDECAlgoStep5 "Step 5". However proc #k must
+    keep track of the ids sent to proc #m for te matrix-vector computation.
+    This is incarnated by OverlapMapping::keepTracksOfSourceIds in proc k.
+
+    This step is performed in ParaMEDMEM::OverlapElementLocator::exchangeMeshes method.
+
+    \subsection ParaMEDMEMOverlapDECAlgoStep4 Step 4 : Computation of the interpolation matrix
+
+    After mesh exchange in \ref ParaMEDMEMOverlapDECAlgoStep3 "Step3" each processor has all the required information to treat its \b local TODO list computed in
+    \ref ParaMEDMEMOverlapDECAlgoStep2 "Step2". This step is potentially CPU costly, which is why the \b local TODO list per proc is expected to
+    be as well balanced as possible.
+
+    The interpolation is performed as \ref ParaMEDMEM::MEDCouplingRemapper "Remapper" does.
+
+    This operation is performed by OverlapInterpolationMatrix::addContribution method.
+
+    \subsection ParaMEDMEMOverlapDECAlgoStep5 Step 5 : Global matrix construction.
+    
+    After having performed the TODO list at the end of \ref ParaMEDMEMOverlapDECAlgoStep4 "Step4" we need to assemble the final matrix.
+    
+    The final aim is to have a distributed matrix \f$ M_k \f$ on each proc#k. In order to reduce data exchange during the matrix product process,
+    \f$ M_k \f$ is built using sizeof(Proc group) \c std::vector< \c std::map<int,double> \c >.
+
+    For a proc#k, it is necessary to fetch info of all matrices built in \ref ParaMEDMEMOverlapDECAlgoStep4 "Step4" where the first element in pair (i,j)
+    is equal to k.
+
+    After this step, the matrix repartition is the following after a call to ParaMEDMEM::OverlapMapping::prepare :
+
+    - proc#0 : (0,0),(1,0),(2,0)
+    - proc#1 : (0,1),(2,1)
+    - proc#2 : (1,2),(2,2)
+
+    Tuple (2,1) computed on proc 2 is stored in proc 1 after execution of the function "prepare". This is an example of item 0 in \ref ParaMEDMEMOverlapDECAlgoStep2 "Step2".
+    Tuple (0,1) computed on proc 1 is stored in proc 1 too. This is an example of item 1 in \ref ParaMEDMEMOverlapDECAlgoStep2 "Step2".
+
+    In the end ParaMEDMEM::OverlapMapping::_proc_ids_to_send_vector_st will contain :
+
+    - Proc#0 : 0,1
+    - Proc#1 : 0,2
+    - Proc#2 : 0,1,2
+
+    In the end ParaMEDMEM::OverlapMapping::_proc_ids_to_recv_vector_st will contain :
+
+    - Proc#0 : 0,1,2
+    - Proc#1 : 0,2
+    - Proc#2 : 1,2
+
+    The method in charge to perform this is : ParaMEDMEM::OverlapMapping::prepare.
+*/
+namespace ParaMEDMEM
+{
+  OverlapDEC::OverlapDEC(const std::set<int>& procIds, const MPI_Comm& world_comm):_own_group(true),_interpolation_matrix(0),
+                                                                                   _source_field(0),_own_source_field(false),
+                                                                                   _target_field(0),_own_target_field(false)
+  {
+    ParaMEDMEM::CommInterface comm;
+    int *ranks_world=new int[procIds.size()]; // ranks of sources and targets in world_comm
+    std::copy(procIds.begin(),procIds.end(),ranks_world);
+    MPI_Group group,world_group;
+    comm.commGroup(world_comm,&world_group);
+    comm.groupIncl(world_group,procIds.size(),ranks_world,&group);
+    delete [] ranks_world;
+    MPI_Comm theComm;
+    comm.commCreate(world_comm,group,&theComm);
+    comm.groupFree(&group);
+    if(theComm==MPI_COMM_NULL)
+      {
+        _group=0;
+        return ;
+      }
+    std::set<int> idsUnion;
+    for(std::size_t i=0;i<procIds.size();i++)
+      idsUnion.insert(i);
+    _group=new MPIProcessorGroup(comm,idsUnion,theComm);
+  }
+
+  OverlapDEC::~OverlapDEC()
+  {
+    if(_own_group)
+      delete _group;
+    if(_own_source_field)
+      delete _source_field;
+    if(_own_target_field)
+      delete _target_field;
+    delete _interpolation_matrix;
+  }
+
+  void OverlapDEC::sendRecvData(bool way)
+  {
+    if(way)
+      sendData();
+    else
+      recvData();
+  }
+
+  void OverlapDEC::sendData()
+  {
+    _interpolation_matrix->multiply();
+  }
+
+  void OverlapDEC::recvData()
+  {
+    throw INTERP_KERNEL::Exception("Not implemented yet !!!!");
+    //_interpolation_matrix->transposeMultiply();
+  }
+  
+  void OverlapDEC::synchronize()
+  {
+    if(!isInGroup())
+      return ;
+    delete _interpolation_matrix;
+    _interpolation_matrix=new OverlapInterpolationMatrix(_source_field,_target_field,*_group,*this,*this);
+    OverlapElementLocator locator(_source_field,_target_field,*_group);
+    locator.copyOptions(*this);
+    locator.exchangeMeshes(*_interpolation_matrix);
+    std::vector< std::pair<int,int> > jobs=locator.getToDoList();
+    std::string srcMeth=locator.getSourceMethod();
+    std::string trgMeth=locator.getTargetMethod();
+    for(std::vector< std::pair<int,int> >::const_iterator it=jobs.begin();it!=jobs.end();it++)
+      {
+        const MEDCouplingPointSet *src=locator.getSourceMesh((*it).first);
+        const DataArrayInt *srcIds=locator.getSourceIds((*it).first);
+        const MEDCouplingPointSet *trg=locator.getTargetMesh((*it).second);
+        const DataArrayInt *trgIds=locator.getTargetIds((*it).second);
+        _interpolation_matrix->addContribution(src,srcIds,srcMeth,(*it).first,trg,trgIds,trgMeth,(*it).second);
+      }
+    _interpolation_matrix->prepare(locator.getProcsInInteraction());
+    _interpolation_matrix->computeDeno();
+  }
+
+  void OverlapDEC::attachSourceLocalField(ParaFIELD *field, bool ownPt)
+  {
+    if(!isInGroup())
+      return ;
+    if(_own_source_field)
+      delete _source_field;
+    _source_field=field;
+    _own_source_field=ownPt;
+  }
+
+  void OverlapDEC::attachTargetLocalField(ParaFIELD *field, bool ownPt)
+  {
+    if(!isInGroup())
+      return ;
+    if(_own_target_field)
+      delete _target_field;
+    _target_field=field;
+    _own_target_field=ownPt;
+  }
+
+  bool OverlapDEC::isInGroup() const
+  {
+    if(!_group)
+      return false;
+    return _group->containsMyRank();
+  }
+}
diff --git a/src/ParaMEDMEM/OverlapDEC.hxx b/src/ParaMEDMEM/OverlapDEC.hxx
new file mode 100644 (file)
index 0000000..81f01a9
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 __OVERLAPDEC_HXX__
+#define __OVERLAPDEC_HXX__
+
+#include "DEC.hxx"
+#include "InterpolationOptions.hxx"
+
+#include <mpi.h>
+
+namespace ParaMEDMEM
+{
+  class OverlapInterpolationMatrix;
+  class ProcessorGroup;
+  class ParaFIELD;
+
+  class OverlapDEC : public DEC, public INTERP_KERNEL::InterpolationOptions
+  {
+  public:
+    OverlapDEC(const std::set<int>& procIds,const MPI_Comm& world_comm=MPI_COMM_WORLD);
+    virtual ~OverlapDEC();
+    void sendRecvData(bool way=true);
+    void sendData();
+    void recvData();
+    void synchronize();
+    void attachSourceLocalField(ParaFIELD *field, bool ownPt=false);
+    void attachTargetLocalField(ParaFIELD *field, bool ownPt=false);
+    ProcessorGroup *getGrp() { return _group; }
+    bool isInGroup() const;
+  private:
+    bool _own_group;
+    OverlapInterpolationMatrix* _interpolation_matrix;
+    ProcessorGroup *_group;
+  private:
+    ParaFIELD *_source_field;
+    bool _own_source_field;
+    ParaFIELD *_target_field;
+    bool _own_target_field;
+  };
+}
+
+#endif
diff --git a/src/ParaMEDMEM/OverlapElementLocator.cxx b/src/ParaMEDMEM/OverlapElementLocator.cxx
new file mode 100644 (file)
index 0000000..eac3903
--- /dev/null
@@ -0,0 +1,372 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "OverlapElementLocator.hxx"
+
+#include <mpi.h>
+#include "CommInterface.hxx"
+#include "Topology.hxx"
+#include "BlockTopology.hxx"
+#include "ParaFIELD.hxx"
+#include "ParaMESH.hxx"
+#include "ProcessorGroup.hxx"
+#include "MPIProcessorGroup.hxx"
+#include "OverlapInterpolationMatrix.hxx"
+#include "MEDCouplingFieldDouble.hxx"
+#include "MEDCouplingFieldDiscretization.hxx"
+#include "DirectedBoundingBox.hxx"
+#include "InterpKernelAutoPtr.hxx"
+
+#include <map>
+#include <set>
+#include <limits>
+
+using namespace std;
+
+namespace ParaMEDMEM 
+{ 
+  OverlapElementLocator::OverlapElementLocator(const ParaFIELD *sourceField, const ParaFIELD *targetField, const ProcessorGroup& group)
+    : _local_source_field(sourceField),
+      _local_target_field(targetField),
+      _local_source_mesh(0),
+      _local_target_mesh(0),
+      _domain_bounding_boxes(0),
+      _group(group)
+  { 
+    if(_local_source_field)
+      _local_source_mesh=_local_source_field->getSupport()->getCellMesh();
+    if(_local_target_field)
+      _local_target_mesh=_local_target_field->getSupport()->getCellMesh();
+    _comm=getCommunicator();
+    computeBoundingBoxes();
+  }
+
+  OverlapElementLocator::~OverlapElementLocator()
+  {
+    delete [] _domain_bounding_boxes;
+  }
+
+  const MPI_Comm *OverlapElementLocator::getCommunicator() const
+  {
+    const MPIProcessorGroup* group=static_cast<const MPIProcessorGroup*>(&_group);
+    return group->getComm();
+  }
+
+  void OverlapElementLocator::computeBoundingBoxes()
+  {
+    CommInterface comm_interface=_group.getCommInterface();
+    const MPIProcessorGroup* group=static_cast<const MPIProcessorGroup*> (&_group);
+    _local_space_dim=0;
+    if(_local_source_mesh)
+      _local_space_dim=_local_source_mesh->getSpaceDimension();
+    else
+      _local_space_dim=_local_target_mesh->getSpaceDimension();
+    //
+    const MPI_Comm* comm = group->getComm();
+    int bbSize=2*2*_local_space_dim;//2 (for source/target) 2 (min/max)
+    _domain_bounding_boxes=new double[bbSize*_group.size()];
+    INTERP_KERNEL::AutoPtr<double> minmax=new double[bbSize];
+    //Format minmax : Xmin_src,Xmax_src,Ymin_src,Ymax_src,Zmin_src,Zmax_src,Xmin_trg,Xmax_trg,Ymin_trg,Ymax_trg,Zmin_trg,Zmax_trg
+    if(_local_source_mesh)
+      _local_source_mesh->getBoundingBox(minmax);
+    else
+      {
+        for(int i=0;i<_local_space_dim;i++)
+          {
+            minmax[i*2]=std::numeric_limits<double>::max();
+            minmax[i*2+1]=-std::numeric_limits<double>::max();
+          }
+      }
+    if(_local_target_mesh)
+      _local_target_mesh->getBoundingBox(minmax+2*_local_space_dim);
+    else
+      {
+        for(int i=0;i<_local_space_dim;i++)
+          {
+            minmax[i*2+2*_local_space_dim]=std::numeric_limits<double>::max();
+            minmax[i*2+1+2*_local_space_dim]=-std::numeric_limits<double>::max();
+          }
+      }
+    comm_interface.allGather(minmax, bbSize, MPI_DOUBLE,
+                             _domain_bounding_boxes,bbSize, MPI_DOUBLE, 
+                             *comm);
+  
+    // Computation of all pairs needing an interpolation pairs are duplicated now !
+    
+    _proc_pairs.clear();//first is source second is target
+    _proc_pairs.resize(_group.size());
+    for(int i=0;i<_group.size();i++)
+      for(int j=0;j<_group.size();j++)
+        {
+          if(intersectsBoundingBox(i,j))
+            _proc_pairs[i].push_back(j);
+        }
+
+    // OK now let's assigning as balanced as possible, job to each proc of group
+    std::vector< std::vector< std::pair<int,int> > > pairsToBeDonePerProc(_group.size());
+    int i=0;
+    for(std::vector< std::vector< int > >::const_iterator it1=_proc_pairs.begin();it1!=_proc_pairs.end();it1++,i++)
+      for(std::vector< int >::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+        {
+          if(pairsToBeDonePerProc[i].size()<=pairsToBeDonePerProc[*it2].size())//it includes the fact that i==*it2
+            pairsToBeDonePerProc[i].push_back(std::pair<int,int>(i,*it2));
+          else
+            pairsToBeDonePerProc[*it2].push_back(std::pair<int,int>(i,*it2));
+        }
+    //Keeping todo list of current proc. _to_do_list contains a set of pair where at least _group.myRank() appears once.
+    //This proc will be in charge to perform interpolation of any of element of '_to_do_list'
+    //If _group.myRank()==myPair.first, current proc should fetch target mesh of myPair.second (if different from _group.myRank()).
+    //If _group.myRank()==myPair.second, current proc should fetch source mesh of myPair.second.
+    
+    int myProcId=_group.myRank();
+    _to_do_list=pairsToBeDonePerProc[myProcId];
+
+    //Feeding now '_procs_to_send'. A same id can appears twice. The second parameter in pair means what to send true=source, false=target
+    _procs_to_send.clear();
+    for(int i=_group.size()-1;i>=0;i--)
+      if(i!=myProcId)
+        {
+          const std::vector< std::pair<int,int> >& anRemoteProcToDoList=pairsToBeDonePerProc[i];
+          for(std::vector< std::pair<int,int> >::const_iterator it=anRemoteProcToDoList.begin();it!=anRemoteProcToDoList.end();it++)
+            {
+              if((*it).first==myProcId)
+                _procs_to_send.push_back(std::pair<int,bool>(i,true));
+              if((*it).second==myProcId)
+                _procs_to_send.push_back(std::pair<int,bool>(i,false));
+            }
+        }
+  }
+
+  /*!
+   * The aim of this method is to perform the communication to get data corresponding to '_to_do_list' attribute.
+   * The principle is the following : if proc n1 and n2 need to perform a cross sending with n1<n2, then n1 will send first and receive then.
+   */
+  void OverlapElementLocator::exchangeMeshes(OverlapInterpolationMatrix& matrix)
+  {
+    int myProcId=_group.myRank();
+    //starting to receive every procs whose id is lower than myProcId.
+    std::vector< std::pair<int,int> > toDoListForFetchRemaining;
+    for(std::vector< std::pair<int,int> >::const_iterator it=_to_do_list.begin();it!=_to_do_list.end();it++)
+      {
+        if((*it).first!=(*it).second)
+          {
+            if((*it).first==myProcId)
+              {
+                if((*it).second<myProcId)
+                  receiveRemoteMesh((*it).second,false);
+                else
+                  toDoListForFetchRemaining.push_back(std::pair<int,int>((*it).first,(*it).second));
+              }
+            else
+              {//(*it).second==myProcId
+                if((*it).first<myProcId)
+                  receiveRemoteMesh((*it).first,true);
+                else
+                  toDoListForFetchRemaining.push_back(std::pair<int,int>((*it).first,(*it).second));
+              }
+          }
+      }
+    //sending source or target mesh to remote procs
+    for(std::vector< std::pair<int,bool> >::const_iterator it2=_procs_to_send.begin();it2!=_procs_to_send.end();it2++)
+      sendLocalMeshTo((*it2).first,(*it2).second,matrix);
+    //fetching remaining meshes
+    for(std::vector< std::pair<int,int> >::const_iterator it=toDoListForFetchRemaining.begin();it!=toDoListForFetchRemaining.end();it++)
+      {
+        if((*it).first!=(*it).second)
+          {
+            if((*it).first==myProcId)
+              receiveRemoteMesh((*it).second,false);
+            else//(*it).second==myProcId
+              receiveRemoteMesh((*it).first,true);
+          }
+      }
+  }
+  
+  std::string OverlapElementLocator::getSourceMethod() const
+  {
+    return _local_source_field->getField()->getDiscretization()->getStringRepr();
+  }
+
+  std::string OverlapElementLocator::getTargetMethod() const
+  {
+    return _local_target_field->getField()->getDiscretization()->getStringRepr();
+  }
+
+  const MEDCouplingPointSet *OverlapElementLocator::getSourceMesh(int procId) const
+  {
+    int myProcId=_group.myRank();
+    if(myProcId==procId)
+      return _local_source_mesh;
+    std::pair<int,bool> p(procId,true);
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< MEDCouplingPointSet > >::const_iterator it=_remote_meshes.find(p);
+    return (*it).second;
+  }
+
+  const DataArrayInt *OverlapElementLocator::getSourceIds(int procId) const
+  {
+    int myProcId=_group.myRank();
+    if(myProcId==procId)
+      return 0;
+    std::pair<int,bool> p(procId,true);
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< DataArrayInt > >::const_iterator it=_remote_elems.find(p);
+    return (*it).second;
+  }
+
+  const MEDCouplingPointSet *OverlapElementLocator::getTargetMesh(int procId) const
+  {
+    int myProcId=_group.myRank();
+    if(myProcId==procId)
+      return _local_target_mesh;
+    std::pair<int,bool> p(procId,false);
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< MEDCouplingPointSet > >::const_iterator it=_remote_meshes.find(p);
+    return (*it).second;
+  }
+
+  const DataArrayInt *OverlapElementLocator::getTargetIds(int procId) const
+  {
+    int myProcId=_group.myRank();
+    if(myProcId==procId)
+      return 0;
+    std::pair<int,bool> p(procId,false);
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< DataArrayInt > >::const_iterator it=_remote_elems.find(p);
+    return (*it).second;
+  }
+
+  bool OverlapElementLocator::intersectsBoundingBox(int isource, int itarget) const
+  {
+    const double *source_bb=_domain_bounding_boxes+isource*2*2*_local_space_dim;
+    const double *target_bb=_domain_bounding_boxes+itarget*2*2*_local_space_dim+2*_local_space_dim;
+
+    for (int idim=0; idim < _local_space_dim; idim++)
+      {
+        const double eps = -1e-12;//tony to change
+        bool intersects = (target_bb[idim*2]<source_bb[idim*2+1]+eps)
+          && (source_bb[idim*2]<target_bb[idim*2+1]+eps);
+        if (!intersects)
+          return false; 
+      }
+    return true;
+  }
+
+  /*!
+   * This methods sends local source if 'sourceOrTarget'==True to proc 'procId'.
+   * This methods sends local target if 'sourceOrTarget'==False to proc 'procId'.
+   *
+   * This method prepares the matrix too, for matrix assembling and future matrix-vector computation.
+   */
+  void OverlapElementLocator::sendLocalMeshTo(int procId, bool sourceOrTarget, OverlapInterpolationMatrix& matrix) const
+  {
+   vector<int> elems;
+   //int myProcId=_group.myRank();
+   const double *distant_bb=0;
+   MEDCouplingPointSet *local_mesh=0;
+   const ParaFIELD *field=0;
+   if(sourceOrTarget)//source for local but target for distant
+     {
+       distant_bb=_domain_bounding_boxes+procId*2*2*_local_space_dim+2*_local_space_dim;
+       local_mesh=_local_source_mesh;
+       field=_local_source_field;
+     }
+   else//target for local but source for distant
+     {
+       distant_bb=_domain_bounding_boxes+procId*2*2*_local_space_dim;
+       local_mesh=_local_target_mesh;
+       field=_local_target_field;
+     }
+   local_mesh->getCellsInBoundingBox(distant_bb,getBoundingBoxAdjustment(),elems);
+   DataArrayInt *idsToSend;
+   MEDCouplingPointSet *send_mesh=static_cast<MEDCouplingPointSet *>(field->getField()->buildSubMeshData(&elems[0],&elems[elems.size()],idsToSend));
+   if(sourceOrTarget)
+     matrix.keepTracksOfSourceIds(procId,idsToSend);//Case#1 in Step2 of main algorithm.
+   else
+     matrix.keepTracksOfTargetIds(procId,idsToSend);//Case#0 in Step2 of main algorithm.
+   sendMesh(procId,send_mesh,idsToSend);
+   send_mesh->decrRef();
+   idsToSend->decrRef();
+  }
+
+  /*!
+   * This method recieves source remote mesh on proc 'procId' if sourceOrTarget==True
+   * This method recieves target remote mesh on proc 'procId' if sourceOrTarget==False
+   */
+  void OverlapElementLocator::receiveRemoteMesh(int procId, bool sourceOrTarget)
+  {
+    DataArrayInt *da=0;
+    MEDCouplingPointSet *m=0;
+    receiveMesh(procId,m,da);
+    std::pair<int,bool> p(procId,sourceOrTarget);
+    _remote_meshes[p]=m;
+    _remote_elems[p]=da;
+  }
+
+  void OverlapElementLocator::sendMesh(int procId, const MEDCouplingPointSet *mesh, const DataArrayInt *idsToSend) const
+  {
+    CommInterface comInterface=_group.getCommInterface();
+    // First stage : exchanging sizes
+    vector<double> tinyInfoLocalD;//tinyInfoLocalD not used for the moment
+    vector<int> tinyInfoLocal;
+    vector<string> tinyInfoLocalS;
+    mesh->getTinySerializationInformation(tinyInfoLocalD,tinyInfoLocal,tinyInfoLocalS);
+    const MPI_Comm *comm=getCommunicator();
+    //
+    int lgth[2];
+    lgth[0]=tinyInfoLocal.size();
+    lgth[1]=idsToSend->getNbOfElems();
+    comInterface.send(&lgth,2,MPI_INT,procId,1140,*_comm);
+    comInterface.send(&tinyInfoLocal[0],tinyInfoLocal.size(),MPI_INT,procId,1141,*comm);
+    //
+    DataArrayInt *v1Local=0;
+    DataArrayDouble *v2Local=0;
+    mesh->serialize(v1Local,v2Local);
+    comInterface.send(v1Local->getPointer(),v1Local->getNbOfElems(),MPI_INT,procId,1142,*comm);
+    comInterface.send(v2Local->getPointer(),v2Local->getNbOfElems(),MPI_DOUBLE,procId,1143,*comm);
+    //finished for mesh, ids now
+    comInterface.send((int *)idsToSend->getConstPointer(),lgth[1],MPI_INT,procId,1144,*comm);
+    //
+    v1Local->decrRef();
+    v2Local->decrRef();
+  }
+
+  void OverlapElementLocator::receiveMesh(int procId, MEDCouplingPointSet* &mesh, DataArrayInt *&ids) const
+  {
+    int lgth[2];
+    MPI_Status status;
+    const MPI_Comm *comm=getCommunicator();
+    CommInterface comInterface=_group.getCommInterface();
+    comInterface.recv(lgth,2,MPI_INT,procId,1140,*_comm,&status);
+    std::vector<int> tinyInfoDistant(lgth[0]);
+    ids=DataArrayInt::New();
+    ids->alloc(lgth[1],1);
+    comInterface.recv(&tinyInfoDistant[0],lgth[0],MPI_INT,procId,1141,*comm,&status);
+    mesh=MEDCouplingPointSet::BuildInstanceFromMeshType((MEDCouplingMeshType)tinyInfoDistant[0]);
+    std::vector<std::string> unusedTinyDistantSts;
+    vector<double> tinyInfoDistantD(1);//tinyInfoDistantD not used for the moment
+    DataArrayInt *v1Distant=DataArrayInt::New();
+    DataArrayDouble *v2Distant=DataArrayDouble::New();
+    mesh->resizeForUnserialization(tinyInfoDistant,v1Distant,v2Distant,unusedTinyDistantSts);
+    comInterface.recv(v1Distant->getPointer(),v1Distant->getNbOfElems(),MPI_INT,procId,1142,*comm,&status);
+    comInterface.recv(v2Distant->getPointer(),v2Distant->getNbOfElems(),MPI_DOUBLE,procId,1143,*comm,&status);
+    mesh->unserialization(tinyInfoDistantD,tinyInfoDistant,v1Distant,v2Distant,unusedTinyDistantSts);
+    //finished for mesh, ids now
+    comInterface.recv(ids->getPointer(),lgth[1],MPI_INT,procId,1144,*comm,&status);
+    //
+    v1Distant->decrRef();
+    v2Distant->decrRef();
+  }
+}
diff --git a/src/ParaMEDMEM/OverlapElementLocator.hxx b/src/ParaMEDMEM/OverlapElementLocator.hxx
new file mode 100644 (file)
index 0000000..5ffa58f
--- /dev/null
@@ -0,0 +1,91 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 __OVERLAPELEMENTLOCATOR_HXX__
+#define __OVERLAPELEMENTLOCATOR_HXX__
+
+#include "InterpolationOptions.hxx"
+#include "MEDCouplingNatureOfField.hxx"
+#include "MEDCouplingPointSet.hxx"
+#include "MEDCouplingMemArray.hxx"
+#include "MEDCouplingAutoRefCountObjectPtr.hxx"
+
+#include <mpi.h>
+#include <vector>
+#include <map>
+#include <set>
+
+namespace ParaMEDMEM
+{
+  class ParaFIELD;
+  class ProcessorGroup;
+  class ParaSUPPORT;
+  class OverlapInterpolationMatrix;
+  
+  class OverlapElementLocator : public INTERP_KERNEL::InterpolationOptions
+  {
+  public:
+    OverlapElementLocator(const ParaFIELD *sourceField, const ParaFIELD *targetField, const ProcessorGroup& group);
+    virtual ~OverlapElementLocator();
+    const MPI_Comm *getCommunicator() const;
+    void exchangeMeshes(OverlapInterpolationMatrix& matrix);
+    std::vector< std::pair<int,int> > getToDoList() const { return _to_do_list; }
+    std::vector< std::vector< int > > getProcsInInteraction() const { return _proc_pairs; }
+    std::string getSourceMethod() const;
+    std::string getTargetMethod() const;
+    const MEDCouplingPointSet *getSourceMesh(int procId) const;
+    const DataArrayInt *getSourceIds(int procId) const;
+    const MEDCouplingPointSet *getTargetMesh(int procId) const;
+    const DataArrayInt *getTargetIds(int procId) const;
+  private:
+    void computeBoundingBoxes();
+    bool intersectsBoundingBox(int i, int j) const;
+    void sendLocalMeshTo(int procId, bool sourceOrTarget, OverlapInterpolationMatrix& matrix) const;
+    void receiveRemoteMesh(int procId, bool sourceOrTarget);
+    void sendMesh(int procId, const MEDCouplingPointSet *mesh, const DataArrayInt *idsToSend) const;
+    void receiveMesh(int procId, MEDCouplingPointSet* &mesh, DataArrayInt *&ids) const;
+  private:
+    const ParaFIELD *_local_source_field;
+    const ParaFIELD *_local_target_field;
+    int _local_space_dim;
+    MEDCouplingPointSet *_local_source_mesh;
+    MEDCouplingPointSet *_local_target_mesh;
+    std::vector<MEDCouplingPointSet*> _distant_cell_meshes;
+    std::vector<MEDCouplingPointSet*> _distant_face_meshes;
+    //! of size _group.size(). Contains for each source proc i, the ids of proc j the targets interact with. This vector is common for all procs in _group. 
+    std::vector< std::vector< int > > _proc_pairs;
+    //! list of interpolations couple to be done
+    std::vector< std::pair<int,int> > _to_do_list;
+    std::vector< std::pair<int,bool> > _procs_to_send;
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< MEDCouplingPointSet > > _remote_meshes;
+    std::map<std::pair<int,bool>, MEDCouplingAutoRefCountObjectPtr< DataArrayInt > > _remote_elems;
+    double* _domain_bounding_boxes;
+    const ProcessorGroup& _group;
+    std::vector<int> _distant_proc_ids;
+    const MPI_Comm *_comm;
+    //Attributes only used by lazy side
+    //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;
+  };
+
+}
+
+#endif
diff --git a/src/ParaMEDMEM/OverlapInterpolationMatrix.cxx b/src/ParaMEDMEM/OverlapInterpolationMatrix.cxx
new file mode 100644 (file)
index 0000000..d232ca8
--- /dev/null
@@ -0,0 +1,253 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "OverlapInterpolationMatrix.hxx"
+#include "ParaMESH.hxx"
+#include "ParaFIELD.hxx"
+#include "ProcessorGroup.hxx"
+#include "TranslationRotationMatrix.hxx"
+#include "Interpolation.hxx"
+#include "Interpolation1D.txx"
+#include "Interpolation2DCurve.hxx"
+#include "Interpolation2D.txx"
+#include "Interpolation3DSurf.hxx"
+#include "Interpolation3D.txx"
+#include "MEDCouplingUMesh.hxx"
+#include "MEDCouplingNormalizedUnstructuredMesh.txx"
+#include "InterpolationOptions.hxx"
+#include "NormalizedUnstructuredMesh.hxx"
+#include "ElementLocator.hxx"
+#include "InterpKernelAutoPtr.hxx"
+
+#include <algorithm>
+
+using namespace std;
+
+namespace ParaMEDMEM
+{
+  OverlapInterpolationMatrix::OverlapInterpolationMatrix(ParaFIELD *source_field,
+                                                         ParaFIELD *target_field,
+                                                         const ProcessorGroup& group,
+                                                         const DECOptions& dec_options,
+                                                         const INTERP_KERNEL::InterpolationOptions& i_opt):
+    INTERP_KERNEL::InterpolationOptions(i_opt),
+    DECOptions(dec_options),
+    _source_field(source_field),
+    _target_field(target_field),
+    _source_support(source_field->getSupport()->getCellMesh()),
+    _target_support(target_field->getSupport()->getCellMesh()),
+    _mapping(group),
+    _group(group)
+  {
+    int nbelems = source_field->getField()->getNumberOfTuples();
+    _row_offsets.resize(nbelems+1);
+    _coeffs.resize(nbelems);
+    _target_volume.resize(nbelems);
+  }
+
+  void OverlapInterpolationMatrix::keepTracksOfSourceIds(int procId, DataArrayInt *ids)
+  {
+    _mapping.keepTracksOfSourceIds(procId,ids);
+  }
+
+  void OverlapInterpolationMatrix::keepTracksOfTargetIds(int procId, DataArrayInt *ids)
+  {
+    _mapping.keepTracksOfTargetIds(procId,ids);
+  }
+
+  OverlapInterpolationMatrix::~OverlapInterpolationMatrix()
+  {
+  }
+
+  void OverlapInterpolationMatrix::addContribution(const MEDCouplingPointSet *src, const DataArrayInt *srcIds, const std::string& srcMeth, int srcProcId,
+                                                   const MEDCouplingPointSet *trg, const DataArrayInt *trgIds, const std::string& trgMeth, int trgProcId)
+  {
+    std::string interpMethod(srcMeth);
+    interpMethod+=trgMeth;
+    //creating the interpolator structure
+    vector<map<int,double> > surfaces;
+    int colSize=0;
+    //computation of the intersection volumes between source and target elements
+    const MEDCouplingUMesh *trgC=dynamic_cast<const MEDCouplingUMesh *>(trg);
+    const MEDCouplingUMesh *srcC=dynamic_cast<const MEDCouplingUMesh *>(src);
+    if ( src->getMeshDimension() == -1 )
+      {
+        if(trgC->getMeshDimension()==2 && trgC->getSpaceDimension()==2)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<2,2> target_mesh_wrapper(trgC);
+            INTERP_KERNEL::Interpolation2D interpolation(*this);
+            colSize=interpolation.fromIntegralUniform(target_mesh_wrapper,surfaces,trgMeth.c_str());
+          }
+        else if(trgC->getMeshDimension()==3 && trgC->getSpaceDimension()==3)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<3,3> target_mesh_wrapper(trgC);
+            INTERP_KERNEL::Interpolation3D interpolation(*this);
+            colSize=interpolation.fromIntegralUniform(target_mesh_wrapper,surfaces,trgMeth.c_str());
+          }
+        else if(trgC->getMeshDimension()==2 && trgC->getSpaceDimension()==3)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<3,2> target_mesh_wrapper(trgC);
+            INTERP_KERNEL::Interpolation3DSurf interpolation(*this);
+            colSize=interpolation.fromIntegralUniform(target_mesh_wrapper,surfaces,trgMeth.c_str());
+          }
+        else
+          throw INTERP_KERNEL::Exception("No para interpolation available for the given mesh and space dimension of source mesh to -1D targetMesh");
+      }
+    else if ( trg->getMeshDimension() == -1 )
+      {
+        if(srcC->getMeshDimension()==2 && srcC->getSpaceDimension()==2)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<2,2> local_mesh_wrapper(srcC);
+            INTERP_KERNEL::Interpolation2D interpolation(*this);
+            colSize=interpolation.toIntegralUniform(local_mesh_wrapper,surfaces,srcMeth.c_str());
+          }
+        else if(srcC->getMeshDimension()==3 && srcC->getSpaceDimension()==3)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<3,3> local_mesh_wrapper(srcC);
+            INTERP_KERNEL::Interpolation3D interpolation(*this);
+            colSize=interpolation.toIntegralUniform(local_mesh_wrapper,surfaces,srcMeth.c_str());
+          }
+        else if(srcC->getMeshDimension()==2 && srcC->getSpaceDimension()==3)
+          {
+            MEDCouplingNormalizedUnstructuredMesh<3,2> local_mesh_wrapper(srcC);
+            INTERP_KERNEL::Interpolation3DSurf interpolation(*this);
+            colSize=interpolation.toIntegralUniform(local_mesh_wrapper,surfaces,srcMeth.c_str());
+          }
+        else
+          throw INTERP_KERNEL::Exception("No para interpolation available for the given mesh and space dimension of distant mesh to -1D sourceMesh");
+      }
+    else if (trg->getMeshDimension() != _source_support->getMeshDimension())
+      {
+        throw INTERP_KERNEL::Exception("local and distant meshes do not have the same space and mesh dimensions");
+      }
+    else if( src->getMeshDimension() == 1
+             && src->getSpaceDimension() == 1 )
+      {
+        MEDCouplingNormalizedUnstructuredMesh<1,1> target_wrapper(trgC);
+        MEDCouplingNormalizedUnstructuredMesh<1,1> source_wrapper(srcC);
+
+        INTERP_KERNEL::Interpolation1D interpolation(*this);
+        colSize=interpolation.interpolateMeshes(source_wrapper,target_wrapper,surfaces,interpMethod.c_str());
+        target_wrapper.releaseTempArrays();
+        source_wrapper.releaseTempArrays();
+      }
+    else if( trg->getMeshDimension() == 1
+             && trg->getSpaceDimension() == 2 )
+      {
+        MEDCouplingNormalizedUnstructuredMesh<2,1> target_wrapper(trgC);
+        MEDCouplingNormalizedUnstructuredMesh<2,1> source_wrapper(srcC);
+
+        INTERP_KERNEL::Interpolation2DCurve interpolation(*this);
+        colSize=interpolation.interpolateMeshes(source_wrapper,target_wrapper,surfaces,interpMethod.c_str());
+        target_wrapper.releaseTempArrays();
+        source_wrapper.releaseTempArrays();
+      }
+    else if ( trg->getMeshDimension() == 2
+              && trg->getSpaceDimension() == 3 )
+      {
+        MEDCouplingNormalizedUnstructuredMesh<3,2> target_wrapper(trgC);
+        MEDCouplingNormalizedUnstructuredMesh<3,2> source_wrapper(srcC);
+
+        INTERP_KERNEL::Interpolation3DSurf interpolator (*this);
+        colSize=interpolator.interpolateMeshes(source_wrapper,target_wrapper,surfaces,interpMethod.c_str());
+        target_wrapper.releaseTempArrays();
+        source_wrapper.releaseTempArrays();
+      }
+    else if ( trg->getMeshDimension() == 2
+              && trg->getSpaceDimension() == 2)
+      {
+        MEDCouplingNormalizedUnstructuredMesh<2,2> target_wrapper(trgC);
+        MEDCouplingNormalizedUnstructuredMesh<2,2> source_wrapper(srcC);
+
+        INTERP_KERNEL::Interpolation2D interpolator (*this);
+        colSize=interpolator.interpolateMeshes(source_wrapper,target_wrapper,surfaces,interpMethod.c_str());
+        target_wrapper.releaseTempArrays();
+        source_wrapper.releaseTempArrays();
+      }
+    else if ( trg->getMeshDimension() == 3
+              && trg->getSpaceDimension() == 3 )
+      {
+        MEDCouplingNormalizedUnstructuredMesh<3,3> target_wrapper(trgC);
+        MEDCouplingNormalizedUnstructuredMesh<3,3> source_wrapper(srcC);
+
+        INTERP_KERNEL::Interpolation3D interpolator (*this);
+        colSize=interpolator.interpolateMeshes(source_wrapper,target_wrapper,surfaces,interpMethod.c_str());
+        target_wrapper.releaseTempArrays();
+        source_wrapper.releaseTempArrays();
+      }
+    else
+      {
+        throw INTERP_KERNEL::Exception("no interpolator exists for these mesh and space dimensions ");
+      }
+    bool needSourceSurf=isSurfaceComputationNeeded(srcMeth);
+    MEDCouplingFieldDouble *source_triangle_surf=0;
+    if(needSourceSurf)
+      source_triangle_surf=src->getMeasureField(getMeasureAbsStatus());
+    //
+    fillDistributedMatrix(surfaces,srcIds,srcProcId,trgIds,trgProcId);
+    //
+    if(needSourceSurf)
+      source_triangle_surf->decrRef();
+  }
+
+  /*!
+   * \b res rows refers to target and column (first param of map) to source.
+   */
+  void OverlapInterpolationMatrix::fillDistributedMatrix(const std::vector< std::map<int,double> >& res,
+                                                         const DataArrayInt *srcIds, int srcProc,
+                                                         const DataArrayInt *trgIds, int trgProc)
+  {
+    _mapping.addContributionST(res,srcIds,srcProc,trgIds,trgProc);
+  }
+
+  /*!
+   * 'procsInInteraction' gives the global view of interaction between procs.
+   * In 'procsInInteraction' for a proc with id i, is in interaction with procs listed in procsInInteraction[i]
+   */
+  void OverlapInterpolationMatrix::prepare(const std::vector< std::vector<int> >& procsInInteraction)
+  {
+    if(_source_support)
+      _mapping.prepare(procsInInteraction,_target_field->getField()->getNumberOfTuplesExpected());
+    else
+      _mapping.prepare(procsInInteraction,0);
+  }
+
+  void OverlapInterpolationMatrix::computeDeno()
+  {
+    if(_target_field->getField()->getNature()==ConservativeVolumic)
+      _mapping.computeDenoConservativeVolumic(_target_field->getField()->getNumberOfTuplesExpected());
+    else
+      throw INTERP_KERNEL::Exception("Policy Not implemented yet : only ConservativeVolumic defined !");
+  }
+
+  void OverlapInterpolationMatrix::multiply()
+  {
+    _mapping.multiply(_source_field->getField(),_target_field->getField());
+  }
+
+  void OverlapInterpolationMatrix::transposeMultiply()
+  {
+    _mapping.transposeMultiply(_target_field->getField(),_source_field->getField());
+  }
+  
+  bool OverlapInterpolationMatrix::isSurfaceComputationNeeded(const std::string& method) const
+  {
+    return method=="P0";
+  }
+}
diff --git a/src/ParaMEDMEM/OverlapInterpolationMatrix.hxx b/src/ParaMEDMEM/OverlapInterpolationMatrix.hxx
new file mode 100644 (file)
index 0000000..c3a4649
--- /dev/null
@@ -0,0 +1,124 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 __OVERLAPINTERPOLATIONMATRIX_HXX__
+#define __OVERLAPINTERPOLATIONMATRIX_HXX__
+
+#include "MPIAccessDEC.hxx"
+#include "OverlapMapping.hxx"
+#include "InterpolationOptions.hxx"
+#include "DECOptions.hxx"
+
+namespace ParaMEDMEM
+{
+  class ParaFIELD;
+  class MEDCouplingPointSet;
+
+  class OverlapInterpolationMatrix : public INTERP_KERNEL::InterpolationOptions,
+                                     public DECOptions
+  {
+  public:
+    
+    OverlapInterpolationMatrix(ParaFIELD *source_field,
+                               ParaFIELD *target_field,
+                               const ProcessorGroup& group,
+                               const DECOptions& dec_opt,
+                               const InterpolationOptions& i_opt);
+
+    void keepTracksOfSourceIds(int procId, DataArrayInt *ids);
+
+    void keepTracksOfTargetIds(int procId, DataArrayInt *ids);
+
+    void addContribution(const MEDCouplingPointSet *src, const DataArrayInt *srcIds, const std::string& srcMeth, int srcProcId,
+                         const MEDCouplingPointSet *trg, const DataArrayInt *trgIds, const std::string& trgMeth, int trgProcId);
+
+    void prepare(const std::vector< std::vector<int> >& procsInInteraction);
+    
+    void computeDeno();
+
+    void multiply();
+
+    void transposeMultiply();
+    
+    virtual ~OverlapInterpolationMatrix();
+#if 0
+    void addContribution(MEDCouplingPointSet& distant_support, int iproc_distant,
+                         const int* distant_elems, const std::string& srcMeth, const std::string& targetMeth);
+    void finishContributionW(ElementLocator& elementLocator);
+    void finishContributionL(ElementLocator& elementLocator);
+    void multiply(MEDCouplingFieldDouble& field) const;
+    void transposeMultiply(MEDCouplingFieldDouble& field)const;
+    void prepare();
+    int getNbRows() const { return _row_offsets.size(); }
+    MPIAccessDEC* getAccessDEC() { return _mapping.getAccessDEC(); }
+  private:
+    void computeConservVolDenoW(ElementLocator& elementLocator);
+    void computeIntegralDenoW(ElementLocator& elementLocator);
+    void computeRevIntegralDenoW(ElementLocator& elementLocator);
+    void computeGlobConstraintDenoW(ElementLocator& elementLocator);
+    void computeConservVolDenoL(ElementLocator& elementLocator);
+    void computeIntegralDenoL(ElementLocator& elementLocator);
+    void computeRevIntegralDenoL(ElementLocator& elementLocator);
+    
+    void computeLocalColSum(std::vector<double>& res) const;
+    void computeLocalRowSum(const std::vector<int>& distantProcs, std::vector<std::vector<int> >& resPerProcI,
+                            std::vector<std::vector<double> >& resPerProcD) const;
+    void computeGlobalRowSum(ElementLocator& elementLocator, std::vector<std::vector<double> >& denoStrorage, std::vector<std::vector<double> >& denoStrorageInv);
+    void computeGlobalColSum(std::vector<std::vector<double> >& denoStrorage);
+    void resizeGlobalColSum(std::vector<std::vector<double> >& denoStrorage);
+    void fillDSFromVM(int iproc_distant, const int* distant_elems, const std::vector< std::map<int,double> >& values, MEDCouplingFieldDouble *surf);
+    void serializeMe(std::vector< std::vector< std::map<int,double> > >& data1, std::vector<int>& data2) const;
+    void initialize();
+    void findAdditionnalElements(ElementLocator& elementLocator, std::vector<std::vector<int> >& elementsToAdd,
+                                 const std::vector<std::vector<int> >& resPerProcI, const std::vector<std::vector<int> >& globalIdsPartial);
+    void addGhostElements(const std::vector<int>& distantProcs, const std::vector<std::vector<int> >& elementsToAdd);
+    int mergePolicies(const std::vector<int>& policyPartial);
+    void mergeRowSum(const std::vector< std::vector<double> >& rowsPartialSumD, const std::vector< std::vector<int> >& globalIdsPartial,
+                     std::vector<int>& globalIdsLazySideInteraction, std::vector<double>& sumCorresponding);
+    void mergeRowSum2(const std::vector< std::vector<int> >& globalIdsPartial, std::vector< std::vector<double> >& rowsPartialSumD,
+                      const std::vector<int>& globalIdsLazySideInteraction, const std::vector<double>& sumCorresponding);
+    void mergeRowSum3(const std::vector< std::vector<int> >& globalIdsPartial, std::vector< std::vector<double> >& rowsPartialSumD);
+    void mergeCoeffs(const std::vector<int>& procsInInteraction, const std::vector< std::vector<int> >& rowsPartialSumI,
+                     const std::vector<std::vector<int> >& globalIdsPartial, std::vector<std::vector<double> >& denoStrorageInv);
+    void divideByGlobalRowSum(const std::vector<int>& distantProcs, const std::vector<std::vector<int> >& resPerProcI,
+                              const std::vector<std::vector<double> >& resPerProcD, std::vector<std::vector<double> >& deno);
+#endif
+  private:
+    bool isSurfaceComputationNeeded(const std::string& method) const;
+    void fillDistributedMatrix(const std::vector< std::map<int,double> >& res,
+                               const DataArrayInt *srcIds, int srcProc,
+                               const DataArrayInt *trgIds, int trgProc);
+  private:
+    ParaMEDMEM::ParaFIELD *_source_field;
+    ParaMEDMEM::ParaFIELD *_target_field;
+    std::vector<int> _row_offsets;
+    std::map<std::pair<int,int>, int > _col_offsets;
+    MEDCouplingPointSet *_source_support;
+    MEDCouplingPointSet *_target_support;
+    OverlapMapping _mapping;
+    const ProcessorGroup& _group;
+    std::vector< std::vector<double> > _target_volume;
+    std::vector<std::vector<std::pair<int,double> > > _coeffs;
+    std::vector<std::vector<double> > _deno_multiply;
+    std::vector<std::vector<double> > _deno_reverse_multiply;
+  };
+}
+
+#endif
diff --git a/src/ParaMEDMEM/OverlapMapping.cxx b/src/ParaMEDMEM/OverlapMapping.cxx
new file mode 100644 (file)
index 0000000..515e962
--- /dev/null
@@ -0,0 +1,672 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "OverlapMapping.hxx"
+#include "MPIProcessorGroup.hxx"
+
+#include "MEDCouplingFieldDouble.hxx"
+#include "MEDCouplingAutoRefCountObjectPtr.hxx"
+
+#include "InterpKernelAutoPtr.hxx"
+
+#include <numeric>
+#include <algorithm>
+
+using namespace ParaMEDMEM;
+
+OverlapMapping::OverlapMapping(const ProcessorGroup& group):_group(group)
+{
+}
+
+/*!
+ * This method keeps tracks of source ids to know in step 6 of main algorithm, which tuple ids to send away.
+ * This method incarnates item#1 of step2 algorithm.
+ */
+void OverlapMapping::keepTracksOfSourceIds(int procId, DataArrayInt *ids)
+{
+  ids->incrRef();
+  _src_ids_st2.push_back(ids);
+  _src_proc_st2.push_back(procId);
+}
+
+/*!
+ * This method keeps tracks of target ids to know in step 6 of main algorithm.
+ * This method incarnates item#0 of step2 algorithm.
+ */
+void OverlapMapping::keepTracksOfTargetIds(int procId, DataArrayInt *ids)
+{
+  ids->incrRef();
+  _trg_ids_st2.push_back(ids);
+  _trg_proc_st2.push_back(procId);
+}
+
+/*!
+ * This method stores from a matrix in format Target(rows)/Source(cols) for a source procId 'srcProcId' and for a target procId 'trgProcId'.
+ * All ids (source and target) are in format of local ids. 
+ */
+void OverlapMapping::addContributionST(const std::vector< std::map<int,double> >& matrixST, const DataArrayInt *srcIds, int srcProcId, const DataArrayInt *trgIds, int trgProcId)
+{
+  _matrixes_st.push_back(matrixST);
+  _source_proc_id_st.push_back(srcProcId);
+  _target_proc_id_st.push_back(trgProcId);
+  if(srcIds)
+    {//item#1 of step2 algorithm in proc m. Only to know in advanced nb of recv ids [ (0,1) computed on proc1 and Matrix-Vector on proc1 ]
+      _nb_of_src_ids_proc_st2.push_back(srcIds->getNumberOfTuples());
+      _src_ids_proc_st2.push_back(srcProcId);
+    }
+  else
+    {//item#0 of step2 algorithm in proc k
+      std::set<int> s;
+      for(std::vector< std::map<int,double> >::const_iterator it1=matrixST.begin();it1!=matrixST.end();it1++)
+        for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+          s.insert((*it2).first);
+      _src_ids_zip_st2.resize(_src_ids_zip_st2.size()+1);
+      _src_ids_zip_st2.back().insert(_src_ids_zip_st2.back().end(),s.begin(),s.end());
+      _src_ids_zip_proc_st2.push_back(trgProcId);
+    }
+}
+
+/*!
+ * 'procsInInteraction' gives the global view of interaction between procs.
+ * In 'procsInInteraction' for a proc with id i, is in interaction with procs listed in procsInInteraction[i].
+ *
+ * This method is in charge to send matrixes in AlltoAll mode.
+ * After the call of this method 'this' contains the matrixST for all source elements of the current proc
+ */
+void OverlapMapping::prepare(const std::vector< std::vector<int> >& procsInInteraction, int nbOfTrgElems)
+{
+  CommInterface commInterface=_group.getCommInterface();
+  const MPIProcessorGroup *group=static_cast<const MPIProcessorGroup*>(&_group);
+  const MPI_Comm *comm=group->getComm();
+  int grpSize=_group.size();
+  INTERP_KERNEL::AutoPtr<int> nbsend=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbsend2=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbsend3=new int[grpSize];
+  std::fill<int *>(nbsend,nbsend+grpSize,0);
+  int myProcId=_group.myRank();
+  _proc_ids_to_recv_vector_st.clear();
+  int curProc=0;
+  for(std::vector< std::vector<int> >::const_iterator it1=procsInInteraction.begin();it1!=procsInInteraction.end();it1++,curProc++)
+    if(std::find((*it1).begin(),(*it1).end(),myProcId)!=(*it1).end())
+      _proc_ids_to_recv_vector_st.push_back(curProc);
+  _proc_ids_to_send_vector_st=procsInInteraction[myProcId];
+  for(std::size_t i=0;i<_matrixes_st.size();i++)
+    if(_source_proc_id_st[i]==myProcId)
+      nbsend[_target_proc_id_st[i]]=_matrixes_st[i].size();
+  INTERP_KERNEL::AutoPtr<int> nbrecv=new int[grpSize];
+  commInterface.allToAll(nbsend,1,MPI_INT,nbrecv,1,MPI_INT,*comm);
+  //exchanging matrix
+  //first exchanging offsets+ids_source
+  INTERP_KERNEL::AutoPtr<int> nbrecv1=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbrecv2=new int[grpSize];
+  //
+  int *tmp=0;
+  serializeMatrixStep0ST(nbrecv,
+                         tmp,nbsend2,nbsend3,
+                         nbrecv1,nbrecv2);
+  INTERP_KERNEL::AutoPtr<int> bigArr=tmp;
+  INTERP_KERNEL::AutoPtr<int> bigArrRecv=new int[nbrecv2[grpSize-1]+nbrecv1[grpSize-1]];
+  commInterface.allToAllV(bigArr,nbsend2,nbsend3,MPI_INT,
+                          bigArrRecv,nbrecv1,nbrecv2,MPI_INT,
+                          *comm);// sending ids of sparse matrix (n+1 elems)
+  //second phase echange target ids
+  std::fill<int *>(nbsend2,nbsend2+grpSize,0);
+  INTERP_KERNEL::AutoPtr<int> nbrecv3=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbrecv4=new int[grpSize];
+  double *tmp2=0;
+  int lgthOfArr=serializeMatrixStep1ST(nbrecv,bigArrRecv,nbrecv1,nbrecv2,
+                                       tmp,tmp2,
+                                       nbsend2,nbsend3,nbrecv3,nbrecv4);
+  INTERP_KERNEL::AutoPtr<int> bigArr2=tmp;
+  INTERP_KERNEL::AutoPtr<double> bigArrD2=tmp2;
+  INTERP_KERNEL::AutoPtr<int> bigArrRecv2=new int[lgthOfArr];
+  INTERP_KERNEL::AutoPtr<double> bigArrDRecv2=new double[lgthOfArr];
+  commInterface.allToAllV(bigArr2,nbsend2,nbsend3,MPI_INT,
+                          bigArrRecv2,nbrecv3,nbrecv4,MPI_INT,
+                          *comm);
+  commInterface.allToAllV(bigArrD2,nbsend2,nbsend3,MPI_DOUBLE,
+                          bigArrDRecv2,nbrecv3,nbrecv4,MPI_DOUBLE,
+                          *comm);
+  //finishing
+  unserializationST(nbOfTrgElems,nbrecv,bigArrRecv,nbrecv1,nbrecv2,
+                    bigArrRecv2,bigArrDRecv2,nbrecv3,nbrecv4);
+  //updating _src_ids_zip_st2 and _src_ids_zip_st2 with received matrix.
+  updateZipSourceIdsForFuture();
+  //finish to fill _the_matrix_st with already in place matrix in _matrixes_st
+  finishToFillFinalMatrixST();
+  //printTheMatrix();
+}
+
+/*!
+ * Compute denominators.
+ */
+void OverlapMapping::computeDenoGlobConstraint()
+{
+  _the_deno_st.clear();
+  std::size_t sz1=_the_matrix_st.size();
+  _the_deno_st.resize(sz1);
+  for(std::size_t i=0;i<sz1;i++)
+    {
+      std::size_t sz2=_the_matrix_st[i].size();
+      _the_deno_st[i].resize(sz2);
+      for(std::size_t j=0;j<sz2;j++)
+        {
+          double sum=0;
+          std::map<int,double>& mToFill=_the_deno_st[i][j];
+          const std::map<int,double>& m=_the_matrix_st[i][j];
+          for(std::map<int,double>::const_iterator it=m.begin();it!=m.end();it++)
+            sum+=(*it).second;
+          for(std::map<int,double>::const_iterator it=m.begin();it!=m.end();it++)
+            mToFill[(*it).first]=sum;
+        }
+    }
+}
+
+/*!
+ * Compute denominators.
+ */
+void OverlapMapping::computeDenoConservativeVolumic(int nbOfTuplesTrg)
+{
+  CommInterface commInterface=_group.getCommInterface();
+  int myProcId=_group.myRank();
+  //
+  _the_deno_st.clear();
+  std::size_t sz1=_the_matrix_st.size();
+  _the_deno_st.resize(sz1);
+  std::vector<double> deno(nbOfTuplesTrg);
+  for(std::size_t i=0;i<sz1;i++)
+    {
+      const std::vector< std::map<int,double> >& mat=_the_matrix_st[i];
+      int curSrcId=_the_matrix_st_source_proc_id[i];
+      std::vector<int>::iterator isItem1=std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),curSrcId);
+      int rowId=0;
+      if(isItem1==_trg_proc_st2.end() || curSrcId==myProcId)//item1 of step2 main algo. Simple, because rowId of mat are directly target ids.
+        {
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++,rowId++)
+            for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+              deno[rowId]+=(*it2).second;
+        }
+      else
+        {//item0 of step2 main algo. More complicated.
+          std::vector<int>::iterator fnd=isItem1;//std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),curSrcId);
+          int locId=std::distance(_trg_proc_st2.begin(),fnd);
+          const DataArrayInt *trgIds=_trg_ids_st2[locId];
+          const int *trgIds2=trgIds->getConstPointer();
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++,rowId++)
+            for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+              deno[trgIds2[rowId]]+=(*it2).second;
+        }
+    }
+  //
+  for(std::size_t i=0;i<sz1;i++)
+    {
+      int rowId=0;
+      const std::vector< std::map<int,double> >& mat=_the_matrix_st[i];
+      int curSrcId=_the_matrix_st_source_proc_id[i];
+      std::vector<int>::iterator isItem1=std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),curSrcId);
+      std::vector< std::map<int,double> >& denoM=_the_deno_st[i];
+      denoM.resize(mat.size());
+      if(isItem1==_trg_proc_st2.end() || curSrcId==myProcId)//item1 of step2 main algo. Simple, because rowId of mat are directly target ids.
+        {
+          int rowId=0;
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++,rowId++)
+            for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+              denoM[rowId][(*it2).first]=deno[rowId];
+        }
+      else
+        {
+          std::vector<int>::iterator fnd=isItem1;
+          int locId=std::distance(_trg_proc_st2.begin(),fnd);
+          const DataArrayInt *trgIds=_trg_ids_st2[locId];
+          const int *trgIds2=trgIds->getConstPointer();
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++,rowId++)
+            for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+              denoM[rowId][(*it2).first]=deno[trgIds2[rowId]];
+        }
+    }
+}
+
+/*!
+ * This method performs step #0/3 in serialization process.
+ * \param count tells specifies nb of elems to send to corresponding proc id. size equal to _group.size().
+ * \param offsets tells for a proc i where to start serialize#0 matrix. size equal to _group.size().
+ * \param nbOfElemsSrc of size _group.size(). Comes from previous all2all call. tells how many srcIds per proc contains matrix for current proc.
+ */
+void OverlapMapping::serializeMatrixStep0ST(const int *nbOfElemsSrc, int *&bigArr, int *count, int *offsets,
+                                            int *countForRecv, int *offsetsForRecv) const
+{
+  int grpSize=_group.size();
+  std::fill<int *>(count,count+grpSize,0);
+  int szz=0;
+  int myProcId=_group.myRank();
+  for(std::size_t i=0;i<_matrixes_st.size();i++)
+    {
+      if(_source_proc_id_st[i]==myProcId)// && _target_proc_id_st[i]!=myProcId
+        {
+          count[_target_proc_id_st[i]]=_matrixes_st[i].size()+1;
+          szz+=_matrixes_st[i].size()+1;
+        }
+    }
+  bigArr=new int[szz];
+  offsets[0]=0;
+  for(int i=1;i<grpSize;i++)
+    offsets[i]=offsets[i-1]+count[i-1];
+  for(std::size_t i=0;i<_matrixes_st.size();i++)
+    {
+      if(_source_proc_id_st[i]==myProcId)
+        {
+          int start=offsets[_target_proc_id_st[i]];
+          int *work=bigArr+start;
+          *work=0;
+          const std::vector< std::map<int,double> >& mat=_matrixes_st[i];
+          for(std::vector< std::map<int,double> >::const_iterator it=mat.begin();it!=mat.end();it++,work++)
+            work[1]=work[0]+(*it).size();
+        }
+    }
+  //
+  offsetsForRecv[0]=0;
+  for(int i=0;i<grpSize;i++)
+    {
+      if(nbOfElemsSrc[i]>0)
+        countForRecv[i]=nbOfElemsSrc[i]+1;
+      else
+        countForRecv[i]=0;
+      if(i>0)
+        offsetsForRecv[i]=offsetsForRecv[i-1]+countForRecv[i-1];
+    }
+}
+
+/*!
+ * This method performs step#1 and step#2/3. It returns the size of expected array to get allToAllV.
+ */
+int OverlapMapping::serializeMatrixStep1ST(const int *nbOfElemsSrc, const int *recvStep0, const int *countStep0, const int *offsStep0,
+                                           int *&bigArrI, double *&bigArrD, int *count, int *offsets,
+                                           int *countForRecv, int *offsForRecv) const
+{
+  int grpSize=_group.size();
+  int myProcId=_group.myRank();
+  offsForRecv[0]=0;
+  int szz=0;
+  for(int i=0;i<grpSize;i++)
+    {
+      if(nbOfElemsSrc[i]!=0)
+        countForRecv[i]=recvStep0[offsStep0[i]+nbOfElemsSrc[i]];
+      else
+        countForRecv[i]=0;
+      szz+=countForRecv[i];
+      if(i>0)
+        offsForRecv[i]=offsForRecv[i-1]+countForRecv[i-1];
+    }
+  //
+  std::fill(count,count+grpSize,0);
+  offsets[0]=0;
+  int fullLgth=0;
+  for(std::size_t i=0;i<_matrixes_st.size();i++)
+    {
+      if(_source_proc_id_st[i]==myProcId)
+        {
+          const std::vector< std::map<int,double> >& mat=_matrixes_st[i];
+          int lgthToSend=0;
+          for(std::vector< std::map<int,double> >::const_iterator it=mat.begin();it!=mat.end();it++)
+            lgthToSend+=(*it).size();
+          count[_target_proc_id_st[i]]=lgthToSend;
+          fullLgth+=lgthToSend;
+        }
+    }
+  for(int i=1;i<grpSize;i++)
+    offsets[i]=offsets[i-1]+count[i-1];
+  //
+  bigArrI=new int[fullLgth];
+  bigArrD=new double[fullLgth];
+  // feeding arrays
+  fullLgth=0;
+  for(std::size_t i=0;i<_matrixes_st.size();i++)
+    {
+      if(_source_proc_id_st[i]==myProcId)
+        {
+          const std::vector< std::map<int,double> >& mat=_matrixes_st[i];
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++)
+            {
+              int j=0;
+              for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++,j++)
+                {
+                  bigArrI[fullLgth+j]=(*it2).first;
+                  bigArrD[fullLgth+j]=(*it2).second;
+                }
+              fullLgth+=(*it1).size();
+            }
+        }
+    }
+  return szz;
+}
+
+/*!
+ * This is the last step after all2Alls for matrix exchange.
+ * _the_matrix_st is the final matrix : 
+ *      - The first entry is srcId in current proc.
+ *      - The second is the pseudo id of source proc (correspondance with true id is in attribute _the_matrix_st_source_proc_id and _the_matrix_st_source_ids)
+ *      - the third is the srcId in the pseudo source proc
+ */
+void OverlapMapping::unserializationST(int nbOfTrgElems,
+                                       const int *nbOfElemsSrcPerProc,//first all2all
+                                       const int *bigArrRecv, const int *bigArrRecvCounts, const int *bigArrRecvOffs,//2nd all2all
+                                       const int *bigArrRecv2, const double *bigArrDRecv2, const int *bigArrRecv2Count, const int *bigArrRecv2Offs)//3rd and 4th all2alls
+{
+  _the_matrix_st.clear();
+  _the_matrix_st_source_proc_id.clear();
+  //
+  int grpSize=_group.size();
+  for(int i=0;i<grpSize;i++)
+    if(nbOfElemsSrcPerProc[i]!=0)
+      _the_matrix_st_source_proc_id.push_back(i);
+  int nbOfPseudoProcs=_the_matrix_st_source_proc_id.size();//_the_matrix_st_target_proc_id.size() contains number of matrix fetched remotely whose sourceProcId==myProcId
+  _the_matrix_st.resize(nbOfPseudoProcs);
+  //
+  int j=0;
+  for(int i=0;i<grpSize;i++)
+    if(nbOfElemsSrcPerProc[i]!=0)
+      {
+        _the_matrix_st[j].resize(nbOfElemsSrcPerProc[i]);
+        for(int k=0;k<nbOfElemsSrcPerProc[i];k++)
+          {
+            int offs=bigArrRecv[bigArrRecvOffs[i]+k];
+            int lgthOfMap=bigArrRecv[bigArrRecvOffs[i]+k+1]-offs;
+            for(int l=0;l<lgthOfMap;l++)
+              _the_matrix_st[j][k][bigArrRecv2[bigArrRecv2Offs[i]+offs+l]]=bigArrDRecv2[bigArrRecv2Offs[i]+offs+l];
+          }
+        j++;
+      }
+}
+
+/*!
+ * This method should be called when all remote matrix with sourceProcId==thisProcId have been retrieved and are in 'this->_the_matrix_st' and 'this->_the_matrix_st_target_proc_id'
+ * and 'this->_the_matrix_st_target_ids'.
+ * This method finish the job of filling 'this->_the_matrix_st' and 'this->_the_matrix_st_target_proc_id' by putting candidates in 'this->_matrixes_st' into them.
+ */
+void OverlapMapping::finishToFillFinalMatrixST()
+{
+  int myProcId=_group.myRank();
+  int sz=_matrixes_st.size();
+  int nbOfEntryToAdd=0;
+  for(int i=0;i<sz;i++)
+    if(_source_proc_id_st[i]!=myProcId)
+      nbOfEntryToAdd++;
+  if(nbOfEntryToAdd==0)
+    return ;
+  int oldNbOfEntry=_the_matrix_st.size();
+  int newNbOfEntry=oldNbOfEntry+nbOfEntryToAdd;
+  _the_matrix_st.resize(newNbOfEntry);
+  int j=oldNbOfEntry;
+  for(int i=0;i<sz;i++)
+    if(_source_proc_id_st[i]!=myProcId)
+      {
+        const std::vector<std::map<int,double> >& mat=_matrixes_st[i];
+        _the_matrix_st[j]=mat;
+        _the_matrix_st_source_proc_id.push_back(_source_proc_id_st[i]);
+        j++;
+      }
+  _matrixes_st.clear();
+}
+
+/*!
+ * This method performs the operation of target ids broadcasting.
+ */
+void OverlapMapping::prepareIdsToSendST()
+{
+  CommInterface commInterface=_group.getCommInterface();
+  const MPIProcessorGroup *group=static_cast<const MPIProcessorGroup*>(&_group);
+  const MPI_Comm *comm=group->getComm();
+  int grpSize=_group.size();
+  _source_ids_to_send_st.clear();
+  _source_ids_to_send_st.resize(grpSize);
+  INTERP_KERNEL::AutoPtr<int> nbsend=new int[grpSize];
+  std::fill<int *>(nbsend,nbsend+grpSize,0);
+  for(std::size_t i=0;i<_the_matrix_st_source_proc_id.size();i++)
+    nbsend[_the_matrix_st_source_proc_id[i]]=_the_matrix_st_source_ids[i].size();
+  INTERP_KERNEL::AutoPtr<int> nbrecv=new int[grpSize];
+  commInterface.allToAll(nbsend,1,MPI_INT,nbrecv,1,MPI_INT,*comm);
+  //
+  INTERP_KERNEL::AutoPtr<int> nbsend2=new int[grpSize];
+  std::copy((int *)nbsend,((int *)nbsend)+grpSize,(int *)nbsend2);
+  INTERP_KERNEL::AutoPtr<int> nbsend3=new int[grpSize];
+  nbsend3[0]=0;
+  for(int i=1;i<grpSize;i++)
+    nbsend3[i]=nbsend3[i-1]+nbsend2[i-1];
+  int sendSz=nbsend3[grpSize-1]+nbsend2[grpSize-1];
+  INTERP_KERNEL::AutoPtr<int> bigDataSend=new int[sendSz];
+  for(std::size_t i=0;i<_the_matrix_st_source_proc_id.size();i++)
+    {
+      int offset=nbsend3[_the_matrix_st_source_proc_id[i]];
+      std::copy(_the_matrix_st_source_ids[i].begin(),_the_matrix_st_source_ids[i].end(),((int *)nbsend3)+offset);
+    }
+  INTERP_KERNEL::AutoPtr<int> nbrecv2=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbrecv3=new int[grpSize];
+  std::copy((int *)nbrecv,((int *)nbrecv)+grpSize,(int *)nbrecv2);
+  nbrecv3[0]=0;
+  for(int i=1;i<grpSize;i++)
+    nbrecv3[i]=nbrecv3[i-1]+nbrecv2[i-1];
+  int recvSz=nbrecv3[grpSize-1]+nbrecv2[grpSize-1];
+  INTERP_KERNEL::AutoPtr<int> bigDataRecv=new int[recvSz];
+  //
+  commInterface.allToAllV(bigDataSend,nbsend2,nbsend3,MPI_INT,
+                          bigDataRecv,nbrecv2,nbrecv3,MPI_INT,
+                          *comm);
+  for(int i=0;i<grpSize;i++)
+    {
+      if(nbrecv2[i]>0)
+        {
+          _source_ids_to_send_st[i].insert(_source_ids_to_send_st[i].end(),((int *)bigDataRecv)+nbrecv3[i],((int *)bigDataRecv)+nbrecv3[i]+nbrecv2[i]);
+        }
+    }
+}
+
+/*!
+ * This method performs a transpose multiply of 'fieldInput' and put the result into 'fieldOutput'.
+ * 'fieldInput' is expected to be the sourcefield and 'fieldOutput' the targetfield.
+ */
+void OverlapMapping::multiply(const MEDCouplingFieldDouble *fieldInput, MEDCouplingFieldDouble *fieldOutput) const
+{
+  int nbOfCompo=fieldInput->getNumberOfComponents();//to improve same number of components to test
+  CommInterface commInterface=_group.getCommInterface();
+  const MPIProcessorGroup *group=static_cast<const MPIProcessorGroup*>(&_group);
+  const MPI_Comm *comm=group->getComm();
+  int grpSize=_group.size();
+  int myProcId=_group.myRank();
+  //
+  INTERP_KERNEL::AutoPtr<int> nbsend=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbsend2=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbrecv=new int[grpSize];
+  INTERP_KERNEL::AutoPtr<int> nbrecv2=new int[grpSize];
+  std::fill<int *>(nbsend,nbsend+grpSize,0);
+  std::fill<int *>(nbrecv,nbrecv+grpSize,0);
+  nbsend2[0]=0;
+  nbrecv2[0]=0;
+  std::vector<double> valsToSend;
+  for(int i=0;i<grpSize;i++)
+    {
+      if(std::find(_proc_ids_to_send_vector_st.begin(),_proc_ids_to_send_vector_st.end(),i)!=_proc_ids_to_send_vector_st.end())
+        {
+          std::vector<int>::const_iterator isItem1=std::find(_src_proc_st2.begin(),_src_proc_st2.end(),i);
+          MEDCouplingAutoRefCountObjectPtr<DataArrayDouble> vals;
+          if(isItem1!=_src_proc_st2.end())//item1 of step2 main algo
+            {
+              int id=std::distance(_src_proc_st2.begin(),isItem1);
+              vals=fieldInput->getArray()->selectByTupleId(_src_ids_st2[id]->getConstPointer(),_src_ids_st2[id]->getConstPointer()+_src_ids_st2[id]->getNumberOfTuples());
+            }
+          else
+            {//item0 of step2 main algo
+              int id=std::distance(_src_ids_zip_proc_st2.begin(),std::find(_src_ids_zip_proc_st2.begin(),_src_ids_zip_proc_st2.end(),i));
+              vals=fieldInput->getArray()->selectByTupleId(&(_src_ids_zip_st2[id])[0],&(_src_ids_zip_st2[id])[0]+_src_ids_zip_st2[id].size());
+            }
+          nbsend[i]=vals->getNbOfElems();
+          valsToSend.insert(valsToSend.end(),vals->getConstPointer(),vals->getConstPointer()+nbsend[i]);
+        }
+      if(std::find(_proc_ids_to_recv_vector_st.begin(),_proc_ids_to_recv_vector_st.end(),i)!=_proc_ids_to_recv_vector_st.end())
+        {
+          std::vector<int>::const_iterator isItem0=std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),i);
+          if(isItem0==_trg_proc_st2.end())//item1 of step2 main algo [ (0,1) computed on proc1 and Matrix-Vector on proc1 ]
+            {
+              std::vector<int>::const_iterator it1=std::find(_src_ids_proc_st2.begin(),_src_ids_proc_st2.end(),i);
+              if(it1!=_src_ids_proc_st2.end())
+                {
+                  int id=std::distance(_src_ids_proc_st2.begin(),it1);
+                  nbrecv[i]=_nb_of_src_ids_proc_st2[id]*nbOfCompo;
+                }
+              else if(i==myProcId)
+                {
+                  nbrecv[i]=fieldInput->getNumberOfTuplesExpected()*nbOfCompo;
+                }
+              else
+                throw INTERP_KERNEL::Exception("Plouff ! send email to anthony.geay@cea.fr ! ");
+            }
+          else
+            {//item0 of step2 main algo [ (2,1) computed on proc2 but Matrix-Vector on proc1 ] [(1,0) computed on proc1 but Matrix-Vector on proc0]
+              int id=std::distance(_src_ids_zip_proc_st2.begin(),std::find(_src_ids_zip_proc_st2.begin(),_src_ids_zip_proc_st2.end(),i));
+              nbrecv[i]=_src_ids_zip_st2[id].size()*nbOfCompo;
+            }
+        }
+    }
+  for(int i=1;i<grpSize;i++)
+    {
+      nbsend2[i]=nbsend2[i-1]+nbsend[i-1];
+      nbrecv2[i]=nbrecv2[i-1]+nbrecv[i-1];
+    }
+  INTERP_KERNEL::AutoPtr<double> bigArr=new double[nbrecv2[grpSize-1]+nbrecv[grpSize-1]];
+  commInterface.allToAllV(&valsToSend[0],nbsend,nbsend2,MPI_DOUBLE,
+                          bigArr,nbrecv,nbrecv2,MPI_DOUBLE,*comm);
+  fieldOutput->getArray()->fillWithZero();
+  INTERP_KERNEL::AutoPtr<double> tmp=new double[nbOfCompo];
+  for(int i=0;i<grpSize;i++)
+    {
+      if(nbrecv[i]>0)
+        {
+          double *pt=fieldOutput->getArray()->getPointer();
+          std::vector<int>::const_iterator it=std::find(_the_matrix_st_source_proc_id.begin(),_the_matrix_st_source_proc_id.end(),i);
+          if(it==_the_matrix_st_source_proc_id.end())
+            throw INTERP_KERNEL::Exception("Big problem !");
+          int id=std::distance(_the_matrix_st_source_proc_id.begin(),it);
+          const std::vector< std::map<int,double> >& mat=_the_matrix_st[id];
+          const std::vector< std::map<int,double> >& deno=_the_deno_st[id];
+          std::vector<int>::const_iterator isItem0=std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),i);
+          if(isItem0==_trg_proc_st2.end())//item1 of step2 main algo [ (0,1) computed on proc1 and Matrix-Vector on proc1 ]
+            {
+              int nbOfTrgTuples=mat.size();
+              for(int j=0;j<nbOfTrgTuples;j++,pt+=nbOfCompo)
+                {
+                  const std::map<int,double>& mat1=mat[j];
+                  const std::map<int,double>& deno1=deno[j];
+                  std::map<int,double>::const_iterator it4=deno1.begin();
+                  for(std::map<int,double>::const_iterator it3=mat1.begin();it3!=mat1.end();it3++,it4++)
+                    {
+                      std::transform(bigArr+nbrecv2[i]+((*it3).first)*nbOfCompo,bigArr+nbrecv2[i]+((*it3).first+1)*(nbOfCompo),(double *)tmp,std::bind2nd(std::multiplies<double>(),(*it3).second/(*it4).second));
+                      std::transform((double *)tmp,(double *)tmp+nbOfCompo,pt,pt,std::plus<double>());
+                    }
+                }
+            }
+          else
+            {//item0 of step2 main algo [ (2,1) computed on proc2 but Matrix-Vector on proc1 ]
+              double *pt=fieldOutput->getArray()->getPointer();
+              std::map<int,int> zipCor;
+              int id=std::distance(_src_ids_zip_proc_st2.begin(),std::find(_src_ids_zip_proc_st2.begin(),_src_ids_zip_proc_st2.end(),i));
+              const std::vector<int> zipIds=_src_ids_zip_st2[id];
+              int newId=0;
+              for(std::vector<int>::const_iterator it=zipIds.begin();it!=zipIds.end();it++,newId++)
+                zipCor[*it]=newId;
+              int id2=std::distance(_trg_proc_st2.begin(),std::find(_trg_proc_st2.begin(),_trg_proc_st2.end(),i));
+              const DataArrayInt *tgrIds=_trg_ids_st2[id2];
+              const int *tgrIds2=tgrIds->getConstPointer();
+              int nbOfTrgTuples=mat.size();
+              for(int j=0;j<nbOfTrgTuples;j++)
+                {
+                  const std::map<int,double>& mat1=mat[j];
+                  const std::map<int,double>& deno1=deno[j];
+                  std::map<int,double>::const_iterator it5=deno1.begin();
+                  for(std::map<int,double>::const_iterator it3=mat1.begin();it3!=mat1.end();it3++,it5++)
+                    {
+                      std::map<int,int>::const_iterator it4=zipCor.find((*it3).first);
+                      if(it4==zipCor.end())
+                        throw INTERP_KERNEL::Exception("Hmmmmm send e mail to anthony.geay@cea.fr !");
+                      std::transform(bigArr+nbrecv2[i]+((*it4).second)*nbOfCompo,bigArr+nbrecv2[i]+((*it4).second+1)*(nbOfCompo),(double *)tmp,std::bind2nd(std::multiplies<double>(),(*it3).second/(*it5).second));
+                      std::transform((double *)tmp,(double *)tmp+nbOfCompo,pt+tgrIds2[j]*nbOfCompo,pt+tgrIds2[j]*nbOfCompo,std::plus<double>());
+                    }
+                }
+            }
+        }
+    }
+}
+
+/*!
+ * This method performs a transpose multiply of 'fieldInput' and put the result into 'fieldOutput'.
+ * 'fieldInput' is expected to be the targetfield and 'fieldOutput' the sourcefield.
+ */
+void OverlapMapping::transposeMultiply(const MEDCouplingFieldDouble *fieldInput, MEDCouplingFieldDouble *fieldOutput)
+{
+}
+
+/*!
+ * This method should be called immediately after _the_matrix_st has been filled with remote computed matrix put in this proc for Matrix-Vector.
+ * This method computes for these matrix the minimal set of source ids corresponding to the source proc id. 
+ */
+void OverlapMapping::updateZipSourceIdsForFuture()
+{
+  CommInterface commInterface=_group.getCommInterface();
+  int myProcId=_group.myRank();
+  int nbOfMatrixRecveived=_the_matrix_st_source_proc_id.size();
+  for(int i=0;i<nbOfMatrixRecveived;i++)
+    {
+      int curSrcProcId=_the_matrix_st_source_proc_id[i];
+      if(curSrcProcId!=myProcId)
+        {
+          const std::vector< std::map<int,double> >& mat=_the_matrix_st[i];
+          _src_ids_zip_proc_st2.push_back(curSrcProcId);
+          _src_ids_zip_st2.resize(_src_ids_zip_st2.size()+1);
+          std::set<int> s;
+          for(std::vector< std::map<int,double> >::const_iterator it1=mat.begin();it1!=mat.end();it1++)
+            for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+              s.insert((*it2).first);
+          _src_ids_zip_st2.back().insert(_src_ids_zip_st2.back().end(),s.begin(),s.end());
+        }
+    }
+}
+
+// #include <iostream>
+
+// void OverlapMapping::printTheMatrix() const
+// {
+//   CommInterface commInterface=_group.getCommInterface();
+//   const MPIProcessorGroup *group=static_cast<const MPIProcessorGroup*>(&_group);
+//   const MPI_Comm *comm=group->getComm();
+//   int grpSize=_group.size();
+//   int myProcId=_group.myRank();
+//   std::cerr << "I am proc #" << myProcId << std::endl;
+//   int nbOfMat=_the_matrix_st.size();
+//   std::cerr << "I do manage " << nbOfMat << "matrix : "<< std::endl;
+//   for(int i=0;i<nbOfMat;i++)
+//     {
+//       std::cerr << "   - Matrix #" << i << " on source proc #" << _the_matrix_st_source_proc_id[i];
+//       const std::vector< std::map<int,double> >& locMat=_the_matrix_st[i];
+//       for(std::vector< std::map<int,double> >::const_iterator it1=locMat.begin();it1!=locMat.end();it1++)
+//         {
+//           for(std::map<int,double>::const_iterator it2=(*it1).begin();it2!=(*it1).end();it2++)
+//             std::cerr << "(" << (*it2).first << "," << (*it2).second << "), ";
+//           std::cerr << std::endl;
+//         }
+//     }
+//   std::cerr << "*********" << std::endl;
+// }
diff --git a/src/ParaMEDMEM/OverlapMapping.hxx b/src/ParaMEDMEM/OverlapMapping.hxx
new file mode 100644 (file)
index 0000000..b9d12be
--- /dev/null
@@ -0,0 +1,89 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 __OVERLAPMAPPING_HXX__
+#define __OVERLAPMAPPING_HXX__
+
+#include "MEDCouplingAutoRefCountObjectPtr.hxx"
+
+#include <vector>
+#include <map>
+
+namespace ParaMEDMEM
+{
+  class ProcessorGroup;
+  class DataArrayInt;
+  class MEDCouplingFieldDouble;
+
+  class OverlapMapping
+  {
+  public:
+    OverlapMapping(const ProcessorGroup& group);
+    void keepTracksOfSourceIds(int procId, DataArrayInt *ids);
+    void keepTracksOfTargetIds(int procId, DataArrayInt *ids);
+    void addContributionST(const std::vector< std::map<int,double> >& matrixST, const DataArrayInt *srcIds, int srcProcId, const DataArrayInt *trgIds, int trgProcId);
+    void prepare(const std::vector< std::vector<int> >& procsInInteraction, int nbOfTrgElems);
+    void computeDenoConservativeVolumic(int nbOfTuplesTrg);
+    void computeDenoGlobConstraint();
+    //
+    void multiply(const MEDCouplingFieldDouble *fieldInput, MEDCouplingFieldDouble *fieldOutput) const;
+    void transposeMultiply(const MEDCouplingFieldDouble *fieldInput, MEDCouplingFieldDouble *fieldOutput);
+  private:
+    void serializeMatrixStep0ST(const int *nbOfElemsSrc, int *&bigArr, int *count, int *offsets,
+                                int *countForRecv, int *offsetsForRecv) const;
+    int serializeMatrixStep1ST(const int *nbOfElemsSrc, const int *recvStep0, const int *countStep0, const int *offsStep0,
+                               int *&bigArrI, double *&bigArrD, int *count, int *offsets,
+                               int *countForRecv, int *offsForRecv) const;
+    void unserializationST(int nbOfTrgElems, const int *nbOfElemsSrcPerProc, const int *bigArrRecv, const int *bigArrRecvCounts, const int *bigArrRecvOffs,
+                           const int *bigArrRecv2, const double *bigArrDRecv2, const int *bigArrRecv2Count, const int *bigArrRecv2Offs);
+    void finishToFillFinalMatrixST();
+    void prepareIdsToSendST();
+    void updateZipSourceIdsForFuture();
+    //void printTheMatrix() const;
+  private:
+    const ProcessorGroup &_group;
+    //! vector of ids
+    std::vector< MEDCouplingAutoRefCountObjectPtr<DataArrayInt> > _src_ids_st2;//item #1
+    std::vector< int > _src_proc_st2;//item #1
+    std::vector< MEDCouplingAutoRefCountObjectPtr<DataArrayInt> > _trg_ids_st2;//item #0
+    std::vector< int > _trg_proc_st2;//item #0
+    std::vector< int > _nb_of_src_ids_proc_st2;//item #1
+    std::vector< int > _src_ids_proc_st2;//item #1
+    std::vector< std::vector<int> > _src_ids_zip_st2;//same size as _src_ids_zip_proc_st2. Sorted. specifies for each id the corresponding ids to send. This is for item0 of Step2 of main algorithm
+    std::vector< int > _src_ids_zip_proc_st2;
+    //! vector of matrixes the first entry correspond to source proc id in _source_ids_st
+    std::vector< std::vector< std::map<int,double> > > _matrixes_st;
+    std::vector< std::vector<int> > _source_ids_st;
+    std::vector< int > _source_proc_id_st;
+    std::vector< std::vector<int> > _target_ids_st;
+    std::vector< int > _target_proc_id_st;
+    //! the matrix for matrix-vector product. The first dimension the set of target procs that interacts with local source mesh. The second dimension correspond to nb of local source ids. 
+    std::vector< std::vector< std::map<int,double> > > _the_matrix_st;
+    std::vector< int > _the_matrix_st_source_proc_id;
+    std::vector< std::vector<int> > _the_matrix_st_source_ids;
+    std::vector< std::vector< std::map<int,double> > > _the_deno_st;
+    //! this attribute stores the proc ids that wait for data from this proc ids for matrix-vector computation
+    std::vector< int > _proc_ids_to_send_vector_st;
+    std::vector< int > _proc_ids_to_recv_vector_st;
+    //! this attribute is of size _group.size(); for each procId in _group _source_ids_to_send_st[procId] contains tupleId to send abroad
+    std::vector< std::vector<int> > _source_ids_to_send_st;
+  };
+}
+
+#endif
index e0f0ba0854c0f359772f2c2fa62fcd2a125569fd..409579384be87b5e6b48f6571bf51d93e9788549 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "Topology.hxx"
@@ -128,7 +128,7 @@ namespace ParaMEDMEM
 
   void ParaFIELD::synchronizeTarget(ParaFIELD* source_field)
   {
-    DEC* data_channel;
+    DisjointDEC* data_channel;
     if (dynamic_cast<BlockTopology*>(_topology)!=0)
       {
         data_channel=new StructuredCoincidentDEC;
@@ -147,7 +147,7 @@ namespace ParaMEDMEM
 
   void ParaFIELD::synchronizeSource(ParaFIELD* target_field)
   {
-    DEC* data_channel;
+    DisjointDEC* data_channel;
     if (dynamic_cast<BlockTopology*>(_topology)!=0)
       {
         data_channel=new StructuredCoincidentDEC;
index 05f39094b329cf6243400742bf97c809006f6fe5..33b5d215bb67d7658a761e0defc3b69931e466c0 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __PARAFIELD_HXX__
index 14a6c46c67bac60dde849a426b929c649b183ab4..9c94c0b7614f491305500d55b0871e39eac7328e 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaGRID.hxx"
index 032564391d401e48f6b468525bb9f6cacf91ce7c..8bd43242912630b5a04a55cdf2b312b536173a84 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __PARAGRID_HXX__
index fe8397cba36134f9c784c218ded4e3b239b25a0f..410f3f691c3e239409799e6aaa81c0f7d9173cca 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMESH.hxx"
index 1b5b96281ae4e358b9aee08dacefb2adddb411d5..b43c4a473b7ab62d047c3680a81c234179dafe25 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __PARAMESH_HXX__
index e6b0401dfa3c15109839ce724c140206a1654878..ca4ded225830732c222b789277aace1da52770dc 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ProcessorGroup.hxx"
index df781aaf5612c6c7b81cd831bba350b6967142a2..9c157943a6aedd5aeac26dfe7c9e2dee8a8d5d42 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __PROCESSORGROUP_HXX__
index 1f787b881cbb06e7afb1de60b798d5e30c593bb3..b1e3aca4e10201809d70dff3182cd92deabc4a49 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <mpi.h>
@@ -43,12 +43,12 @@ namespace ParaMEDMEM
     the computation is much faster than the other. It can also be used 
     to couple together codes that share an interface that was generated
     in the same manner (with identical global ids). 
-    Also, this DEC can be used for fields that have component topologies, 
+    Also, this \ref dec can be used for fields that have component topologies, 
     i.e., components that are scattered over several processors.
 
     The remapping between the two supports is based on identity of global
     ids, instead of geometrical considerations as it is the case for
-    NonCoincidentDEC and InterpKernelDEC. Therefore, this DEC must not be used 
+    \ref NonCoincidentDEC and \ref InterpKernelDEC. Therefore, this \ref dec must not be used 
     for coincident meshes that do not have the same numbering.
 
     As all the other DECs, its use is made of two phases :
@@ -58,7 +58,7 @@ namespace ParaMEDMEM
     - a send/recv phase during which the field data is actually transferred.
 
     This example illustrates the sending of a field with 
-    the DEC : 
+    the \c StructuredCoincidentDEC : 
     \code
     ...
     StructuredCoincidentDEC dec(groupA, groupB);
@@ -105,7 +105,7 @@ namespace ParaMEDMEM
     \addtogroup structuredcoincidentdec
     @{
   */
-  StructuredCoincidentDEC::StructuredCoincidentDEC(ProcessorGroup& local_group, ProcessorGroup& distant_group):DEC(local_group,distant_group),
+  StructuredCoincidentDEC::StructuredCoincidentDEC(ProcessorGroup& local_group, ProcessorGroup& distant_group):DisjointDEC(local_group,distant_group),
                                                                                                                _topo_source(0),_topo_target(0),
                                                                                                                _send_counts(0),_recv_counts(0),
                                                                                                                _send_displs(0),_recv_displs(0),
index f2522719415e4faa73e23b305e212ed327f3f776..0abc1dd6b813448d690f7c0b954b977e928ab9f6 100644 (file)
@@ -1,26 +1,26 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __STRUCTUREDCOINCIDENTDEC_HXX__
 #define __STRUCTUREDCOINCIDENTDEC_HXX__
 
-#include "DEC.hxx"
+#include "DisjointDEC.hxx"
 #include "BlockTopology.hxx"
 
 
@@ -28,7 +28,7 @@ namespace ParaMEDMEM
 {
   class DEC;
   class BlockTopology;
-  class StructuredCoincidentDEC : public DEC
+  class StructuredCoincidentDEC : public DisjointDEC
   {
   public:
     StructuredCoincidentDEC();
index b5466df144b6a50b444ce9ae46c96e9c938996dd..66b6e36a74b81a74fdf3a300f6dc3de4e67b1723 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "TimeInterpolator.hxx"
index 967a26ce77e394cfb0682fd69f52f90e946bf69f..dccac62327fec9bc59ec0ae0eaa23b9177c56602 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __TIMEINTERPOLATOR_HXX__
index acc0fa2c47674f111dc6e758837cf27c3f79f1fa..bc9f4c3abb6328c25bc3e11e46742aa6e2973cea 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "Topology.hxx"
index 0ca48c83ab33f3e4e1a412e0748fb43f35ef3c73..f85104e15856a10dd5304c3cfc1692b0fd7f3304 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __TOPOLOGY_HXX__
index 8daa235162dee1c757a0ff24cb080f37dc5e3d65..d4975fffdc3fcb38e788d6c672f184a02bff3d5e 100644 (file)
@@ -1,25 +1,26 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "MPI2Connector.hxx"
 
 #include <iostream>
+#include <cstring>
 
 MPI2Connector::MPI2Connector()
 {
index 905de10fb238769bf5b2882350fe2f1f41d65061..43ec14766a9120ec1a6f0de7c5383f57a101eae9 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef __MPI2CONNECTOR_HXX__
index 00ad69dab13c78e9ec60d92f6057b4a5905442e9..6d26d2a4e700e6d1303ab7a6db06ad2282dec5ef 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "MPIAccessDECTest.hxx"
index 5ee346ac35e9a686af4ab16fd3b951fcc51a4f83..8f2980c23bfb022174323638d1a47f1f10ac53f7 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef _MPIACCESSDECTEST_HXX_
index d8413f1fc41fdd03ceaf9f2be3678805df54bf9e..c5a43875417971cd2b72b5173d603d623b094135 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "MPIAccessTest.hxx"
index ddb899053a4606a7c65fffd786c8242bef7802cb..ea1641fe195749f6f1dabfc6dadc30e0a1649f44 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef _MPIACCESSTEST_HXX_
index b96d31e334d512ffd59ee73731d8c0c5202f9dfd..5203f9622819ef5d6dba64bbc0404af972528ec3 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef _MPIMAINTEST_HXX_
index f172ee9fc2de4843c4a5f0a1a09f496556a329f1..8e06c64550dfe7cfc55dc01676759eeb1d0f4ce7 100644 (file)
@@ -1,20 +1,20 @@
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
@@ -39,6 +39,7 @@ dist_libParaMEDMEMTest_la_SOURCES = \
        ParaMEDMEMTest_Gauthier1.cxx \
        ParaMEDMEMTest_FabienAPI.cxx \
        ParaMEDMEMTest_NonCoincidentDEC.cxx \
+       ParaMEDMEMTest_OverlapDEC.cxx \
        MPIAccessDECTest.cxx \
        test_AllToAllDEC.cxx \
        test_AllToAllvDEC.cxx \
index 50425fbc26db008f246bbb08fb4ba26dcb578f1a..1526ce906892d92e9b2e7bfaec827f9889a6827e 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index be30599ae5c9481a3a7d114a6831f20fa290ff7f..4296943d79b3d461aacaf5c4dbaeb0c3fd7a957e 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef _ParaMEDMEMTEST_HXX_
@@ -47,6 +47,7 @@ class ParaMEDMEMTest : public CppUnit::TestFixture
   CPPUNIT_TEST(testInterpKernelDEC2DM1D_P0P0);
   CPPUNIT_TEST(testInterpKernelDECPartialProcs);
   CPPUNIT_TEST(testInterpKernelDEC3DSurfEmptyBBox);
+  CPPUNIT_TEST(testOverlapDEC1);
 
   CPPUNIT_TEST(testSynchronousEqualInterpKernelWithoutInterpNativeDEC_2D);
   CPPUNIT_TEST(testSynchronousEqualInterpKernelWithoutInterpDEC_2D);
@@ -102,6 +103,7 @@ public:
   void testInterpKernelDEC2DM1D_P0P0();
   void testInterpKernelDECPartialProcs();
   void testInterpKernelDEC3DSurfEmptyBBox();
+  void testOverlapDEC1();
 #ifdef MED_ENABLE_FVM
   void testNonCoincidentDEC_2D();
   void testNonCoincidentDEC_3D();
index 599d3fb57ab52a85a4892dd0506e35e076afecf9..7510854d4c42494769e4aee3385989c56fe4dfb0 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <cppunit/extensions/HelperMacros.h>
index 9ed8819b0f108e107461b041d973fa81aebd13d4..5ba80a21543996fa83d0e9d622b05a507e1636ea 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <cppunit/extensions/HelperMacros.h>
index 780b71f41826e38787ea346c06eaa1f6b74d5426..124d165b7b5b93cb87f49eaa1724fd7e76577a1b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index a08eb999521ac9213c94eeccab71a262a834ffdb..17917b06ad5fd635cedeb6bea8aaaf71649b290b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index 17cadfe05c3d7d9b7dd6fa47719d7903dccf2368..3ed69cc42c8ff3574bdd76712f8e52a9220ba3ff 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index b3a573c3e699e56548d6524d40d1146358566d0c..072e3761ebd2cae93bbb19e79fc451c4ad9fd14b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index f4e941ee096acaaf6937091f048d36848643d543..296b94018d78fd36c8d65d4fb6e1fdeabf2a71a5 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index b0b21613780e996157444a3c0666cdd1f5c29fbd..70156877c7cc59907e38f0f7a3ff6ec7885b6b6e 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
@@ -34,7 +34,7 @@ using namespace ParaMEDMEM;
 
 void ParaMEDMEMTest::testMEDLoaderRead1()
 {
-  string fileName=getResourceFile("pointe_import22.med");
+  string fileName=getResourceFile("pointe.med");
   vector<string> meshNames=MEDLoader::GetMeshNames(fileName.c_str());
   CPPUNIT_ASSERT_EQUAL(1,(int)meshNames.size());
   MEDCouplingUMesh *mesh=MEDLoader::ReadUMeshFromFile(fileName.c_str(),meshNames[0].c_str(),0);
@@ -176,11 +176,11 @@ void ParaMEDMEMTest::testMEDLoaderRead1()
   CPPUNIT_ASSERT(fieldsNameNode[1]=="fieldnodeint");
   std::vector<std::pair<int,int> > its0Node=MEDLoader::GetNodeFieldIterations(fileName.c_str(),meshNames[0].c_str(),fieldsNameNode[0].c_str());
   CPPUNIT_ASSERT_EQUAL(3,(int)its0Node.size());
-  CPPUNIT_ASSERT_EQUAL(1,its0Node[0].first);
+  CPPUNIT_ASSERT_EQUAL(-1,its0Node[0].first);
   CPPUNIT_ASSERT_EQUAL(-1,its0Node[0].second);
-  CPPUNIT_ASSERT_EQUAL(2,its0Node[1].first);
+  CPPUNIT_ASSERT_EQUAL(1,its0Node[1].first);
   CPPUNIT_ASSERT_EQUAL(-1,its0Node[1].second);
-  CPPUNIT_ASSERT_EQUAL(-1,its0Node[2].first);//strange but like that
+  CPPUNIT_ASSERT_EQUAL(2,its0Node[2].first);
   CPPUNIT_ASSERT_EQUAL(-1,its0Node[2].second);
   MEDCouplingFieldDouble *field0Nodes=MEDLoader::ReadFieldNode(fileName.c_str(),meshNames[0].c_str(),0,fieldsNameNode[0].c_str(),its0Node[0].first,its0Node[0].second);
   field0Nodes->checkCoherency();
@@ -196,7 +196,7 @@ void ParaMEDMEMTest::testMEDLoaderRead1()
   CPPUNIT_ASSERT(constMesh);
   field0Nodes->decrRef();
   //
-  field0Nodes=MEDLoader::ReadFieldNode(fileName.c_str(),meshNames[0].c_str(),0,fieldsNameNode[0].c_str(),its0Node[1].first,its0Node[1].second);
+  field0Nodes=MEDLoader::ReadFieldNode(fileName.c_str(),meshNames[0].c_str(),0,fieldsNameNode[0].c_str(),its0Node[2].first,its0Node[2].second);
   field0Nodes->checkCoherency();
   CPPUNIT_ASSERT(field0Nodes->getName()==fieldsNameNode[0]);
   CPPUNIT_ASSERT_EQUAL(1,field0Nodes->getNumberOfComponents());
@@ -224,7 +224,7 @@ void ParaMEDMEMTest::testMEDLoaderRead1()
   CPPUNIT_ASSERT_DOUBLES_EQUAL(46.,std::accumulate(constMesh->getCoords()->getPointer(),constMesh->getCoords()->getPointer()+57,0),1e-12);
   field0Nodes->decrRef();
   //
-  field0Nodes=MEDLoader::ReadFieldNode(fileName.c_str(),meshNames[0].c_str(),0,fieldsNameNode[0].c_str(),its0Node[2].first,its0Node[2].second);
+  field0Nodes=MEDLoader::ReadFieldNode(fileName.c_str(),meshNames[0].c_str(),0,fieldsNameNode[0].c_str(),its0Node[0].first,its0Node[0].second);
   field0Nodes->checkCoherency();
   CPPUNIT_ASSERT(field0Nodes->getName()==fieldsNameNode[0]);
   CPPUNIT_ASSERT_EQUAL(1,field0Nodes->getNumberOfComponents());
index 010b30396b9054de6f14fa475c9294b884782e5e..e42204ef9b77279520a0aa10b5ae54b9a7e0185b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index 8911fba39324697ae7b19f513aac8b8f9d35dd51..09d2e93f10d8656a86835d116cdeb19102ec65a0 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifdef MED_ENABLE_FVM
diff --git a/src/ParaMEDMEMTest/ParaMEDMEMTest_OverlapDEC.cxx b/src/ParaMEDMEMTest/ParaMEDMEMTest_OverlapDEC.cxx
new file mode 100644 (file)
index 0000000..bd8e826
--- /dev/null
@@ -0,0 +1,212 @@
+// Copyright (C) 2007-2011  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.
+//
+// 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 "ParaMEDMEMTest.hxx"
+#include <cppunit/TestAssert.h>
+
+#include "CommInterface.hxx"
+#include "ProcessorGroup.hxx"
+#include "MPIProcessorGroup.hxx"
+#include "Topology.hxx"
+#include "OverlapDEC.hxx"
+#include "ParaMESH.hxx"
+#include "ParaFIELD.hxx"
+#include "ComponentTopology.hxx"
+
+#include "MEDCouplingUMesh.hxx"
+
+#include <set>
+
+void ParaMEDMEMTest::testOverlapDEC1()
+{
+  std::string srcM("P0");
+  std::string targetM("P0");
+  int size;
+  int rank;
+  MPI_Comm_size(MPI_COMM_WORLD,&size);
+  MPI_Comm_rank(MPI_COMM_WORLD,&rank);
+
+  if (size != 3) return ;
+   
+  int nproc = 3;
+  std::set<int> procs;
+  
+  for (int i=0; i<nproc; i++)
+    procs.insert(i);
+  
+  ParaMEDMEM::CommInterface interface;
+
+  ParaMEDMEM::OverlapDEC dec(procs);
+
+  ParaMEDMEM::MEDCouplingUMesh* meshS=0;
+  ParaMEDMEM::MEDCouplingUMesh* meshT=0;
+  ParaMEDMEM::ParaMESH* parameshS=0;
+  ParaMEDMEM::ParaMESH* parameshT=0;
+  ParaMEDMEM::ParaFIELD* parafieldS=0;
+  ParaMEDMEM::ParaFIELD* parafieldT=0;
+  
+  MPI_Barrier(MPI_COMM_WORLD);
+  if(rank==0)
+    {
+      const double coordsS[10]={0.,0.,0.5,0.,1.,0.,0.,0.5,0.5,0.5};
+      const double coordsT[6]={0.,0.,1.,0.,1.,1.};
+      meshS=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshS->setMeshDimension(2);
+      ParaMEDMEM::DataArrayDouble *myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(5,2);
+      std::copy(coordsS,coordsS+10,myCoords->getPointer());
+      meshS->setCoords(myCoords);
+      myCoords->decrRef();
+      int connS[7]={0,3,4,1, 1,4,2};
+      meshS->allocateCells(2);
+      meshS->insertNextCell(INTERP_KERNEL::NORM_QUAD4,4,connS);
+      meshS->insertNextCell(INTERP_KERNEL::NORM_TRI3,3,connS+4);
+      meshS->finishInsertingCells();
+      ParaMEDMEM::ComponentTopology comptopo;
+      parameshS=new ParaMEDMEM::ParaMESH(meshS,*dec.getGrp(),"source mesh");
+      parafieldS=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshS,comptopo);
+      parafieldS->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsS=parafieldS->getField()->getArray()->getPointer();
+      valsS[0]=7.; valsS[1]=8.;
+      //
+      meshT=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshT->setMeshDimension(2);
+      myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(3,2);
+      std::copy(coordsT,coordsT+6,myCoords->getPointer());
+      meshT->setCoords(myCoords);
+      myCoords->decrRef();
+      int connT[3]={0,2,1};
+      meshT->allocateCells(1);
+      meshT->insertNextCell(INTERP_KERNEL::NORM_TRI3,3,connT);
+      meshT->finishInsertingCells();
+      parameshT=new ParaMEDMEM::ParaMESH(meshT,*dec.getGrp(),"target mesh");
+      parafieldT=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshT,comptopo);
+      parafieldT->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsT=parafieldT->getField()->getArray()->getPointer();
+      valsT[0]=7.;
+    }
+  //
+  if(rank==1)
+    {
+      const double coordsS[10]={1.,0.,0.5,0.5,1.,0.5,0.5,1.,1.,1.};
+      const double coordsT[6]={0.,0.,0.5,0.5,0.,1.};
+      meshS=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshS->setMeshDimension(2);
+      ParaMEDMEM::DataArrayDouble *myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(5,2);
+      std::copy(coordsS,coordsS+10,myCoords->getPointer());
+      meshS->setCoords(myCoords);
+      myCoords->decrRef();
+      int connS[7]={0,1,2, 1,3,4,2};
+      meshS->allocateCells(2);
+      meshS->insertNextCell(INTERP_KERNEL::NORM_TRI3,3,connS);
+      meshS->insertNextCell(INTERP_KERNEL::NORM_QUAD4,4,connS+3);
+      meshS->finishInsertingCells();
+      ParaMEDMEM::ComponentTopology comptopo;
+      parameshS=new ParaMEDMEM::ParaMESH(meshS,*dec.getGrp(),"source mesh");
+      parafieldS=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshS,comptopo);
+      parafieldS->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsS=parafieldS->getField()->getArray()->getPointer();
+      valsS[0]=9.; valsS[1]=11.;
+      //
+      meshT=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshT->setMeshDimension(2);
+      myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(3,2);
+      std::copy(coordsT,coordsT+6,myCoords->getPointer());
+      meshT->setCoords(myCoords);
+      myCoords->decrRef();
+      int connT[3]={0,2,1};
+      meshT->allocateCells(1);
+      meshT->insertNextCell(INTERP_KERNEL::NORM_TRI3,3,connT);
+      meshT->finishInsertingCells();
+      parameshT=new ParaMEDMEM::ParaMESH(meshT,*dec.getGrp(),"target mesh");
+      parafieldT=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshT,comptopo);
+      parafieldT->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsT=parafieldT->getField()->getArray()->getPointer();
+      valsT[0]=8.;
+    }
+  //
+  if(rank==2)
+    {
+      const double coordsS[8]={0.,0.5, 0.5,0.5, 0.,1., 0.5,1.};
+      const double coordsT[6]={0.5,0.5,0.,1.,1.,1.};
+      meshS=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshS->setMeshDimension(2);
+      ParaMEDMEM::DataArrayDouble *myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(4,2);
+      std::copy(coordsS,coordsS+8,myCoords->getPointer());
+      meshS->setCoords(myCoords);
+      myCoords->decrRef();
+      int connS[4]={0,2,3,1};
+      meshS->allocateCells(1);
+      meshS->insertNextCell(INTERP_KERNEL::NORM_QUAD4,4,connS);
+      meshS->finishInsertingCells();
+      ParaMEDMEM::ComponentTopology comptopo;
+      parameshS=new ParaMEDMEM::ParaMESH(meshS,*dec.getGrp(),"source mesh");
+      parafieldS=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshS,comptopo);
+      parafieldS->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsS=parafieldS->getField()->getArray()->getPointer();
+      valsS[0]=10.;
+      //
+      meshT=ParaMEDMEM::MEDCouplingUMesh::New();
+      meshT->setMeshDimension(2);
+      myCoords=ParaMEDMEM::DataArrayDouble::New();
+      myCoords->alloc(3,2);
+      std::copy(coordsT,coordsT+6,myCoords->getPointer());
+      meshT->setCoords(myCoords);
+      myCoords->decrRef();
+      int connT[3]={0,1,2};
+      meshT->allocateCells(1);
+      meshT->insertNextCell(INTERP_KERNEL::NORM_TRI3,3,connT);
+      meshT->finishInsertingCells();
+      parameshT=new ParaMEDMEM::ParaMESH(meshT,*dec.getGrp(),"target mesh");
+      parafieldT=new ParaMEDMEM::ParaFIELD(ParaMEDMEM::ON_CELLS,ParaMEDMEM::NO_TIME,parameshT,comptopo);
+      parafieldT->getField()->setNature(ParaMEDMEM::ConservativeVolumic);//IntegralGlobConstraint
+      double *valsT=parafieldT->getField()->getArray()->getPointer();
+      valsT[0]=9.;
+    }
+  dec.attachSourceLocalField(parafieldS);
+  dec.attachTargetLocalField(parafieldT);
+  dec.synchronize();
+  dec.sendRecvData(true);
+  //
+  if(rank==0)
+    {
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(8.75,parafieldT->getField()->getArray()->getIJ(0,0),1e-12);
+    }
+  if(rank==1)
+    {
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(8.5,parafieldT->getField()->getArray()->getIJ(0,0),1e-12);
+    }
+  if(rank==2)
+    {
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(10.5,parafieldT->getField()->getArray()->getIJ(0,0),1e-12);
+    }
+  delete parafieldS;
+  delete parafieldT;
+  delete parameshS;
+  delete parameshT;
+  meshS->decrRef();
+  meshT->decrRef();
+
+  MPI_Barrier(MPI_COMM_WORLD);
+}
+
index 973ed876056fbfe99915e3d937ddecadea904f73..b4d06b4dfd82c626b84b1bfd5611de2282007e58 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "ParaMEDMEMTest.hxx"
index 5d6955daf24c2e1671c0b5733820756e1cc27614..67df9f2c0d6df46f393c85f5f0552eeba0432631 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 // --- include all MPIAccess Test
index 7776eafb973987bdddade64434cca819c8d2abb7..f1ab84f62bcbd3e3bc4c5960b3a62f65c309951c 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 // --- include all MPIAccessDEC Test
index 8c7be29e760b2b934f5a788b78af8cacbba8ec70..0a33046e62711b1c46d39ccfd8cd83301e72457f 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 // --- include all MEDMEM Test
index 498fbc046fe609e882d1f6d58373408be2e4845e..deae00fe5d7384220e78d0b768bebb214cadb215 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 3e9a5581534db27c95c83d70437b598911ee4fc0..dad05cbdf8b6b568eccc68afde6f1d5efdf200c3 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 0a294ba917ad48dbc608317b85fb5b77d7e276e2..b1145d2a5a69b5e982763fe155e9510841bfa63f 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 5d4cac7b23135bbbdf18f1875f9d6fd5647a15ce..5c5fdbb8cc311fb2cf883f990254cd8afb0974a4 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
@@ -22,7 +22,7 @@
 #include <map>
 #include <iostream>
 #include <mpi.h>
-#include <time.h>
+#include <ctime>
 
 #include "MPIAccessDECTest.hxx"
 #include <cppunit/TestAssert.h>
index 0b717c21f487ce15b71f830c4d51a081cbc84c78..74b8627bfd32e3ccb3b62881bae7357f721a8823 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <math.h>
@@ -23,7 +23,7 @@
 #include <map>
 #include <iostream>
 #include <mpi.h>
-#include <time.h>
+#include <ctime>
 
 #include "MPIAccessDECTest.hxx"
 #include <cppunit/TestAssert.h>
index 5b95d0d6556bd05b58579bd51007aa75f757f0f0..fed215a563eb630946e061d36c29a76d539e1b82 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <time.h>
index c10f0599a278510685c017c54681c2d693a4adcd..74384dca848f56e7fefed63ada6ac66a3bfb0864 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index dd67d4d28368d005d82c0ac4791aa935a52a43da..c56c6c57fa6ca590427a88ba6e11a2a2197a47bc 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 5e07db5c5c894e2b676927fe92b8a850ad02938e..505be972b0e01e44582f34cce78fe4bb21f3a739 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <time.h>
index e11dc7698d1d938d479f97ca10f36bd0669a785a..c37952089a7d3b387d018815e9c58682d76d2065 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 369952c8a12604ad8721f9cb464bd2b3a5a74f60..87400106d8f86f6079778eafcbb37eb2b9088089 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 3482278c2aab4aa2e6889c8f3fbdaf1ff91bba08..2d04d2e056775c3ce482e97c39562d91b28dc5d1 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <time.h>
index bba555e5f6c8ab4b39353790e78a71fd4b29faaa..92d4ac05ce0a8b4af4c13a939d04325cea86aa4a 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index f463d68d262010716d7627647969d39d6fe805ba..5df7cff360f01fb9fd760f657f08c8fc8400ccd2 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 6f86702dc8f18e3dc250941a34c128cbb1aae179..3507d5d90b39b72d2cfda3c456e5ed87d95e9064 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 2f7a4d73b941b7f1c01f8406991c486a5343501f..c5b5a262f020492cffc3ce12f7f22d654521ab33 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index d147b891dea6b2a3efeb48af59916dea4ff6b8ce..055a639d72647627381740024c0ecc72b47704e6 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index db48addacbc51e674246dbccc11d9b28a2faa02c..9806436f2d4a88ff4742c7d17847cef96a590dd2 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index d25251a2eb035752dcd7250f090d6ddd960d4634..ad53976a127fdf6a20da172a0ad11ddc5ae5e304 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index c83eab08604e05e246dc085f5a0b1a36ef48a4b4..667cb4f8fc123718b05e0e3d808dfd297c7d35e6 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
index 9c40165c02191b9258135c16f91ab0898e7baabf..640431b233c03c5b90da611b3156d754e11b21fe 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <time.h>
index e1b74305cf8be4695de9a48f9e7fb7c1f3dfe98a..e032967a03789d788f1b8f82eedf94e0190d033e 100644 (file)
@@ -1,27 +1,28 @@
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 #  MED MEDMEM_SWIG : binding of C++ implementation and Python
 #
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
-lib_LTLIBRARIES = _ParaMEDMEM.la
+salomepython_PYTHON = ParaMEDMEM.py
+salomepyexec_LTLIBRARIES = _ParaMEDMEM.la
 
 salomeinclude_HEADERS =  \
        ParaMEDMEM.i
index b436a518966e9a75c912514909dd95a5567f11a0..e227588a3b44f04450008753faee1bcfada80b6b 100755 (executable)
@@ -1,22 +1,22 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 from ParaMEDMEM import *
index 256a0a3cedd130b04996e0e3918432c6243793bf..f6a2781115a2b489d993429f9bcc427e1b3b71e9 100755 (executable)
@@ -1,22 +1,22 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 from ParaMEDMEM import *
index 551a5d1f94887d51e95c419b633dda3e3aa473ae..96daaa727c482153d0c5ec2fd0a4888fe99bb1fe 100644 (file)
@@ -1,20 +1,20 @@
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 #  MED MEDMEM : MED files in memory
@@ -54,7 +54,8 @@ endif
 librenumber_la_CPPFLAGS= $(MED2_INCLUDES) $(HDF5_INCLUDES) @CXXTMPDPTHFLAGS@ \
        $(BOOST_CPPFLAGS) \
        -I$(srcdir)/../MEDMEM -I$(srcdir)/../MEDWrapper/V2_1/Core -I$(srcdir)/../INTERP_KERNEL/Bases \
-       -I$(srcdir)/../INTERP_KERNEL/GaussPoints
+       -I$(srcdir)/../INTERP_KERNEL/GaussPoints \
+       -I$(srcdir)/../INTERP_KERNEL
 
 librenumber_la_LDFLAGS= 
 #libmedsplitter_la_LDFLAGS= $(MED2_LIBS) $(HDF5_LIBS) $(STDLIB) \
index deef9f1f7eb7a94da17f02d128b4b0e7157bb393..4b2ea5d3083b48cd1d2346fa24602fff2e5d77b5 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <boost/config.hpp>
index 04f30d9ecedcfec82cf3bd907adc37bd423c5aba..1181231ef6bd523d1562c194c7ed5857859304d3 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef BOOSTRENUMBERING_HXX_
index e5c3535b9340c0331b5e19fe82b80dcd6c335885..d8f6a5a4505c6be03eab3222ba6a047d71291d05 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifdef ENABLE_PARMETIS
index f590a0ebdb7224bbcb97f91af4134ce14f703ef3..8a6eb00d130d369a73dcd69d9ade235a2d9a7a3b 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef METISRENUMBERING_HXX_
index 83f12ed41b33358f075ac9a9d2fe2e89e4a4b824..838f07bbc213a4e53f8d24300ab1d27acfd4816a 100644 (file)
@@ -1,19 +1,19 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
index 2c5afe43ebb3c0c65aa0f2fcdb79213300197f5e..9396d8158b2ae0d2c048cfc08110b336dad9a6bb 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef RENUMBERING_HXX_
index 36f25692975dfb2f067502928a8527e829624962..7b820596821fbcf3c23c7d7cb8b81dd22df0ed91 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include "RenumberingFactory.hxx"
index 3ddd2cab842c3634bba51ccdc632f44a0ae4ba65..91a4b9837d3e3076825efaa5bc313f94f51b1cc1 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #ifndef RENUMBERINGFACTORY_HXX_
index c060039516facf77d30a4256fa12199d3bd0b56b..24bab76a056c8a173f7c22a1f985c98fe83b05b5 100644 (file)
@@ -1,20 +1,20 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+// Copyright (C) 2007-2011  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.
+// 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.
 //
-//  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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 #include <string>
@@ -29,8 +29,8 @@
 #include "MEDMEM_Connectivity.hxx"
 #include "MEDMEM_Field.hxx"
 #include "MEDMEM_DriversDef.hxx"
-#include "MEDMEM_Med.hxx"
-#include "MEDMEM_MedMeshDriver22.hxx"
+#include "MEDMEM_MedFileBrowser.hxx"
+#include "MEDMEM_MedMeshDriver.hxx"
 
 #include "RenumberingFactory.hxx"
 
@@ -46,9 +46,9 @@ void computeNeighbour(const MESH* mesh,const medGeometryElement& Type, vector<li
   conn->calculateFullDescendingConnectivity(MED_CELL);
   const int* rev_conn=mesh->getReverseConnectivity(MED_EN::MED_DESCENDING, MED_EN::MED_CELL);
   const int* rev_conn_index=mesh->getReverseConnectivityIndex(MED_EN::MED_DESCENDING, MED_EN::MED_CELL);
-  int nb_face= mesh->getNumberOfElementsWithPoly(MED_FACE,MED_ALL_ELEMENTS);
-  int nb_edge = mesh->getNumberOfElementsWithPoly(MED_EDGE,MED_ALL_ELEMENTS);
-  nb_cell= mesh->getNumberOfElementsWithPoly(MED_CELL,Type);
+  int nb_face= mesh->getNumberOfElements(MED_FACE,MED_ALL_ELEMENTS);
+  int nb_edge = mesh->getNumberOfElements(MED_EDGE,MED_ALL_ELEMENTS);
+  nb_cell= mesh->getNumberOfElements(MED_CELL,Type);
 
   int nb_constituent;
   if(mesh->getMeshDimension()==2)
@@ -79,7 +79,7 @@ void computeNeighbour(const MESH* mesh,const medGeometryElement& Type, vector<li
 
 void changeConnectivity(MESH& mesh, const medGeometryElement& Type, const int& nb_cell, const vector<int>& iperm)
 {
-  if(Type==MED_POLYHEDRA)
+  /*if(Type==MED_POLYHEDRA)
     {
       int *conn_face_index_init=(int*)mesh.getPolyhedronFacesIndex();
       int *conn_index_init=(int*)mesh.getPolyhedronIndex(MED_FULL_INTERLACE);
@@ -144,9 +144,9 @@ void changeConnectivity(MESH& mesh, const medGeometryElement& Type, const int& n
       delete[] conn_renum;
       delete[] conn_index_renum;
     }
-  else
+    else*/
     {
-      const int *conn_init=mesh.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,Type);
+      const int *conn_init=mesh.getConnectivity(MED_NODAL,MED_CELL,Type);
       const int *conn_index_init=mesh.getConnectivityIndex(MED_NODAL,MED_CELL);
       int *conn_renum=new int[conn_index_init[nb_cell]-1];
       int *conn_index_renum=new int[nb_cell+1];
@@ -166,7 +166,7 @@ void changeConnectivity(MESH& mesh, const medGeometryElement& Type, const int& n
         }
 
       CONNECTIVITY* myConnectivity=(CONNECTIVITY*)mesh.getConnectivityptr();
-      myConnectivity->setNodal(conn_renum,MED_CELL,Type);
+      myConnectivity->setNodal(conn_renum,MED_CELL,Type,conn_index_renum);
       delete[] conn_renum;
       delete[] conn_index_renum;
     }
@@ -213,9 +213,9 @@ int main (int argc, char** argv)
   system(s.c_str());
 
   // Reading file structure
-  const MED med_struct (MED_DRIVER,filename_in);
+  const MEDFILEBROWSER med_struct(filename_in);
   int nb_mesh, nb_fields;
-  deque<string> mesh_names,f_names;
+  vector<string> mesh_names,f_names;
   nb_mesh=med_struct.getNumberOfMeshes();
   nb_fields=med_struct.getNumberOfFields();
   mesh_names=med_struct.getMeshNames();
@@ -237,15 +237,14 @@ int main (int argc, char** argv)
   int nb_fields_tot=0;
   for (int ifield = 0; ifield < nb_fields; ifield++)
     {
-      deque<DT_IT_> dtit=med_struct.getFieldIteration(f_names[ifield]);
-      for (deque<DT_IT_>::const_iterator iter =dtit.begin(); iter!=dtit.end(); iter++)
+      vector<DT_IT_> dtit=med_struct.getFieldIteration(f_names[ifield]);
+      for (vector<DT_IT_>::const_iterator iter =dtit.begin(); iter!=dtit.end(); iter++)
         {
           field_names.push_back(f_names[ifield]);
           iternumber.push_back(iter->dt);
           ordernumber.push_back(iter->it);
           ++nb_fields_tot;
-          FIELD_* field = med_struct.getField(f_names[ifield],iter->dt,iter->it);
-          if (dynamic_cast<FIELD<double>*>(field))
+          if(med_struct.getFieldType(f_names[ifield])==MED_EN::MED_REEL64)
             types.push_back(1);
           else
             types.push_back(0);
@@ -257,20 +256,19 @@ int main (int argc, char** argv)
   // Reading mesh
   MESH myMesh;
   myMesh.setName(meshname);
-  MED_MESH_RDONLY_DRIVER22 *drv22=new MED_MESH_RDONLY_DRIVER22(filename_in,&myMesh);
+  MED_MESH_RDONLY_DRIVER *drv22=new MED_MESH_RDONLY_DRIVER(filename_in,&myMesh);
   drv22->desactivateFacesComputation();
   int newDrv=myMesh.addDriver(*drv22);
   delete drv22;
   myMesh.read(newDrv);
-  int nb_type=myMesh.getNumberOfTypesWithPoly(MED_CELL);
+  int nb_type=myMesh.getNumberOfTypes(MED_CELL);
   if (nb_type!=1)
     {
       cout << "Mesh must have only one type of cell" << endl;
       return -1;
     }
-  medGeometryElement *Types = myMesh.getTypesWithPoly(MED_CELL);
+  const medGeometryElement *Types = myMesh.getTypes(MED_CELL);
   medGeometryElement Type=Types[0];
-  delete[] Types;
 
   t_read_mesh=clock();
   MESH* workMesh=new MESH(myMesh);
index 3f2ecba5cd628681e1711805027387c10217e691..0454aff8afb4d07f16fbc654483c8519ec4b9bdf 100755 (executable)
@@ -1,22 +1,22 @@
 #!/usr/bin/env python
 #  -*- coding: iso-8859-1 -*-
-#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D
+# Copyright (C) 2007-2011  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.
+# 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.
 #
-#  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.
+# 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
+# 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
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 
 from libMEDMEM_Swig import *
@@ -51,7 +51,7 @@ eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
 
 field_ini=[2,3,12,13,14,15,4,5,6,7,8,9,16,17,0,1,10,11]
-s = SUPPORT(m,"Support on all",MED_CELL)
+s = m.getSupportOnAll(MED_CELL)
 f = FIELDDOUBLE(s,2)
 id=f.addDriver(MED_DRIVER,dir_mesh+"/out_"+filename,"Test field")
 f.read(id);
@@ -61,20 +61,14 @@ for i in range(9):
     field=field&(f.getValueIJ(i+1,2)==field_ini[i*2+1])
 f.rmDriver(id)
 
-nbcell2dboost=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell2dboost=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[2,6,13,11,11,13,14,12,6,5,15,13,12,14,10,4,13,15,16,14,5,1,7,15,14,16,9,10,15,7,8,16,16,8,3,9]
 connectivite_index=[1,5,9,13,17,21,25,29,33,37]
-conn=m.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,MED_QUAD4)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_QUAD4)
 conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
-conn2dboost=(len(conn)==len(connectivite))
-if conn2dboost:
-    for i in range(0,len(connectivite)):
-        conn2dboost=conn2dboost&(conn[i]==connectivite[i])
-conn_index2dboost=(len(conn_index)==len(connectivite_index))
-if conn_index2dboost:
-    for i in range(0,len(connectivite_index)):
-        conn_index2dboost=conn_index2dboost&(conn_index[i]==connectivite_index[i])
-Boost2D=conn2dboost&conn_index2dboost&(nbcell2dboost==9)&field
+conn2dboost=(list(conn)==connectivite) # convert numpy.ndarray to list
+conn_index2dboost=(list(conn_index)==connectivite_index)
+Boost2D=conn2dboost and conn_index2dboost and (nbcell2dboost==9) and field
 os.remove(dir_mesh+"/out_"+filename)
 
 
@@ -83,20 +77,14 @@ method="METIS"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell2dmetis=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell2dmetis=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[12,14,10,4,2,6,13,11,11,13,14,12,16,8,3,9,5,1,7,15,15,7,8,16,14,16,9,10,6,5,15,13,13,15,16,14]
 connectivite_index=[1,5,9,13,17,21,25,29,33,37]
-conn=m.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,MED_QUAD4)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_QUAD4)
 conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
-conn2dmetis=(len(conn)==len(connectivite))
-if conn2dmetis:
-    for i in range(0,len(connectivite)):
-        conn2dmetis=conn2dmetis&(conn[i]==connectivite[i])
-conn_index2dmetis=(len(conn_index)==len(connectivite_index))
-if conn_index2dmetis:
-    for i in range(0,len(connectivite_index)):
-        conn_index2dmetis=conn_index2dmetis&(conn_index[i]==connectivite_index[i])
-Metis2D=conn2dmetis&conn_index2dmetis&(nbcell2dmetis==9)
+conn2dmetis=(list(conn)==connectivite)
+conn_index2dmetis=(list(conn_index)==connectivite_index)
+Metis2D=conn2dmetis and conn_index2dmetis and (nbcell2dmetis==9)
 os.remove(dir_mesh+"/out_"+filename)
 
 ## *** Avec polygone ***
@@ -110,20 +98,14 @@ method="BOOST"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell2dpolyboost=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell2dpolyboost=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[2,5,9,10,11,10,9,12,5,6,8,9,4,11,12,16,12,9,8,13,6,1,7,8,16,12,13,15,13,8,7,14,15,13,14,3]
 connectivite_index=[1,5,9,13,17,21,25,29,33,37]
-conn=m.getPolygonsConnectivity(MED_FULL_INTERLACE,MED_CELL)
-conn_index=m.getPolygonsConnectivityIndex(MED_FULL_INTERLACE,MED_CELL);
-conn2dpolyboost=(len(conn)==len(connectivite))
-if conn2dpolyboost:
-    for i in range(0,len(connectivite)):
-        conn2dpolyboost=conn2dpolyboost&(conn[i]==connectivite[i])
-conn_index2dpolyboost=(len(conn_index)==len(connectivite_index))
-if conn_index2dpolyboost:
-    for i in range(0,len(connectivite_index)):
-        conn_index2dpolyboost=conn_index2dpolyboost&(conn_index[i]==connectivite_index[i])
-PolyBoost2D=conn2dpolyboost&conn_index2dpolyboost&(nbcell2dpolyboost==9)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_POLYGON)
+conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL)
+conn2dpolyboost=(list(conn)==connectivite)
+conn_index2dpolyboost=(list(conn_index)==connectivite_index)
+PolyBoost2D=conn2dpolyboost and conn_index2dpolyboost and (nbcell2dpolyboost==9)
 os.remove(dir_mesh+"/out_"+filename)
 
 print "TEST 2D Metis with polygons"
@@ -131,20 +113,14 @@ method="METIS"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell2dpolymetis=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell2dpolymetis=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[6,1,7,8,2,5,9,10,5,6,8,9,15,13,14,3,4,11,12,16,16,12,13,15,11,10,9,12,12,9,8,13,13,8,7,14]
 connectivite_index=[1,5,9,13,17,21,25,29,33,37]
-conn=m.getPolygonsConnectivity(MED_FULL_INTERLACE,MED_CELL)
-conn_index=m.getPolygonsConnectivityIndex(MED_FULL_INTERLACE,MED_CELL);
-conn2dpolymetis=(len(conn)==len(connectivite))
-if conn2dpolymetis:
-    for i in range(0,len(connectivite)):
-        conn2dpolymetis=conn2dpolymetis&(conn[i]==connectivite[i])
-conn_index2dpolymetis=(len(conn_index)==len(connectivite_index))
-if conn_index2dpolymetis:
-    for i in range(0,len(connectivite_index)):
-        conn_index2dpolymetis=conn_index2dpolymetis&(conn_index[i]==connectivite_index[i])
-PolyMetis2D=conn2dpolymetis&conn_index2dpolymetis&(nbcell2dpolymetis==9)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_POLYGON)
+conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL)
+conn2dpolymetis=(list(conn)==connectivite)
+conn_index2dpolymetis=(list(conn_index)==connectivite_index)
+PolyMetis2D=conn2dpolymetis and conn_index2dpolymetis and (nbcell2dpolymetis==9)
 os.remove(dir_mesh+"/out_"+filename)
 
 
@@ -162,20 +138,14 @@ method="BOOST"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell3dboost=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell3dboost=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[23,13,5,18,27,22,14,26,17,6,13,23,25,16,22,27,27,22,14,26,24,15,7,20,9,23,18,1,21,27,26,10,25,16,22,27,19,8,15,24,2,17,23,9,12,25,27,21,21,27,26,10,11,24,20,3,12,25,27,21,4,19,24,11]
 connectivite_index=[1,9,17,25,33,41,49,57,65]
-conn=m.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,MED_HEXA8)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_HEXA8)
 conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
-conn3dboost=(len(conn)==len(connectivite))
-if conn3dboost:
-    for i in range(0,len(connectivite)):
-        conn3dboost=conn3dboost&(conn[i]==connectivite[i])
-conn_index3dboost=(len(conn_index)==len(connectivite_index))
-if conn_index3dboost:
-    for i in range(0,len(connectivite_index)):
-        conn_index3dboost=conn_index3dboost&(conn_index[i]==connectivite_index[i])
-Boost3D=conn3dboost&conn_index3dboost&(nbcell3dboost==8)
+conn3dboost=(list(conn)==connectivite)
+conn_index3dboost=(list(conn_index)==connectivite_index)
+Boost3D=conn3dboost and conn_index3dboost and (nbcell3dboost==8)
 os.remove(dir_mesh+"/out_"+filename)
 
 
@@ -184,19 +154,13 @@ method="METIS"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell3dmetis=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
+nbcell3dmetis=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
 connectivite=[12,25,27,21,4,19,24,11,27,22,14,26,24,15,7,20,17,6,13,23,25,16,22,27,9,23,18,1,21,27,26,10,23,13,5,18,27,22,14,26,25,16,22,27,19,8,15,24,2,17,23,9,12,25,27,21,21,27,26,10,11,24,20,3]
 connectivite_index=[1,9,17,25,33,41,49,57,65]
-conn=m.getConnectivity(MED_FULL_INTERLACE,MED_NODAL,MED_CELL,MED_HEXA8)
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_HEXA8)
 conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
-conn3dmetis=(len(conn)==len(connectivite))
-if conn3dmetis:
-    for i in range(0,len(connectivite)):
-        conn3dmetis=conn3dmetis&(conn[i]==connectivite[i])
-conn_index3dmetis=(len(conn_index)==len(connectivite_index))
-if conn_index3dmetis:
-    for i in range(0,len(connectivite_index)):
-        conn_index3dmetis=conn_index3dmetis&(conn_index[i]==connectivite_index[i])
+conn3dmetis=(list(conn)==connectivite)
+conn_index3dmetis=(list(conn_index)==connectivite_index)
 Metis3D=conn3dmetis&conn_index3dmetis&(nbcell3dmetis==8)
 os.remove(dir_mesh+"/out_"+filename)
 
@@ -222,26 +186,21 @@ method="BOOST"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell3dpolyboost=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
-connectivite=[23,13,5,18,27,26,14,22,23,27,22,13,13,22,14,5,5,14,26,18,18,26,27,23,17,6,13,23,25,27,22,16,17,25,16,6,6,16,22,13,13,22,27,23,23,27,25,17,27,22,14,26,24,20,7,15,27,24,15,22,22,15,7,14,14,7,20,26,26,20,24,27,9,23,18,1,21,10,26,27,9,21,27,23,23,27,26,18,18,26,10,1,1,10,21,9,25,16,22,27,19,24,15,8,25,19,8,16,16,8,15,22,22,15,24,27,27,24,19,25,2,17,23,9,12,21,27,25,2,12,25,17,17,25,27,23,23,27,21,9,9,21,12,2,21,27,26,10,11,3,20,24,21,11,24,27,27,24,20,26,26,20,3,10,10,3,11,21,12,25,27,21,4,11,24,19,12,4,19,25,25,19,24,27,27,24,11,21,21,11,4,12]
-connectivite_face_index=[1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193]
-connectivite_index=[1,7,13,19,25,31,37,43,49]
-conn=m.getPolyhedronConnectivity(MED_FULL_INTERLACE)
-conn_index=m.getPolyhedronIndex(MED_FULL_INTERLACE)
-conn_face_index=m.getPolyhedronFacesIndex()
-conn3dpolyboost=(len(conn)==len(connectivite))
-if conn3dpolyboost:
-    for i in range(0,len(connectivite)):
-        conn3dpolyboost=conn3dpolyboost&(conn[i]==connectivite[i])
-conn_index3dpolyboost=(len(conn_index)==len(connectivite_index))
-if conn3dpolyboost:
-    for i in range(0,len(connectivite_index)):
-        conn_index3dpolyboost=conn_index3dpolyboost&(conn_index[i]==connectivite_index[i])
-conn_face_index3dpolyboost=(len(conn_face_index)==len(connectivite_face_index))
-if conn_face_index3dpolyboost:
-    for i in range(0,len(connectivite_face_index)):
-        conn_face_index3dpolyboost=conn_face_index3dpolyboost&(conn_face_index[i]==connectivite_face_index[i])
-PolyBoost3D=conn3dpolyboost&conn_index3dpolyboost&conn_face_index3dpolyboost&(nbcell3dpolyboost==8)
+nbcell3dpolyboost=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
+connectivite=[23,13,5,18,-1,27,26,14,22,-1,23,27,22,13,-1,13,22,14,5,-1,5,14,26,18,-1,18,26,27,23,
+              17,6,13,23,-1,25,27,22,16,-1,17,25,16,6,-1,6,16,22,13,-1,13,22,27,23,-1,23,27,25,17,
+              27,22,14,26,-1,24,20,7,15,-1,27,24,15,22,-1,22,15,7,14,-1,14,7,20,26,-1,26,20,24,27,
+              9,23,18,1,-1,21,10,26,27,-1,9,21,27,23,-1,23,27,26,18,-1,18,26,10,1,-1,1,10,21,9,
+              25,16,22,27,-1,19,24,15,8,-1,25,19,8,16,-1,16,8,15,22,-1,22,15,24,27,-1,27,24,19,25,
+              2,17,23,9,-1,12,21,27,25,-1,2,12,25,17,-1,17,25,27,23,-1,23,27,21,9,-1,9,21,12,2,
+              21,27,26,10,-1,11,3,20,24,-1,21,11,24,27,-1,27,24,20,26,-1,26,20,3,10,-1,10,3,11,21,
+              12,25,27,21,-1,4,11,24,19,-1,12,4,19,25,-1,25,19,24,27,-1,27,24,11,21,-1,21,11,4,12]
+connectivite_index=[1, 30, 59, 88, 117, 146, 175, 204, 233]
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_POLYHEDRA)
+conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
+conn3dpolyboost=(connectivite==list(conn))
+conn_index3dpolyboost=(connectivite_index==list(conn_index))
+PolyBoost3D=(conn3dpolyboost and conn_index3dpolyboost and (nbcell3dpolyboost==8))
 os.remove(dir_mesh+"/out_"+filename)
 
 
@@ -250,26 +209,21 @@ method="METIS"
 string_to_execute="'"+dir_renumber+" "+dir_mesh+"/"+filename+" "+meshname+" "+method+" "+dir_mesh+"/out_"+filename+"'"
 eval("os.system("+string_to_execute+")")
 m = MESH(MED_DRIVER,dir_mesh+"/out_"+filename,meshname)
-nbcell3dpolymetis=m.getNumberOfElementsWithPoly(MED_CELL,MED_ALL_ELEMENTS)
-connectivite=[12,25,27,21,4,11,24,19,12,4,19,25,25,19,24,27,27,24,11,21,21,11,4,12,27,22,14,26,24,20,7,15,27,24,15,22,22,15,7,14,14,7,20,26,26,20,24,27,17,6,13,23,25,27,22,16,17,25,16,6,6,16,22,13,13,22,27,23,23,27,25,17,9,23,18,1,21,10,26,27,9,21,27,23,23,27,26,18,18,26,10,1,1,10,21,9,23,13,5,18,27,26,14,22,23,27,22,13,13,22,14,5,5,14,26,18,18,26,27,23,25,16,22,27,19,24,15,8,25,19,8,16,16,8,15,22,22,15,24,27,27,24,19,25,2,17,23,9,12,21,27,25,2,12,25,17,17,25,27,23,23,27,21,9,9,21,12,2,21,27,26,10,11,3,20,24,21,11,24,27,27,24,20,26,26,20,3,10,10,3,11,21]
-connectivite_face_index=[1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193]
-connectivite_index=[1,7,13,19,25,31,37,43,49]
-conn=m.getPolyhedronConnectivity(MED_FULL_INTERLACE)
-conn_index=m.getPolyhedronIndex(MED_FULL_INTERLACE)
-conn_face_index=m.getPolyhedronFacesIndex()
-conn3dpolymetis=(len(conn)==len(connectivite))
-conn_index3dpolymetis=(len(conn_index)==len(connectivite_index))
-conn_face_index3dpolymetis=(len(conn_face_index)==len(connectivite_face_index))
-if conn3dpolymetis:
-    for i in range(0,len(connectivite)):
-        conn3dpolymetis=conn3dpolymetis&(conn[i]==connectivite[i])
-if conn_index3dpolymetis:
-    for i in range(0,len(connectivite_index)):
-        conn_index3dpolymetis=conn_index3dpolymetis&(conn_index[i]==connectivite_index[i])
-if conn_face_index3dpolymetis:
-    for i in range(0,len(connectivite_face_index)):
-        conn_face_index3dpolymetis=conn_face_index3dpolymetis&(conn_face_index[i]==connectivite_face_index[i])
-PolyMetis3D=conn3dpolymetis&conn_index3dpolymetis&conn_face_index3dpolymetis&(nbcell3dpolymetis==8)
+nbcell3dpolymetis=m.getNumberOfElements(MED_CELL,MED_ALL_ELEMENTS)
+connectivite=[12,25,27,21,-1,4,11,24,19,-1,12,4,19,25,-1,25,19,24,27,-1,27,24,11,21,-1,21,11,4,12,
+              27,22,14,26,-1,24,20,7,15,-1,27,24,15,22,-1,22,15,7,14,-1,14,7,20,26,-1,26,20,24,27,
+              17,6,13,23,-1,25,27,22,16,-1,17,25,16,6,-1,6,16,22,13,-1,13,22,27,23,-1,23,27,25,17,
+              9,23,18,1,-1,21,10,26,27,-1,9,21,27,23,-1,23,27,26,18,-1,18,26,10,1,-1,1,10,21,9,
+              23,13,5,18,-1,27,26,14,22,-1,23,27,22,13,-1,13,22,14,5,-1,5,14,26,18,-1,18,26,27,23,
+              25,16,22,27,-1,19,24,15,8,-1,25,19,8,16,-1,16,8,15,22,-1,22,15,24,27,-1,27,24,19,25,
+              2,17,23,9,-1,12,21,27,25,-1,2,12,25,17,-1,17,25,27,23,-1,23,27,21,9,-1,9,21,12,2,
+              21,27,26,10,-1,11,3,20,24,-1,21,11,24,27,-1,27,24,20,26,-1,26,20,3,10,-1,10,3,11,21]
+connectivite_index=[1, 30, 59, 88, 117, 146, 175, 204, 233]
+conn=m.getConnectivity(MED_NODAL,MED_CELL,MED_POLYHEDRA)
+conn_index=m.getConnectivityIndex(MED_NODAL,MED_CELL);
+conn3dpolymetis=(list(conn)==connectivite)
+conn_index3dpolymetis=(list(conn_index)==connectivite_index)
+PolyMetis3D=(conn3dpolymetis and conn_index3dpolymetis and (nbcell3dpolymetis==8))
 os.remove(dir_mesh+"/out_"+filename)