mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-26 22:00:33 +05:00
59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
|
from netgen.meshing import *
|
||
|
from netgen.csg import *
|
||
|
|
||
|
from ngsolve import ngsglobals
|
||
|
ngsglobals.msg_level = 2
|
||
|
|
||
|
geo1 = CSGeometry()
|
||
|
geo1.Add (OrthoBrick( Pnt(0,0,0), Pnt(1,1,1) ))
|
||
|
m1 = geo1.GenerateMesh (maxh=0.1)
|
||
|
m1.Refine()
|
||
|
m1.Refine()
|
||
|
|
||
|
|
||
|
geo2 = CSGeometry()
|
||
|
geo2.Add (Sphere (Pnt(0.5,0.5,0.5), 0.1))
|
||
|
m2 = geo2.GenerateMesh (maxh=0.05)
|
||
|
m2.Refine()
|
||
|
m2.Refine()
|
||
|
|
||
|
print ("********************")
|
||
|
print ("** start merging **")
|
||
|
print ("********************")
|
||
|
|
||
|
mesh = Mesh()
|
||
|
fd_outside = mesh.Add (FaceDescriptor(surfnr=1,domin=1))
|
||
|
fd_inside = mesh.Add (FaceDescriptor(surfnr=2,domin=2,domout=1))
|
||
|
|
||
|
|
||
|
pmap1 = { }
|
||
|
for e in m1.Elements2D():
|
||
|
for v in e.vertices:
|
||
|
if (v not in pmap1):
|
||
|
pmap1[v] = mesh.Add (m1[v])
|
||
|
|
||
|
for e in m1.Elements2D():
|
||
|
mesh.Add (Element2D (fd_outside, [pmap1[v] for v in e.vertices]))
|
||
|
|
||
|
|
||
|
|
||
|
pmap2 = { }
|
||
|
for e in m2.Elements2D():
|
||
|
for v in e.vertices:
|
||
|
if (v not in pmap2):
|
||
|
pmap2[v] = mesh.Add (m2[v])
|
||
|
|
||
|
for e in m2.Elements2D():
|
||
|
mesh.Add (Element2D (fd_inside, [pmap2[v] for v in e.vertices]))
|
||
|
|
||
|
|
||
|
print ("******************")
|
||
|
print ("** merging done **")
|
||
|
print ("******************")
|
||
|
|
||
|
|
||
|
mesh.GenerateVolumeMesh()
|
||
|
mesh.Save ("newmesh.vol")
|
||
|
|
||
|
|