# 2D Geometry with partly shared edge

Hello,

we would like to build a 2D Geometry (for example two nested rectangles) that represent one half of a symmetric problem, so the inner rectangle is completely shifted to the edge of the sourounding rectangle. At that moment we cannot mesh the geometry.
How could we implement this?

``````from netgen.geom2d import *
from ngsolve import *

geo = SplineGeometry()
geo.AddRectangle ( (0,0), (2,2), bcs=["b","r","t","l"], leftdomain=1)
geo.AddRectangle ( (0,0.5), (1,1.5), bcs=["b2","r2","t2","l2"], leftdomain=2, rightdomain=1)
geo.SetMaterial (1, "outer")
geo.SetMaterial (2, "inner")
mesh = Mesh(geo.GenerateMesh(maxh=0.1))``````

Hi creativeworker,

to construct such a mesh you need to specify the points and lines by hand

[code]from netgen.geom2d import *
from ngsolve import *

geo = SplineGeometry()
pnts = [ (0,0), (2,0), (2,2), (0,2), (0,1.5), (0,0.5), (1,0.5), (1,1.5)]
pind = [ geo.AppendPoint(*pnt) for pnt in pnts ]

geo.Append([‘line’,pind[0],pind[1]],leftdomain=1,rightdomain=0,bc=“b”)
geo.Append([‘line’,pind[1],pind[2]],leftdomain=1,rightdomain=0,bc=“r”)
geo.Append([‘line’,pind[2],pind[3]],leftdomain=1,rightdomain=0,bc=“t”)
geo.Append([‘line’,pind[3],pind[4]],leftdomain=1,rightdomain=0,bc=“l”)
geo.Append([‘line’,pind[4],pind[5]],leftdomain=2,rightdomain=0,bc=“l”)
geo.Append([‘line’,pind[5],pind[0]],leftdomain=1,rightdomain=0,bc=“l”)
geo.Append([‘line’,pind[5],pind[6]],leftdomain=2,rightdomain=1,bc=“b2”)
geo.Append([‘line’,pind[6],pind[7]],leftdomain=2,rightdomain=1,bc=“r2”)
geo.Append([‘line’,pind[7],pind[4]],leftdomain=2,rightdomain=1,bc=“t2”)

geo.SetMaterial (1, “outer”)
geo.SetMaterial (2, “inner”)
mesh = Mesh(geo.GenerateMesh(maxh=0.1))[/code]

Best,
Michael