X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNELTest%2FPerfTest.cxx;h=4083addb386e95ccde0fe95cf9d4d91c653d4060;hb=8411b13fec372c7635bf04d2bb81a869dc038fdd;hp=0ab533a13cf74888c132f757d3be2a7a8b42e3e3;hpb=659f8c67d0348350e12fde38fe8c4de1ff95dffe;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNELTest/PerfTest.cxx b/src/INTERP_KERNELTest/PerfTest.cxx index 0ab533a13..4083addb3 100644 --- a/src/INTERP_KERNELTest/PerfTest.cxx +++ b/src/INTERP_KERNELTest/PerfTest.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D +// Copyright (C) 2007-2020 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -30,12 +30,11 @@ #include /** - * \file PerfTest.cxx - * Test program which takes two meshes and calculates their intersection matrix. - * - * USAGE : PerfTest mesh1 mesh2 + * Test program which takes two meshes and calculates their intersection matrix. + * + * USAGE : PerfTest mesh1 mesh2 * where mesh1 and mesh2 are the names of two meshes located in - * the files mesh1.med, mesh2.med in {$MED_ROOT_DIR}/share/salome/resources/med/ + * the files mesh1.med, mesh2.med in {$MEDCOUPLING_ROOT_DIR}/share/resources/med/ * */ @@ -47,48 +46,48 @@ namespace INTERP_TEST */ class PerfTestToolkit : public MeshTestToolkit<3,3> { - + public: /** * Calculates the intersection matrix for two meshes. - * Outputs the names of the meshes intersected, the number of elements in each mesh, + * Outputs the names of the meshes intersected, the number of elements in each mesh, * the number of matrix elements and the number of non-zero matrix elements, etc. * These values help to determine how well the filtering algorithm is working. * - * @param mesh1path the path to the file containing the source mesh, relative to {$MED_ROOT_DIR}/share/salome/resources/med/ + * @param mesh1path the path to the file containing the source mesh, relative to {$MEDCOUPLING_ROOT_DIR}/share/resources/med/ * @param mesh1 the name of the source mesh - * @param mesh2path the path to the file containing the target mesh, relative to {$MED_ROOT_DIR}/share/salome/resources/med/ + * @param mesh2path the path to the file containing the target mesh, relative to {$MEDCOUPLING_ROOT_DIR}/share/resources/med/ * @param mesh2 the name of the target mesh * @param m intersection matrix in which to store the result of the intersection */ - void calcIntersectionMatrix(const char* mesh1path, const char* mesh1, const char* mesh2path, const char* mesh2, IntersectionMatrix& m) + void calcIntersectionMatrix(const char* mesh1path, const char* mesh1, const char* mesh2path, const char* mesh2, IntersectionMatrix& m) { LOG(1, std::endl << "=== -> intersecting src = " << mesh1 << ", target = " << mesh2 ); - + LOG(5, "Loading " << mesh1 << " from " << mesh1path); - MEDCouplingAutoRefCountObjectPtr sMeshML=MEDFileUMesh::New(INTERP_TEST::getResourceFile(mesh1path).c_str(),mesh1); - MEDCouplingAutoRefCountObjectPtr sMesh=sMeshML->getMeshAtLevel(0); - - + MCAuto sMeshML=MEDFileUMesh::New(INTERP_TEST::getResourceFile(mesh1path).c_str(),mesh1); + MCAuto sMesh=sMeshML->getMeshAtLevel(0); + + LOG(5, "Loading " << mesh2 << " from " << mesh2path); - MEDCouplingAutoRefCountObjectPtr tMeshML=MEDFileUMesh::New(INTERP_TEST::getResourceFile(mesh2path).c_str(),mesh2); - MEDCouplingAutoRefCountObjectPtr tMesh=tMeshML->getMeshAtLevel(0); - + MCAuto tMeshML=MEDFileUMesh::New(INTERP_TEST::getResourceFile(mesh2path).c_str(),mesh2); + MCAuto tMesh=tMeshML->getMeshAtLevel(0); + MEDCouplingNormalizedUnstructuredMesh<3,3> sMesh_wrapper(sMesh); MEDCouplingNormalizedUnstructuredMesh<3,3> tMesh_wrapper(tMesh); - + Interpolation3D interpolator; interpolator.interpolateMeshes(sMesh_wrapper, tMesh_wrapper,m,"P0P0"); - - std::pair eff = countNumberOfMatrixEntries(m); - LOG(1, eff.first << " of " << numTargetElems * numSrcElems << " intersections calculated : ratio = " - << double(eff.first) / double(numTargetElems * numSrcElems)); - LOG(1, eff.second << " non-zero elements of " << eff.first << " total : filter efficiency = " + +// std::pair eff = countNumberOfMatrixEntries(m); +// LOG(1, eff.first << " of " << numTargetElems * numSrcElems << " intersections calculated : ratio = " +// << double(eff.first) / double(numTargetElems * numSrcElems)); + LOG(1, eff.second << " non-zero elements of " << eff.first << " total : filter efficiency = " << double(eff.second) / double(eff.first)); - + LOG(1, "Intersection calculation done. " << std::endl ); - + } /** @@ -100,13 +99,13 @@ namespace INTERP_TEST */ std::pair countNumberOfMatrixEntries(const IntersectionMatrix& m) { - + int numElems = 0; int numNonZero = 0; for(IntersectionMatrix::const_iterator iter = m.begin() ; iter != m.end() ; ++iter) { numElems += iter->size(); - for(std::map::const_iterator iter2 = iter->begin() ; iter2 != iter->end() ; ++iter2) + for(std::map::const_iterator iter2 = iter->begin() ; iter2 != iter->end() ; ++iter2) { if(!INTERP_KERNEL::epsilonEqual(iter2->second, 0.0, VOL_PREC)) { @@ -116,12 +115,12 @@ namespace INTERP_TEST } return std::make_pair(numElems, numNonZero); } - + }; } /** - * Main method of the program. + * Main method of the program. * Intersects the meshes and outputs some information about the calculation as well as the * intersection matrix on std::cout. * @@ -133,7 +132,7 @@ int main(int argc, char** argv) using INTERP_TEST::PerfTestToolkit; assert(argc == 3); - + // load meshes const std::string mesh1 = argv[1]; const std::string mesh2 = argv[2]; @@ -148,7 +147,7 @@ int main(int argc, char** argv) testTools.calcIntersectionMatrix(mesh1path.c_str(), mesh1.c_str(), mesh2path.c_str(), mesh2.c_str(), m); testTools.dumpIntersectionMatrix(m); - + return 0; }