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

relocate nodes example

parent 45476e48
Branches
Tags
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