TRUST is a thermalhydraulic software package for CFD simulations (https://cea-trust-platform.github.io).
It was originally designed for incompressible single-phase and Low Mach Number
flows, but now also allows simulating real compressible multi-phase flows.
TRUST is also being progressively ported to support GPU acceleration (NVidia/AMD).
Further porting improvements towards GPU have been done, specifically for the VEF
discretization. Do not hesitate to contact the support team or SGLS/LCAN for more
details, or if you intend to rely on those functionalities.
Notes for PolyMAC developers: the different variants of PolyMAC discretization will
be renamed after the release 1.9.7 to fit the litterature. For users, old keywords
will be supported for at least 2 next code releases.
This software is OpenSource (BSD license).
Table of contents
- How to install?
- TRUST Release notes
- TRUST Developer notes
- externalpackages Release notes
- Version tested on several OS
- Version portability with several compilers
TRUST support team: [email protected]
Website: https://cea-trust-platform.github.io
How to install?
First method:
git clone https://github.com/cea-trust-platform/trust-code.git TRUST-1.9.7
cd TRUST-1.9.7
wget ftp://ftp.cea.fr/pub/TRUST/externalpackages/externalpackages-1.9.7.tar
# or :
# wget "https://drive.usercontent.google.com/download?id=1PsGqQTlWg_5p4d7xQP-L4lVoBCwepur2&export=download&authuser=4&confirm=t" -O externalpackages-1.9.7.tar
# Unzip the downloaded external packages folder
tar xf externalpackages-1.9.7.tar
./configure -help # To see the possible configure options.
./configure $OPTIONS # where $OPTIONS is the list of selected options.
make
Second method:
wget ftp://ftp.cea.fr/pub/TRUST/TRUST/Version1.9.7/TRUST-1.9.7.tar.gz
tar xzf TRUST-1.9.7.tar.gz
cd TRUST-1.9.7
./configure -help # To see the possible configure options. On various OS, we configure TRUST with OPTIONS -force_provided_mpich (DO NOT use it on HPC clusters)
./configure $OPTIONS # where $OPTIONS is the list of selected options.
make
Warning: Check carefully the MPI version you want to use for parallel computing before installing the code, especially onto a HPC cluster.
The command mpicxx should be found into the bin directory of the MPI version you plan to use, to check that, run:
type mpicxx
NB: If you cannot get externalpackages, please contact TRUST support team
2. TRUST Release notes version 1.9.7 : Enhancements, modifications and corrected bugs since version 1.9.6 :
12/11/25 (TRUST) Bug fix : Restart with PDI must be done wih the same number of MPI nodes as the checkpoint.
10/11/25 (TRUST) I/O : Checkpoint/restart mechanism for different partition (.xyz format) disabled by default. Add "EcritureLectureSpecial 1" into datafile to enable it
10/11/25 (TRUST) GPU : Fine tune AMG solver with AmgX for Nvidia and output more infos about GAMG preconditioner
10/11/25 (TRUST) GPU : Fix huge launch of kernels during parallel calculation which degraded performance with possible slowdown
10/11/25 (TRUST) GPU : Features available: periodic BC for EF_stab, Champ_fonc_fonction_txyz_morceaux, Extraire_Domaine and Extraire_Surface
10/11/25 (TRUST) GPU : AMD rocALUTION solvers are removed
07/11/25 (TRUST) Change : Counters printed in the .TU files and their API have changed. Details regarding those changes can be found in the TRUST online documentation or in the validation form located in $TRUST_ROOT/Validation/Rapports_automatiques/Verification/HowTo/Post_treatment_performance/
06/11/25 (TRUST) GPU : Optimize the diffusion Kernel in VEF
31/10/25 (TRUST) Fix : New formulation for the PolyMAC convection operator and correction of the expression for unstructured meshes
28/10/25 (TRUST) New feature : Add a Robin Boundary condition Available for NS equation in VEF discretization.
27/10/25 (TRUST) Fix : Stability time-step computation is now evaluated correctly for the convective operator of PolyMAC.
27/10/25 (TRUST) New feature : Add getOutputPointValues method to get field values at given point(s) in space. Currently only for sequential calculations. Available also in ICoCo for ProblemTrio.
21/10/25 (TRUST) Fix : Mandatory ModifyDomaineAxi1D (define axi 1D origin) for parallel test cases with Domaine_EF_axi
17/10/25 (TRUST) Keyword : 'med_major' post-processing format not supported anymore
17/10/25 (TRUST) Minor change : TRUST (and its baltiks) cannot be built with '-with-32-bit-indices'. Default and unique mode is with 64b support!
14/10/25 (TRUST) Fix : Paroi_contact VEF was not working if diffusion operator is anisotropic
03/10/25 (TRUST) Fix : Correction to homogenize the sizes of discretization tables in parallel in the case of hybrid meshing
17/09/25 (TRUST) Tools : Upgrade MEDCoupling to 9.15.0 and MED to 4.2.0
16/09/25 (TRUST) Fix : When reading a mesh from med file in bidim_axi, area of domain boundaries were not correctly computed.
12/09/25 (TRUST) Fix : In 3D VDF, if the boundary with normal vector in x-direction is moving in y-direction, wall velocity norm was not correctly computed
04/09/25 (TRUST) Fix : Fix lata postprocessing and lata_to_med conversion in EF_Axi discretization
01/09/25 (TRUST) Memory : Reduced footprint again (-40%) for VEF discretization (now ~2.5KB/tetra) during a typical calculation with algebric multigrid solver
01/09/25 (TRUST) GPU : Blackwell architecture partially supported (B200, B100, RTX 50xx) cause needs Nvidia HPC SDK>=25.3 and Cuda 12.8. Use ./configure -cuda=cc100
01/09/25 (TRUST) GPU : Nvidia H200 and Grace Hopper GH100 supported (see env_src/HOST_calypso-grace.sh example)
01/09/25 (TRUST) Linux : Fedora 42 and GNU 15.x compilers supported
28/08/25 (Tools) Minor change : Configure option -disable-tcl_tk has been removed since Tcl/Tk librairy is not needed anymore
26/08/25 (Tools) New feature : For validation forms, -no_visit option added to Run_fiche. If specified, VisIt plots are skipped when running notebooks/generating PDF
26/08/25 (TRUST) Fix : Turbulent viscosity computed in Mixing Length (l_melange) model in Multiphase was not correctly computed.
31/07/25 (TRUST) Fix : Shear rate was not correctly computed in Multiphase VDF calculation with at least two phases
28/07/25 (TRUST) Portability : cmake 3.26.0 or newer is necessary to install PETSc 3.23.2 and so TRUST.
28/07/25 (TRUST) Library : Update PETSc 3.22.4 to 3.23.2 for GNU 15.x support, Cuda 12.8 support, GPU fixes
28/07/25 (TRUST) Fix : Extraire_plan on large mesh could introduce severe slowdown every time-step
28/07/25 (TRUST) Option : Expert_only option depecated for the VerifierCoin keyword
28/07/25 (TRUST) Memory : Reduce 5-10% memory footprint when using muscl/upwind schemes in VEF 3D
28/07/25 (TRUST) Fix : Possible KSP divergence on multi-node Nvidia GPU with MPI Cuda-aware
28/07/25 (TRUST) GPU : Support of old Turing cards (T1000)
28/07/25 (TRUST) GPU : First implicit scheme (Implicite) in VEF available on GPU (with muscl/ef_stab/upwind schemes and diffusive term)
28/07/25 (TRUST) GPU : More Quasi-compressible features accelerated in VEF
28/07/25 (TRUST) GPU : Lot of kernel optimizations in VEF (muscl/upwind schemes, diffusion term and semi-implicit scheme)
28/07/25 (TRUST) Change : When diffusion is implicited on a flow with null velocity initial condition, first time step is based on diffusive time step not dt_max
28/07/25 (TRUST) Fix : Large slowdown on GPU when Extraire_plan was used to create a 2D domain for lightweight postprocessing
28/07/25 (TRUST) Solver : AMG wrapper solver detect block-structure matrix in VEF, which dramatically improves convergence, especially on meshes with high amplitude for cell volumes
11/07/25 (TRUST) Tools : In addition to LATA and MED plugins, VisIt installed in TRUST can read CGNS format on some platforms
11/07/25 (TRUST) New keyword : Singular loss pressure eps option should be replaced by alpha option for regul keyword (to be coherent with Flica5)
11/07/25 (TRUST) GPU : Add a new fast direct solver limited to a single Nvidia GPU: cuDSS LU|Cholesky { [algo int] [impr] }
01/07/25 (TRUST) Bug fixed : Crash in parallel during a Pb_multiphase simulation when elimination in SETS scheme failed
01/07/25 (TRUST) Bug fixed : Crash for Front Tracking simulation with time-dependent velocity boundary condition in VDF
3. TRUST Developer notes version 1.9.7 : Changes since version 1.9.6 :
21/11/25 (TRUST) NR Tests : When running make ctest_MODE in TRUST or Baltiks, possible to add ctest options. For example: 'export CTEST_OPTS="$CTEST_OPTS --test-load $TRUST_NB_PHYSICAL_CORES"' adds ctest test load threshold.
17/11/25 (TRUST) NR Tests : if TRUST_SKIP_SCAN_FORMS env variable exported to 1, the scan of validation forms is skipped
27/10/25 (TRUST) New feature : Add getOutputPointValues method to get field values at given point(s) in space. Currently only for sequential calculations. Available also in ICoCo for ProblemTrio.
16/10/25 (TRUST) Baltiks : It is now possible in baltiks to add new file 'Baltik_Version.h' (to override $TRUST_ROOT/src/Kernel/Utilitaires/Baltik_Version.h) in which BALTIK_VERSION and BALTIK_NAME are set. If it is the case, BALTIK_NAME and BALTIK_VERSION will be displayed when running baltik executable.
03/10/25 (TRUST) Statistics : Complete redesign of counters in TRUST. Everything is now managed by the Perf_counters class. A new time wrapper include in Perf_counters. Custom counters can be now added more easily
24/09/25 (TRUST) Minor change : Dataset flags must now be booleans and initialized to false (previously, flags in datafiles were declared as integers). See method Param::ajouter_flag
12/09/25 (TRUST) NR Tests : if error when extracting NR cases from a jupyter notebook, output is written into a file to help during debug process
01/09/25 (TRUST) GPU : Update Kokkos from 4.5 to 4.7
26/08/25 (TRUST) New feature : Tag 'TRUSTIFY NOT' can be put at the begining of a dataset to skip the trustify check.
31/07/25 (TRUST) NR Tests : Timeout set to 10 minutes while running NR cases for TRUST and baltiks
31/07/25 (TRUST) Turbulence : All transport equations of Modele_turbulence_hyd_2_eq_base are now OWN_PTR of OWN_PTR(Transport_2eq_base)
28/07/25 (TRUST) Tool : Fix regression in the Debog tool (tracks sequential-parallel or host-device results difference)
28/07/25 (TRUST) GPU : Add trust option -rocprof to profile code on AMD GPU
28/07/25 (TRUST) GPU : TRUST_DISABLE_FENCE environment variable to enable asynchronous Kokkos kernels
28/07/25 (TRUST) GPU : Add kokkos-kernels package (math kernels on GPU) through PETsc but not enabled by default
25/07/25 (TRUST) NR Tests : Sserver now supports timeout option and can be passed with the '-t' option
4. externalpackages Release notes version 1.9.7 : updated/added/deleted externalpackages since 1.9.6 :
10/11/2025 (externalpackages) Minor change: kokkos-kernels upgraded to 4.7.00
10/11/2025 (externalpackages) Minor change: rocALUTION removed
05/11/2025 (externalpackages) New package : cython
17/09/2025 (externalpackages) Minor change: MED updated to 4.2.0
17/09/2025 (externalpackages) Minor change: MEDCoupling updated to 9.15.0
01/09/2025 (externalpackages) Minor change: tcl_tk removed from externalpackages
01/09/2025 (externalpackages) New package : OpenBlas updated to 0.3.29, version 0.3.25 removed
01/09/2025 (externalpackages) New package : Kokkos 4.7.00 added to externalpackages, 4.5.00 and 4.6.01 removed
01/09/2025 (externalpackages) Portability : hypre updated to 2.33.0 for GNU 15.x support, 2.32.0 removed
28/07/2025 (externalpackages) Portability : PETSc updated to 3.23.2 for GNU 15.x support
11/07/2025 (externalpackages) New package : cuDSS 0.6.0 added to externalpackages
09/07/2025 (externalpackages) Minor change: CGNS updated to v4.5.0
5. Version tested on several OS
Debian GNU/Linux 13
Fedora release 32
Fedora release 34
Fedora release 38
Fedora release 40
Fedora release 43
Red Hat Enterprise Linux release 8.4
Red Hat Enterprise Linux release 8.10
Red Hat Enterprise Linux release 9.4
Rocky Linux release 9.3
Rocky Linux release 9.5
Rocky Linux release 9.6
Ubuntu 22.04.5 LTS
Ubuntu 24.04.2 LTS
Ubuntu 24.04.3 LTS
6. Version portability with several compilers
clang++ 16.0.0
clang++ 21.1.5 (add configure flag -disable-gtest)
g++ 10.0.1
g++ 10.3.0
g++ 11.0.1
g++ 11.2.0
g++ 11.4.0
g++ 11.5.0
g++ 13.0.1
g++ 13.3.0
g++ 14.2.0
g++ 15.2.1
g++ 8.3.0
g++ 8.4.1
g++ 8.5.0
g++ 9.4.0
hipcc 6.2.41133-dd7f95766
hipcc 6.2.41134-65d174c3e
icpx 2025.0.0
nvc++ 23.5-0
nvc++ 23.7-0