X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingIMesh.cxx;h=b7f8e78cb050676c9ec4d01b3be3be4038533130;hb=836815c1784ddbce4a677797639c407c243c6ccf;hp=05e5875353daffd85717b511ac5a88ba34ea0ae8;hpb=9ab50b13c9671ed69b45236d917521999b0ae40d;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingIMesh.cxx b/src/MEDCoupling/MEDCouplingIMesh.cxx index 05e587535..b7f8e78cb 100644 --- a/src/MEDCoupling/MEDCouplingIMesh.cxx +++ b/src/MEDCoupling/MEDCouplingIMesh.cxx @@ -164,7 +164,7 @@ MEDCouplingCMesh *MEDCouplingIMesh::convertToCartesian() const MEDCouplingAutoRefCountObjectPtr ret(MEDCouplingCMesh::New()); try { ret->copyTinyInfoFrom(this); } - catch(INTERP_KERNEL::Exception& e) { } + catch(INTERP_KERNEL::Exception& ) { } int spaceDim(getSpaceDimension()); std::vector infos(buildInfoOnComponents()); for(int i=0;igetNumberOfTuples()); - if(nbTuplesFine%nbOfTuplesInCoarseExp!=0) + if(nbTuplesFine%nbOfTuplesInFineExp!=0) throw INTERP_KERNEL::Exception("MEDCouplingIMesh::CondenseFineToCoarse : Invalid nb of tuples in fine DataArray regarding its structure !"); int factN(nbTuplesFine/nbOfTuplesInFineExp); int fact(FindIntRoot(factN,meshDim)); // to improve use jump-iterator. Factorizes with SwitchOnIdsFrom BuildExplicitIdsFrom - MEDCouplingAutoRefCountObjectPtr ids(BuildExplicitIdsFrom(coarseSt,fineLocInCoarse)); - const int *idsPtr(ids->begin()); double *outPtr(coarseDA->getPointer()); const double *inPtr(fineDA->begin()); - coarseDA->setPartOfValuesSimple3(0.,ids->begin(),ids->end(),0,nbCompo,1); // + std::vector dims(MEDCouplingStructuredMesh::GetDimensionsFromCompactFrmt(fineLocInCoarse)); switch(meshDim) { + case 1: + { + int offset(fineLocInCoarse[0].first); + for(int i=0;i()); + else + std::copy(inPtr,inPtr+nbCompo,loc); + } + } + break; + } case 2: { - int kk(0); - std::vector dims(MEDCouplingStructuredMesh::GetDimensionsFromCompactFrmt(fineLocInCoarse)); - for(int it=0;it()); + else + std::copy(inPtr,inPtr+nbCompo,loc); + } + } + } + kk+=coarseSt[0]; + } + break; + } + case 3: + { + int kk(fineLocInCoarse[0].first+coarseSt[0]*fineLocInCoarse[1].first+coarseSt[0]*coarseSt[1]*fineLocInCoarse[2].first); + for(int k=0;k()); + for(int jfact=0;jfact()); + else + std::copy(inPtr,inPtr+nbCompo,loc); + } + } + } } } - kk+=it; + kk+=coarseSt[0]*coarseSt[1]; } break; } default: - throw INTERP_KERNEL::Exception("MEDCouplingIMesh::CondenseFineToCoarse : only dimensions 2 supported !"); + throw INTERP_KERNEL::Exception("MEDCouplingIMesh::CondenseFineToCoarse : only dimensions 1, 2 and 3 supported !"); } } @@ -558,7 +606,7 @@ int MEDCouplingIMesh::getCellContainingPoint(const double *pos, double eps) cons { int nbOfCells(_structure[i]-1); double ref(pos[i]); - int tmp((ref-_origin[i])/_dxyz[i]); + int tmp((int)((ref-_origin[i])/_dxyz[i])); if(tmp>=0 && tmp