1 // Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 #include "MEDMEM_Meshing.hxx"
23 #include "MEDMEM_Group.hxx"
25 using namespace MEDMEM ;
26 using namespace MED_EN ;
30 int main (int argc, char ** argv) {
32 // filename to save the generated MESH
33 string filename = "meshing.med" ;
36 myMeshing.setName("meshing") ;
40 int SpaceDimension = 3 ;
41 int NumberOfNodes = 19 ;
42 double Coordinates[57] = {
64 myMeshing.setCoordinates(SpaceDimension,NumberOfNodes,Coordinates,"CARTESIAN",MED_FULL_INTERLACE);
66 string Names[3] = { "X","Y","Z" } ;
67 myMeshing.setCoordinatesNames(Names);
69 string Units[3] = { "cm","cm","cm" } ;
70 myMeshing.setCoordinatesUnits(Units) ;
72 // define conectivities
76 const int NumberOfTypes = 3 ;
77 medGeometryElement Types[NumberOfTypes] = {MED_TETRA4,MED_PYRA5,MED_HEXA8} ;
78 const int NumberOfElements[NumberOfTypes] = {12,2,2} ;
80 myMeshing.setNumberOfTypes(NumberOfTypes,MED_CELL);
81 myMeshing.setTypes(Types,MED_CELL);
82 myMeshing.setNumberOfElements(NumberOfElements,MED_CELL);
84 const int sizeTetra = 12*4 ;
85 int ConnectivityTetra[sizeTetra]=
101 myMeshing.setConnectivity(ConnectivityTetra,MED_CELL,MED_TETRA4);
103 int ConnectivityPyra[2*5]=
109 myMeshing.setConnectivity(ConnectivityPyra,MED_CELL,MED_PYRA5);
111 int ConnectivityHexa[2*8]=
113 11,12,13,14,7,8,9,10,
114 15,16,17,18,11,12,13,14
117 myMeshing.setConnectivity(ConnectivityHexa,MED_CELL,MED_HEXA8);
121 const int NumberOfFacesTypes = 2 ;
122 medGeometryElement FacesTypes[NumberOfFacesTypes] = {MED_TRIA3,MED_QUAD4} ;
123 const int NumberOfFacesElements[NumberOfFacesTypes] = {4,4} ;
125 myMeshing.setNumberOfTypes(NumberOfFacesTypes,MED_FACE);
126 myMeshing.setTypes(FacesTypes,MED_FACE);
127 myMeshing.setNumberOfElements(NumberOfFacesElements,MED_FACE);
129 const int sizeTria = 3*4 ;
130 int ConnectivityTria[sizeTria]=
138 myMeshing.setConnectivity(ConnectivityTria,MED_FACE,MED_TRIA3);
140 int ConnectivityQua[4*4]=
148 myMeshing.setConnectivity(ConnectivityQua,MED_FACE,MED_QUAD4);
152 // not yet implemented : if set, results are unpredictable.
159 myGroup.setName("SomeNodes");
160 myGroup.setMesh(&myMeshing);
161 myGroup.setEntity(MED_NODE);
162 myGroup.setNumberOfGeometricType(1);
163 medGeometryElement myTypes[1] = {MED_NONE};
164 myGroup.setGeometricType(myTypes);
165 const int myNumberOfElements[1] = {4} ;
166 myGroup.setNumberOfElements(myNumberOfElements);
167 const int index[1+1] = {1,5} ;
168 const int value[4]= { 1,4,5,7} ;
169 myGroup.setNumber(index,value);
171 myMeshing.addGroup(myGroup);
175 myGroup.setName("OtherNodes");
176 myGroup.setMesh(&myMeshing);
177 myGroup.setEntity(MED_NODE);
178 myGroup.setNumberOfGeometricType(1);
179 medGeometryElement myTypes[1] = {MED_NONE};
180 myGroup.setGeometricType(myTypes);
181 const int myNumberOfElements[1] = {3} ;
182 myGroup.setNumberOfElements(myNumberOfElements);
183 const int index[1+1] = {1,4} ;
184 const int value[3]= { 2,3,6} ;
185 myGroup.setNumber(index,value);
187 myMeshing.addGroup(myGroup);
193 myGroup.setName("SomeCells");
194 myGroup.setMesh(&myMeshing);
195 myGroup.setEntity(MED_CELL);
196 myGroup.setNumberOfGeometricType(3);
197 medGeometryElement myTypes[3] = {MED_TETRA4,MED_PYRA5,MED_HEXA8};
198 myGroup.setGeometricType(myTypes);
199 const int myNumberOfElements[3] = {4,1,2} ;
200 myGroup.setNumberOfElements(myNumberOfElements);
201 const int index[3+1] = {1,5,6,8} ;
202 const int value[4+1+2]=
208 myGroup.setNumber(index,value);
210 myMeshing.addGroup(myGroup);
214 myGroup.setName("OtherCells");
215 myGroup.setMesh(&myMeshing);
216 myGroup.setEntity(MED_CELL);
217 myGroup.setNumberOfGeometricType(2);
218 medGeometryElement myTypes[] = {MED_TETRA4,MED_PYRA5};
219 myGroup.setGeometricType(myTypes);
220 const int myNumberOfElements[] = {4,1} ;
221 myGroup.setNumberOfElements(myNumberOfElements);
222 const int index[3+1] = {1,5,6} ;
223 const int value[4+1]=
228 myGroup.setNumber(index,value);
230 myMeshing.addGroup(myGroup);
236 myGroup.setName("SomeFaces");
237 myGroup.setMesh(&myMeshing);
238 myGroup.setEntity(MED_FACE);
239 myGroup.setNumberOfGeometricType(2);
240 medGeometryElement myTypes[2] = {MED_TRIA3,MED_QUAD4};
241 myGroup.setGeometricType(myTypes);
242 const int myNumberOfElements[2] = {2,3} ;
243 myGroup.setNumberOfElements(myNumberOfElements);
244 const int index[2+1] = {1,3,6} ;
245 const int value[2+3]=
250 myGroup.setNumber(index,value);
252 myMeshing.addGroup(myGroup);
256 myGroup.setName("OtherFaces");
257 myGroup.setMesh(&myMeshing);
258 myGroup.setEntity(MED_FACE);
259 myGroup.setNumberOfGeometricType(1);
260 medGeometryElement myTypes[1] = {MED_TRIA3};
261 myGroup.setGeometricType(myTypes);
262 const int myNumberOfElements[1] = {2} ;
263 myGroup.setNumberOfElements(myNumberOfElements);
264 const int index[1+1] = {1,3} ;
269 myGroup.setNumber(index,value);
271 myMeshing.addGroup(myGroup);
274 // all rigtht, we save it !
276 int id = myMeshing.addDriver(MED_DRIVER,filename,myMeshing.getName());
277 myMeshing.write(id) ;