X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNEL%2FInterpolation.txx;h=33848df423c699aa75b474b0b2fda37534ff13b2;hb=1b746b38f3cdeae6654a9501f37fde5e56e59288;hp=3ac70163fd6182d0c2a3f21e5a1b0665dbae14ac;hpb=10f37bf6f33a762626d7f1093b2f5450c1688667;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNEL/Interpolation.txx b/src/INTERP_KERNEL/Interpolation.txx old mode 100644 new mode 100755 index 3ac70163f..33848df42 --- a/src/INTERP_KERNEL/Interpolation.txx +++ b/src/INTERP_KERNEL/Interpolation.txx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D +// Copyright (C) 2007-2024 CEA, EDF // // 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. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,6 +16,7 @@ // // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // +// Author : Anthony Geay (CEA/DEN) #ifndef __INTERPOLATION_TXX__ #define __INTERPOLATION_TXX__ @@ -28,12 +29,11 @@ namespace INTERP_KERNEL { template template - int Interpolation::fromToIntegralUniform(bool fromTo, const MyMeshType& mesh, MatrixType& result, const char *method) + typename MyMeshType::MyConnType Interpolation::fromToIntegralUniform(bool fromTo, const MyMeshType& mesh, MatrixType& result, const std::string& method) { typedef typename MyMeshType::MyConnType ConnType; - std::string methodCPP(method); - int ret=-1; - if(methodCPP=="P0") + ConnType ret=-1; + if(method=="P0") { IntegralUniformIntersectorP0 intersector(mesh,InterpolationOptions::getMeasureAbsStatus()); intersector.setFromTo(fromTo); @@ -41,7 +41,7 @@ namespace INTERP_KERNEL intersector.intersectCells(0,tmp,result); ret=intersector.getNumberOfColsOfResMatrix(); } - else if(methodCPP=="P1") + else if(method=="P1") { IntegralUniformIntersectorP1 intersector(mesh,InterpolationOptions::getMeasureAbsStatus()); intersector.setFromTo(fromTo); @@ -54,32 +54,15 @@ namespace INTERP_KERNEL return ret; } - template - void Interpolation::checkAndSplitInterpolationMethod(const char *method, std::string& srcMeth, std::string& trgMeth) throw(INTERP_KERNEL::Exception) - { - const int NB_OF_METH_MANAGED=4; - const char *METH_MANAGED[NB_OF_METH_MANAGED]={"P0P0","P0P1","P1P0","P1P1"}; - std::string methodC(method); - bool found=false; - for(int i=0;i template double Interpolation::CalculateCharacteristicSizeOfMeshes(const MyMeshType& myMeshS, const MyMeshType& myMeshT, const int printLevel) { static const int SPACEDIM=MyMeshType::MY_SPACEDIM; + typedef typename MyMeshType::MyConnType ConnType; - long nbMailleS=myMeshS.getNumberOfElements(); - long nbMailleT=myMeshT.getNumberOfElements(); + ConnType nbMailleS=myMeshS.getNumberOfElements(); + ConnType nbMailleT=myMeshT.getNumberOfElements(); /**************************************************/ /* Search the characteristic size of the meshes */ @@ -91,13 +74,13 @@ namespace INTERP_KERNEL if(nbMailleS!=0) { diagonalS=getDistanceBtw2Pts(BoxS+SPACEDIM,BoxS); - dimCaracteristicS=diagonalS/nbMailleS; + dimCaracteristicS=diagonalS/(double)nbMailleS; } double diagonalT,dimCaracteristicT=std::numeric_limits::max(); if(nbMailleT!=0) { diagonalT=getDistanceBtw2Pts(BoxT+SPACEDIM,BoxT); - dimCaracteristicT=diagonalT/nbMailleT; + dimCaracteristicT=diagonalT/(double)nbMailleT; } if (printLevel>=1) {