1 #include "MEDMEM_Meshing.hxx"
2 #include "MEDMEM_Field.hxx"
3 #include "LocalTraceCollector.hxx"
6 using namespace MEDMEM;
7 using namespace MED_EN;
9 int main (int argc, char ** argv) {
10 LocalTraceCollector::instance();
12 double Coordinates[57] = {
33 const int REFnodalConnOfFaces[74] = {
34 1, 2, 3, 4, 5, 6, // Polyhedron 1
44 13, 14, 15, 3, 2, // Polyhedron 2
55 const int REFfacesIndex[20] = {
56 1, 7, 11, 15, 19, 23, 27, 31, 34,
57 39, 44, 48, 52, 55, 58, 61, 64, 68, 72, 75};
59 const int REFpolyIndex[3] = {1, 10, 20};
61 double PolygonCoordinates[27] = {
72 const int REFpolygonFaces[11] = {
73 1, 2, 3, 4, 5, 6, // Polygon 1
74 7, 8, 9, 3, 2}; // Polygon 2
76 const int REFpolygonIndex[3] = {1, 7, 12};
79 myMeshing.setName("meshing");
81 int NumberOfNodes = 19;
82 int SpaceDimension = 3;
83 int MeshDimension = 3;
85 const int NumberOfTypes = 1;
86 medGeometryElement Types[NumberOfTypes] = {MED_TETRA4};
87 const int NumberOfElements[NumberOfTypes] = {1};
89 myMeshing.setNumberOfTypes(NumberOfTypes, MED_CELL);
91 myMeshing.setCoordinates(SpaceDimension, NumberOfNodes, Coordinates,
92 "CARTESIAN", MED_FULL_INTERLACE);
93 myMeshing.setSpaceDimension(SpaceDimension);
94 myMeshing.setMeshDimension(MeshDimension);
95 myMeshing.setTypes(Types, MED_CELL);
96 myMeshing.setNumberOfElements(NumberOfElements, MED_CELL);
98 string Names[3] = {"X","Y","Z"};
99 myMeshing.setCoordinatesNames(Names);
101 string Units[3] = {"cm","cm","cm"};
102 myMeshing.setCoordinatesUnits(Units);
104 const int sizeTetra = 4*1 ;
105 int ConnectivityTetra[sizeTetra]=
110 myMeshing.setConnectivity(ConnectivityTetra, MED_CELL, MED_TETRA4);
112 myMeshing.setPolyhedraConnectivity(REFpolyIndex, REFfacesIndex,
113 REFnodalConnOfFaces, 2, MED_CELL);
116 MESHING myPolygonMeshing;
117 myPolygonMeshing.setName("PolygonMeshing");
122 medGeometryElement PolygonTypes[NumberOfTypes] = {MED_TRIA3};
123 const int PolygonNumberOfElements[NumberOfTypes] = {2};
125 myPolygonMeshing.setNumberOfTypes(NumberOfTypes, MED_CELL);
127 myPolygonMeshing.setCoordinates(SpaceDimension, NumberOfNodes, PolygonCoordinates,
128 "CARTESIAN", MED_FULL_INTERLACE);
129 myPolygonMeshing.setSpaceDimension(SpaceDimension);
130 myPolygonMeshing.setMeshDimension(MeshDimension);
131 myPolygonMeshing.setTypes(PolygonTypes, MED_CELL);
132 myPolygonMeshing.setNumberOfElements(PolygonNumberOfElements, MED_CELL);
134 myPolygonMeshing.setCoordinatesNames(Names);
135 myPolygonMeshing.setCoordinatesUnits(Units);
137 const int sizeTri = 3*2 ;
138 int ConnectivityTri[sizeTri]=
143 myPolygonMeshing.setConnectivity(ConnectivityTri, MED_CELL, MED_TRIA3);
144 myPolygonMeshing.setPolygonsConnectivity(REFpolygonIndex, REFpolygonFaces, 2, MED_CELL);
145 SUPPORT *sup2 = new SUPPORT(&myPolygonMeshing);
146 FIELD<double> *areas = myPolygonMeshing.getArea(sup2);
147 const double *vals2 = areas->getValue(MED_FULL_INTERLACE);
148 const double REFAreaOfPolyg[4] ={1.5, 2, 6, 6.5};
152 if(fabs(REFAreaOfPolyg[i]-vals2[i])<1e-12)
157 SUPPORT *sup = new SUPPORT(&myMeshing);
158 FIELD<double> *vols = myMeshing.getVolume(sup);
159 const double *vals = vols->getValue(MED_FULL_INTERLACE);
160 const double REFVolOfPolyHedron[3] = {2.333333333333333, 11.66666666666666, 13.83224131414673};
162 if(fabs(REFVolOfPolyHedron[i]-vals[i])<1e-12)
169 cout << "ALL TESTS OK !!!" << endl;
174 cout << "TEST FAILS !!!" << endl;