Internal Fluid-Thermal coupling with the V9.0

Questions and remarks about code_saturne usage
Forum rules
Please read the forum usage recommendations before posting.
Post Reply
SS2X
Posts: 7
Joined: Fri Aug 08, 2025 1:17 pm

Internal Fluid-Thermal coupling with the V9.0

Post by SS2X »

Hello,

I tried to perform a fluid-thermal coupling with the V9.0 by referring to the dedicated poge https://www.code-saturne.org/documentat ... nsfer.html . The snapshot related to the conjugate heat transfer does not seem to be up-to-date and the definition of a coupling instance raises a code error (no Syrthes communication). Without defining any instance and by selecting the option "couple scalar in solid" or not, it produces a thermal field in the solid zone. Hence, does the selection of that option generate a correct fluid-thermal coupling calculation ?

Thank you in advance.

Kind regards.
Chai
Posts: 8
Joined: Mon Jan 04, 2021 5:54 pm

Re: Internal Fluid-Thermal coupling with the V9.0

Post by Chai »

Hi ,

I confirm that the snaphsot is not completely up to date, where "SYRTHES coupling" is now "CHT coupling", and should be changed in the documentation.

About your question and/or error, I think you may be mixing two different options in the code :

When selection "CHT coupling" (previously "SYRTHES coupling") then you are conducting a coupled simulation, where the fluid domain is handled by an instance, and the solid domain is handled by another instance, hence the "coupled" boundary condition for a "Wall". By doing so, the solid thermal equation is handled either by SYRTHES or a CDO based in-house solver (since v9.0).

From what you're describing, I understand that you are trying to use the "Internal coupling" approach, where you define in the fluid domain a sub-volume which is solid. In that case there is nothing to specify in the boundary condition either than selecting the "coupled scalar in solid" checkbox for the temperature field.
SS2X
Posts: 7
Joined: Fri Aug 08, 2025 1:17 pm

Re: Internal Fluid-Thermal coupling with the V9.0

Post by SS2X »

Hi Chai,

Thank you for your explanation. Well by checking or not the checkbox, I observed two different behaviour within the solid and I wanted to be sure that the activation of the checkbox replaces the thermal boundary conditions defined within the fluid domain at the interface with the solid zone (for example in case of fixed temperature boundary condition).

What is the main difference in the thermal modelling between the "internal coupling" way or the "CHT coupling" ? Does one should assume that a classical thermal conduction is used in the solid with "internal coupling" with an additional condition at the fluid-solid interface (typically on thermal flux) ?

With the "CHT coupling" and by defining the CHT instance at the fluid-solid interface, the error here below is generated:

"src/base/cs_syr_coupling.cpp:2330: Fatal error.

At least 1 SYRTHES coupling was defined for which
no communication with a SYRTHES instance is possible."

Kind regards.
Chai
Posts: 8
Joined: Mon Jan 04, 2021 5:54 pm

Re: Internal Fluid-Thermal coupling with the V9.0

Post by Chai »

Hello,

Yes, by checking the box, you have an implicit coupling between the solid and fluid zones. Otherwise, you have two sub-volumes which do not communicate.

When using the "internal coupling", the energy equation is solved over the entire domain (all subvolumes) at once. The coupling is hence "implicit", because we have a single field everywhere. The downside is that the fields are defined over the entire domain, thus we end with a higher memory footprint, and larger matrices to inverse. Moreover, the resolution is done using Finite-Volumes.

When using the code coupling, you only solve the N-S equations in the fluid domain, et the thermal diffusion in the solid domain, which is more optimal in terms of computationcal costs, but introduces a coupling for the boundary conditions, and the coupling is explicit now (two energy equations).

Typically, if the solid portion is small in terms of number of cells (<10% of the total domain), the internal coupling should be the easiest and most performant approach starting with v9.0. (some improvements from v8).

Your CHT coupling run crashes because I think you lack an instance for the solid domain : you should run a coupled run, and you can check the code_saturne "CHT tutorial" for an example : https://github.com/code-saturne/saturne ... e_2D_Disks

With Kind Regards,
SS2X
Posts: 7
Joined: Fri Aug 08, 2025 1:17 pm

Re: Internal Fluid-Thermal coupling with the V9.0

Post by SS2X »

Hello Chai,

Thank you for the exhaustive explanation. Moreover in case of internal coupling, is it possible to define the boundaries which are coupled using a user function ? In my case, the fluid is indeed connected to the solid through 2 internal boundaries and the heat flux occurs only for one of the two and in the mesh no double-face was detected (which could have been an explanation). Consequently, the fluid and the solid seem to be isolated from another on one of the two internal boundaries (on the both side with prescribed no flux condition) where the internal coupling was expected to occur.

I then tried to complete the coupling interface using the function "cs_internal_coupling_add" inside the cs_user_internal_coupling function defined in a user file, but no change was noticed from my side.

Thank you in advance for your attention.

Kind regards.
Chai
Posts: 8
Joined: Mon Jan 04, 2021 5:54 pm

Re: Internal Fluid-Thermal coupling with the V9.0

Post by Chai »

Hi SS2X,

Its going to be difficult to answer without seeing the case files (xml and user files), but normally you should have nothing to do.
If your mesh contains a sub-volume "SOLID1", by defining a volumic zone based on that subvolume, setting it to "solid" and checking the checkbox for thermal coupling in internal coupling everything should be done automatically.
What happens si that the internal faces are transformed into boundray faces, and you should see in your run_solver.log that a new group has been added (something like auto::XXXX).

If your mesh contains, initially the boundary faces, then you could try a mesh joining first so as to have only internal faces within the domain, which will then be transformed into coupled faces.

With Kind Regards,
Post Reply