Salome HOME
Merge branch 'master' of https://codev-tuleap.cea.fr/plugins/git/salome/medcoupling
[tools/medcoupling.git] / doc / user / doxygen / doxfiles / reference / interpolation / intro-interp.dox
1 /*!
2 \page intro-interp Interpolation presentation
3
4 \section interp-over Overview
5
6 The InterpKernel algorithms are part of the MED tool suite. They
7 answer to the following basic problem : given a source mesh \f$M_s\f$, a
8 source field \f$F_s\f$ and a target mesh \f$M_t\f$, reconstruct a field \f$F_t\f$
9 that uses \f$M_t\f$ as a support. The InterpKernel suite gives a number of
10 possibilities to compute the target field, depending on a variety of
11 user constraints.
12
13 \image html interpolationimage.png "General interpolation scheme" width=10cm
14
15 Two different APIs are available depending on whether you run sequentially or in parallel:
16 - the \ref remapper "remapper class" (based on the underlying \ref interpkernel "InterpKernel" library) 
17 for sequential codes, which uses MEDCoupling \ref fields "fields" and other core data structures.
18 - the \ref parallel "ParaMEDMEM API" for parallel MPI based codes using \c %ParaMEDMEM distributed fields
19 (\ref MEDCoupling::ParaFIELD "ParaFIELD"), which is also based on the algorithms of the 
20 \ref interpkernel "InterpKernel" library.
21
22 The following space/mesh dimensions are covered:
23 - 1D, 2D lines, 2D surfaces (\ref interpolation2D), 
24 - 3D surfaces (\ref interpolation3Dsurf) 
25 - and 3D volumes (\ref interpolation3D)
26
27 The interpolation is performed either by:
28 - node localization (\ref pointlocator "PointLocator"), when for example a node field is projected to a cell field
29 - or via cell intersection (\ref ConsInterp), when for example a cell field is projected to another cell field.
30 For any given type of interpolation involving cell intersection computation, the computation of 
31 interpolation matrix W is performed in two steps :
32     -# A filtering process reduces the number of pairs of elements for which the calculation 
33 must be carried out by eliminating the pairs whose bounding boxes do not intersect.
34     -# For all remaining pairs, call the appropriate \ref InterpKerIntersectors "cell intersector"
35
36 More complex treatments are also available:
37 - treatment of extended polygons (where edges can be arcs or segments)
38 for 2D intersection computations, via the \ref interpkernelGeo2D "Geometric2D intersector",
39
40 Finally the following types of \ref discretization "spatial discretization" combinations are supported: 
41 - management of fields with P0,P1 or P2 representations
42 - P0<->P0, P1<->P0, P1<->P1 and P2->P0 (non conservative) interpolators are available.
43
44 Remember that whatever the situation you face, you must always specify whether the field 
45 represents an extensive or intensive physical quantity through 
46 the \ref NatureOfField "nature" attribute of the \ref fields "field".
47
48 \section interp-api Key elements of the API
49
50 TODO, list setOption, setIntersectionType, etc ...
51
52 */