mirror of
https://github.com/NGSolve/netgen.git
synced 2026-05-31 01:06:10 +08:00
41 lines
1.0 KiB
Python
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)
|