This page details the major changes and new functionalities released with TRUST version 1.9.5!
We highlight notably the introduction of the CGNS postprocessing format, the new detailed performance logs (TU files), and the concept of “generic” problem.
Physics and numerics
The main changes concerning physics and numerics are as follows:
- The energy equation in Pb_Multiphase can now be solved in enthalpy (h), not temperature : a new problem/equation Pb_Multiphase_Enthalpie/Energie_Multiphase_Enthalpie has been added.
- A new correlation for Nusselt heat flux has been added, including a Nusselt parser with Reynolds (Re) and Prandtl (Pr) number dependency.
- It is now possible to use CMFD type turbulence or parietal heat transfer correlations with (thermo)hydraulic problems. Remember that you should launch TrioCFD for full turbulence modeling.
Code input / outputs
The support for a new (CEA internal) custom type of output file has been added to the LATA plugin, namely the Cathare FORT21 format.
GPU porting
In an on-going effort to port TRUST to GPU architectures, several changes have been released in this version:
-
HIP support has been enabled in PETSc to get Hypre multigrid available on AMD GPU (use with “petsc_gpu gcp gmres { precond boomeramg { } … }”) - New available features in GPU for VEF discretization: Quasi-compressible (complete support), Wale and Smagorinski turbulence models, Semi-implicit scheme, Sources term (Boussinesq, Canal_perio). Also the VEF convection schemes muscl_new and EF_stab are now available in GPU
- Support for new GPU cards has been added: A1000, A2000, H100 GPUs and Cuda 12.x supported (add ./configure -kokkos_hip option to build on AMD with HIP Kokkos backend (still buggy) so default is still OpenMP-target backend (with performance issue on MI250)
- The AmgX multigrid solvers have been upgraded with a better performance (10-15%) noticed on benchmarks
Tools / Validation
The tool allowing to check and manipulate the datasets in Python has been renamed : ‘trustpy’ now becomes ‘trustify’.
You may for example check the syntax of your dataset with ‘trust -trustify my_case.data’.
See a more complete usage example in Outils/trustify/doc/examples/hello_world.
Prerequisites / portability
The following prerequisite upgrades were done:
- patched MEDCoupling to add crackAlong() functionality.
- cmake was upgraded from 3.22 to 3.30. python upgraded from 3.7 to 3.12.
- mpi4py upgraded from 3.0.3 to 4.0.0.
- TRUST is now configured by default with Kokkos SIMD (if C++17) backend enabled
If you need to force a C++14 build of TRUST, you should add the configure option -std=c++14. Else by default, it will use C++17, as TRUST features from Kokkos (GPU, SIMD, OpenMP) are not available with C++14.
Bug fixes
Finally, various bugs have been fixed :
- Performance regression fixed in IJK (seen in FT application in TrioCFD)
- It is now possible to visualize surface fields issued from Champ_post_extraction with VisIt
- The .out files were not closed at the end of the calculation leaving opened file descriptors
- In VEF, Viscous forces on boundaries (printed in _Contrainte_visqueuse.out files) in incompressible Navier-Stokes equations were computed as Integral(-mugrad(u)ndS). It is now computed as Integral(-mu(grad(u) +grad(u)^T)ndS).
- When enabling GPU communications with MPI GPU-aware library, fix KSP_DIVERGED produced by PETSc GPU solvers (especially when using classical multigrid preconditioners) by using OpenMPI 5.x instead of OpenMPI 4.x