1 #include "MEDMEM_Meshing.hxx"
2 #include "MEDMEM_Field.hxx"
5 using namespace MEDMEM;
6 using namespace MED_EN;
8 int main (int argc, char ** argv) {
9 double Coordinates[57] = {
30 const int REFnodalConnOfFaces[74] = {
31 1, 2, 3, 4, 5, 6, // Polyhedron 1
41 13, 14, 15, 3, 2, // Polyhedron 2
52 const int REFfacesIndex[20] = {
53 1, 7, 11, 15, 19, 23, 27, 31, 34,
54 39, 44, 48, 52, 55, 58, 61, 64, 68, 72, 75};
56 const int REFpolyIndex[3] = {1, 10, 20};
58 double PolygonCoordinates[27] = {
69 const int REFpolygonFaces[11] = {
70 1, 2, 3, 4, 5, 6, // Polygon 1
71 7, 8, 9, 3, 2}; // Polygon 2
73 const int REFpolygonIndex[3] = {1, 7, 12};
76 myMeshing.setName("meshing");
78 int NumberOfNodes = 19;
79 int SpaceDimension = 3;
80 int MeshDimension = 3;
82 const int NumberOfTypes = 1;
83 medGeometryElement Types[NumberOfTypes] = {MED_TETRA4};
84 const int NumberOfElements[NumberOfTypes] = {1};
86 myMeshing.setNumberOfTypes(NumberOfTypes, MED_CELL);
88 myMeshing.setCoordinates(SpaceDimension, NumberOfNodes, Coordinates,
89 "CARTESIAN", MED_FULL_INTERLACE);
90 myMeshing.setSpaceDimension(SpaceDimension);
91 myMeshing.setMeshDimension(MeshDimension);
92 myMeshing.setTypes(Types, MED_CELL);
93 myMeshing.setNumberOfElements(NumberOfElements, MED_CELL);
95 string Names[3] = {"X","Y","Z"};
96 myMeshing.setCoordinatesNames(Names);
98 string Units[3] = {"cm","cm","cm"};
99 myMeshing.setCoordinatesUnits(Units);
101 const int sizeTetra = 4*1 ;
102 int ConnectivityTetra[sizeTetra]=
107 myMeshing.setConnectivity(ConnectivityTetra, MED_CELL, MED_TETRA4);
109 myMeshing.setPolyhedraConnectivity(REFpolyIndex, REFfacesIndex,
110 REFnodalConnOfFaces, 2, MED_CELL);
113 MESHING myPolygonMeshing;
114 myPolygonMeshing.setName("PolygonMeshing");
119 medGeometryElement PolygonTypes[NumberOfTypes] = {MED_TRIA3};
120 const int PolygonNumberOfElements[NumberOfTypes] = {2};
122 myPolygonMeshing.setNumberOfTypes(NumberOfTypes, MED_CELL);
124 myPolygonMeshing.setCoordinates(SpaceDimension, NumberOfNodes, PolygonCoordinates,
125 "CARTESIAN", MED_FULL_INTERLACE);
126 myPolygonMeshing.setSpaceDimension(SpaceDimension);
127 myPolygonMeshing.setMeshDimension(MeshDimension);
128 myPolygonMeshing.setTypes(PolygonTypes, MED_CELL);
129 myPolygonMeshing.setNumberOfElements(PolygonNumberOfElements, MED_CELL);
131 myPolygonMeshing.setCoordinatesNames(Names);
132 myPolygonMeshing.setCoordinatesUnits(Units);
134 const int sizeTri = 3*2 ;
135 int ConnectivityTri[sizeTri]=
140 myPolygonMeshing.setConnectivity(ConnectivityTri, MED_CELL, MED_TRIA3);
141 myPolygonMeshing.setPolygonsConnectivity(REFpolygonIndex, REFpolygonFaces, 2, MED_CELL);
142 SUPPORT *sup2 = new SUPPORT(&myPolygonMeshing);
143 FIELD<double> *areas = myPolygonMeshing.getArea(sup2);
144 const double *vals2 = areas->getValue(MED_FULL_INTERLACE);
145 const double REFAreaOfPolyg[4] ={1.5, 2, 6, 6.5};
149 if(fabs(REFAreaOfPolyg[i]-vals2[i])<1e-12)
154 SUPPORT *sup = new SUPPORT(&myMeshing);
155 FIELD<double> *vols = myMeshing.getVolume(sup);
156 const double *vals = vols->getValue(MED_FULL_INTERLACE);
157 const double REFVolOfPolyHedron[3] = {2.333333333333333, 11.66666666666666, 13.83224131414673};
159 if(fabs(REFVolOfPolyHedron[i]-vals[i])<1e-12)
166 cout << "ALL TESTS OK !!!" << endl;
171 cout << "TEST FAILS !!!" << endl;