getfem-users
[Top][All Lists]
Advanced

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

Petrov-Galerkin method for interface problems


From: Alessandra Arrigoni
Subject: Petrov-Galerkin method for interface problems
Date: Sat, 28 Dec 2019 16:45:48 +0000

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]