X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FRENUMBER%2Frenumbering.cxx;h=f3fcec95ee872e831c3fff12df6c905189f736cd;hb=c4551c56aa89896595842e5b41b048044681b4e8;hp=c073f1febbd14f95e89bd49d130f05d7ec1d9b5b;hpb=4547b41d99241253974b84811504838ff94dea5a;p=tools%2Fmedcoupling.git diff --git a/src/RENUMBER/renumbering.cxx b/src/RENUMBER/renumbering.cxx index c073f1feb..f3fcec95e 100644 --- a/src/RENUMBER/renumbering.cxx +++ b/src/RENUMBER/renumbering.cxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2016 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 // 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 @@ -32,7 +32,7 @@ #include using namespace std; -using namespace ParaMEDMEM; +using namespace MEDCoupling; using namespace MED_RENUMBER; int main(int argc, char** argv) @@ -57,8 +57,8 @@ int main(int argc, char** argv) } // Reading file structure cout << "Reading : " << flush; - MEDCouplingAutoRefCountObjectPtr fd=MEDFileData::New(filename_in.c_str()); - MEDFileMesh *m=fd->getMeshes()->getMeshWithName(meshname.c_str()); + MCAuto fd(MEDFileData::New(filename_in)); + MEDFileMesh *m=fd->getMeshes()->getMeshWithName(meshname); MEDFileUMesh *mc=dynamic_cast(m); if(!mc) { @@ -68,34 +68,35 @@ int main(int argc, char** argv) t_read_st=clock(); cout << (t_read_st-t_begin)/(double) CLOCKS_PER_SEC << "s" << endl << flush; // Reading mesh - MEDCouplingAutoRefCountObjectPtr workMesh=mc->getMeshAtLevel(0); + MCAuto workMesh=mc->getMeshAtLevel(0); std::vector code=workMesh->getDistributionOfTypes(); cout << "Building the graph : " << flush; DataArrayInt *neighb=0,*neighbI=0; workMesh->computeNeighborsOfCells(neighb,neighbI); - MEDCouplingAutoRefCountObjectPtr neighbSafe(neighb),neighbISafe(neighbI); + MCAuto neighbSafe(neighb),neighbISafe(neighbI),ipermSafe,permSafe; const int *graph=neighbSafe->begin(); const int *graph_index=neighbISafe->begin(); // Compute permutation iperm->new2old perm->old2new - vector iperm,perm; + DataArrayInt *iperm(0),*perm(0); Renumbering *renumb=RenumberingFactory(type_renum); renumb->renumber(graph,graph_index,workMesh->getNumberOfCells(),iperm,perm); + ipermSafe=iperm; permSafe=perm; delete renumb; - iperm.clear();//erase new2old, we are using only old 2 new + ipermSafe=0;//erase new2old, we are using only old 2 new t_compute_graph=clock(); cout << " : " << (t_compute_graph-t_read_st)/(double) CLOCKS_PER_SEC << "s" << endl; cout.flush(); // Connectivity cout << "Reordering connectivity & families and writing : " << flush; - workMesh->renumberCells(&perm[0],false); + workMesh->renumberCells(perm->begin(),false); mc->setMeshAtLevel(0,workMesh); const DataArrayInt *famField=mc->getFamilyFieldAtLevel(0); if(famField) { - MEDCouplingAutoRefCountObjectPtr famField2=famField->renumber(&perm[0]); + MCAuto famField2=famField->renumber(perm->begin()); mc->setFamilyFieldArr(0,famField2); } - mc->write(filename_out.c_str(),2); + mc->write(filename_out,2); t_family=clock(); cout << " : " << (t_family-t_compute_graph)/(double) CLOCKS_PER_SEC << "s" << endl << flush; // Fields @@ -105,19 +106,21 @@ int main(int argc, char** argv) { for(int i=0;igetNumberOfFields();i++) { - MEDFileFieldMultiTS *fmts=fs->getFieldAtPos(i); + MEDFileFieldMultiTS *fmts=dynamic_cast(fs->getFieldAtPos(i)); + if(!fmts) continue; if(fmts->getMeshName()==meshname) { for(int j=0;jgetNumberOfTS();j++) { - MEDFileField1TS *f1ts=fmts->getTimeStepAtPos(j); + MEDFileField1TS *f1ts=dynamic_cast(fmts->getTimeStepAtPos(j)); + if(!f1ts) continue; DataArrayDouble *arr=f1ts->getUndergroundDataArray(); - arr->renumberInPlace(&perm[0]); + arr->renumberInPlace(perm->begin()); } } } - fs->write(filename_out.c_str(),0); - //fs->renumberEntitiesLyingOnMesh(meshname.c_str(),code,code,o2n); bugged + fs->write(filename_out,0); + //fs->renumberEntitiesLyingOnMesh(meshname,code,code,o2n); bugged } t_field=clock(); cout << " : " << (t_field-t_family)/(double) CLOCKS_PER_SEC << "s" << endl << flush;