Netgen/NGSolveNetgen/NGSolve
  • Home
  • News
    • New Features
    • 1st NGSolve User Meeting
    • 2nd NGSolve User Meeting
    • 3rd NGSolve User Meeting
    • NGSolve at Hannover Messe 2019
    • 4th NGSolve User Meeting
  • Documentation
    • Documentation
    • i-Tutorials
    • Interactive FEM Course
    • NGSolve Video Tutorials
  • Showcases
    • KH Benchmark
    • Netgen Examples
    • NGSolve Examples
    • Acknowledgements
    • Publications
  • Forum
  • Downloads

Netgen Examples

Christoph Wintersteiger

Rotationally symmetric geometries

To obtain a torus we define a circle around the point \( \texttt{(0,R)} \). This is done by defining a set of control points which are the used to define splines. These points and splines are then added to the SplineCurve2d using the functions AddPoint and AddSegment.

spline = SplineCurve2d() # create a 2d spline
R = 1                    # define the major radius
r = 0.2                  # define the minor radius
eps = r*1e-2

# define the control points
pnts = [ (0,R-r), (-r+eps,R-r+eps), (-r,R),
         (-r+eps,R+r-eps), (0,R+r), (r-eps,R+r-eps), (r,R), (r-eps,R-r+eps) ]
# define the splines using the control points
segs = [ (0,1,2), (2,3,4), (4,5,6), (6,7,0) ]

# add the points and segments to the spline
for pnt in pnts:
    spline.AddPoint (*pnt)

for seg in segs:
    spline.AddSegment (*seg)
The torus is then generated by rotating the two dimensional spline around the axis defined by the points \( \texttt{(-1,0,0)} \) and \( \texttt{(1,0,0)} \).
rev = Revolution ( Pnt(-1,0,0), Pnt(1,0,0), spline)
Finally we have to generate a CSG object and add the just defined torus.
geo = CSGeometry()
geo.Add (rev.col([1,0,0]))
geo.Draw()
Now we can generate a mesh for our torus.
mesh = geo.GenerateMesh(maxh=0.5, optsteps2d=3)
To curve the mesh we have to convert it to a NGSolve mesh. This can be done the following way.
mesh = Mesh(mesh)
mesh.Curve(3)	

Tags: 3D, CSG
  • Next article: Create 1D Geometries for BBND Next
Attachments
torus.py [934B]
Uploaded Wednesday, 11 January 2017 by Christoph Wintersteiger

Login

Create an account
  • Forgot your username?
  • Forgot your password?
 
NGSolve on Twitter
© 2019 Netgen/NGSolve
  • Home
  • News
    • New Features
    • 1st NGSolve User Meeting
    • 2nd NGSolve User Meeting
    • 3rd NGSolve User Meeting
    • NGSolve at Hannover Messe 2019
    • 4th NGSolve User Meeting
  • Documentation
    • Documentation
    • i-Tutorials
    • Interactive FEM Course
    • NGSolve Video Tutorials
  • Showcases
    • KH Benchmark
    • Netgen Examples
    • NGSolve Examples
    • Acknowledgements
    • Publications
  • Forum
  • Downloads