Floating point exception while using parallel-explicit coupling scheme for two different interfaces

Dear All,

I am attempting to couple three regions for heat conduction using the preCICE adapter. For each region, I am solving the heat conduction equation in OpenFOAM. However, during the simulation, I encounter a floating-point exception error with the parallel explicit scheme. I have also tried using the parallel implicit scheme, but without success. Using the multi-coupling scheme, the system was running with the following conductivities: 1 for the bottom region, 10 for the middle region, and 100 for the top region, and the simulation was converging. Once the conductivities of the middle and top regions were exchanged, the system did not converge and showed a floating-point exception. Can anyone please help me rectify this?
precice-config.xml (7.4 KB)

Thank you.
precice-config.xml (3.7 KB)

precice-config.xml (4.6 KB)
explicitparallel.zip (4.1 MB)
implicitParallel.zip (951.2 KB)

For such a scenario, a multi coupling scheme is the right way to go.
Read more here why combining several bi-coupling schemes might not work: A plug-and-play coupling approach for parallel multi-field simulations | Computational Mechanics

To get your failing case to work, I would try to swap the boundary conditions from Dirichlet-Neumann to Neumann-Dirichlet.

More on these coupling conditions: Verstraete and Scholl 2016

A student thesis that used a similar multi-field CHT setup: Numerical Coupling between the Finite Volume Method and the Finite Element Method for Modeling the Turbulent Heat Transfer in an AFPM Machine — Eindhoven University of Technology research portal

Hope that helps already :crossed_fingers:

Dear Uekerman,

Thank you for your kind response. I have attached the converging test case. The convergence criteria should not depend on the conductivities of the materials, and a converging solution is desired for any combination of conductivities. The problem is equivalent to heat conduction in an inhomogeneous medium, which is known to be one of the simplest problems. Can you suggest the necessary adjustments in timestep or grid size for a converging solution? I have tried various boundary conditions (by interchanging Dirichlet and Neumann), but the system seems to be non-conserving for all combinations of different conductivities.
fluxTemperature.zip (483.9 KB)

Hi @dibyendu,

Can you elaborate? How do you observe that?

Note that you are using a nearest-neighbor mapping, which is the most simplistic one, and which could be generating significant error depending on the meshes you use.

Dear Makis,

Thank you for your response. The system I am studying consists of three regions: upper-solid, lower-solid, and fluid. Each region is assumed to be a two-dimensional sheet, perpendicular to the z-axis. The fluid region shares boundaries with both the upper-solid and lower-solid regions.

I have experimented with various combinations of read-data and write-data settings. For instance, when the fluid-mesh reads Temperature and writes Heat-Flux, the solid regions read Heat-Flux and write Temperature, and vice versa. Initially, I used heat conduction (laplacianFoam) for the fluid region in the simplest case.

However, I am encountering convergence issues when using different combinations of conductivities in these three regions. Although the system converges for certain conductivity combinations, it fails to converge for others. One case where convergence was achieved was previously uploaded to this discussion forum.

Could you please provide guidance on how to address these issues? Systems with only two regions have converged successfully, even in three dimensions and with various conductivity combinations. However, I am experiencing convergence challenges when dealing with more than one boundary.

Note: By “combination of conductivities,” I mean the different conductivity values used in the three different regions for each simulation.

The question is still a bit vague. Let me ask a different question, maybe it helps:

How does your case and (most importantly) the preCICE configuration differ from the one in the simplified heat exchanger tutorial? We also use multi-coupling there, but we couple one fluid with two solids, not three solids: