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

relocate nodes example

parent 45476e48
No related branches found
No related tags found
No related merge requests found
Pipeline #10580 passed
...@@ -1588,6 +1588,8 @@ negative, relocate all the nodes in the mesh. ...@@ -1588,6 +1588,8 @@ negative, relocate all the nodes in the mesh.
- -
@item Language-specific definition: @item Language-specific definition:
@url{@value{GITLAB-PREFIX}/api/gmsh.h#L857,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L738,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L2570,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L2217,Julia} @url{@value{GITLAB-PREFIX}/api/gmsh.h#L857,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L738,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L2570,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L2217,Julia}
@item Examples:
Python (@url{@value{GITLAB-PREFIX}/examples/api/relocate_nodes.py#L48,relocate_nodes.py})
@end table @end table
@item gmsh/model/mesh/getElements @item gmsh/model/mesh/getElements
...@@ -4233,7 +4235,7 @@ integer ...@@ -4233,7 +4235,7 @@ integer
@item Language-specific definition: @item Language-specific definition:
@url{@value{GITLAB-PREFIX}/api/gmsh.h#L2433,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2137,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L6644,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L5918,Julia} @url{@value{GITLAB-PREFIX}/api/gmsh.h#L2433,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2137,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L6644,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L5918,Julia}
@item Examples: @item Examples:
Python (@url{@value{GITLAB-PREFIX}/examples/api/crack.py#L13,crack.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_2d.py#L67,naca_boundary_layer_2d.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_3d.py#L70,naca_boundary_layer_3d.py}, @url{@value{GITLAB-PREFIX}/examples/api/stl_to_brep.py#L41,stl_to_brep.py}) Python (@url{@value{GITLAB-PREFIX}/examples/api/crack.py#L13,crack.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_2d.py#L67,naca_boundary_layer_2d.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_3d.py#L70,naca_boundary_layer_3d.py}, @url{@value{GITLAB-PREFIX}/examples/api/relocate_nodes.py#L10,relocate_nodes.py}, @url{@value{GITLAB-PREFIX}/examples/api/stl_to_brep.py#L41,stl_to_brep.py})
@end table @end table
@item gmsh/model/occ/addCircleArc @item gmsh/model/occ/addCircleArc
...@@ -4422,7 +4424,7 @@ integer ...@@ -4422,7 +4424,7 @@ integer
@item Language-specific definition: @item Language-specific definition:
@url{@value{GITLAB-PREFIX}/api/gmsh.h#L2562,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2257,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L6960,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L6180,Julia} @url{@value{GITLAB-PREFIX}/api/gmsh.h#L2562,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2257,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L6960,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L6180,Julia}
@item Examples: @item Examples:
C++ (@url{@value{GITLAB-PREFIX}/tutorials/c++/t19.cpp#L26,t19.cpp}), Python (@url{@value{GITLAB-PREFIX}/tutorials/python/t19.py#L24,t19.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_2d.py#L73,naca_boundary_layer_2d.py}, @url{@value{GITLAB-PREFIX}/examples/api/stl_to_brep.py#L46,stl_to_brep.py}, @url{@value{GITLAB-PREFIX}/examples/api/surface_filling.py#L16,surface_filling.py}) C++ (@url{@value{GITLAB-PREFIX}/tutorials/c++/t19.cpp#L26,t19.cpp}), Python (@url{@value{GITLAB-PREFIX}/tutorials/python/t19.py#L24,t19.py}, @url{@value{GITLAB-PREFIX}/examples/api/naca_boundary_layer_2d.py#L73,naca_boundary_layer_2d.py}, @url{@value{GITLAB-PREFIX}/examples/api/relocate_nodes.py#L15,relocate_nodes.py}, @url{@value{GITLAB-PREFIX}/examples/api/stl_to_brep.py#L46,stl_to_brep.py}, @url{@value{GITLAB-PREFIX}/examples/api/surface_filling.py#L16,surface_filling.py})
@end table @end table
@item gmsh/model/occ/addRectangle @item gmsh/model/occ/addRectangle
...@@ -4517,7 +4519,7 @@ integer ...@@ -4517,7 +4519,7 @@ integer
@item Language-specific definition: @item Language-specific definition:
@url{@value{GITLAB-PREFIX}/api/gmsh.h#L2629,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2319,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L7100,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L6315,Julia} @url{@value{GITLAB-PREFIX}/api/gmsh.h#L2629,C++}, @url{@value{GITLAB-PREFIX}/api/gmshc.h#L2319,C}, @url{@value{GITLAB-PREFIX}/api/gmsh.py#L7100,Python}, @url{@value{GITLAB-PREFIX}/api/gmsh.jl#L6315,Julia}
@item Examples: @item Examples:
Python (@url{@value{GITLAB-PREFIX}/examples/api/surface_filling.py#L19,surface_filling.py}) Python (@url{@value{GITLAB-PREFIX}/examples/api/relocate_nodes.py#L21,relocate_nodes.py}, @url{@value{GITLAB-PREFIX}/examples/api/surface_filling.py#L19,surface_filling.py})
@end table @end table
@item gmsh/model/occ/addBSplineFilling @item gmsh/model/occ/addBSplineFilling
......
import gmsh
import sys
def add_house(A, B, C):
p1 = gmsh.model.occ.addPoint(0, 0, 0)
p2 = gmsh.model.occ.addPoint(A, 0, 0)
p3 = gmsh.model.occ.addPoint(A, B, 0)
p4 = gmsh.model.occ.addPoint(A/2, B+C, 0)
p5 = gmsh.model.occ.addPoint(0, B, 0)
l1 = gmsh.model.occ.addLine(p1, p2)
l2 = gmsh.model.occ.addLine(p2, p3)
l3 = gmsh.model.occ.addLine(p3, p4)
l4 = gmsh.model.occ.addLine(p4, p5)
l5 = gmsh.model.occ.addLine(p5, p1)
cl = gmsh.model.occ.addCurveLoop([l1, l2, l3, l4, l5])
# plane surface - inner nodes will not move as parametrization is R2
# s = gmsh.model.occ.addPlaneFilling([cl])
# BSpline surface - inner nodes will move
s = gmsh.model.occ.addSurfaceFilling(cl)
gmsh.model.occ.synchronize()
gmsh.initialize(sys.argv)
# create initial geometry
gmsh.model.add('house1')
add_house(10, 8, 5)
# mesh it and store the mesh
gmsh.model.mesh.generate(2)
m = {}
for e in gmsh.model.getEntities():
m[e] = (gmsh.model.mesh.getNodes(e[0], e[1]),
gmsh.model.mesh.getElements(e[0], e[1]))
# create perturbed geometry
gmsh.model.add('house2')
add_house(9.5, 8.2, 5.1)
# copy old mesh into perturbed geometry
for e in m:
gmsh.model.mesh.addNodes(e[0], e[1], m[e][0][0], m[e][0][1], m[e][0][2])
gmsh.model.mesh.addElements(e[0], e[1], m[e][1][0], m[e][1][1], m[e][1][2])
# relocate mesh nodes on the perturbed geometry, using the parametric
# coordinates from the initial geometry
gmsh.model.mesh.relocateNodes()
if '-nopopup' not in sys.argv:
gmsh.fltk.run()
gmsh.finalize()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment