### Multimesh with different FunctionSpaces on parts

504
views
2
10 months ago by
Hello everyone,

is it possible to define different FunctionSpaces on different parts of a MultiMesh and assemble a form which would have different contributions depending on the part ? Something like :
V1 = FunctionSpace(mesh1,"CG",1)
V2 = VectorFunctionSpace(mesh2,"CG",1)

# definition of some Test (u1_,u2_) and Trial (du1,du2) Functions on Multimesh consisting of mesh1 + mesh2 and corresponding measures dx1 and dx2

+ some interface condition​
I have the impression that the PDE must be the same on all parts of the MultiMesh, isn't there a way to write different PDEs on different parts and connect them with a proper interface condition (eg. fluid-structure interaction or other multiphysics problems) ? Basically, I would like to avoid defining a very general FunctionSpace for the whole mesh and then set to 0 every unnecessary dof in the corresponding part.

Community: FEniCS Project
Set the internal degrees of freedom as Dirichlet boundary conditions, which would eliminate the internal degrees of freedom from the resulting system of equations.

You could solve via mixed function space formulation or fixed-point iteration, I suspect that Newton's method may work better.

Otherwise, you could use non-matching meshes and use LagrangeInterpolator to interpolate between solutions.
written 10 months ago by pf4d
The above suggestion works if you have Dirichlet BCs, but if you have Neumann BCs you may need to use the Lagrange interpolation and multiple meshes.  As your solution along the interface is defined internally, I don't see how you can couple the two equations without solving via iteration; I can immediately see how to set flux conditions using the LagrangeInterpolator, so this may preferred.  There may also exist a way to set flux boundaries along internal elements, but this may be tricky to program as you'll need to know which side of a face you define from.

Another advantage of multi-mesh Lagrange-interpolation approach is the fact that you can easily define the geometry along the interface.
written 10 months ago by pf4d
Also, you might be interested in this:

and actually, I think this is exactly what you need:

https://github.com/FEniCS/dolfin/blob/master/demo/undocumented/multimesh-stokes/python/demo_multimesh-stokes.py

and a very nice paper:

https://arxiv.org/abs/1610.02277

hope that helps!
written 10 months ago by pf4d