getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Petrov-Galerkin method for interface problems


From: Yves Renard
Subject: Re: Petrov-Galerkin method for interface problems
Date: Mon, 30 Dec 2019 19:10:26 +0100 (CET)

Dear Alessandra,

The model object in Getfem do not support Petrov-Galerkin methods (it is 
assumed that u and Test_u are described on the same FEM). So that you will be 
able to obtain the stiffness matrix of your  problem with the assembly 
functions but will have to prescribe the boundary conditions and solve on your 
own (the system in a priori not necessarily a square one in your case ...)

To obtain a finite element cut by an interface, the simplest is indeed to use a 
level-set and the object mesh_level_set and mesh_fem_level_set objects as in 
crack.cc, yes.

Then, you can obtain obtain the Petrov-Galerkin stiffness matrix with the 
high-level assembly with a assembly string as "Grad_u.Grad_Test_v" where u is a 
variable on the cut fem and v a variable on the uncut one. You can prescribe 
the jump to be zero on your interface with a multiplier but you have to ensure 
a LBB condition. Nitsche's method can be a better choice in that situation. 

Of course, the method as a interest only if the interface do not fit with the 
element faces. In the conformal case, you end-up with the same space for your 
primal variable and the test functions.

Best regards,

Yves


----- Mail original -----
De: "Alessandra Arrigoni" <address@hidden>
À: "getfem-users" <address@hidden>
Envoyé: Samedi 28 Décembre 2019 17:45:48
Objet: Petrov-Galerkin method for interface problems

Dear GetFem++ users,

I am trying to solve a simple elliptic interface problem on the unit square: 
the domain features an interface at x=0.5 that defines two rectangular areas 
(Omega0 and Omega1) with different diffusion coefficients (a0 and a1). The 
problem data contain the usual source term, the boundary conditions and two 
additional interface conditions q0 (on the jump of the solution u0-u1) and q1 
(on the jump of its conormal derivative).
According to the weak formulation I am given, the functional spaces for the 
solution u (with restrictions u0 and u1 on the two subdomains) and the test 
functions are different: for the test functions I am using the classic P1 basis 
functions on the whole unit square, while for the solution I am using the 
functions that belong to the P1 space on each subdomain, and discontinuous on 
the interface. To construct this space I am thinking of simply doubling the 
degrees of freedom on the interface line and associating one of them to u0 and 
the other to u1.

Both the Dirichlet boundary conditions and the interface condition q0 should be 
imposed in a direct way, that is, following the idea of the method

add_Dirichlet_condition_with_multipliers(md, mim, varname, degree, region, 
dataname = std::string())
linked to the Dirichlet condition brick; regarding the interface condition, the 
rows of the matrix should be modified by setting the interface dofs associated 
to u0 and u1 to 1 and -1 (respectively) and by filling them with zeros.

My question is the following: is there a way to construct such a finite element 
method with the high level procedures contained in GetFem++ (latest version)?
At the moment I am trying to manually modify the global number of dofs and the 
stiffness matrix.
In the documentation, I read about the mesh::region and the possibility of 
defining new bricks (which I might use to enforce the interface conditions as 
in the aforementioned method for the Dirichlet BC).
Alternatively I am thinking of using the level_set to define the interface, but 
then (even looking at the examples such as tests/crack.cc), I can't understand 
how to specify different discrete spaces for the solution and the test 
functions when the bricks are added to the model.
Can I exploit one of these ideas (and how) or are there better ways to achieve 
what I am looking for?

As a last remark, this method is expected to be used in the future for the 
linear elasticity problem, so I would be grateful if you can help me with an 
implementation that works even in the case of a vectorial problem.

Thank you for your time and your support,

Kind regards,
Alessandra Arrigoni



reply via email to

[Prev in Thread] Current Thread [Next in Thread]