Skip to content
Snippets Groups Projects
Commit 0289fc4d authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

patch from Benjamin

parent bb1b5b06
No related branches found
No related tags found
No related merge requests found
......@@ -136,6 +136,7 @@
<classpath refid="run.class.path" />
<jvmarg value="-Xmx512M" />
<jvmarg value="-Xms100M" />
<jvmarg value="-Xss100M" />
</java>
</target>
......@@ -150,6 +151,7 @@
<classpath refid="run.class.path" />
<jvmarg value="-Xmx512M" />
<jvmarg value="-Xms100M" />
<jvmarg value="-Xss100M" />
</java>
</target>
......
......@@ -34,7 +34,8 @@ public class EssaiGmsh_v1 {
System.loadLibrary("WrapGmsh");
} catch (final UnsatisfiedLinkError e) {
System.err
.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n"
+ e);
System.exit(1);
}
......@@ -45,6 +46,185 @@ public class EssaiGmsh_v1 {
// initialization of gmsh
WrapGmsh.GmshInitialize(0, null);
final GModel m = buildGeometry();
export(m);
accessElement(m);
m.deleteMesh();
m.delete();
WrapGmsh.GmshFinalize();
}
/**
* Shows methods used to access to different mesh elements.
*
* @param m
* is the GModel where the mesh is stored.
*/
private static void accessElement(final GModel m) {
// read mesh elements produced by m.mesh(3)
System.out.println("$MeshFormat");
System.out.println("2.2 0 8");
System.out.println("$EndMeshFormat");
System.out.println("$Nodes");
// boolean which indicates if all elements are meshed
final boolean all = m.noPhysicalGroups();
// number of nodes which is defined in mesh
System.out.println(m.indexMeshVertices(all, 0));
final GEntityVector entities = new GEntityVector();
m.getEntities(entities);
for (int i = 0; i < entities.size(); i++) {
for (int j = 0; j < entities.get(i).getMesh_vertices().size(); j++) {
final int index = entities.get(i).getMesh_vertices().get(j).getIndex();
// if index <0 then there is not physical
if (index >= 0) {
final double x = entities.get(i).getMesh_vertices().get(j).x();
final double y = entities.get(i).getMesh_vertices().get(j).y();
final double z = entities.get(i).getMesh_vertices().get(j).z();
System.out.println(index + " " + x + " " + y + " " + z);
}
}
}
System.out.println("$EndNodes");
System.out.println("$Elements");
int iter = 1;
// point
final GVertexVector bindingsGetVertices = m.bindingsGetVertices();
for (int indexVertex = 0; indexVertex < bindingsGetVertices.size(); indexVertex++) {
final GVertex it = bindingsGetVertices.get(indexVertex);
for (int k = 0; k < it.getPoints().size(); k++) {
for (int j = 0; j < it.getPhysicals().size(); j++) {
final int physical = it.getPhysicals().get(j);
final MPoint mPt = it.getPoints().get(k);
final int type = mPt.getTypeForMSH();
final IntVector verts = new IntVector();
mPt.getVerticesIdForMSH(verts);
// 1 is the number of physical which is associated with the
// element.
// there is always 1 but it is possible to write several
// times the same line but with a different physical. This
// is the logical used by gmsh but in reality it is 2
// because there is the physical AND the elemnentary. For
// more information see the gmsh documentation
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0));
iter++;
}
}
}
// edges
final EdgeVector bindingsGetEdges = m.bindingsGetEdges();
for (int indexEdges = 0; indexEdges < bindingsGetEdges.size(); indexEdges++) {
final GEdge it = bindingsGetEdges.get(indexEdges);
for (int j = 0; j < it.getLines().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MLine mLine = it.getLines().get(j);
final int type = mLine.getTypeForMSH();
final IntVector verts = new IntVector();
mLine.getVerticesIdForMSH(verts);
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1));
iter++;
}
}
}
// triangles
final FaceVector bindingsGetFaces = m.bindingsGetFaces();
for (int indexFace = 0; indexFace < bindingsGetFaces.size(); indexFace++) {
final GFace it = bindingsGetFaces.get(indexFace);
for (int j = 0; j < it.getTriangles().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MTriangle mTriangle = it.getTriangles().get(j);
final int type = mTriangle.getTypeForMSH();
final IntVector verts = new IntVector();
mTriangle.getVerticesIdForMSH(verts);
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1)
+ " " + verts.get(2));
iter++;
}
}
}
// tetrahedron
final RegionVector bindingsGetRegions = m.bindingsGetRegions();
for (int indexRegion = 0; indexRegion < bindingsGetRegions.size(); indexRegion++) {
final GRegion it = bindingsGetRegions.get(indexRegion);
for (int j = 0; j < it.getTetrahedra().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MTetrahedron mTetrahedron = it.getTetrahedra().get(j);
final int type = mTetrahedron.getTypeForMSH();
final IntVector verts = new IntVector();
mTetrahedron.getVerticesIdForMSH(verts);
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1)
+ " " + verts.get(2) + " " + verts.get(3));
iter++;
}
}
}
System.out.println("$EndElements");
}
/**
* This method export a geometry file, mesh it and export the generated mesh in gmsh file.
*
* @param m
* is the GModel where is stored the geometry and the mesh.
*/
private static void export(final GModel m) {
// write .geo file which contains the geomtry defined before
m.writeGEO("test.geo");
// mesh the geometry defined in the GModel m
m.mesh(3);
// write .msh file which contains informations about mesh in GModel m.
m.writeMSH("meshtest.msh");
}
/**
* Build a geometry and stores it in a GModel.
*
* @return a GModel which is a Gmsh object where is stored the geometry.
*/
private static GModel buildGeometry() {
// creation of GModel which stores all geometric elements and all mesh
// elements
final GModel m = new GModel();
......@@ -1257,154 +1437,175 @@ public class EssaiGmsh_v1 {
WrapGmsh.add_physical(str3, lst4, m.getFileName());
WrapGmsh.List_Reset(lst4);
// write .geo file which contains the geomtry defined before
m.writeGEO("test.geo");
// mesh the geometry defined in the GModel m
m.mesh(3);
// write .msh file which contains informations about mesh in GModel m.
m.writeMSH("meshtest.msh");
// read mesh elements produced by m.mesh(3)
System.out.println("$MeshFormat");
System.out.println("2.2 0 8");
System.out.println("$EndMeshFormat");
System.out.println("$Nodes");
// boolean which indicates if all elements are meshed
final boolean all = m.noPhysicalGroups();
// number of nodes which is defined in mesh
System.out.println(m.indexMeshVertices(all, 0));
final GEntityVector entities = new GEntityVector();
m.getEntities(entities);
for (int i = 0; i < entities.size(); i++) {
for (int j = 0; j < entities.get(i).getMesh_vertices().size(); j++) {
final int index = entities.get(i).getMesh_vertices().get(j).getIndex();
// if index <0 then there is not physical
if (index >= 0) {
final double x = entities.get(i).getMesh_vertices().get(j).x();
final double y = entities.get(i).getMesh_vertices().get(j).y();
final double z = entities.get(i).getMesh_vertices().get(j).z();
System.out.println(index + " " + x + " " + y + " " + z);
}
}
}
System.out.println("$EndNodes");
System.out.println("$Elements");
// number of elements which is defined in mesh
//System.out.println(WrapGmsh.getNumElementsMSH(m, all, 0));
int iter = 1;
// point
final GVertexVector bindingsGetVertices = m.bindingsGetVertices();
for (int indexVertex = 0; indexVertex < bindingsGetVertices.size(); indexVertex++) {
final GVertex it = bindingsGetVertices.get(indexVertex);
for (int k = 0; k < it.getPoints().size(); k++) {
for (int j = 0; j < it.getPhysicals().size(); j++) {
final int physical = it.getPhysicals().get(j);
final MPoint mPt = it.getPoints().get(k);
final int type = mPt.getTypeForMSH();
final IntVector verts = new IntVector();
mPt.getVerticesIdForMSH(verts);
// 1 is the number of physical which is associated with the
// element.
// there is always 1 but it is possible to write several
// times the same line but with a different physical. This
// is the logical used by gmsh but in reality it is 2
// because there is the physical AND the elemnentary. For
// more information see the gmsh documentation
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0));
iter++;
}
}
}
// edges
final EdgeVector bindingsGetEdges = m.bindingsGetEdges();
for (int indexEdges = 0; indexEdges < bindingsGetEdges.size(); indexEdges++) {
final GEdge it = bindingsGetEdges.get(indexEdges);
for (int j = 0; j < it.getLines().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MLine mLine = it.getLines().get(j);
final int type = mLine.getTypeForMSH();
final IntVector verts = new IntVector();
mLine.getVerticesIdForMSH(verts);
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1));
iter++;
}
//free memory
lst1.delete();
lst2.delete();
lst3.delete();
lst4.delete();
gFact.delete();
v1.delete();
v2.delete();
v3.delete();
v4.delete();
v5.delete();
v6.delete();
v7.delete();
v8.delete();
v9.delete();
v10.delete();
v11.delete();
v12.delete();
v13.delete();
v14.delete();
v15.delete();
v16.delete();
v17.delete();
v18.delete();
v19.delete();
v20.delete();
v21.delete();
v22.delete();
v23.delete();
v24.delete();
v25.delete();
v26.delete();
v27.delete();
e1.delete();
e2.delete();
e3.delete();
e4.delete();
e5.delete();
e6.delete();
e7.delete();
e8.delete();
e9.delete();
e10.delete();
e11.delete();
e12.delete();
e13.delete();
e14.delete();
e15.delete();
e16.delete();
e17.delete();
e18.delete();
e19.delete();
e20.delete();
e21.delete();
e22.delete();
e23.delete();
e24.delete();
e25.delete();
e26.delete();
e27.delete();
e28.delete();
e29.delete();
e30.delete();
e31.delete();
e32.delete();
e33.delete();
e34.delete();
e35.delete();
e36.delete();
e37.delete();
e38.delete();
e39.delete();
e40.delete();
e41.delete();
e42.delete();
f1.delete();
f2.delete();
f3.delete();
f4.delete();
f5.delete();
f6.delete();
f7.delete();
f8.delete();
f9.delete();
f10.delete();
f11.delete();
f12.delete();
f15.delete();
f16.delete();
f17.delete();
f18.delete();
f19.delete();
f20.delete();
f21.delete();
f22.delete();
f23.delete();
f24.delete();
f25.delete();
f26.delete();
edg1.delete();
edg2.delete();
edg3.delete();
edg4.delete();
edg5.delete();
edg6.delete();
edg7.delete();
edg8.delete();
edg9.delete();
edg10.delete();
edg11.delete();
edg12.delete();
edg13.delete();
edg14.delete();
edg15.delete();
edg16.delete();
edg17.delete();
edg18.delete();
edg19.delete();
edg20.delete();
edg21.delete();
edg22.delete();
edg23.delete();
edg24.delete();
edg25.delete();
edg26.delete();
edges1.delete();
edges2.delete();
edges3.delete();
edges4.delete();
edges5.delete();
edges6.delete();
edges7.delete();
edges8.delete();
edges9.delete();
edges10.delete();
edges11.delete();
edges12.delete();
edges15.delete();
edges16.delete();
edges17.delete();
edges18.delete();
edges19.delete();
edges20.delete();
edges21.delete();
edges22.delete();
edges23.delete();
edges24.delete();
edges25.delete();
edges26.delete();
r1.delete();
r2.delete();
fce1.delete();
fce2.delete();
fce3.delete();
faces1.delete();
faces2.delete();
return m;
}
}
// triangles
final FaceVector bindingsGetFaces = m.bindingsGetFaces();
for (int indexFace = 0; indexFace < bindingsGetFaces.size(); indexFace++) {
final GFace it = bindingsGetFaces.get(indexFace);
for (int j = 0; j < it.getTriangles().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MTriangle mTriangle = it.getTriangles().get(j);
final int type = mTriangle.getTypeForMSH();
final IntVector verts = new IntVector();
mTriangle.getVerticesIdForMSH(verts);
System.out.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1) + " " + verts.get(2));
iter++;
}
}
}
// tetrahedron
final RegionVector bindingsGetRegions = m.bindingsGetRegions();
for (int indexRegion = 0; indexRegion < bindingsGetRegions.size(); indexRegion++) {
final GRegion it = bindingsGetRegions.get(indexRegion);
for (int j = 0; j < it.getTetrahedra().size(); j++) {
for (int k = 0; k < it.getPhysicals().size(); k++) {
final int physical = it.getPhysicals().get(k);
final MTetrahedron mTetrahedron = it.getTetrahedra().get(j);
final int type = mTetrahedron.getTypeForMSH();
final IntVector verts = new IntVector();
mTetrahedron.getVerticesIdForMSH(verts);
System.out
.println(iter + " " + type + " 1 " + physical + " " + verts.get(0) + " " + verts.get(1) + " " + verts.get(2) + " " + verts.get(3));
iter++;
}
}
}
System.out.println("$EndElements");
WrapGmsh.GmshFinalize();
}
}
......@@ -52,6 +52,10 @@ public class EssaiGmsh_v2 {
// write .msh file which contains informations about mesh in GModel m.
m1.writeMSH("t5.msh");
// free memory
m1.deleteMesh();
m1.delete();
WrapGmsh.GmshFinalize();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment