from ngsolve import *
from netgen.geom2d import SplineGeometry

#--------------------------------------------------------------------
def Circle(geom,r):

    disc_pnts = [( r,  0),   # point 0
                 ( r,  r),   # point 1
                 ( 0,  r),   # point 2
                 (-r,  r),   # point 3
                 (-r,  0),   # point 4
                 (-r, -r),   # point 5
                 ( 0, -r),   # point 6
                 ( r, -r) ]  # point 7

    disc_pnums = [geom.AppendPoint(*p) for p in disc_pnts]

    curves = [ (disc_pnums[0], disc_pnums[1], disc_pnums[2],  1,1,0),
               (disc_pnums[2], disc_pnums[3], disc_pnums[4],  1,1,0),
               (disc_pnums[4], disc_pnums[5], disc_pnums[6],  1,1,0),
               (disc_pnums[6], disc_pnums[7], disc_pnums[0],  1,1,0)  ]
        
    for p0,p1,p2,bc,left,right in curves:
        geom.Append( ["spline3", p0,p1,p2],
                     bc=bc, leftdomain=left, rightdomain=right)
    return geom
#--------------------------------------------------------------------

geometry = SplineGeometry()
geometry = Circle(geometry,0.25)
mesh = Mesh( geometry.GenerateMesh())
