Salome HOME
Changes in doc organization.
[modules/med.git] / doc / doxygen / input / medcoupling / MEDCouplingUMesh.dox
1
2 /*!
3   \page MEDCouplingUMeshPage Unstructured meshes in MEDCoupling
4
5 [TOC]
6
7 An unstructured mesh in \ref medcoupling MEDCoupling is defined by :
8
9   - a point cloud where the explicit coordinates of each point must be specified (inherited from \subpage MEDCouplingPointSetPage "MEDCouplingPointSet class").
10   - nodal connectivity that specifies for each cell, the points in the previous point cloud that constitutes the cell.
11
12 As unstructured mesh is dynamically defined enough, this class is also used by MEDCoupling to instantiate degenerated meshes as :
13
14 - point cloud only meshes. This type of mesh will have mesh dimension 0.
15 - abstract meshes containing only one cell that covers a potentially
16   infinite space. This abstract mesh is used as support of fields
17   containing only one integrated value. This is typically used to
18   represent fields used by system code. This type of mesh will have
19   mesh dimension equal to -1.
20
21 The norm used for cells connectivity of different types, is the same as specified in MED file except
22 that connectivities are represented in \b C \b format and \b not \b in \b FORTRAN \b format !
23
24 The class that incarnates the described concept is : ParaMEDMEM::MEDCouplingUMesh.
25 \n This class inherits from ParaMEDMEM::MEDCouplingPointSet abstract class.
26 \n So \ref MEDCouplingUMeshPage "MEDCouplingUMesh" inherits from all \ref MEDCouplingPointSetPage "point set features".
27
28 \section MEDCouplingUMeshStdBuild Standard building of an unstructured mesh  from scratch
29
30 The described method here is called standard, because no special knowledge of underneath nodal connectivity is needed here.
31 This method of building unstructured mesh is easiest but not the most CPU/memory efficient one.
32
33 All of examples given here make the assumption that the \c ParaMEDMEM namespace is visible ( by calling for example \c using \c namespace \c ParaMEDMEM; ).
34
35 Here we will create a mesh with spacedim==3 and meshdim==2. \b mesh contains 5 cells (with geometric type INTERP_KERNEL::NORM_TRI3, INTERP_KERNEL::NORM_QUAD4)
36 and 9 nodes.
37
38 You can notice that it is possible to mix cell types as long as the dimension of cell is exactly equal to meshDim to respect \ref MEDCouplingMeshes "this rule".
39
40 \subpage medcouplingcppexamplesUmeshStdBuild1 "Here is the C++ implementation."
41
42 \subpage medcouplingpyexamplesUmeshStdBuild1 "Here is the Python implementation."
43
44 \section MEDCouplingUMeshNodalConnectivity How MEDCouplingUMesh stores its nodal connectivity
45
46 \ref ParaMEDMEM::MEDCouplingUMesh "MEDCouplingUMesh class" stores its nodal connectivity into 2 arrays.
47
48 - The first one, the biggest is ParaMEDMEM::MEDCouplingUMesh::_nodal_connectivity.
49 - The second one, the less big is ParaMEDMEM::MEDCouplingUMesh::_nodal_connectivity_index.
50
51 \image html MEDCouplingUMeshConn.png "Nodal connectivity storage into MEDCouplingUMesh class"
52 \image latex MEDCouplingUMeshConn.eps "Nodal connectivity storage into MEDCouplingUMesh class"
53
54 \note The last value of the nodal connectivity index points to an invalid memory place. It is not an error, simply as for standard C++, all ranges
55 are given in format [\b begin,\b end) where \b begin is included and \b end excluded.
56
57 \section MEDCouplingUMeshAdvBuild Advanced building of an unstructured mesh  from scratch
58
59 Here we are going to build the mesh in a more advanced manner. This method expects that the user knows the storage format underlying ParaMEDMEM::MEDCouplingUMesh.
60
61 The same mesh than \ref MEDCouplingUMeshStdBuild "in the standard section above" is going to be implemented using advanced method.
62
63 \subpage medcouplingcppexamplesUmeshAdvBuild1 "Here the C++ implementation."
64
65 \subpage medcouplingpyexamplesUmeshAdvBuild1 "Here the Python implementation."
66
67 */