1 // Copyright (C) 2005 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License.
9 // This library is distributed in the hope that it will be useful
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 // See http://www.salome-platform.org/
20 #include "MEDMEM_Meshing.hxx"
21 #include "MEDMEM_Group.hxx"
23 using namespace MEDMEM ;
24 using namespace MED_EN ;
28 int main (int argc, char ** argv) {
30 // filename to save the generated MESH
31 string filename = "meshing.med" ;
34 myMeshing.setName("meshing") ;
38 int SpaceDimension = 3 ;
39 int NumberOfNodes = 19 ;
40 double Coordinates[57] = {
62 myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,"CARTESIAN",MED_FULL_INTERLACE);
64 string Names[3] = { "X","Y","Z" } ;
65 myMeshing.setCoordinatesNames(Names);
67 string Units[3] = { "cm","cm","cm" } ;
68 myMeshing.setCoordinatesUnits(Units) ;
70 // define conectivities
74 const int NumberOfTypes = 3 ;
75 medGeometryElement Types[NumberOfTypes] = {MED_TETRA4,MED_PYRA5,MED_HEXA8} ;
76 const int NumberOfElements[NumberOfTypes] = {12,2,2} ;
78 myMeshing.setNumberOfTypes(NumberOfTypes,MED_CELL);
79 myMeshing.setTypes(Types,MED_CELL);
80 myMeshing.setNumberOfElements(NumberOfElements,MED_CELL);
82 const int sizeTetra = 12*4 ;
83 int ConnectivityTetra[sizeTetra]=
99 myMeshing.setConnectivity(ConnectivityTetra,MED_CELL,MED_TETRA4);
101 int ConnectivityPyra[2*5]=
107 myMeshing.setConnectivity(ConnectivityPyra,MED_CELL,MED_PYRA5);
109 int ConnectivityHexa[2*8]=
111 11,12,13,14,7,8,9,10,
112 15,16,17,18,11,12,13,14
115 myMeshing.setConnectivity(ConnectivityHexa,MED_CELL,MED_HEXA8);
119 const int NumberOfFacesTypes = 2 ;
120 medGeometryElement FacesTypes[NumberOfFacesTypes] = {MED_TRIA3,MED_QUAD4} ;
121 const int NumberOfFacesElements[NumberOfFacesTypes] = {4,4} ;
123 myMeshing.setNumberOfTypes(NumberOfFacesTypes,MED_FACE);
124 myMeshing.setTypes(FacesTypes,MED_FACE);
125 myMeshing.setNumberOfElements(NumberOfFacesElements,MED_FACE);
127 const int sizeTria = 3*4 ;
128 int ConnectivityTria[sizeTria]=
136 myMeshing.setConnectivity(ConnectivityTria,MED_FACE,MED_TRIA3);
138 int ConnectivityQua[4*4]=
146 myMeshing.setConnectivity(ConnectivityQua,MED_FACE,MED_QUAD4);
150 // not yet implemented : if set, results are unpredictable.
157 myGroup.setName("SomeNodes");
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] = {4} ;
164 myGroup.setNumberOfElements(myNumberOfElements);
165 const int index[1+1] = {1,5} ;
166 const int value[4]= { 1,4,5,7} ;
167 myGroup.setNumber(index,value);
169 myMeshing.addGroup(myGroup);
173 myGroup.setName("OtherNodes");
174 myGroup.setMesh(&myMeshing);
175 myGroup.setEntity(MED_NODE);
176 myGroup.setNumberOfGeometricType(1);
177 medGeometryElement myTypes[1] = {MED_NONE};
178 myGroup.setGeometricType(myTypes);
179 const int myNumberOfElements[1] = {3} ;
180 myGroup.setNumberOfElements(myNumberOfElements);
181 const int index[1+1] = {1,4} ;
182 const int value[3]= { 2,3,6} ;
183 myGroup.setNumber(index,value);
185 myMeshing.addGroup(myGroup);
191 myGroup.setName("SomeCells");
192 myGroup.setMesh(&myMeshing);
193 myGroup.setEntity(MED_CELL);
194 myGroup.setNumberOfGeometricType(3);
195 medGeometryElement myTypes[3] = {MED_TETRA4,MED_PYRA5,MED_HEXA8};
196 myGroup.setGeometricType(myTypes);
197 const int myNumberOfElements[3] = {4,1,2} ;
198 myGroup.setNumberOfElements(myNumberOfElements);
199 const int index[3+1] = {1,5,6,8} ;
200 const int value[4+1+2]=
206 myGroup.setNumber(index,value);
208 myMeshing.addGroup(myGroup);
212 myGroup.setName("OtherCells");
213 myGroup.setMesh(&myMeshing);
214 myGroup.setEntity(MED_CELL);
215 myGroup.setNumberOfGeometricType(2);
216 medGeometryElement myTypes[] = {MED_TETRA4,MED_PYRA5};
217 myGroup.setGeometricType(myTypes);
218 const int myNumberOfElements[] = {4,1} ;
219 myGroup.setNumberOfElements(myNumberOfElements);
220 const int index[3+1] = {1,5,6} ;
221 const int value[4+1]=
226 myGroup.setNumber(index,value);
228 myMeshing.addGroup(myGroup);
234 myGroup.setName("SomeFaces");
235 myGroup.setMesh(&myMeshing);
236 myGroup.setEntity(MED_FACE);
237 myGroup.setNumberOfGeometricType(2);
238 medGeometryElement myTypes[2] = {MED_TRIA3,MED_QUAD4};
239 myGroup.setGeometricType(myTypes);
240 const int myNumberOfElements[2] = {2,3} ;
241 myGroup.setNumberOfElements(myNumberOfElements);
242 const int index[2+1] = {1,3,6} ;
243 const int value[2+3]=
248 myGroup.setNumber(index,value);
250 myMeshing.addGroup(myGroup);
254 myGroup.setName("OtherFaces");
255 myGroup.setMesh(&myMeshing);
256 myGroup.setEntity(MED_FACE);
257 myGroup.setNumberOfGeometricType(1);
258 medGeometryElement myTypes[1] = {MED_TRIA3};
259 myGroup.setGeometricType(myTypes);
260 const int myNumberOfElements[1] = {2} ;
261 myGroup.setNumberOfElements(myNumberOfElements);
262 const int index[1+1] = {1,3} ;
267 myGroup.setNumber(index,value);
269 myMeshing.addGroup(myGroup);
272 // all rigtht, we save it !
274 int id = myMeshing.addDriver(MED_DRIVER,filename,myMeshing.getName());
275 myMeshing.write(id) ;