I should add that running the test case for increasing values of the
coupling coefficients (./constrained_poisson [1/10/100/...]) illustrates
the discrepancy for the values of u in the "AffineConstraints" case
(that is, the values of u in this case differ more and more from their
expected values in the decoupled case).
On 10/20/25 18:10, Arthur Bawin wrote:
Thanks a lot for your answers.
I believe I fixed the coupling bug, but I’m a bit perplexed. I
narrowed it down to how the two fields are coupled, and I joined a
minimal example which reproduces the problem I had. It goes as follows :
On the holed domain of the given mesh (cylinder in rectangle),
consider two distinct Poisson equations for two scalar fields u and v,
with both homogeneous Dirichlet BC on the rectangle. The problem is
solved in a monolithic fashion, in the same linear system. On the
cylinder, set u free (zero flux), and say we want the strong coupling
v = C*u, without affecting the values of u.
If the coupling is enforced by simply modifying the rows of the v dofs
on the cylinder, then u is unaffected by the coupling as expected, and
we get v = C*u.
However, if the coupling is enforced with a set of AffineConstraints,
then the v dofs are replaced with C times udofs as the constraints
resolves indirections, which (I believe) modifies the equation for the
u dofs on the cylinder and effectively acts as some kind of
penalization. If the coupling constraint C is large, then u goes to
zero on the cylinder in this example. Is this correct ? And if so, is
this the expected behavior for an AffineConstraints ? I would expect
the u dofs to not be affected by the constraints, acting as « master
dofs » (and a fortiori since is_constrained() for these dofs returns
false).
The attached example solves both Poisson problems and compares the
values of u and v on the cylinder (1) when the problem is fully
decoupled (both u and v left free), (2) when the coupling is enforced
with affine constraints, and (3) when enforced by manually adding the
« algebraic » coupling constraints v – C*u = 0.
- In the decoupled case, these values are the same as expected
- In the coupled case with affine constraints, the coupling is
satisfied but the values of u have changed if C != 1 (although we
could find other cases for which they change even for C = 1).
- In the coupled case while manually constraining the system, the
coupling is satisfied and the values of u are unchanged, as required.
I feel like this is straightforward, but I can’t wrap my head around
the fact that naively applying an AffineConstraints for this example
modifies the « source » field.
Thank you for your time,
Arthur
On 10/15/25 11:34, 'Wolfgang Bangerth' via deal.II User Group wrote:
On 10/11/25 10:36, Arthur Bawin wrote:
A first general question :
- The Lagrange multiplier should be defined only on the cylinder
boundary, a codimension 1 space. What is the simplest way of dealing
with a <dim-1> finite element space within a FESystem that contains
the other spaces of dimension dim ? Currently, and to use a single
FESystem and DOFHandler, I define lambda as a P2 field over the
whole domain and constrain all of its non-cylinder DOFs to zero,
which works but is not very elegant.
Perhaps not very elegant, but that's how we generally do it. You may
want to compare with how ASPECT does it:
https://github.com/geodynamics/aspect/blob/main/source/mesh_deformation/interface.cc
I believe that FENothing could be used to this end, but when I tried
it seems that it is not fully implemented for simplices, is that
correct ?
Perhaps. That's probably worth fixing. If you can create small test
cases that illustrate what doesn't work, it shouldn't be very
difficult to get those fixed.
The main, more niche question :
[...]
I think you'll have to debug that yourself :-) The usual suggestion
applies as always: make it simple. Try a test case with very low
Reynolds number where flow is stationary, or perhaps even prescribe
the flow. Then you know what the forces will be, and you can think
about what the displacement should be.
Best
W.
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/dealii/7726c1e3-c24f-4537-9f1e-bfd143ca7e85%40gmail.com.