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).
TRUST (and its baltiks) is, since v1.9.6, built with 64-bit-integers support by default!
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.6
cd TRUST-1.9.6
wget ftp://ftp.cea.fr/pub/TRUST/externalpackages/externalpackages-1.9.6.tar
# or :
# wget "https://drive.usercontent.google.com/download?id=1LAbrUO0at7eN_nwg28F92SF4SS_Qw4K5&export=download&authuser=4&confirm=t" -O externalpackages-1.9.6.tar
# Unzip the downloaded external packages folder
tar xf externalpackages-1.9.6.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.6/TRUST-1.9.6.tar.gz
tar xzf TRUST-1.9.6.tar.gz
cd TRUST-1.9.6
./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.6 : Enhancements, modifications and corrected bugs since version 1.9.5 :
06/05/25
(TRUST) Keyword : Schema_Euler_Explicite: advanced 'facsec' usage (with options facsec_ini, etc.) is now accessible through attribute 'facsec_expert'. facsec as a parser expression accessible with 'facsec_func'.
05/05/25
(TRUST) New feature : Convection/Diffusion contributions for all species are added to a seperate .out file when using the mass source term in a weakly-compressible simulation.
05/05/25
(TRUST) New feature : Integration of the IMUSIG algorithm from Baltik SCONE considering a constant Sauter diameter per class
25/04/25
(TRUST) GPU : Several VEF source terms ported (constituant and puissance_thermique for incompressible/quasi-compressible flows)
25/04/25
(TRUST) GPU : Change AmgX C-AMG defaults (selector from PMIS to HMIS and strength threshold from 0.25 to 0.8) to have more robust/faster multi-GPU solver
25/04/25
(TRUST) GPU : MI300A partition on Adastra supported with ./configure -rocm=gfx942
25/04/25
(TRUST) GPU : H100 partition on JeanZay supported with ./configure -cuda=cc90
25/04/25
(TRUST) GPU : Read_matrix option of PETSc GPU solvers fixed in order to reduce MPI communications onto VEF meshes. See AMG_L1 test case
16/04/25
(TRUST) Bug fixed : Pressure initial conditions couldn't be set in VEF P0
15/04/25
(TRUST) New feature : New Discontinous Galerkin discretization (order 1-2), limited to conduction 2D for now. It is working with polyedric meshes. Examples are available in Diffusion_DG notebook.
14/04/25
(TRUST) Change : Keyword EcritureLectureSpecial now only supports option 0 or 1, all other former options are now deprecated.
02/04/25
(TRUST) Bug fix : PolyMAC_P0 calculations crashed with out of memory. Better memory allocation which leads to performance improvement
28/03/25
(TRUST) New feature : Backup files can be written in HDF5 format using the PDI library. With this keyword, there is no longer a single backup file for every processor, but one file per NUMA node. The syntax to use is as follows: "sauvegarde|reprise pdi filename". All the necessary YAML files to initialize PDI are automatically generated and the user does not need to provide it. However, if one wants to use a personal YAML file to initialize PDI, the syntax is: "sauvegarde|reprise pdi_expert { checkpoint_fname ... yaml_fname ... }". The "pdi" keyword (but not the "pdi_expert" keyword) is also available with Champ_Fonc_Reprise. The "single_hdf" keyword is still available but is deprecated.
28/03/25
(TRUST) IO : Option -journal_shared (to dump log in a single HDF file) is no longer available
25/03/25
(TRUST) New feature : Create new Pb_XXX_IBM problems and XXX_IBM equations to be used when using a Source_PDF model for immersed boundary methods
24/03/25
(TRUST) New feature : Possible to use a multiphase multiplicator with the VDF discretization
24/03/25
(TRUST) New feature : Isotrope, Anisotrope, Circular and Directional pressure-loss sources are available for the VDF discretization
24/03/25
(TRUST) New feature : Flux_parietal correlation for Pb_Multiphase can be used with the VDF discretization
14/03/25
(TRUST) Change : Remove restrictions for IJK-multigrid splitting.
05/03/25
(TRUST) Minor change : Postprocessing: 'dt_post' and 'nb_dt_post' can now be used outside the 'fields' part of the postprocessing block.
03/03/25
(TRUST) New feature : Add Lata_2_CGNS interpret that can be used to convert lata files into CGNS ones
03/03/25
(TRUST) New feature : Lata_2_MED & LataLoader can be applied on polyhedral meshes
03/03/25
(TRUST) GPU : Parallel run with number of MPI processes greater than GPU works again though less efficient. Useful for non regression on multi-GPU node
03/03/25
(TRUST) Keyword : Algebric Multigrid preconditioned solver keyword which select a good choice for CPU/GPU/MPI: solver AMG GCP { rtol|atol value [impr] }
03/03/25
(TRUST) GPU : Lot of performance improvements in VEF kernels and more VEF features available (y_plus field, source terms for dilatable fluid, time-dependent boundary conditions)
03/03/25
(TRUST) GPU : PETSc updated from 3.20 to 3.22 to benefit from GPU solver improvements (Hypre, STRUMPACK)
03/03/25
(TRUST) GPU : Ada Nvidia architecture card with compute capability 89 (e.g. RTX 4070) and gfx1100 AMD cards supported
03/03/25
(TRUST) GPU : A100 partition is supported on JeanZay, A100 and H100 partitions on orcus
03/03/25
(TRUST) GPU : Performance regression on adastra -MI250 AMD) fixed by using HIP backend for Kokkos
03/03/25
(TRUST) GPU : Parser and several Champ_Generiques (Reduction_0D, Transformation, Interpolated) ported
03/03/25
(TRUST) GPU : Configure option -openmp to build GPU code is refused as OpenMP target instructions are removed from the code and as it rely only on Kokkos framework (updated from 4.2 to 4.5)
03/03/25
(TRUST) MPI : Configure option -force_provided_openmpi now use OpenMPI 4.1.6 and -force_latest_openmpi now use OpenMPI 5.0.5
03/03/25
(TRUST) Change : Parser rewrite can create different initialization for random fields (Champ_front_bruite, ...) or advanced fields using Rnd function
03/03/25
(TRUST) Change : y+ field were possibly wrong on tetraedra/triangle with more than one boundary face
19/02/25
(TRUST) Minor change : Postprocessing: 'dt_post' and 'nb_dt_post' can now be used outside the 'fields' part of the postprocessing block.
18/02/25
(TRUST) Change : dt_impr_ustar_mean_only prints now surface-averaged values instead of mean values on boundaries
18/02/25
(TRUST) New keyword : dt_impr_nusselt_mean_only prints into a .out file the surface-averaged Nusselt related values on all or some specified boundaries (VDF/VEF/EF discretizations)
14/02/25
(TRUST) Major change : TRUST (and its baltiks) is now built with 64b support by default! Old 32b mode can still be built with '-with-32-bit-indices'
07/02/25
(TRUST) New Keyword : [CMFD] semantics: add "models" keywords in addition to "correlations" to better fit with the Euler-Euler RANS two-phase flow framework.
06/02/25
(TRUST) Bug fix : In PolyMAC and PolyMAC_P0P1NC, bug fix regarding nonzero Neumann conditions in the diffusive terms. See poissonSolver_PolyMAC validation form.
06/02/25
(TRUST) Bug fix : Fix uninitialized buffer during communications in IJK FT (for TrioCFD)
03/02/25
(TRUST) New feature : A new postprocessing field "wall_temperature" is now available for both VDF and VEF discretizations. It can be used to visualize the temperature at the wall for a thermal problem.
03/02/25
(TRUST) New feature : A new boundary-condition "Echange_externe_radiatif" is now available for both VDF and VEF discretizations. It can be used to evacuate heat from a conduction problem via radiation.
03/02/25
(TRUST) New feature : Multi-Scalar Matricial Diffusion is now available for VDF discretization. See diffusion_multi_scalaire validation notebook.
28/01/25
(TRUST) New feature : Add new PolyMAC option "Maillage_VDF" or "VDF_Mesh" that can be used when using a PolyMAC scheme with a VDF-like mesh.
28/01/25
(TRUST) New Change : Option_PolyMAC_P0 should be now replaced by Option_PolyMAC.
28/01/25
(TRUST) New feature : Configure flag '-64-bit-new' can be used to compile TRUST with 64b support. See Jupyter form HowTo_64b to learn how to write a 64b dataset.
3. TRUST Developer notes version 1.9.6 : Changes since version 1.9.5 :
29/04/25
(TRUST) New feature : Param::ajouter_flag() must now be used with boolean parameters. Old method with integer flags will be removed soon (but after 1.9.6)
16/04/24
(TRUST) CI : Result comparison is not done anymore (make check|ctest) for test cases with header "# lance_test N ecarts #" except on the reference PC
15/04/25
(TRUST) New feature : Create reshape function to modify the dimensions of a TRUSTTab, the total size of the array must remain the same
03/04/25
(TRUST) Baltiks : In addition to optimized $TRUST_MEDCOUPLING_ROOT/env.sh, new debug environment $TRUST_MEDCOUPLING_ROOT/env_debug.sh is available if medcoupling debug mode enabled (./configure -enable-mc-debug)
03/04/25
(TRUST) Baltiks : New Makefile targets "make swig_optim, swig_debug, swig_semi_optim, swig ctest" for baltiks (if $project_directory/share/swig/CMakeLists.txt exists) to build/test icoco_python
11/03/25
(TRUST) Minor change : Param::ajouter_deriv() removed, use Param::ajouter() instead
03/03/25
(TRUST) GPU : Performance regression can be checked with: cd tests/GPU && ./check_perf.sh
03/03/25
(TRUST) GPU : Refactor/factorize the Kokkos implementation in TRUSTArray: DualView suppressed and accessors view_ro/view_rw/view_ro rewritten
26/02/25
(TRUST) Baltiks : make distrib_git generates dependencies archives as specified in project.cfg without impact. For example, MEDICoCo: ./ICoCo_src will generate ICoCo_src.tar.gz instead of MEDICoCo.tar.gz
19/21/25
(TRUST) Tools : env_for_python.sh, env.sh for MEDCOUPLING and for LataLoader do not add exec/python to LD_LIBRARY_PATH.
19/21/25
(TRUST) Tools : HDF5 is now installed as a library outside MED, not within MED. Environment variable $TRUST_HDF5_ROOT created.
28/01/25
(TRUST) New feature : Configure flag '-64-bit-new' can be used to compile TRUST with 64b support. Many Interprete_geometrique templatized to have both a 32 and 64b version.
28/01/25
(TRUST) Refactor : Clearer class structure for MD_Vector, and introduction of the MD_Vector_seq class used as a dummy MD structure for sequential parts.
14/01/25
(TRUST) Minor change : Creation of a type for IJK vector fields
10/01/25
(TRUST) Fix : Minor bug fix in matrice_bloc (no impact on TRUST&TrioCFD)
4. externalpackages Release notes version 1.9.6 : Enhancements, modifications and corrected bugs since version 1.9.5 :
02/05/2025
(externalpackages) Minor change: Update pdi to 1.9.0 version
16/04/2025
(externalpackages) New package : pdi 1.8.3
14/03/2025
(externalpackages) New package : kokkos-kernels 4.4.01 for PETSc
14/03/2025
(externalpackages) Minor change: PETSc updated to 3.22.4
04/03/2025
(externalpackages) Minor change: cppunit package removed
03/03/2025
(externalpackages) New package : Kokkos 4.5.00 added to externalpackages
03/03/2025
(externalpackages) New package : OpenMPI 4.1.6 added to externalpackages
03/03/2025
(externalpackages) Portability : PETSc updated from 3.20 to 3.22 to benefit from GPU solver improvements (Hypre, STRUMPACK)
19/02/2025
(externalpackages) Minor change: MEDCoupling updated to 9.14
13/02/2025
(externalpackages) New package : gnuplot 6.0.2 added
13/02/2025
(externalpackages) New package : OpenBlas 0.3.29 added, 0.3.21 and 0.3.23 removed
04/02/2025
(externalpackages) New package : GoogleTest (gtest) package added
5. Version tested on several OS
Debian GNU/Linux 11
Debian GNU/Linux 12
Debian GNU/Linux 13
Fedora release 32
Fedora release 34
Fedora release 36
Fedora release 38
Fedora release 40
Fedora release 42 (with clang++ 20.1.3 compiler)
Red Hat Enterprise Linux release 8.4
Red Hat Enterprise Linux release 8.5
Red Hat Enterprise Linux release 8.8
Red Hat Enterprise Linux release 9.4
Red Hat Enterprise Linux release 9.6
Rocky Linux release 9.3
Rocky Linux release 9.5
Ubuntu 22.04.5 LTS
Ubuntu 24.04.2 LTS
6. Version portability with several compilers
clang++ 14.0.0
clang++ 16.0.0
clang++ 19.1.7
clang++ 20.1.3
g++ 10.0.1
g++ 10.2.1
g++ 11.0.1
g++ 11.2.0
g++ 11.4.0
g++ 11.5.0
g++ 12.0.1
g++ 13.0.1
g++ 13.3.0
g++ 14.0.1
g++ 14.2.0
g++ 8.3.0
g++ 8.4.1
g++ 8.5.0
g++ 9.4.0
hipcc 6.2.41133-dd7f95766
icpx 2025.0.0
nvc++ 23.5-0
nvc++ 23.7-0