1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 #include "MEDMEM_Meshing.hxx"
5 #include "MEDMEM_Group.hxx"
7 using namespace MEDMEM ;
8 using namespace MED_EN ;
12 int main (int argc, char ** argv) {
14 // filename to save the generated MESH
15 string filename = "meshing.med" ;
18 myMeshing.setName("meshing") ;
22 int SpaceDimension = 3 ;
23 int NumberOfNodes = 19 ;
24 double Coordinates[57] = {
46 myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,"CARTESIAN",MED_FULL_INTERLACE);
48 string Names[3] = { "X","Y","Z" } ;
49 myMeshing.setCoordinatesNames(Names);
51 string Units[3] = { "cm","cm","cm" } ;
52 myMeshing.setCoordinatesUnits(Units) ;
54 // define conectivities
58 const int NumberOfTypes = 3 ;
59 medGeometryElement Types[NumberOfTypes] = {MED_TETRA4,MED_PYRA5,MED_HEXA8} ;
60 const int NumberOfElements[NumberOfTypes] = {12,2,2} ;
62 myMeshing.setNumberOfTypes(NumberOfTypes,MED_CELL);
63 myMeshing.setTypes(Types,MED_CELL);
64 myMeshing.setNumberOfElements(NumberOfElements,MED_CELL);
66 const int sizeTetra = 12*4 ;
67 int ConnectivityTetra[sizeTetra]=
83 myMeshing.setConnectivity(ConnectivityTetra,MED_CELL,MED_TETRA4);
85 int ConnectivityPyra[2*5]=
91 myMeshing.setConnectivity(ConnectivityPyra,MED_CELL,MED_PYRA5);
93 int ConnectivityHexa[2*8]=
96 15,16,17,18,11,12,13,14
99 myMeshing.setConnectivity(ConnectivityHexa,MED_CELL,MED_HEXA8);
103 const int NumberOfFacesTypes = 2 ;
104 medGeometryElement FacesTypes[NumberOfFacesTypes] = {MED_TRIA3,MED_QUAD4} ;
105 const int NumberOfFacesElements[NumberOfFacesTypes] = {4,4} ;
107 myMeshing.setNumberOfTypes(NumberOfFacesTypes,MED_FACE);
108 myMeshing.setTypes(FacesTypes,MED_FACE);
109 myMeshing.setNumberOfElements(NumberOfFacesElements,MED_FACE);
111 const int sizeTria = 3*4 ;
112 int ConnectivityTria[sizeTria]=
120 myMeshing.setConnectivity(ConnectivityTria,MED_FACE,MED_TRIA3);
122 int ConnectivityQua[4*4]=
130 myMeshing.setConnectivity(ConnectivityQua,MED_FACE,MED_QUAD4);
134 // not yet implemented : if set, results are unpredictable.
141 myGroup.setName("SomeNodes");
142 myGroup.setMesh(&myMeshing);
143 myGroup.setEntity(MED_NODE);
144 myGroup.setNumberOfGeometricType(1);
145 medGeometryElement myTypes[1] = {MED_NONE};
146 myGroup.setGeometricType(myTypes);
147 const int myNumberOfElements[1] = {4} ;
148 myGroup.setNumberOfElements(myNumberOfElements);
149 const int index[1+1] = {1,5} ;
150 const int value[4]= { 1,4,5,7} ;
151 myGroup.setNumber(index,value);
153 myMeshing.addGroup(myGroup);
157 myGroup.setName("OtherNodes");
158 myGroup.setMesh(&myMeshing);
159 myGroup.setEntity(MED_NODE);
160 myGroup.setNumberOfGeometricType(1);
161 medGeometryElement myTypes[1] = {MED_NONE};
162 myGroup.setGeometricType(myTypes);
163 const int myNumberOfElements[1] = {3} ;
164 myGroup.setNumberOfElements(myNumberOfElements);
165 const int index[1+1] = {1,4} ;
166 const int value[3]= { 2,3,6} ;
167 myGroup.setNumber(index,value);
169 myMeshing.addGroup(myGroup);
175 myGroup.setName("SomeCells");
176 myGroup.setMesh(&myMeshing);
177 myGroup.setEntity(MED_CELL);
178 myGroup.setNumberOfGeometricType(3);
179 medGeometryElement myTypes[3] = {MED_TETRA4,MED_PYRA5,MED_HEXA8};
180 myGroup.setGeometricType(myTypes);
181 const int myNumberOfElements[3] = {4,1,2} ;
182 myGroup.setNumberOfElements(myNumberOfElements);
183 const int index[3+1] = {1,5,6,8} ;
184 const int value[4+1+2]=
190 myGroup.setNumber(index,value);
192 myMeshing.addGroup(myGroup);
196 myGroup.setName("OtherCells");
197 myGroup.setMesh(&myMeshing);
198 myGroup.setEntity(MED_CELL);
199 myGroup.setNumberOfGeometricType(2);
200 medGeometryElement myTypes[] = {MED_TETRA4,MED_PYRA5};
201 myGroup.setGeometricType(myTypes);
202 const int myNumberOfElements[] = {4,1} ;
203 myGroup.setNumberOfElements(myNumberOfElements);
204 const int index[3+1] = {1,5,6} ;
205 const int value[4+1]=
210 myGroup.setNumber(index,value);
212 myMeshing.addGroup(myGroup);
218 myGroup.setName("SomeFaces");
219 myGroup.setMesh(&myMeshing);
220 myGroup.setEntity(MED_FACE);
221 myGroup.setNumberOfGeometricType(2);
222 medGeometryElement myTypes[2] = {MED_TRIA3,MED_QUAD4};
223 myGroup.setGeometricType(myTypes);
224 const int myNumberOfElements[2] = {2,3} ;
225 myGroup.setNumberOfElements(myNumberOfElements);
226 const int index[2+1] = {1,3,6} ;
227 const int value[2+3]=
232 myGroup.setNumber(index,value);
234 myMeshing.addGroup(myGroup);
238 myGroup.setName("OtherFaces");
239 myGroup.setMesh(&myMeshing);
240 myGroup.setEntity(MED_FACE);
241 myGroup.setNumberOfGeometricType(1);
242 medGeometryElement myTypes[1] = {MED_TRIA3};
243 myGroup.setGeometricType(myTypes);
244 const int myNumberOfElements[1] = {2} ;
245 myGroup.setNumberOfElements(myNumberOfElements);
246 const int index[1+1] = {1,3} ;
251 myGroup.setNumber(index,value);
253 myMeshing.addGroup(myGroup);
256 // all rigtht, we save it !
258 int id = myMeshing.addDriver(MED_DRIVER,filename,myMeshing.getName());
259 myMeshing.write(id) ;