Hello everyone,
I want to perform a vibroacoustic simulation. Below I describe the general setup, where an acoustic cavity \Omega_a interfaces a structural domain \Omega_s through one or multiple interfaces \partial \Omega_{int}. I am using FEniCSx for both domains.
The weak forms for such domains should be the following:
\text{Acoustic domain, time harmonic linear acoustics:}\\ \\ \int_{\Omega_a}\nabla p \cdot \nabla v d \Omega_a - \int_{\Omega_a}k_a^2p v d \Omega_a = \int_{\Omega_a} j\omega\rho_a q v d \Omega_a + \int_{\partial\Omega_{int}} \rho_a \omega^2 \left(\mathbf{u \cdot n_a}\right) v d\partial\Omega_{int}
\text{Structural domain, time harmonic linear elastodynamics:}\\ \\ \int_{\Omega_s} \sigma(\mathbf{u}) : \epsilon (\mathbf{w}) d\Omega_s - \int_{\Omega_s} \rho_s\omega^2 \mathbf{u\cdot w} d\Omega_s = \int_{\partial\Omega_{int}} -p\mathbf{n_s \cdot w} d\partial\Omega_{int}
*Note: I am using volumetric sources as acoustic input, so the structure is moving as a result of the fluid-structure interaction. There is no external force or load on the structure.
The equation are coupled through the Neumann BCs (-p\mathbf{n_s} is just the traction vector on the interface due to the acoustic pressure on it, while \frac{\partial p}{\partial n_a} = \rho_a \omega^2 u_n = \rho_a \omega^2 \mathbf{u \cdot n_a} is derived from the euler equation)
Usually this problem is solved with a monolithic approach, solving one algebraic system and getting both p and \mathbf{u} simultaneously.
The problem is that I need the interface to have non matching meshes, so I thought about solving it in with a partitioned approach, but I have not any experience in this topic.
Then my first question is: is preCICE for me? I see that almost everyone is solving time dependent problems here, but I am not (for now).
What happens in partitioned approach near “subsystem” eigenfrequencies, where the matrices become singular? Is there always a way to make the soultion converge?
I need to decide if I need to put my effort to build the monolithic matrix with non conforming meshes or building a partitioned algorithm. That’s why I need your advice!
I suppose that I would solve something like this:
- Solve the acoustic domain for p with natural boundary condition (rigid walls) and get p
- Use p for the Neuman BC on the structure (after interpolating it in the structure’s FunctionSpace) and get \mathbf{u}
- Use \mathbf{u} for the Neuman BC on the acoustic domain (after interpolating it on the acoustic FunctionSpace) and get p
- Iterate 2 and 3 until convergence.
Is this approach correct? I am sorry if the approach is wrong but, as I said, I’ve never studied partitioned approaches.
Can I implement something like this? Is it worth it? I need the results to be comparable to the one I would obtain with the monolithic approach.
Every advice that you give me would be precious, thank you very much.