Files
netgen/py_tutorials/python_geometry.py
2026-03-31 10:55:10 +02:00

41 lines
1.0 KiB
Python

from netgen.occ import *
from netgen.meshing import NetgenGeometry, Mesh as NGMesh
import numpy as np
class UnitSphereGeometry(NetgenGeometry):
def midpoint(self, newp, p1, p2, secpoint=0.5):
p1 = np.array([p1[0], p1[1], p1[2]])
p2 = np.array([p2[0], p2[1], p2[2]])
p = p1 + secpoint * (p2 - p1)
self.project(newp, p)
def project(self, newp, p):
pt = np.array([p[0], p[1], p[2]])
pt /= np.linalg.norm(pt)
newp[0] = pt[0]
newp[1] = pt[1]
newp[2] = pt[2]
def PointBetweenEdge(self, p1, p2, secpoint, surfi1, surfi2, ep1, ep2, newp, newgi):
self.midpoint(newp, p1, p2, secpoint)
def PointBetween(self, p1, p2, secpoint, surfi, gi1, gi2, newp, newgi):
self.midpoint(newp, p1, p2, secpoint)
def ProjectPointGI(self, surfind, p, gi):
self.project(p, p)
return True
m = OCCGeometry(Sphere(Pnt(0, 0, 0), 1)).GenerateMesh()
my_geo = UnitSphereGeometry()
m.SetGeometry(my_geo)
m.Refine()
m.Curve(3)
from ngsolve import *
mesh = Mesh(m)
Draw(mesh)