]> SALOME platform Git repositories - tools/medcoupling.git/commitdiff
Salome HOME
staffan :
authorvbd <vbd>
Fri, 14 Sep 2007 12:26:42 +0000 (12:26 +0000)
committervbd <vbd>
Fri, 14 Sep 2007 12:26:42 +0000 (12:26 +0000)
* fixed bug in testUnitTetra

src/INTERP_KERNEL/testUnitTetra.cxx

index 0b9b8152155e75115a2b91ebfe6ac88aa7956af7..c82b59e9dc7eae62d9185c8ed8ed3f4194d5bbc7 100644 (file)
@@ -5,6 +5,44 @@ using namespace MEDMEM;
 
 // simple test to see if a certain mesh is diagonal when intersected with itself
 
+void dumpIntersectionMatrix(const IntersectionMatrix& m) 
+{
+  int i = 0;
+  std::cout << "Intersection matrix is " << endl;
+  for(IntersectionMatrix::const_iterator iter = m.begin() ; iter != m.end() ; ++iter)
+    {
+      for(map<int, double>::const_iterator iter2 = iter->begin() ; iter2 != iter->end() ; ++iter2)
+       {
+         
+         std::cout << "V(" << i << ", " << iter2->first << ") = " << iter2->second << endl;
+         
+       }
+      ++i;
+    }
+  std::cout << "Sum of volumes = " << sumVolume(m) << std::endl;
+}
+
+double sumVolume(const IntersectionMatrix& m) 
+{
+  
+  vector<double> volumes;
+  for(IntersectionMatrix::const_iterator iter = m.begin() ; iter != m.end() ; ++iter)
+    {
+      for(map<int, double>::const_iterator iter2 = iter->begin() ; iter2 != iter->end() ; ++iter2)
+       {
+         volumes.push_back(iter2->second);
+         //      vol += std::abs(iter2->second);
+       }
+    }
+  
+  // sum in ascending order to avoid rounding errors
+
+  sort(volumes.begin(), volumes.end());
+  const double vol = accumulate(volumes.begin(), volumes.end(), 0.0);
+
+  return vol;
+}
+
 int main()
 {
        MEDMEM::MESH mesh1(MED_DRIVER,"/home/vb144235/resources/DividedUnitTetraSimpler.med","DividedUnitTetraSimpler");
@@ -13,17 +51,5 @@ int main()
        vector<map<int,double> > matrix = interpolator.interpol_maillages(mesh1,mesh2);
 
        // dump
-       int i = 0;
-       std::cout << "Intersection matrix is " << endl;
-       for(IntersectionMatrix::const_iterator iter = matrix.begin() ; iter != matrix.end() ; ++iter)
-         {
-           for(map<int, double>::const_iterator iter2 = iter->begin() ; iter2 != iter->end() ; ++iter2)
-             {
-               
-               std::cout << "V(" << i << ", " << iter2->first << ") = " << iter2->second << endl;
-               
-             }
-           ++i;
-         }
-       std::cout << "Sum of volumes = " << sumVolume(m) << std::endl;
+       dumpIntersectionMatrix(matrix);
 }