X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNEL%2FSplitterTetra.cxx;h=142025368239a0edb0d4eff2200465f25886e044;hb=b307fa3ee9c6d9e08082e2ccc832b28a17fd6d2c;hp=c97747bb27d60ccd011fbc8393014d5a80fd8d40;hpb=378cb2ebe08f8f4543ef632b2bd5f77fe180f978;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNEL/SplitterTetra.cxx b/src/INTERP_KERNEL/SplitterTetra.cxx old mode 100755 new mode 100644 index c97747bb2..142025368 --- a/src/INTERP_KERNEL/SplitterTetra.cxx +++ b/src/INTERP_KERNEL/SplitterTetra.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D +// Copyright (C) 2007-2021 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 @@ -23,8 +23,8 @@ namespace INTERP_KERNEL { - void SplitHexa8IntoTetras(SplittingPolicy policy, const int *nodalConnBg, const int *nodalConnEnd, const double *coords, - std::vector& tetrasNodalConn, std::vector& addCoords) + void SplitHexa8IntoTetras(SplittingPolicy policy, const mcIdType *nodalConnBg, const mcIdType *nodalConnEnd, const double *coords, + std::vector& tetrasNodalConn, std::vector& addCoords) { if(std::distance(nodalConnBg,nodalConnEnd)!=8) throw INTERP_KERNEL::Exception("SplitHexa8IntoTetras : input hexa do not have 8 nodes !"); @@ -33,7 +33,7 @@ namespace INTERP_KERNEL case PLANAR_FACE_5: { tetrasNodalConn.resize(20); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); conn[0]=nodalConnBg[SPLIT_NODES_5_WO[0]]; conn[1]=nodalConnBg[SPLIT_NODES_5_WO[1]]; conn[2]=nodalConnBg[SPLIT_NODES_5_WO[2]]; conn[3]=nodalConnBg[SPLIT_NODES_5_WO[3]]; conn[4]=nodalConnBg[SPLIT_NODES_5_WO[4]]; conn[5]=nodalConnBg[SPLIT_NODES_5_WO[5]]; conn[6]=nodalConnBg[SPLIT_NODES_5_WO[6]]; conn[7]=nodalConnBg[SPLIT_NODES_5_WO[7]]; conn[8]=nodalConnBg[SPLIT_NODES_5_WO[8]]; conn[9]=nodalConnBg[SPLIT_NODES_5_WO[9]]; conn[10]=nodalConnBg[SPLIT_NODES_5_WO[10]]; conn[11]=nodalConnBg[SPLIT_NODES_5_WO[11]]; @@ -44,7 +44,7 @@ namespace INTERP_KERNEL case PLANAR_FACE_6: { tetrasNodalConn.resize(24); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); conn[0]=nodalConnBg[SPLIT_NODES_6_WO[0]]; conn[1]=nodalConnBg[SPLIT_NODES_6_WO[1]]; conn[2]=nodalConnBg[SPLIT_NODES_6_WO[2]]; conn[3]=nodalConnBg[SPLIT_NODES_6_WO[3]]; conn[4]=nodalConnBg[SPLIT_NODES_6_WO[4]]; conn[5]=nodalConnBg[SPLIT_NODES_6_WO[5]]; conn[6]=nodalConnBg[SPLIT_NODES_6_WO[6]]; conn[7]=nodalConnBg[SPLIT_NODES_6_WO[7]]; conn[8]=nodalConnBg[SPLIT_NODES_6_WO[8]]; conn[9]=nodalConnBg[SPLIT_NODES_6_WO[9]]; conn[10]=nodalConnBg[SPLIT_NODES_6_WO[10]]; conn[11]=nodalConnBg[SPLIT_NODES_6_WO[11]]; @@ -57,7 +57,7 @@ namespace INTERP_KERNEL { addCoords.resize(7*3); tetrasNodalConn.resize(24*4); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); double *tmp(&addCoords[18]); tmp[0]=0.; tmp[1]=0.; tmp[2]=0.; double *tmp2(&addCoords[0]); @@ -66,7 +66,7 @@ namespace INTERP_KERNEL tmp2[0]=0.; tmp2[1]=0.; tmp2[2]=0.; for(int j=0;j<4;j++,conn+=4) { - int tmp3(nodalConnBg[GENERAL_24_SUB_NODES_WO[4*i+j]]); + mcIdType tmp3(nodalConnBg[GENERAL_24_SUB_NODES_WO[4*i+j]]); tmp2[0]+=coords[3*tmp3+0]; tmp2[1]+=coords[3*tmp3+1]; tmp2[2]+=coords[3*tmp3+2]; @@ -97,13 +97,13 @@ namespace INTERP_KERNEL tmp2[1]=(tmp[3*(GENERAL_48_SUB_NODES[2*i+24]-8)+1]+tmp[3*(GENERAL_48_SUB_NODES[2*i+25]-8)+1])/2.; tmp2[2]=(tmp[3*(GENERAL_48_SUB_NODES[2*i+24]-8)+2]+tmp[3*(GENERAL_48_SUB_NODES[2*i+25]-8)+2])/2.; } - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); std::vector dummy; for(int i=0;i<8;i++) { - std::vector c; + std::vector c; SplitHexa8IntoTetras(PLANAR_FACE_6,GENERAL_48_SUBZONES_2+i*8,GENERAL_48_SUBZONES_2+(i+1)*8,coords,c,dummy); - int *conn2(&c[0]); + mcIdType *conn2(&c[0]); for(int j=0;j<6;j++,conn+=4,conn2+=4) { conn[0]=conn2[0]>=0?nodalConnBg[conn2[0]]:conn2[0]; @@ -119,8 +119,8 @@ namespace INTERP_KERNEL } } - void SplitIntoTetras(SplittingPolicy policy, NormalizedCellType gt, const int *nodalConnBg, const int *nodalConnEnd, const double *coords, - std::vector& tetrasNodalConn, std::vector& addCoords) + void SplitIntoTetras(SplittingPolicy policy, NormalizedCellType gt, const mcIdType *nodalConnBg, const mcIdType *nodalConnEnd, const double *coords, + std::vector& tetrasNodalConn, std::vector& addCoords) { switch(gt) { @@ -143,7 +143,7 @@ namespace INTERP_KERNEL if(sz!=5) throw INTERP_KERNEL::Exception("SplitIntoTetras : input pyra5 do not have 5 nodes !"); tetrasNodalConn.resize(8); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); conn[0]=nodalConnBg[0]; conn[1]=nodalConnBg[1]; conn[2]=nodalConnBg[2]; conn[3]=nodalConnBg[4]; conn[4]=nodalConnBg[0]; conn[5]=nodalConnBg[2]; conn[6]=nodalConnBg[3]; conn[7]=nodalConnBg[4]; return ; @@ -154,7 +154,7 @@ namespace INTERP_KERNEL if(sz!=6) throw INTERP_KERNEL::Exception("SplitIntoTetras : input penta6 do not have 6 nodes !"); tetrasNodalConn.resize(12); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); conn[0]=nodalConnBg[0]; conn[1]=nodalConnBg[1]; conn[2]=nodalConnBg[2]; conn[3]=nodalConnBg[3]; conn[4]=nodalConnBg[3]; conn[5]=nodalConnBg[5]; conn[6]=nodalConnBg[4]; conn[7]=nodalConnBg[2]; conn[8]=nodalConnBg[4]; conn[9]=nodalConnBg[2]; conn[10]=nodalConnBg[1]; conn[11]=nodalConnBg[3]; @@ -166,7 +166,7 @@ namespace INTERP_KERNEL if(sz!=12) throw INTERP_KERNEL::Exception("SplitIntoTetras : input octa12 (hexagone prism) do not have 12 nodes !"); tetrasNodalConn.resize(48); - int *conn(&tetrasNodalConn[0]); + mcIdType *conn(&tetrasNodalConn[0]); conn[0]=nodalConnBg[0]; conn[1]=nodalConnBg[1]; conn[2]=nodalConnBg[5]; conn[3]=nodalConnBg[6]; conn[4]=nodalConnBg[6]; conn[5]=nodalConnBg[11]; conn[6]=nodalConnBg[7]; conn[7]=nodalConnBg[5]; conn[8]=nodalConnBg[7]; conn[9]=nodalConnBg[5]; conn[10]=nodalConnBg[1]; conn[11]=nodalConnBg[6]; @@ -186,28 +186,30 @@ namespace INTERP_KERNEL } case NORM_POLYHED: { - std::size_t nbOfFaces(std::count(nodalConnBg,nodalConnEnd,-1)+1); - std::size_t nbOfTetra(std::distance(nodalConnBg,nodalConnEnd)-nbOfFaces+1); + mcIdType nbOfFaces(ToIdType(std::count(nodalConnBg,nodalConnEnd,-1)+1)); + mcIdType nbOfTetra(ToIdType(std::distance(nodalConnBg,nodalConnEnd)-nbOfFaces+1)); addCoords.resize((nbOfFaces+1)*3); tetrasNodalConn.resize(nbOfTetra*4); - int *conn(&tetrasNodalConn[0]); - const int *work(nodalConnBg); + mcIdType *conn(&tetrasNodalConn[0]); + const mcIdType *work(nodalConnBg); double *tmp(&addCoords[0]),*tmp2(&addCoords[3*nbOfFaces]); tmp2[0]=0.; tmp2[1]=0.; tmp2[2]=0.; - for(std::size_t i=0;i