]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
*** empty log message ***
authorageay <ageay>
Thu, 21 Oct 2010 06:16:58 +0000 (06:16 +0000)
committerageay <ageay>
Thu, 21 Oct 2010 06:16:58 +0000 (06:16 +0000)
src/INTERP_KERNEL/InterpKernelMeshQuality.cxx [new file with mode: 0644]
src/INTERP_KERNEL/InterpKernelMeshQuality.hxx [new file with mode: 0644]
src/INTERP_KERNELTest/MEDMeshMaker.cxx
src/INTERP_KERNELTest/Makefile.am
src/INTERP_KERNELTest/MeshTestToolkit.hxx
src/INTERP_KERNELTest/SingleElementPlanarTests.cxx
src/INTERP_KERNELTest/TransformedTriangleTest.cxx
src/INTERP_KERNELTest/UnitTetraIntersectionBaryTest.cxx
src/ParaMEDMEM_Swig/Makefile.am

diff --git a/src/INTERP_KERNEL/InterpKernelMeshQuality.cxx b/src/INTERP_KERNEL/InterpKernelMeshQuality.cxx
new file mode 100644 (file)
index 0000000..bf465ae
--- /dev/null
@@ -0,0 +1,209 @@
+//  Copyright (C) 2007-2010  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 "InterpKernelMeshQuality.hxx"
+
+#include <cmath>
+#include <limits>
+#include <numeric>
+#include <algorithm>
+
+double INTERP_KERNEL::quadSkew(const double *coo)
+{
+  double pa0[3]={
+    coo[3]+coo[6]-coo[0]-coo[9],
+    coo[4]+coo[7]-coo[1]-coo[10],
+    coo[5]+coo[8]-coo[2]-coo[11]
+  };
+  double pa1[3]={
+    coo[6]+coo[9]-coo[0]-coo[3],
+    coo[7]+coo[10]-coo[1]-coo[4],
+    coo[8]+coo[11]-coo[2]-coo[5],
+  };
+  double l0=sqrt(pa0[0]*pa0[0]+pa0[1]*pa0[1]+pa0[2]*pa0[2]);
+  double l1=sqrt(pa1[0]*pa1[0]+pa1[1]*pa1[1]+pa1[2]*pa1[2]);
+  if(l0<1.e-15)
+    return 0.;
+  if(l1<1.e-15)
+    return 0.;
+  pa0[0]/=l0; pa0[1]/=l0; pa0[2]/=l0;
+  pa1[0]/=l1; pa1[1]/=l1; pa1[2]/=l1;
+  return pa0[0]*pa1[0]+pa0[1]*pa1[1]+pa0[2]*pa1[2];
+}
+
+double INTERP_KERNEL::quadEdgeRatio(const double *coo)
+{
+  double a2=(coo[3]-coo[0])*(coo[3]-coo[0])+(coo[4]-coo[1])*(coo[4]-coo[1])+(coo[5]-coo[2])*(coo[5]-coo[2]);
+  double b2=(coo[6]-coo[3])*(coo[6]-coo[3])+(coo[7]-coo[4])*(coo[7]-coo[4])+(coo[8]-coo[5])*(coo[8]-coo[5]);
+  double c2=(coo[9]-coo[6])*(coo[9]-coo[6])+(coo[10]-coo[7])*(coo[10]-coo[7])+(coo[11]-coo[8])*(coo[11]-coo[8]);
+  double d2=(coo[0]-coo[9])*(coo[0]-coo[9])+(coo[1]-coo[10])*(coo[1]-coo[10])+(coo[2]-coo[11])*(coo[2]-coo[11]);
+  double mab=a2<b2?a2:b2;
+  double Mab=a2<b2?b2:a2;
+  double mcd=c2<d2?c2:d2;
+  double Mcd=c2<d2?d2:c2;
+  double m2=mab<mcd?mab:mcd;
+  double M2=Mab>Mcd?Mab:Mcd;
+  if(m2>1.e-15)
+    return sqrt(M2/m2);
+  else
+    return std::numeric_limits<double>::max();
+}
+
+double INTERP_KERNEL::quadAspectRatio(const double *coo)
+{
+  double a=sqrt((coo[3]-coo[0])*(coo[3]-coo[0])+(coo[4]-coo[1])*(coo[4]-coo[1])+(coo[5]-coo[2])*(coo[5]-coo[2]));
+  double b=sqrt((coo[6]-coo[3])*(coo[6]-coo[3])+(coo[7]-coo[4])*(coo[7]-coo[4])+(coo[8]-coo[5])*(coo[8]-coo[5]));
+  double c=sqrt((coo[9]-coo[6])*(coo[9]-coo[6])+(coo[10]-coo[7])*(coo[10]-coo[7])+(coo[11]-coo[8])*(coo[11]-coo[8]));
+  double d=sqrt((coo[0]-coo[9])*(coo[0]-coo[9])+(coo[1]-coo[10])*(coo[1]-coo[10])+(coo[2]-coo[11])*(coo[2]-coo[11]));
+  double ma=a>b?a:b;
+  double mb=c>d?c:d;
+  double hm=ma>mb?ma:mb;
+  double ab[3]={(coo[4]-coo[1])*(coo[8]-coo[5])-(coo[7]-coo[4])*(coo[5]-coo[2]),
+                (coo[5]-coo[2])*(coo[6]-coo[3])-(coo[3]-coo[0])*(coo[8]-coo[5]),
+                (coo[3]-coo[0])*(coo[7]-coo[4])-(coo[4]-coo[1])*(coo[6]-coo[3])};
+  double cd[3]={(coo[10]-coo[7])*(coo[2]-coo[11])-(coo[1]-coo[10])*(coo[11]-coo[8]),
+                (coo[11]-coo[8])*(coo[0]-coo[9])-(coo[9]-coo[6])*(coo[2]-coo[11]),
+                (coo[9]-coo[6])*(coo[1]-coo[10])-(coo[10]-coo[7])*(coo[0]-coo[9])};
+  double e=sqrt(ab[0]*ab[0]+ab[1]*ab[1]+ab[2]*ab[2])+sqrt(cd[0]*cd[0]+cd[1]*cd[1]+cd[2]*cd[2]);
+  if(d>1e-15)
+    return 0.5*(a+b+c+d)*hm/e;
+  else
+    return std::numeric_limits<double>::max();
+}
+
+double INTERP_KERNEL::quadWarp(const double *coo)
+{
+  double e0[3]={coo[3]-coo[0],coo[4]-coo[1],coo[5]-coo[2]};
+  double e1[3]={coo[6]-coo[3],coo[7]-coo[4],coo[8]-coo[5]};
+  double e2[3]={coo[9]-coo[6],coo[10]-coo[7],coo[11]-coo[8]};
+  double e3[3]={coo[0]-coo[9],coo[1]-coo[10],coo[2]-coo[11]};
+  
+  double n0[3]={e3[1]*e0[2]-e3[2]*e0[1],e3[2]*e0[0]-e3[0]*e0[2],e3[0]*e0[1]-e3[1]*e0[0]};
+  double n1[3]={e0[1]*e1[2]-e0[2]*e1[1],e0[2]*e1[0]-e0[0]*e1[2],e0[0]*e1[1]-e0[1]*e1[0]};
+  double n2[3]={e1[1]*e2[2]-e1[2]*e2[1],e1[2]*e2[0]-e1[0]*e2[2],e1[0]*e2[1]-e1[1]*e2[0]};
+  double n3[3]={e2[1]*e3[2]-e2[2]*e3[1],e2[2]*e3[0]-e2[0]*e3[2],e2[0]*e3[1]-e2[1]*e3[0]};
+
+  double l0=sqrt(n0[0]*n0[0]+n0[1]*n0[1]+n0[2]*n0[2]);
+  double l1=sqrt(n1[0]*n1[0]+n1[1]*n1[1]+n1[2]*n1[2]);
+  double l2=sqrt(n2[0]*n2[0]+n2[1]*n2[1]+n2[2]*n2[2]);
+  double l3=sqrt(n3[0]*n3[0]+n3[1]*n3[1]+n3[2]*n3[2]);
+
+  if(l0<1.e-15 || l1<1.e-15 || l2<1.e-15 || l3<1e-15)
+    return std::numeric_limits<double>::min();
+
+  double warp=std::min(n0[0]/l0*n2[0]/l2+n0[1]/l0*n2[1]/l2+n0[2]/l0*n2[2]/l2,n1[0]/l1*n3[0]/l3+n1[1]/l1*n3[1]/l3+n1[2]/l1*n3[2]/l3);
+  return warp*warp*warp;
+}
+
+double INTERP_KERNEL::triEdgeRatio(const double *coo)
+{
+  double a2=(coo[3]-coo[0])*(coo[3]-coo[0])+(coo[4]-coo[1])*(coo[4]-coo[1])+(coo[5]-coo[2])*(coo[5]-coo[2]);
+  double b2=(coo[6]-coo[3])*(coo[6]-coo[3])+(coo[7]-coo[4])*(coo[7]-coo[4])+(coo[8]-coo[5])*(coo[8]-coo[5]);
+  double c2=(coo[0]-coo[6])*(coo[0]-coo[6])+(coo[1]-coo[7])*(coo[1]-coo[7])+(coo[2]-coo[8])*(coo[2]-coo[8]);
+  double mab=a2<b2?a2:b2;
+  double Mab=a2<b2?b2:a2;
+  double m2=c2>mab?mab:c2;
+  double M2=c2>Mab?c2:Mab;
+  if(m2>1.e-15)
+    return sqrt(M2/m2);
+  else
+    return std::numeric_limits<double>::max();
+}
+
+double INTERP_KERNEL::triAspectRatio(const double *coo)
+{
+  double a=sqrt((coo[3]-coo[0])*(coo[3]-coo[0])+(coo[4]-coo[1])*(coo[4]-coo[1])+(coo[5]-coo[2])*(coo[5]-coo[2]));
+  double b=sqrt((coo[6]-coo[3])*(coo[6]-coo[3])+(coo[7]-coo[4])*(coo[7]-coo[4])+(coo[8]-coo[5])*(coo[8]-coo[5]));
+  double c=sqrt((coo[0]-coo[6])*(coo[0]-coo[6])+(coo[1]-coo[7])*(coo[1]-coo[7])+(coo[2]-coo[8])*(coo[2]-coo[8]));
+  double hm=a>b?a:b;
+  hm=hm>c?hm:c;
+
+  double ab[3]={(coo[4]-coo[1])*(coo[8]-coo[5])-(coo[7]-coo[4])*(coo[5]-coo[2]),
+                (coo[5]-coo[2])*(coo[6]-coo[3])-(coo[3]-coo[0])*(coo[8]-coo[5]),
+                (coo[3]-coo[0])*(coo[7]-coo[4])-(coo[4]-coo[1])*(coo[6]-coo[3])};
+  double d=sqrt(ab[0]*ab[0]+ab[1]*ab[1]+ab[2]*ab[2]);
+  static const double normalizeCoeff=sqrt(3.)/6.;
+  if(d>1.e-15) 
+    return normalizeCoeff*hm*(a+b+c)/d;
+  else
+    return std::numeric_limits<double>::max();
+}
+
+double INTERP_KERNEL::tetraEdgeRatio(const double *coo)
+{
+  double a[3]={coo[3]-coo[0],coo[4]-coo[1],coo[5]-coo[2]};
+  double b[3]={coo[6]-coo[3],coo[7]-coo[4],coo[8]-coo[5]};
+  double c[3]={coo[0]-coo[6],coo[1]-coo[7],coo[2]-coo[8]};
+  double d[3]={coo[9]-coo[0],coo[10]-coo[1],coo[11]-coo[2]};
+  double e[3]={coo[9]-coo[3],coo[10]-coo[4],coo[11]-coo[5]};
+  double f[3]={coo[9]-coo[6],coo[10]-coo[7],coo[11]-coo[8]};
+  
+  double l2[6]=
+    {a[0]*a[0]+a[1]*a[1]+a[2]*a[2],
+     b[0]*b[0]+b[1]*b[1]+b[2]*b[2],
+     c[0]*c[0]+c[1]*c[1]+c[2]*c[2],
+     d[0]*d[0]+d[1]*d[1]+d[2]*d[2],
+     e[0]*e[0]+e[1]*e[1]+e[2]*e[2],
+     f[0]*f[0]+f[1]*f[1]+f[2]*f[2]};
+
+  double M2=*std::max_element(l2,l2+6);
+  double m2=*std::min_element(l2,l2+6);
+  if(m2>1e-15)
+    return sqrt(M2/m2);
+  else
+    return std::numeric_limits<double>::max();
+}
+
+double INTERP_KERNEL::tetraAspectRatio(const double *coo)
+{
+  static const double normalizeCoeff=sqrt(6.)/12.;
+  double ab[3]={coo[3]-coo[0],coo[4]-coo[1],coo[5]-coo[2]};
+  double ac[3]={coo[6]-coo[0],coo[7]-coo[1],coo[8]-coo[2]};
+  double ad[3]={coo[9]-coo[0],coo[10]-coo[1],coo[11]-coo[2]};
+  double detTet=(ab[0]*(ac[1]*ad[2]-ac[2]*ad[1]))+(ab[1]*(ac[2]*ad[0]-ac[0]*ad[2]))+(ab[2]*(ac[0]*ad[1]-ac[1]*ad[2]));
+  //if(detTet<1.e-15)
+  //  return std::numeric_limits<double>::max();
+  double bc[3]={coo[6]-coo[3],coo[7]-coo[4],coo[8]-coo[5]};
+  double bd[3]={coo[9]-coo[3],coo[10]-coo[4],coo[11]-coo[5]};
+  double cd[3]={coo[9]-coo[6],coo[10]-coo[7],coo[11]-coo[8]};
+
+  double ab2=ab[0]*ab[0]+ab[1]*ab[1]+ab[2]*ab[2];
+  double bc2=bc[0]*bc[0]+bc[1]*bc[1]+bc[2]*bc[2];
+  double ac2=ac[0]*ac[0]+ac[1]*ac[1]+ac[2]*ac[2];
+  double ad2=ad[0]*ad[0]+ad[1]*ad[1]+ad[2]*ad[2];
+  double bd2=bd[0]*bd[0]+bd[1]*bd[1]+bd[2]*bd[2];
+  double cd2=cd[0]*cd[0]+cd[1]*cd[1]+cd[2]*cd[2];
+
+  double A=ab2>bc2?ab2:bc2;
+  double B=ac2>ad2?ac2:ad2;
+  double C=bd2>cd2?bd2:cd2;
+  double D=A>B?A:B;
+  double hm=D>C?sqrt(D):sqrt(C);
+
+  bd[0]=ab[1]*bc[2]-ab[2]*bc[1]; bd[1]=ab[2]*bc[0]-ab[0]*bc[2]; bd[2]=ab[0]*bc[1]-ab[1]*bc[0];
+  A=sqrt(bd[0]*bd[0]+bd[1]*bd[1]+bd[2]*bd[2]);
+  bd[0]=ab[1]*ad[2]-ab[2]*ad[1]; bd[1]=ab[2]*ad[0]-ab[0]*ad[2]; bd[2]=ab[0]*ad[1]-ab[1]*ad[0];
+  B=sqrt(bd[0]*bd[0]+bd[1]*bd[1]+bd[2]*bd[2]);
+  bd[0]=ac[1]*ad[2]-ac[2]*ad[1]; bd[1]=ac[2]*ad[0]-ac[0]*ad[2]; bd[2]=ac[0]*ad[1]-ac[1]*ad[0];
+  C=sqrt(bd[0]*bd[0]+bd[1]*bd[1]+bd[2]*bd[2]);
+  bd[0]=bc[1]*cd[2]-bc[2]*cd[1]; bd[1]=bc[2]*cd[0]-bc[0]*cd[2]; bd[2]=bc[0]*cd[1]-bc[1]*cd[0];
+  D=sqrt(bd[0]*bd[0]+bd[1]*bd[1]+bd[2]*bd[2]);
+  return normalizeCoeff*hm*(A+B+C+D)/fabs(detTet);
+}
diff --git a/src/INTERP_KERNEL/InterpKernelMeshQuality.hxx b/src/INTERP_KERNEL/InterpKernelMeshQuality.hxx
new file mode 100644 (file)
index 0000000..2f11bb4
--- /dev/null
@@ -0,0 +1,37 @@
+//  Copyright (C) 2007-2010  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 __INTERPKERNELMESHQUALITY_HXX_
+#define __INTERPKERNELMESHQUALITY_HXX__
+
+#include "INTERPKERNELDefines.hxx"
+
+namespace INTERP_KERNEL
+{
+  INTERPKERNEL_EXPORT double quadSkew(const double *coo);
+  INTERPKERNEL_EXPORT double quadEdgeRatio(const double *coo);
+  INTERPKERNEL_EXPORT double quadAspectRatio(const double *coo);
+  INTERPKERNEL_EXPORT double quadWarp(const double *coo);
+  INTERPKERNEL_EXPORT double triEdgeRatio(const double *coo);
+  INTERPKERNEL_EXPORT double triAspectRatio(const double *coo);
+  INTERPKERNEL_EXPORT double tetraEdgeRatio(const double *coo);
+  INTERPKERNEL_EXPORT double tetraAspectRatio(const double *coo);
+}
+
+#endif
index c7eef5907c5cdc7d5364878aa30e26a1b3956682..df0926bdb463ee3a65eac15e6f1ff30a7a04c757 100644 (file)
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
+#include "MEDMeshMaker.hxx"
+
 #include "MEDMEM_Mesh.hxx"
 #include "MEDMEM_Meshing.hxx"
 
 MEDMEM::MESH* MEDMeshMaker(int dim, int nbedge, MED_EN::medGeometryElement type)
 {
   MEDMEM::MESHING* mesh=new MEDMEM::MESHING();
-  mesh->setSpaceDimension(dim);
   int nbnodes;
   int nbelems;
   switch (dim)
@@ -94,8 +95,7 @@ MEDMEM::MESH* MEDMeshMaker(int dim, int nbedge, MED_EN::medGeometryElement type)
               conn [ielem*8+7]=ix*(nbedge+1)*(nbedge+1)+(iy+1)*(nbedge+1)+iz+1+1;
             }
     }
-  mesh->setConnectivity(conn, MED_EN::MED_CELL,type);
+  mesh->setConnectivity(MED_EN::MED_CELL,type,conn);
   delete [] conn;
-  mesh->setMeshDimension(dim);
   return mesh;
 }
index 12a36ef3eb07eaf69b7ef2f2752c1e8697939bb1..4f9214a09599b128ed66ea9f10fbb822cd163d94 100644 (file)
@@ -92,11 +92,9 @@ if !MED_ENABLE_MICROMED
    libInterpKernelTest_la_CPPFLAGS +=            \
        -DDISABLE_MICROMED                       \
        $(MED2_INCLUDES) $(HDF5_INCLUDES)        \
-       -I$(srcdir)/../MEDWrapper/V2_1/Core      \
        -I$(srcdir)/../MEDMEM
 
    libInterpKernelTest_la_LDFLAGS +=             \
-       ../MEDWrapper/V2_1/Core/libmed_V2_1.la   \
        ../MEDMEM/libmedmem.la -lm 
 endif
 
index c2dfca2ca1db24d229f7fd52570432bfc3018283..3046388a9f8dda681f9e883de22e3ce597f308f6 100644 (file)
@@ -39,7 +39,7 @@ namespace INTERP_KERNEL
 
 namespace MEDMEM {
   class MESH;
-};
+}
 
 namespace INTERP_TEST
 {
index c2394c073d15290fc39585164c389a98d7d650d3..acbeb72ad1e0b58dc457a6a0d19d580c380327ff 100644 (file)
@@ -64,7 +64,7 @@ namespace INTERP_TEST
   const double _triangle10[6]= {84.8575,98.2042, 80,100, 82.2601,95.7202};
   const double _triangle11[6]= {80,100, 76.6659,91.9804, 85.3912,92.5061 };
   
-  //  Two diamonds intersecting without degeneracy (two distinct crossing points)
+  /*/  Two diamonds intersecting without degeneracy (two distinct crossing points)
   //             /\  /\
   //            /  \/  \
   //           /   /\   \
@@ -73,7 +73,7 @@ namespace INTERP_TEST
   //           \   \/   /
   //            \  /\  /
   //             \/  \/
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::diamondsBasic()
@@ -107,7 +107,7 @@ namespace INTERP_TEST
   }
   
   
-  //  Two diamonds with overlapping edges in an exclusion configuration
+  /*/  Two diamonds with overlapping edges in an exclusion configuration
   //                   /\
   //                  /  \
   //             /\  /    \
@@ -119,6 +119,7 @@ namespace INTERP_TEST
   //            \  /  
   //             \/  
   // \brief Status : pass
+  */
   void SingleElementPlanarTests::tangentDiamonds() 
   {
     INTERP_KERNEL::PolygonAlgorithms<2> intersector (_Epsilon, _Precision);;
@@ -184,7 +185,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Two diamonds sharing a vertex in an exclusion configuration
+  /*/  Two diamonds sharing a vertex in an exclusion configuration
   //             /\      /\
   //            /  \    /  \
   //           /    \  /    \
@@ -193,7 +194,7 @@ namespace INTERP_TEST
   //           \    /  \    /
   //            \  /    \  /
   //             \/      \/
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::diamondsSharingVertex1()
@@ -256,7 +257,7 @@ namespace INTERP_TEST
     CPPUNIT_ASSERT_MESSAGE("Identical squares test failed (TRIANGULATION)", 
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
-  //  Square and diamond intersecting with no degeneracy
+  /*/  Square and diamond intersecting with no degeneracy
   //               /\
   //              /  \  
   //             /    \      
@@ -274,6 +275,7 @@ namespace INTERP_TEST
   //              \  /
   //               \/
   // \brief Status : pass
+  */
   void SingleElementPlanarTests::squareAndDiamondBasic()
   {
     INTERP_KERNEL::PolygonAlgorithms<2> intersector (_Epsilon, _Precision);;
@@ -362,7 +364,7 @@ namespace INTERP_TEST
 //     CPPUNIT_ASSERT_MESSAGE("Square and diamond basic test failed (TRIANGULATION) maybe not significant (0,0) should be removed", 
 //                            (INTERP_KERNEL::checkEqualPolygons<vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
-  //  Two diamonds intersecting at one vertex on edge and one double vertex
+  /*/  Two diamonds intersecting at one vertex on edge and one double vertex
   //             /\   /\
   //            /  \ /  \
   //           /    ¤    \
@@ -371,7 +373,7 @@ namespace INTERP_TEST
   //           \    *    /
   //            \  / \  /
   //             \/   \/ 
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::diamondsCritical()
@@ -495,7 +497,7 @@ namespace INTERP_TEST
     CPPUNIT_ASSERT_MESSAGE("Square and diamond critical tangency test failed (TRIANGULATION)", 
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }  //  square and diamond intersecting at four degenerated pointss 
-  //    
+  /*/    
   //      ²/²\  
   //          ² / ² \ 
   //           ²  /  ²  \
@@ -503,7 +505,7 @@ namespace INTERP_TEST
   //          ² \ ² /
   //      ²\²/
   // \brief Status : pass
-
+  */
   void SingleElementPlanarTests::diamondsCritical2()
   {
     INTERP_KERNEL::PolygonAlgorithms<2> intersector (_Epsilon, _Precision);;
@@ -536,7 +538,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Two tangent hexagons with double vertices and a critical starting vertex on edge
+  /*/  Two tangent hexagons with double vertices and a critical starting vertex on edge
   //      _________ 
   //             /         \²²²
   //            ²           \² 
@@ -546,7 +548,7 @@ namespace INTERP_TEST
   //           \ ²         ² /
   //            \           /
   //             \²_______²/
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::hexagonsCritical1()
@@ -592,7 +594,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Two tangent hexagons with double vertices and a critical starting vertex on edge
+  /*/  Two tangent hexagons with double vertices and a critical starting vertex on edge
   //              _______
   //             /       \
   //            /         \ 
@@ -602,7 +604,7 @@ namespace INTERP_TEST
   //            /         \ 
   //            \         /
   //             \_______/
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::hexagonsCritical2()
@@ -661,7 +663,7 @@ namespace INTERP_TEST
     CPPUNIT_ASSERT_MESSAGE("Identical squares test failed (TRIANGULATION)", 
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
-  //  Two diamonds sharing a vertex in an exclusion configuration
+  /*/  Two diamonds sharing a vertex in an exclusion configuration
   //             /\   
   //            /  \    
   //           /    \  
@@ -678,7 +680,7 @@ namespace INTERP_TEST
   //           \    /      
   //            \  /      
   //             \/      
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests:: diamondsSharingVertex2()
@@ -702,7 +704,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Triangle and diamond with a critical crossing at double starting vertex
+  /*/  Triangle and diamond with a critical crossing at double starting vertex
   //               ____  
   //             /|\  / 
   //            / | \/    
@@ -712,7 +714,7 @@ namespace INTERP_TEST
   //           \     /      
   //            \   /      
   //             \ /      
-
+  */
   // \brief Status : pass
   void SingleElementPlanarTests:: triangleAndDiamondCritical()
   {
@@ -742,7 +744,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Basic triangle and square intersection (two distinct points) 
+  /*/  Basic triangle and square intersection (two distinct points) 
   //           __________
   //     |          |
   //     |       |\ |
@@ -754,7 +756,7 @@ namespace INTERP_TEST
   //     |       | /|
   //     |       |/ |
   //     |__________|
-
+  */
   // \brief Status : pass
   void SingleElementPlanarTests::triangleAndSquareBasic()
   {
@@ -788,13 +790,13 @@ namespace INTERP_TEST
     CPPUNIT_ASSERT_MESSAGE("Identical squares test failed (TRIANGULATION)", 
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
-  //  Two triangles with a starting vertex on edge
+  /*/  Two triangles with a starting vertex on edge
 
   //             /\ ²²²²  
   //            /  ²  ²  
   //           /  ² ²  
   //          /__²___\   
-
+  */
   // \brief Status : pass
   void SingleElementPlanarTests::trianglesCritical()
   {
@@ -830,13 +832,13 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
   
-  //  Two tangent paralellograms intersecting at 3 double vertices (one being a starting vertex)
+  /*/  Two tangent paralellograms intersecting at 3 double vertices (one being a starting vertex)
   //              _______ 
   //             /\      /\
   //            /  \    /  \
   //           /    \  /    \
   //          /______\/______\      
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::paralellogramsCritical1()
@@ -947,7 +949,7 @@ namespace INTERP_TEST
                            (INTERP_KERNEL::checkEqualPolygons<std::vector<double>,2>(&actual_result, &expected_result, _Epsilon)));
   }
 
-  //  Two triangles with double starting point in an outer tangency configuration
+  /*/  Two triangles with double starting point in an outer tangency configuration
   //             /\   
   //            /  \    
   //           /    \  
@@ -956,7 +958,7 @@ namespace INTERP_TEST
   //           \    /      
   //            \  /      
   //             \/      
-
+  */
 
   // \brief Status : pass
   void SingleElementPlanarTests::trianglesTangencyCritical2()
index 1fe9a2aba1fe3e3f9c1ae1f715256a4aace64bab..d845cb8b17cb679c5c08ccb1fbcd707c9a9f8eb8 100644 (file)
@@ -263,7 +263,7 @@ namespace INTERP_TEST
         const int num_zero = (c_yz*c_xh == 0.0 ? 1 : 0) + (c_zx*c_yh == 0.0 ? 1 : 0) + (c_xy*c_zh == 0.0 ? 1 : 0);
         const int num_neg = (c_yz*c_xh < 0.0 ? 1 : 0) + (c_zx*c_yh < 0.0 ? 1 : 0) + (c_xy*c_zh < 0.0 ? 1 : 0);
       
-        if((num_zero == 1 && num_neg != 1) || num_zero == 2 || num_neg == 0 && num_zero !=3 || num_neg == 3 )
+        if((num_zero == 1 && num_neg != 1) || num_zero == 2 || (num_neg == 0 && num_zero !=3) || num_neg == 3 )
           {
             ++num_cases;
   
index bfac8f9c8c2b02bddaad6af8f332311e20345766..b7fa9348c3f14e86ed4c8231e18b556652a824c3 100644 (file)
@@ -34,7 +34,7 @@ using namespace INTERP_KERNEL;
 
 namespace INTERP_TEST
 {
-  void fill_UnitTetraIntersectionBary(UnitTetraIntersectionBary& bary, double nodes[][3])
+  static void fill_UnitTetraIntersectionBary(UnitTetraIntersectionBary& bary, double nodes[][3])
   {
     int faceConn[4][3] = { { 0, 1, 2 },// inverse order
                            { 0, 3, 1 },
index 8df876e608d799c2d4e9284ebd63e51e489f222d..c65f7eaced7a4e7c142d822936a7a9154118fd1d 100644 (file)
@@ -43,7 +43,7 @@ _libParaMEDMEM_Swig_la_CPPFLAGS = $(PYTHON_INCLUDES) \
        $(MED2_INCLUDES) $(HDF5_INCLUDES) @CXXTMPDPTHFLAGS@ \
        -I$(srcdir)/../INTERP_KERNEL \
        $(MPI_INCLUDES) -I$(srcdir)/../ParaMEDMEM -I$(srcdir)/../MEDCoupling_Swig -I$(srcdir)/../INTERP_KERNEL/Bases \
-       -I$(srcdir)/../MEDCoupling -I$(srcdir)/../ParaMEDLoader -I$(srcdir)/../MEDLoader
+       -I$(srcdir)/../MEDCoupling -I$(srcdir)/../ParaMEDLoader -I$(srcdir)/../MEDLoader -I$(srcdir)/../MEDLoader/Swig
 
 _libParaMEDMEM_Swig_la_LDFLAGS  = -module $(MED2_LIBS) $(HDF5_LIBS) $(PYTHON_LIBS) $(MPI_LIBS) \
        ../MEDCoupling/libmedcoupling.la ../INTERP_KERNEL/libinterpkernel.la \