X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FParaMEDMEM%2FNonCoincidentDEC.cxx;h=9c62a6b6b0ca67b66c863f89110536c02a510f8f;hb=ffdef130a5a36893d8e58d538884e79413975c7a;hp=a743ef11074fb465d11863e551bfe540e8755eb2;hpb=fb512e2b77325290aaa2b4c9fd8f22d5949b6369;p=tools%2Fmedcoupling.git diff --git a/src/ParaMEDMEM/NonCoincidentDEC.cxx b/src/ParaMEDMEM/NonCoincidentDEC.cxx index a743ef110..9c62a6b6b 100644 --- a/src/ParaMEDMEM/NonCoincidentDEC.cxx +++ b/src/ParaMEDMEM/NonCoincidentDEC.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 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 @@ -34,24 +34,27 @@ extern "C" { #include } -namespace ParaMEDMEM +namespace MEDCoupling { /*! - \defgroup noncoincidentdec NonCoincidentDEC + \anchor NonCoincidentDEC-det + \class NonCoincidentDEC - \section overview Overview - - \c NonCoincidentDEC enables nonconservative remapping of fields + \c NonCoincidentDEC enables non-conservative remapping of fields between two parallel codes. The computation is possible for 3D meshes and 2D meshes. - It is not available for 3D surfaces. The computation enables fast parallel localization, and is based on a point in element search, followed + It is not available for 3D surfaces. + + The computation enables fast parallel localization, and is based on a point in element search, followed by a field evaluation at the point location. Thus, it is typically - faster than the \ref interpkerneldec which gives a \ref conservativeremapping. - It is particularly true for the initialisation phase (synchronize) - which is very computationnaly intensive in \ref interpkerneldec. + faster than the \ref InterpKernelDEC-det "InterpKernelDEC" which uses a + \ref InterpKerRemapGlobal "conservative remapping" (i.e. the same algorithms of volume + intersection as in the \ref remapper "sequential remapper") + It is particularly true for the initialisation phase (synchronize() method) + which has a significant computation cost in \ref InterpKernelDEC-det. - In the present version, only fields lying on elements are considered. + In the present version, only fields lying on elements ("P0") are considered. The value is estimated by locating the barycenter of the target side cell in a source cell and sending the value of this source cell as the value of the target cell. @@ -214,7 +217,7 @@ namespace ParaMEDMEM { elem_numbers = const_cast (support->getNumber(types[itype])); - //creating work arrays to store list of elems for partial suports + //creating work arrays to store list of elems for partial supports if (itype>0) { fvm_lnum_t* temp = new int[nbelems]; @@ -242,12 +245,7 @@ namespace ParaMEDMEM { } - /*! - \addtogroup noncoincidentdec - @{ - */ - - /*! Constructor of a non coincident \ref dec with + /*! Constructor of a non coincident \ref para-dec "DEC" with * a source group on which lies a field lying on a mesh and a * target group on which lies a mesh. * @@ -288,7 +286,7 @@ namespace ParaMEDMEM if (_source_group->containsMyRank()) { MEDMEM::MESH* mesh = _local_field->getField()->getSupport()->getMesh(); - fvm_nodal_t* source_nodal = ParaMEDMEM::medmemMeshToFVMMesh(mesh); + fvm_nodal_t* source_nodal = MEDCoupling::medmemMeshToFVMMesh(mesh); int target_size = _target_group->size() ; int start_rank= _source_group->size(); @@ -316,7 +314,7 @@ namespace ParaMEDMEM { MEDMEM::MESH* mesh = _local_field->getField()->getSupport()->getMesh(); - fvm_nodal_t* target_nodal = ParaMEDMEM::medmemMeshToFVMMesh(mesh); + fvm_nodal_t* target_nodal = MEDCoupling::medmemMeshToFVMMesh(mesh); int source_size = _source_group->size(); int start_rank= 0 ; const MPI_Comm* comm = (dynamic_cast (_union_group))->getComm(); @@ -374,7 +372,7 @@ namespace ParaMEDMEM int nbcomp = _local_field->getField()->getNumberOfComponents(); double* distant_values = new double [_nb_distant_points*nbcomp]; - //cheap interpolation : the value of the cell is transfered to the point + //cheap interpolation : the value of the cell is transferred to the point for (int i=0; i<_nb_distant_points; i++) for (int j=0; j