From cf32f5ac648b838f2a4c9dae2eeafc9543ec4c8a Mon Sep 17 00:00:00 2001 From: ndjinga Date: Tue, 4 Oct 2011 07:45:41 +0000 Subject: [PATCH] Evolution of the MEDMEM library documentation, more specifically about the interpolation tools --- doc/doxygen/Makefile.am | 8 +- doc/doxygen/figures/interpolationimage.png | Bin 0 -> 71617 bytes doc/doxygen/figures/source_field.png | Bin 0 -> 25381 bytes doc/doxygen/figures/source_mesh.png | Bin 0 -> 15627 bytes doc/doxygen/figures/target_field.png | Bin 0 -> 24318 bytes doc/doxygen/figures/target_mesh.png | Bin 0 -> 19214 bytes doc/doxygen/interpkernel.dox | 256 +----------------- doc/doxygen/interpkernel_features.dox | 30 -- doc/doxygen/interptheory.dox | 122 +++++++++ doc/doxygen/interptools.dox | 28 ++ .../{remapping.dox => intersectors.dox} | 4 +- doc/doxygen/main.dox | 5 +- doc/doxygen/medcoupling.dox | 58 +++- doc/doxygen/medloader.dox | 4 +- doc/doxygen/medmem.dox | 24 +- doc/doxygen/remapper.dox | 96 +++++++ 16 files changed, 335 insertions(+), 300 deletions(-) create mode 100644 doc/doxygen/figures/interpolationimage.png create mode 100755 doc/doxygen/figures/source_field.png create mode 100755 doc/doxygen/figures/source_mesh.png create mode 100755 doc/doxygen/figures/target_field.png create mode 100755 doc/doxygen/figures/target_mesh.png delete mode 100644 doc/doxygen/interpkernel_features.dox create mode 100644 doc/doxygen/interptheory.dox create mode 100644 doc/doxygen/interptools.dox rename doc/doxygen/{remapping.dox => intersectors.dox} (98%) create mode 100644 doc/doxygen/remapper.dox diff --git a/doc/doxygen/Makefile.am b/doc/doxygen/Makefile.am index 7ac768450..0dbfef279 100644 --- a/doc/doxygen/Makefile.am +++ b/doc/doxygen/Makefile.am @@ -53,7 +53,9 @@ EXTRA_DIST += figures \ field.dox \ grid.dox \ interpkernel.dox \ - interpkernel_features.dox \ + interptheory.dox \ + interptools.dox \ + intersectors.dox \ medcoupling.dox \ medfilebrowser.dox \ medloader.dox \ @@ -62,9 +64,9 @@ EXTRA_DIST += figures \ mesh.dox \ meshing.dox \ polygon.dox \ - remapping.dox \ + remapper.dox \ support.dox \ tools.dox \ static/footer.html \ static/doxygen.css \ - images \ No newline at end of file + images diff --git a/doc/doxygen/figures/interpolationimage.png b/doc/doxygen/figures/interpolationimage.png new file mode 100644 index 0000000000000000000000000000000000000000..a823f7f37b938ba67add0bedfe663f05459cbd53 GIT binary patch literal 71617 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 literal 0 HcmV?d00001 diff --git a/doc/doxygen/figures/source_field.png b/doc/doxygen/figures/source_field.png new file mode 100755 index 0000000000000000000000000000000000000000..d3e90df2620869b5eb76883796147b9c565efd7b GIT binary patch literal 25381 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%0D?^T{yB>zh4?zvdHWe!8%ubf6HFd5mX`K~=a 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 K(~2|K{`wyxZ*ejJ literal 0 HcmV?d00001 diff --git a/doc/doxygen/figures/target_mesh.png b/doc/doxygen/figures/target_mesh.png new file mode 100755 index 0000000000000000000000000000000000000000..67b2d343c9e8faaa1ee2ad8fcb0deb0d68d3f51a GIT binary patch literal 19214 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 literal 0 HcmV?d00001 diff --git a/doc/doxygen/interpkernel.dox b/doc/doxygen/interpkernel.dox index 71db3faad..83f124b7a 100644 --- a/doc/doxygen/interpkernel.dox +++ b/doc/doxygen/interpkernel.dox @@ -1,5 +1,5 @@ /*! -\page interpkernel Interpolation tools +\page interpkernel Interpolation kernel \section InterpKerIntro Introduction @@ -15,7 +15,7 @@ the %interpolation kernel. In the %interpolation kernel, algorithms that computes the intersection \f$ T_i\cap S_j\f$ given the locations and geometries of source cell \f$ S_j \f$ and target cell \f$ T_i \f$ are called \ref InterpKerIntersectors. -As can be seen in \ref InterpKerTheory "the theory of interpolation", all the proposed interpolators aim at +As can be seen in \ref ConsInterp "the theory of interpolation", all the proposed interpolators aim at filling the interpolation matrix W (which is generally sparse). For each pair (i,j), \f$ W_{ij} \f$ is obtained by calling the desired intersector. The problem is that each call to this algorithm is CPU-expensive. @@ -29,7 +29,7 @@ performed in two steps : -# A filtering process reduces the number of pairs of elements for which the calculation must be carried out by eliminating the pairs whose bounding boxes do not intersect. - -# For all remaining pairs calling for each intersector (see \ref interpolation2D, \ref interpolation3Dsurf or \ref interpolation3D). + -# For all remaining pairs calling for each intersector (click here for the available \ref InterpKerIntersectors). Whatever its dimension and type, each interpolator inherits from INTERP_KERNEL::Interpolation which is a template (CRTP) class than enable an easy access to the main API without useless CPU cost. @@ -84,253 +84,5 @@ As already said, the matrix returned by interpolator is typically a sparse matri Note that \c std::vector\c < \c std::map > is a candidate for \c MatrixType. -\section InterpKerGenUsage Usage of interpolation tools: the REMAPPER classes. -\subsection InterpKerHighLevUsage high-level usage - -The simplest way of using the interpolation tools is in sequential mode to use the REMAPPER classes. These classes fulfill \c HXX2SALOME rules and may be used -in coupling graphs. Two sequential REMAPPERS exist, \c ParaMEDMEM::MEDCouplingRemapper and \ref medmemremapper . These classes are strongly linked to their corresponding data structure, respectively \ref medcoupling and \ref MEDMEM. - -- If you intend to use \ref MEDCoupling data struture, ParaMEDMEM::MEDCouplingRemapper class should be used : - -\code -... -const char sourceFileName[]="source.med"; -MEDCouplingFieldDouble *sourceField=MEDLoader::ReadFieldCell(sourceFileName,"Source_Mesh",0,"Density",/*iteration*/0,/*order*/0); -const char targetFileName[]="target.med"; -MEDCouplingUMesh *med_target_mesh=MEDLoader::ReadUMeshFromFile(targetFileName,"Target_Mesh",0); -// -sourceField->setNature(ConservativeVolumic);//Specify nature is needed to allow remapper object to apply correct policy for denominator computation ! -MEDCouplingRemapper remapper; -remapper.setPrecision(1e-12); -remapper.setIntersectionType(INTERP_KERNEL::Triangulation); -remapper.prepare(sourceField->getMesh(),med_target_mesh,"P0P0"); -MEDCouplingFieldDouble *targetField=remapper.transferField(sourceField,/*default_value*/4.57);//Any target cell not intercepted by any source cell will have value set to 4.57. -... -// clean-up -targetField->decrRef(); -sourceField->decrRef(); -med_target_mesh->decrRef(); -\endcode - -- If you intend to use \ref MEDMEM data structure, \c medmemremapper class should be used : - -\code -... -std::string sourceFileName("source.med"); -MEDMEM::MESH med_source_mesh(MED_DRIVER,sourceFileName,"Source_Mesh"); -std::string targetFileName("target.med"); -MEDMEM::MESH med_target_mesh(MED_DRIVER,targetFileName,"Target_Mesh"); -FIELD sourceField(MED_DRIVER,sourceFileName,"Density",0,0); -FIELD targetField; -Remapper mapper; -mapper.prepare(med_source_mesh,med_target_mesh,"P0P1"); -mapper.transfer(sourceField,targetField); -//use targetField -... -\endcode - -\subsection InterpKerMidLevUsage middle-level usage - -This mode is the mode that needs the minimum of prerequisites -(algorithms and the datastructure you intend to use). On the other -hand it is needed to specify precisely nature of interpolator. - -As consequence of genericity of interpolators, they are usable only by -instanciating an underneath mesh data structure. The two following -examples show how to use interpolator at this level. - -- The simplest way to use interpolator with MEDCoupling datastruture is put in the following example. Note that this code is close to those used by ParaMEDMEM -to perform synchronization of meshes between processes of a MPI communicator : - -\code -... -MEDCouplingUMesh *med_source_mesh=MEDLoader::ReadUMeshFromFile("source.med","Source_mesh",0); -MEDCouplingUMesh *med_target_mesh=MEDLoader::ReadUMeshFromFile("target.med","Target_mesh",0); -MEDCouplingNormalizedUnstructuredMesh<2,2> wrap_source_mesh(med_source_mesh); -MEDCouplingNormalizedUnstructuredMesh<2,2> wrap_target_mesh(med_target_mesh); -// Go for interpolation... -INTERP_KERNEL::Interpolation2D myInterpolator; -myInterpolator.setPrecision(1e-7); -myInterpolator.setIntersectionType(INTERP_KERNEL::Geometric2D); -std::vector > resultMatrix; -INTERP_KERNEL::Matrix resultMatrix2; -// here the interpolation is performed twice for this code to show the capability of storing data of out matrix in 2 different data structures. -myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix,"P0P0"); -myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix2,"P0P0"); -//Ok resultMatrix and resultMatrix2 contain matrix now -... -\endcode - -- An another way to use the interpolator with MEDMEM datastructure is : - -\code -... -std::string sourceFileName("source.med"); -MEDMEM::MESH med_source_mesh(MED_DRIVER,sourceFileName,"Source_Mesh"); -std::string targetFileName("target.med"); -MEDMEM::MESH med_target_mesh(MED_DRIVER,targetFileName,"Target_Mesh"); -// Ok at this point we have our mesh in MED-Memory format. -// Go to wrap med_source_mesh and med_target_mesh. -MEDNormalizedUnstructuredMesh<2,2> wrap_source_mesh(&med_source_mesh); -MEDNormalizedUnstructuredMesh<2,2> wrap_target_mesh(&med_target_mesh); -// Go for interpolation... -INTERP_KERNEL::Interpolation2D myInterpolator; -//optionnal call to parametrize your interpolation. First precision, tracelevel, intersector wanted. -myInterpolator.setOptions(1e-7,0,Geometric2D); -INTERP_KERNEL::Matrix resultMatrix; -myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix,"P0P0"); -//Ok let's multiply resultMatrix by source field to interpolate to target field. -resultMatrix.multiply(...) -... -\endcode - -- Same with VTK datastructure : - -\code -... -vtkXMLUnstructuredGridReader *readerSource=vtkXMLUnstructuredGridReader::New(); -readerSource->SetFileName("source.vtu"); -vtkUnstructuredGrid *vtk_source_mesh=readerSource->GetOutput(); -readerSource->Update(); -vtkXMLUnstructuredGridReader *readerTarget=vtkXMLUnstructuredGridReader::New(); -readerTarget->SetFileName("target.vtu"); -vtkUnstructuredGrid *vtk_target_mesh=readerTarget->GetOutput(); -readerTarget->Update(); -// Ok at this point we have our mesh in VTK format. -// Go to wrap vtk_source_mesh and vtk_target_mesh. -VTKNormalizedUnstructuredMesh<2> wrap_source_mesh(vtk_source_mesh); -VTKNormalizedUnstructuredMesh<2> wrap_target_mesh(vtk_target_mesh); -// Go for interpolation... -INTERP_KERNEL::Interpolation2D myInterpolator; -//optionnal call to parametrize your interpolation. First precision, tracelevel, intersector wanted. -myInterpolator.setOptions(1e-7,0,Geometric2D); -INTERP_KERNEL::Matrix resultMatrix; -myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix,"P0P0"); -//Ok let's multiply resultMatrix by source field to interpolate to target field. -resultMatrix.multiply(...) -//clean-up -readerSource->Delete(); -readerTarget->Delete(); -... -\endcode - -\section InterpKerTheory Theory of conservative interpolation - -At the basis of many CFD numerical schemes is the fact that physical -quantities such as density, momentum per unit volume or energy per -unit volume obey some balance laws that should be preserved at the -discrete level on every cell. This property is critical for example to -accurately capture shockwaves. - -\subsection InterpKerPerfOverl Mesh overlapping - -When interpolation is performed between a source mesh S and a target -mesh T the aspect of overlapping is important. In fact if any cell of -of S is fully overlapped by cells of T and inversely any cell of T is -fully overlapped by cells of S the meshes S and T are said to be \b -coincident and some general formulae in next sub section are simpler. -As far as possible in the next sub sections the formulae for -coincident and non-coincident meshes will be given. - -\subsection InterpKerRemapGlobal Linear conservative remapping - -For fields with polynomial representation on each cell, the components of the discretized field \f$ \phi_s \f$ on the source side can be expressed as linear combinations of the components of the discretized field \f$ \phi_t \f$ on the target side, in terms of a matrix-vector product : - -\f[ - \phi_t=W.\phi_s. -\f] - -The objectives of interpolators is to compute the matrix W depending on their physical -properties (intensive or extensive field) and their mesh discretisation (P0, P1,...). - -It is often desired that the process interpolation preserve the -integral of \f$ \phi \f$ on any domain. At the discrete level, for any -target cell \f$ T_i \f$, the following \b general \b interpolation \b -equation \anchor InterpKerGenralEq has to -be always verified : - -\f[ -\int_{T_i} \phi = \sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi. -\f] - -This equation is used to compute \f$ W_{ij} \f$, based on the fields representation ( P0, P1, P1d etc..) and the -geometry of source and target mesh cells. : - -\subsection InterpKerRemapInt Conservative remapping of P0 (cell based) fields - -We assume that the field is represented by a vector with a discrete value on each cell. -This value can represent either -- an average value of the field in the cell (average density, velocity or temperature in the cell) in which case the representation is said to be \b intensive, -- an integrated value over the cell (total mass, power of the cell) in which case the representation is said to be \b extensive - -\subsection InterpKerP0P0Int cell-cell (P0->P0) conservative remapping of intensive fields - -In the \ref InterpKerGenralEq "general interpolation equation" the -left hand side becomes : - -\f[ -\int_{T_i} \phi = (\sum_{S_j} Vol(T_i\cap S_j)).\phi_{T_i}. -\f] - -Here Vol represents the volume when the mesh dimension is equal to 3, the -area when mesh dimension is equal to 2, and length when mesh dimension is equal to 1. - -Note that \f$ \sum_{S_j} Vol(T_i\cap S_j) = Vol(T_i) \f$ \ref InterpKerPerfOverl "in case of perfect overlapping". - -In the \ref InterpKerGenralEq "general interpolation equation" the -right hand side becomes : - -\f[ -\sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi = \sum_{S_j\cap T_i \neq \emptyset} {Vol(T_i\cap S_j)}.\phi_{S_j}. -\f] - -As the field values are constant on each -cell, the coefficients of the linear remapping matrix \f$ W \f$ are -given by the formula : - -\f[ - W_{ij}=\frac{Vol(T_i\cap S_j)}{ \sum_{S_j} Vol(T_i\cap S_j) }. -\f] - -and \ref InterpKerPerfOverl "in case of perfect overlapping" : - -\f[ - W_{ij}=\frac{Vol(T_i\cap S_j)}{ Vol(T_i) }. -\f] - -\subsection InterpKerP0P0Ext cell-cell (P0->P0) conservative remapping of extensive physical quantities - -In code coupling from neutronics to hydraulics, \b extensive field -of power is exchanged and the total power should remain the same. -The discrete values of the field represent the total power contained in the cell. -Hence in the \ref InterpKerGenralEq "general interpolation equation" the -left hand side becomes : - -\f[ -\int_{T_i} \phi = P_{T_i}, -\f] - -while the right hand side is now : - -\f[ -\sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi = -\sum_{S_j\cap T_i \neq \emptyset} \frac{Vol(T_i\cap S_j)}{\sum_{T_i} Vol(T_i \cap S_j)}.P_{S_j}. -\f] - -Note \f$ \sum_{T_i} Vol(T_i \cap S_j) = Vol(S_j) \f$ \ref InterpKerPerfOverl "in case of perfect overlapping". - -The coefficients of the linear remapping matrix \f$ W \f$ are then -given by the formula : - -\f[ - W_{ij}=\frac{Vol(T_i\cap S_j)}{ \sum_{T_i} Vol(T_i \cap S_j) }. -\f] - -and \ref InterpKerPerfOverl "in case of perfect overlapping" : - -\f[ - W_{ij}=\frac{Vol(T_i\cap S_j)}{ Vol(S_j) }. -\f] - -*/ +*/ \ No newline at end of file diff --git a/doc/doxygen/interpkernel_features.dox b/doc/doxygen/interpkernel_features.dox deleted file mode 100644 index 10534ee69..000000000 --- a/doc/doxygen/interpkernel_features.dox +++ /dev/null @@ -1,30 +0,0 @@ -/*! -\page interpkernel_features InterpKernel features - -\section Presentation -The InterpKernel algorithms are part of the MED tool suite. They -answer to the following basic problem : given a source mesh $M_s$, a -source field $F_s$ and a target mesh $M_t$, reconstruct a field $F_t$ -that uses $M_t$ as a support. The InterpKernel suite gives a number of -possibilities to compute the target field, depending on a variety of -user constraints. - -\image html interpolation_image.png - -InterpKernel possibilities emcompass: -- 1D, 2D lines, 2D, 3D surfaces and 3D handling, -- computation via node localization or via cell intersection (for -conservative remapping), -- treatment of MPI-distributed fields and meshes, -- different APIs for different levels of integration (as SALOME -components, for MPI distributed codes, as low-level library), -- treatment of extended polygons (where edges can be arcs or segments) -for 2D intersection computations, -- management of P0, P1 and P2 fields. - -The starting point for using the tools is the description of the -diferent APIs. You can obtain this information by following this -link : \ref interpkernel. If you would like more information about the -features, you can follow the following links : \ref interpolation2D, -\ref interpolation3Dsurf, \ref interpolation3D which provide details -about the options available when using intersection algorithms. diff --git a/doc/doxygen/interptheory.dox b/doc/doxygen/interptheory.dox new file mode 100644 index 000000000..1d16d001a --- /dev/null +++ b/doc/doxygen/interptheory.dox @@ -0,0 +1,122 @@ +/*! +\page InterpKerRemapGlobal Linear remapping + +For fields with polynomial representation on each cell, the components of the discretized field \f$ \phi_s \f$ on the source side can be expressed as linear combinations of the components of the discretized field \f$ \phi_t \f$ on the target side, in terms of a matrix-vector product: + +\f[ + \phi_t=W.\phi_s. +\f] + +\f$W\f$ is called the \anchor interpolationmatrix interpolation matrix. +The objectives of interpolators is to compute the matrix W depending on their physical +properties (\ref IntExtFields) and their mesh discretisation (P0, P1,...). + +\section ConsInterp Conservative interpolation + +At the basis of many CFD numerical schemes is the fact that physical +quantities such as density, momentum per unit volume or energy per +unit volume obey some balance laws that should be preserved at the +discrete level on every cell. + +It is therefore often desired that the process interpolation preserve the +integral of \f$ \phi \f$ on any domain. At the discrete level, for any +target cell \f$ T_i \f$, the following \b general \b interpolation \b +formula \anchor InterpKerGenralEq has to +be satisfied : + +\f[ +\int_{T_i} \phi_t = \sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi_s. +\f] + +This equation is used to compute \f$ W_{ij} \f$, based on the fields representation ( P0, P1, P1d etc..) and the +geometry of source and target mesh cells. + +\section MeshOverlap Mesh overlapping + +Another important property of the interpolation process is the maximum principle: the field values resulting from the interpolation should remain between the upper and lower bounds of the original field. +When interpolation is performed between a source mesh S and a target +mesh T the aspect of overlapping is important. In fact if any cell of +of S is fully overlapped by cells of T and inversely any cell of T is +fully overlapped by cells of S that is +\f[ +\sum_{S_j} Vol(T_i\cap S_j) = Vol(T_i) and \sum_{T_i} Vol(S_j\cap T_i) = Vol(S_j) +\f] +then the meshes S and T are said to be \b +overlapping and all the algorithms will return the same results. + +The ideal interpolation algorithm should be conservative and respect the maximum principle. However such an algorithm can be impossible to design if the two meshes do not overlap. When the meshes do not overlap, using either \f$Vol(T_i)\f$ or \f$\sum_{S_j} Vol(T_i\cap S_j)\f$ in the formula one obtains an algorithm that respects either conservativity either the maximum principle. + + +\section InterpKerRemapInt Linear conservative remapping of P0 (cell based) fields + +We assume that the field is represented by a vector with a discrete value on each cell. +This value can represent either +- an average value of the field in the cell (average density, velocity or temperature in the cell) in which case the representation is said to be \b intensive, +- an integrated value over the cell (total mass, power of the cell) in which case the representation is said to be \b extensive + +\section InterpKerP0P0Int cell-cell (P0->P0) conservative remapping of intensive fields + +In the \ref InterpKerGenralEq "general interpolation equation" the +left hand side becomes : + +\f[ +\int_{T_i} \phi = Vol(T_i).\phi_{T_i}. +\f] + +Here Vol represents the volume when the mesh dimension is equal to 3, the +area when mesh dimension is equal to 2, and length when mesh dimension is equal to 1. + +In the \ref InterpKerGenralEq "general interpolation equation" the +right hand side becomes : + +\f[ +\sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi = \sum_{S_j\cap T_i \neq \emptyset} {Vol(T_i\cap S_j)}.\phi_{S_j}. +\f] + +As the field values are constant on each +cell, the coefficients of the linear remapping matrix \f$ W \f$ are +given by the formula : + +\f[ + W_{ij}=\frac{Vol(T_i\cap S_j)}{ Vol(T_i) }. +\f] + + +\section InterpKerP0P0Ext cell-cell (P0->P0) conservative remapping of extensive fields + +In code coupling from neutronics to hydraulics, \b extensive field +of power is exchanged and the total power should remain the same. +The discrete values of the field represent the total power contained in the cell. +Hence in the \ref InterpKerGenralEq "general interpolation equation" the +left hand side becomes : + +\f[ +\int_{T_i} \phi = P_{T_i}, +\f] + +while the right hand side is now : + +\f[ +\sum_{S_j\cap T_i \neq \emptyset} \int_{T_i\cap S_j} \phi = +\sum_{S_j\cap T_i \neq \emptyset} \frac{Vol(T_i\cap S_j)}{ Vol(S_j)}.P_{S_j}. +\f] + +The coefficients of the linear remapping matrix \f$ W \f$ are then +given by the formula : + +\f[ + W_{ij}=\frac{Vol(T_i\cap S_j)}{ Vol(S_j) }. +\f] + +\section TableNatureOfField Summary +In the case of fields with P0 representation, if the meshes do not overlap the scheme is either conservative or maximum preserving (not both) and depending on the prioritised property and the \ref NatureOfField the interpolation coefficients take the following value + + * + * + * + * + *
Intensive extensive
Conservation \f[\frac{Vol(T_i\cap S_j)}{ Vol(T_i)}\f]
ConservativeVolumic
\f[ \frac{Vol(T_i\cap S_j)}{ \sum_{T_i} Vol(S_j\cap T_i) }\f]
IntegralGlobConstraint
Maximum principle \f[\frac{Vol(T_i\cap S_j)}{ \sum_{S_j} Vol(T_i\cap S_j)}\f]
RevIntegral
\f[\frac{Vol(T_i\cap S_j)}{ Vol(S_j) }\f]
Integral
+ + +*/ + diff --git a/doc/doxygen/interptools.dox b/doc/doxygen/interptools.dox new file mode 100644 index 000000000..b52d689c4 --- /dev/null +++ b/doc/doxygen/interptools.dox @@ -0,0 +1,28 @@ +/*! +\page interptools Interpolation tools + +\section Presentation +The InterpKernel algorithms are part of the MED tool suite. They +answer to the following basic problem : given a source mesh \f$M_s\f$, a +source field \f$F_s\f$ and a target mesh \f$M_t\f$, reconstruct a field \f$F_t\f$ +that uses \f$M_t\f$ as a support. The InterpKernel suite gives a number of +possibilities to compute the target field, depending on a variety of +user constraints. + +\image html interpolationimage.png "General interpolation scheme" width=10cm + +The starting point for using the tools is the description of the two main different APIs. +- \ref RemapperClasses "Remapper class" and the underlying \ref interpkernel library for sequential codes using \ref medcoupling fields or other data structures. +- \ref paramedmem for parallel MPI based codes using \c ParaMEDMEM distributed fields, and the algorithms of the \ref interpkernel library. + +The possibilities encompass: +- 1D, 2D lines, 2D (\ref interpolation2D), 3D surfaces(\ref interpolation3Dsurf) and 3D(\ref interpolation3D) handling, +- computation via node localization (\ref pointlocator) or via cell intersection (\ref ConsInterp), +- treatment of extended polygons (where edges can be arcs or segments) +for 2D intersection computations via \ref interpkernelGeo2D, +- management of fields with P0,P1 or P2 representations. P0<->P0, P1<->P0, P1<->P1 and P2->P0 (non conservative) interpolators are available. + +In case of non \ref MeshOverlap "overlapping meshes", it is important to specify whether the field represents an extensive or intensive physical quantity through +the \ref NatureOfField attribute of the \ref medcoupling field. + +*/ \ No newline at end of file diff --git a/doc/doxygen/remapping.dox b/doc/doxygen/intersectors.dox similarity index 98% rename from doc/doxygen/remapping.dox rename to doc/doxygen/intersectors.dox index 9c0d229f1..f08f36241 100755 --- a/doc/doxygen/remapping.dox +++ b/doc/doxygen/intersectors.dox @@ -26,8 +26,8 @@ meshes with mixed triangular and quadrangular elements. - Geometric2D: Any type of 2D cells (linear, quadratic, convex-polygons, non-convex polygons) is supported by this algorithm. Due to its flexibility this algo is slower than the other. -- PointLocator: This is \b non \b conservative interpolator. For P0P0, it -locate the barycenter of target cell in the source cells. For P1P0, it +- \anchor pointlocator PointLocator: This is a \b non \b conservative interpolator. For P0P0, it +locates the barycenter of target cell in the source cells. For P1P0, it locates barycenter of target cell and compute barycentric coordinates in source cell (Works only with trangle). For P0P1 locate target nodes in source cells. For P1P1 compute for each target node its barycentric diff --git a/doc/doxygen/main.dox b/doc/doxygen/main.dox index cbc0828d7..a3d73913c 100644 --- a/doc/doxygen/main.dox +++ b/doc/doxygen/main.dox @@ -12,13 +12,12 @@ The install procedure of the %MEDMEM library can handle a variety of configurati to suit the needs of its user. Instructions for configuring and installing the library can be found in \ref medmem_install. \section outline Outline -This user guide contains three different chapters that covers the core %MEDMEM library, the %ParaMEDMEM library and the %MEDSPLITTER tool: +This user guide contains five different chapters that cover the core %MEDMEM and MEDCoupling libraries, the interpolation library and the associated tools: - Chapter \ref medcoupling describes DataStructures used for cross process exchange of meshes and fields. -- Chapter \ref paramedmem describes its MPI implementation, which is called %ParaMEDMEM. - Chapter \ref medloader describes API for I/O from or to a MED file coming from a \ref medcoupling data structure. -- Chapter \ref interpkernel describes the interpolation and localization library. +- Chapter \ref interptools describes the interpolation and localization library. - Chapter \ref medmem covers the %MEDMEM core library, i.e. the implementation of meshes, supports and fields and the associated drivers (for MED-file, VTK, GIBI). - Chapter \ref tools describes various tools based on MEDMEM that can be helpful for handling MED files (conversion tools and splitting tools). diff --git a/doc/doxygen/medcoupling.dox b/doc/doxygen/medcoupling.dox index f5a34e77d..3a86a1bde 100644 --- a/doc/doxygen/medcoupling.dox +++ b/doc/doxygen/medcoupling.dox @@ -27,11 +27,11 @@ MEDCoupling array. This concept is used all over MEDCoupling/ParaMEDMEM/MEDLoader modules so it should be correctly handled to play well with \ref MEDCouplingMeshesP "Meshes" and \ref MEDCouplingFieldsP "Fields". -It exists two type of arrays : +There are two types of arrays : - double precision float array incarnated by ParaMEDMEM::DataArrayDouble class. - integer array incarnated by ParaMEDMEM::DataArrayInt class. -To know more about arrays \ref MEDCouplingArrayPage "click here for arrays documentation". +To learn more about arrays \ref MEDCouplingArrayPage "click here for arrays documentation". \section MEDCouplingMainConc Main Concepts @@ -48,7 +48,7 @@ Here we will create a mesh with spacedim==2 and meshdim==2 too with 5 cells and 9 nodes. You can notice that it is possible to mix cell -types as you want as long as the dimension of cell is exactly equal to +types as long as the dimension of cell is exactly equal to meshDim to respect \ref MEDCouplingMeshes "this rule". \code @@ -317,7 +317,7 @@ The main properties of a field are : - name - spatial support which is a \ref MEDCouplingMeshesP "mesh" - a \ref MEDCouplingSpatialDisc "spatial discretization" -- a description of intrinsic nature of the values of field. This is important for conservative interpolation. +- a description of intrinsic nature of the values of field (see \ref NatureOfField). This is important for conservative interpolation (see \ref TableNatureOfField). - a temporal discretization that specifies, if it exists, the time interval on which the field is covering, and how. - number of components @@ -556,3 +556,53 @@ Method in new to old mode that works on surjective applications : - \ref ParaMEDMEM::DataArrayDouble::selectByTupleId "DataArrayDouble::selectByTupleId" */ + +/*! + \defgroup NatureOfField Nature of a field + + \section IntExtFields Overview: intensive and extensive field + +\c NatureOfField is an enum which helps determining some physical significance of the field and affects the choice of interpolation formula ( see \ref TableNatureOfField). +It has five possible values: +- "NoNature", the default value, does not allow the use of interpolation tools +- "ConservativeVolumic", for intensive field with conservativity favored over the maximum principle +- "Integral", for extensive field with the maximum principle favored over conservativity +- "IntegralGlobConstraint", for extensive fields with conservativity favored over the maximum principle +- "RevIntegral", for intensive field with the maximum principle favored over conservativity + +By an intensive field we mean a field that represent volumetric or intensive physical variable such as density (\f$kg.m^{-3}\f$), temperature (\f$\circ K\f$) or pressure (\f$Pa\f$). +By extensive (or integral) field we mean a field that represents an extensive physical quantity sych as mass (\f$kg\f$), volume (\f$m^3\f$), a momentum (\f$kg.m.s^{-1}\f$) or power \f$(W\f$). +For fields with a P0 representation, conservativity formulas are different depending on whether the field is extensive or intensive (see \ref InterpKerP0P0Int and \ref InterpKerP0P0Ext). +In some cases such a non \ref MeshOverlap "overlapping meshes", it is impossible to fulfill both conservation and maximum principle during the interpolation. The nature of the fields determines the formula to be used for non overlapped cells and thus the property that we will be satisfied. +We consider that fields with P1 or P2 representations are necessarily intensive. + +\section Usage + +In order to employ the various \ref interptools, it is important to specify the nature of your field. +In case the sources and target meshes do not overlap different treatments will be employed, depending on the nature of the source and target fields. +You can specify the nature of the field when you create a \ref medcoupling field with the following constructor: +\code +MEDCouplingFieldDouble(NatureOfField n, MEDCouplingTimeDiscretization *td, MEDCouplingFieldDiscretization *type); +\endcode + +If you read or copy an already existing field, or later after its creation, you may want to change/set its nature. +In order to do so, you can use the function + +\code +void setNature(NatureOfField nat); +\endcode + +Here is an example + +\code +... +const char sourceFileName[]="source.med"; +MEDCouplingFieldDouble *sourceField=MEDLoader::ReadFieldCell(sourceFileName,"Source_Mesh",0,"Density",/*iteration*/0,/*order*/0); +const char targetFileName[]="target.med"; +MEDCouplingUMesh *med_target_mesh=MEDLoader::ReadUMeshFromFile(targetFileName,"Target_Mesh",0); +// +sourceField->setNature(ConservativeVolumic); +... +\endcode + +*/ \ No newline at end of file diff --git a/doc/doxygen/medloader.dox b/doc/doxygen/medloader.dox index 344a8422d..d1bb0fe29 100644 --- a/doc/doxygen/medloader.dox +++ b/doc/doxygen/medloader.dox @@ -1,5 +1,5 @@ /*! -\page medloader %MEDLoader +\page medloader MEDLoader \section MEDLoaderIntro Introduction @@ -39,7 +39,7 @@ behaviour of these two methods can vary. */ /*! -\page MEDLoaderBasicAPI Basic %MEDLoader API. +\page MEDLoaderBasicAPI Basic MEDLoader API. The aim of this page is to present basic API of MEDLoader. The goal of this basic API is to perform a read or a write in one shot without any diff --git a/doc/doxygen/medmem.dox b/doc/doxygen/medmem.dox index 41332123e..f0918773d 100644 --- a/doc/doxygen/medmem.dox +++ b/doc/doxygen/medmem.dox @@ -226,21 +226,37 @@ http://hammi.extra.cea.fr/static/MED/web_med/logiciels/med-2.3.1/doc/ . The ParaMEDMEM library is based on several classes that -describe the coupling between two parallel codes. +describe the coupling between two MPI-based parallel codes. The classes that make up the API of the library are : - communication interface : \ref comm_interface, - definition of processor groups : \ref processor_group, - Data Exchange Channel \ref dec, and its implementations : - \ref interpkerneldec for a \ref InterpKerRemapGlobal based on intersecting elements volume computation, - - \ref noncoincidentdec for a non-conservative interpolation based on element localization, - - \ref structuredcoincidentdec for remapping coincident meshes on a one-to-one basis. This class applies to structured topologies. - - \ref explicitcoincidentdec for remapping coincident meshes on a one-to-one basis. This class applies to unstructured topologies, + - (obsolete ?) \ref noncoincidentdec for a non-conservative interpolation based on element localization, + - (obsolete ?) \ref structuredcoincidentdec for remapping coincident meshes on a one-to-one basis. This class applies to structured topologies. + - (obsolete ?) \ref explicitcoincidentdec for remapping coincident meshes on a one-to-one basis. This class applies to unstructured topologies, - \ref overlapdec based on intersecting elems volume computation when source and target meshes are on same process id +Given two groups of processors groupA (source) and groupB (target), the following code excerpt gives a typical use of the InterpKernelDEC class. + + \code + ... + InterpKernelDEC dec(groupA, groupB);//creates the data exchange channel + dec.attachLocalField(field);//associate the local field + dec.synchronize();//builds the interpolation matrix + if (groupA.containsMyRank()) + dec.recvData();//receive the target field + else if (groupB.containsMyRank()) + dec.sendData();//send the source field + ... + \endcode +The generation of the \ref interpolationmatrix "interpolation matrix" and the corresponding matrix-vector products are performed either on the source, either on the target side. + */ + /*! \page medmem_install Configuring and Installing MEDMEM from sources diff --git a/doc/doxygen/remapper.dox b/doc/doxygen/remapper.dox new file mode 100644 index 000000000..fd20f98a4 --- /dev/null +++ b/doc/doxygen/remapper.dox @@ -0,0 +1,96 @@ + +/*! +\page RemapperClasses The REMAPPER class. + +\section InterpKerHighLevUsage High-level usage + +The simplest way of using the \ref interptools in sequential mode is to use the class \c ParaMEDMEM::MEDCouplingRemapper . This class fulfills \c HXX2SALOME rules and may be used in YACS coupling graphs. + +- If you intend to use \ref MEDCoupling data structure, ParaMEDMEM::MEDCouplingRemapper class should be used : + +\code +... +const char sourceFileName[]="source.med"; +MEDCouplingFieldDouble *sourceField=MEDLoader::ReadFieldCell(sourceFileName,"Source_Mesh",0,"Density",/*iteration*/0,/*order*/0); +const char targetFileName[]="target.med"; +MEDCouplingUMesh *med_target_mesh=MEDLoader::ReadUMeshFromFile(targetFileName,"Target_Mesh",0); +// +sourceField->setNature(ConservativeVolumic);//Specify which formula to use in case of non overlapping meshes +MEDCouplingRemapper remapper; +remapper.setPrecision(1e-12); +remapper.setIntersectionType(INTERP_KERNEL::Triangulation); +remapper.prepare(sourceField->getMesh(),med_target_mesh,"P0P0"); +MEDCouplingFieldDouble *targetField=remapper.transferField(sourceField,/*default_value*/4.57);//Any target cell not intercepted by any source cell will have value set to 4.57. +... +// clean-up +targetField->decrRef(); +sourceField->decrRef(); +med_target_mesh->decrRef(); +\endcode + +(Note that the same API can be used with \ref medmem field instead of \ref medcoupling fields using another remapper class \ref medmemremapper.) + + +\section InterpKerMidLevUsage Middle-level usage + +This mode is the mode that needs the minimum of prerequisites +(algorithms and the datastructure you intend to use). On the other +hand it is needed to specify precisely nature of interpolator. + +As consequence of the genericity of the interpolators, they are usable only by +instanciating an underlying \ref InterpKerMeshType "mesh" and \ref InterpKerMatrixType "matrix" data structure fulfilling some requirements. The two following +examples show how to use interpolator at this level. + +- The simplest way to use the interpolator with \ref medcoupling datastruture is illustrated in the following example. + +\code +... +MEDCouplingUMesh *med_source_mesh=MEDLoader::ReadUMeshFromFile("source.med","Source_mesh",0); +MEDCouplingUMesh *med_target_mesh=MEDLoader::ReadUMeshFromFile("target.med","Target_mesh",0); +MEDCouplingNormalizedUnstructuredMesh<2,2> wrap_source_mesh(med_source_mesh); +MEDCouplingNormalizedUnstructuredMesh<2,2> wrap_target_mesh(med_target_mesh); +// Go for interpolation... +INTERP_KERNEL::Interpolation2D myInterpolator; +myInterpolator.setPrecision(1e-7); +myInterpolator.setIntersectionType(INTERP_KERNEL::Geometric2D); +std::vector > resultMatrix; +INTERP_KERNEL::Matrix resultMatrix2; +// here the interpolation is performed twice for this code to illustrate the possibility of storing data the interpolation matrix in 2 different data structures. +myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix,"P0P0"); +myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix2,"P0P0"); +//Ok resultMatrix and resultMatrix2 contain matrix now +... +\endcode + + +- Same with VTK datastructure : + +\code +... +vtkXMLUnstructuredGridReader *readerSource=vtkXMLUnstructuredGridReader::New(); +readerSource->SetFileName("source.vtu"); +vtkUnstructuredGrid *vtk_source_mesh=readerSource->GetOutput(); +readerSource->Update(); +vtkXMLUnstructuredGridReader *readerTarget=vtkXMLUnstructuredGridReader::New(); +readerTarget->SetFileName("target.vtu"); +vtkUnstructuredGrid *vtk_target_mesh=readerTarget->GetOutput(); +readerTarget->Update(); +// Ok at this point we have our mesh in VTK format. +// Go to wrap vtk_source_mesh and vtk_target_mesh. +VTKNormalizedUnstructuredMesh<2> wrap_source_mesh(vtk_source_mesh); +VTKNormalizedUnstructuredMesh<2> wrap_target_mesh(vtk_target_mesh); +// Go for interpolation... +INTERP_KERNEL::Interpolation2D myInterpolator; +//optionnal call to parametrize your interpolation. First precision, tracelevel, intersector wanted. +myInterpolator.setOptions(1e-7,0,Geometric2D); +INTERP_KERNEL::Matrix resultMatrix; +myInterpolator.interpolateMeshes(wrap_source_mesh,wrap_target_mesh,resultMatrix,"P0P0"); +//Ok let's multiply resultMatrix by source field to interpolate to target field. +resultMatrix.multiply(...) +//clean-up +readerSource->Delete(); +readerTarget->Delete(); +... +\endcode + +*/ \ No newline at end of file -- 2.39.2