- Thank you received: 0
Problem witch boundary conditions
5 years 1 week ago #2224
by LilBeng
Problem witch boundary conditions was created by LilBeng
Hello to all,
is there any way to enable the boundary conditions of gluing between bodies?
For example, if there are two boundaries, then the displacements u | Г1 = u | Г2 should be equal at these boundaries. Tell me please.
is there any way to enable the boundary conditions of gluing between bodies?
For example, if there are two boundaries, then the displacements u | Г1 = u | Г2 should be equal at these boundaries. Tell me please.
- mneunteufel
- Offline
- Premium Member
Less
More
- Thank you received: 59
5 years 1 week ago #2225
by mneunteufel
Replied by mneunteufel on topic Problem witch boundary conditions
Hi LilBeng,
if you have for example two Poisson equations decoupled like this
then you can either use a penalty formulation by adding
or introduce a hybrid facet variable (one additional FESpace).
Attached you'll find the full example.
Best,
Michael
if you have for example two Poisson equations decoupled like this
Code:
fes1 = H1(mesh, order=2, definedon= "left_dom", dirichlet="left|top|bottom")
fes2 = H1(mesh, order=2, definedon= "right_dom", dirichlet="right|top|bottom")
fes = FESpace( [fes1,fes2] )
(u1,u2),(v1,v2) = fes.TnT()
a = BilinearForm(fes)
a += 0.1*grad(u1)*grad(v1)*dx(definedon=mesh.Materials("left_dom"))
a += 0.15*grad(u2)*grad(v2)*dx(definedon=mesh.Materials("right_dom"))
a.Assemble()
f = LinearForm(fes)
f += 1*v1*dx(definedon=mesh.Materials("left_dom"))
f += 1*v2*dx(definedon=mesh.Materials("right_dom"))
f.Assemble()
then you can either use a penalty formulation by adding
Code:
a += 1e5*(u1-u2)*(v1-v2)*ds(definedon=mesh.Boundaries("interface"))
or introduce a hybrid facet variable (one additional FESpace).
Attached you'll find the full example.
Best,
Michael
Attachments:
5 years 1 week ago #2226
by LilBeng
Replied by LilBeng on topic Problem witch boundary conditions
Thanks for the quick response!
But what about in theory, when we have such a situation?
But what about in theory, when we have such a situation?
Code:
eo = SplineGeometry()
pnts = [(0, 0), (0.4999, 0), (0.4999, 1), (0, 1), (0.5, 0), (1, 0), (1, 1), (0.5, 1)]
pind = [ geo.AppendPoint(*pnt) for pnt in pnts ]
geo.Append(['line',pind[0],pind[1]],leftdomain=1,rightdomain=0,bc="bottom")
geo.Append(['line',pind[1],pind[2]],leftdomain=1,rightdomain=0,bc="interface")
geo.Append(['line',pind[2],pind[3]],leftdomain=1,rightdomain=0,bc="top")
geo.Append(['line',pind[3],pind[0]],leftdomain=1,rightdomain=0,bc="left")
geo.Append(['line',pind[4],pind[5]],leftdomain=2,rightdomain=0,bc="bottom")
geo.Append(['line',pind[5],pind[6]],leftdomain=2,rightdomain=0,bc="right")
geo.Append(['line',pind[6],pind[7]],leftdomain=2,rightdomain=0,bc="top")
geo.Append(['line',pind[7],pind[4]],leftdomain=2,rightdomain=0,bc="interface")
Attachments:
Time to create page: 0.117 seconds