### Continuity into Subspace for variational form

181

views

0

Hello everyone,

Is there a way to continue a function defined on one submesh into another submesh?

Consider for example two submeshes with $u_1$

Any help is very welcome

Best

Baltasar

Edit: add some code as basis

edit2: added "for variational form" to post title

Is there a way to continue a function defined on one submesh into another submesh?

Consider for example two submeshes with $u_1$

`u`_{1}being defined in one of them and $u_2$`u`_{2}in the other. They are coupled by $u_1=u_2$`u`_{1}=`u`_{2}on the boundary and some Neumann boundary condition. How do I include this first equality into the variational form?Any help is very welcome

Best

Baltasar

Edit: add some code as basis

edit2: added "for variational form" to post title

```
import fenics as fnx
import mshr as ms
#creating mesh:
index_circle = 1
index_other = 2
domain = ms.Rectangle(fnx.Point(-2.5,-2.5), fnx.Point(2.5,2.5))
domain.set_subdomain(index_circle, ms.Circle(fnx.Point(0, 0), 1))
domain.set_subdomain(index_other, ms.Rectangle(fnx.Point(-2.5,-2.5), fnx.Point(2.5,2.5))-ms.Circle(fnx.Point(0, 0), 1))
mesh = ms.generate_mesh(domain, 15)
# Convert subdomains to mesh function for plotting
mesh_regions = fnx.MeshFunction("size_t", mesh, 2, mesh.domains())
#uncomment if you want to see the mesh regions:
#fnx.plot(mesh_regions)
submesh_c = fnx.SubMesh(mesh, mesh_regions, index_circle)
submesh_o = fnx.SubMesh(mesh, mesh_regions, index_other)
V_cd = fnx.FunctionSpace(submesh_c, "P", 1) #cd = circle domain
V_od = fnx.FunctionSpace(submesh_o, "P", 1) #od = other domain
dx = fnx.Measure("dx", mesh, subdomain_data=mesh_regions)
# consider two laplace equations to be solve on the mesh
grad = fnx.grad
dot = fnx.dot
#Define variational problem
v_cd = fnx.TestFunction(V_cd)
u_cd = fnx.TrialFunction(V_cd)
eq_cd = dot(grad(v_cd), grad(u_cd)) * dx(index_circle)
v_od = fnx.TestFunction(V_od)
u_od = fnx.TrialFunction(V_od)
eq_od = dot(grad(v_od), grad(u_od)) * dx(index_other)
eq_total = eq_cd + eq_od
# and now?
```

Community: FEniCS Project

### 1 Answer

2

Use

`interpolate_nonmatching_mesh(,)`

from **fenicstools.**

See this: https://github.com/mikaem/fenicstools
Ok. If you want to prescribe

**explicitly**a Dirichlet boundary condition u1 = u2 on the interface use**fenicstools**the way I mentioned.**Not**implicitly in the weak formulation.
written
6 months ago by
Minas Mattheakis

Thank you. I'll try to implement it.

written
6 months ago by
Baltasar

Please login to add an answer/comment or follow this question.

I want to use this for the variatonal form. This is not where to use

`interpolate_nonmatching_mesh(,), is it?`