Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Solid to solid conjugate heat transfer #2152

Draft
wants to merge 8 commits into
base: develop
Choose a base branch
from

Conversation

EvertBunschoten
Copy link
Member

@EvertBunschoten EvertBunschoten commented Oct 27, 2023

Proposed Changes

Allow for conjugate heat transfer between solid domains and the modeling of contact resistance.

Related Work

PR Checklist

Put an X by all that apply. You can fill this out after submitting the PR. If you have any questions, don't hesitate to ask! We want to help. These are a guide for you to know what the reviewers will be looking for in your contribution.

  • Configuration option for contact resistance at interfaces.
  • Communicate contact resistance values between config and CInterface.
  • Test grid independence of contact resistance model.
  • Test case with both solid-solid and solid-fluid.
  • Add test case to regression tests.
  • Update documentation.
  • I am submitting my contribution to the develop branch.
  • My contribution generates no new compiler warnings (try with --warnlevel=3 when using meson).
  • My contribution is commented and consistent with SU2 style (https://su2code.github.io/docs_v7/Style-Guide/).
  • I used the pre-commit hook to prevent dirty commits and used pre-commit run --all to format old commits.
  • I have added a test case that demonstrates my contribution, if necessary.
  • I have updated appropriate documentation (Tutorials, Docs Page, config_template.cpp), if necessary.

@EvertBunschoten EvertBunschoten self-assigned this Oct 27, 2023
@pcarruscag pcarruscag changed the base branch from master to develop October 27, 2023 14:01
Copy link
Member

@pcarruscag pcarruscag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I get the idea but from the numerical standpoint this is an even worse idea than the way we do fluid-fluid interfaces.
Additive decomposition of elliptic equations is not effective at all.
Are you looking to model contact between multiple solid materials?

@EvertBunschoten
Copy link
Member Author

I get the idea but from the numerical standpoint this is an even worse idea than the way we do fluid-fluid interfaces. Additive decomposition of elliptic equations is not effective at all. Are you looking to model contact between multiple solid materials?

Yes, I'm looking to model the transfer of heat between multiple solid zones with different thermal properties. Eventually I'd like to model contact resistance of such interfaces as well, where the user could specify the contact resistance value of each solid-to-solid interface. This is something that me and Praharsh will be working on.

@pcarruscag
Copy link
Member

Okay, then allow me to save you guys some time, implement something similar to what we use for the FEA solver.
See the use of element_properties in CFEASolver.cpp.

@EvertBunschoten
Copy link
Member Author

Okay, then allow me to save you guys some time, implement something similar to what we use for the FEA solver. See the use of element_properties in CFEASolver.cpp.

Thanks for the suggestion! We'll have a look.

@NAnand-TUD
Copy link

Good job @EvertBunschoten. If you want we can schedule a call together and plan the development a bit.

SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp Fixed Show resolved Hide resolved
conductivity_over_dist = thermal_diffusivity*rho_cp_solid/dist;
const su2double thermal_conductivity = thermal_diffusivity * rho_cp_solid;
// TODO: add proper contact resistance here.
const su2double R_c = 0.0;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, are you adding this to the config/option structure?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Of course, it's in the check-list.

@EvertBunschoten
Copy link
Member Author

CHT_Fluid_Solid

Was able to run a case with fluid and two solids with contact resistance between the solid domains. By setting a non-zero contact resistance between the solid domains there appears a temperature discontinuity between the solids, but by setting the contact resistance value to zero on the fluid-to-solid interfaces, the temperature trends are continuous.
Further testing still required on more complicated cases, but the core functionality seems to work so far.

* \param[in] val_interface interface index.
* \return Contact resistance value.
*/
const su2double GetContactResistance(unsigned short val_interface) const { return CHT_ContactResistance[val_interface]; }

Check warning

Code scanning / CodeQL

Constant return type on member Warning

The 'const' modifier has no effect on return types. The 'const' modifying the return type can be removed.
@EvertBunschoten
Copy link
Member Author

I get the idea but from the numerical standpoint this is an even worse idea than the way we do fluid-fluid interfaces. Additive decomposition of elliptic equations is not effective at all. Are you looking to model contact between multiple solid materials?

Hi Pedro. What do you mean by additive decomposition? And what do you mean by "effective" in this context? In terms of stability, the model converges rapidly, even when initializing one zone at a temperature far above that of the neighboring zone.

@pcarruscag
Copy link
Member

https://en.wikipedia.org/wiki/Additive_Schwarz_method
How large are the meshes in your examples? I expect convergence will slow down as you go to bigger problems.

@pcarruscag
Copy link
Member

You had I comment but I don't see it here.
In any case, it's the total time to solution (same residual drop) that I expect will get worse. At constant CFL.

@EvertBunschoten
Copy link
Member Author

You had I comment but I don't see it here. In any case, it's the total time to solution (same residual drop) that I expect will get worse. At constant CFL.

Sorry for replying so late, I had to put this project on the back burner for a bit. I made a mistake in my previous analysis, which is why I removed the message. I now ran five simulations with only solid to solid CHT heat transfer with contact resistance. With each simulation I quadrupled the number of mesh elements and ran with a constant CFL.
iterations
The number of iterations required until convergence seems to scale linearly with the number of elements. However, this was not the case for total simulation time, which scales quadratically.
simtime

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants