Release V1.9.2
TRUST is a thermalhydraulic software package for CFD simulations.
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).
This software is OpenSource (BSD license).
A pre-installed TRUST v1.9.2 version on Ubuntu 20 is available on demand (experimental).
New TRUST version released v1.9.2
is now available on GitHub: https://github.com/cea-trust-platform/trust-code
Table of contents
- How to install?
- How to run preinstalled version?
- 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
1. How to install?
First method:
git clone https://github.com/cea-trust-platform/trust-code.git TRUST-1.9.2
cd TRUST-1.9.2
wget ftp://ftp.cea.fr/pub/TRUST/externalpackages/externalpackages-1.9.2.tar
# or :
# wget "https://drive.google.com/u/0/uc?id=1kbjCcjhySymgIhq5UMmyBTLMUyMuBmaI&export=download&confirm=t" -O externalpackages-1.9.2.tar
tar xf externalpackages-1.9.2.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.2/TRUST-1.9.2.tar.gz
tar xzf TRUST-1.9.2.tar.gz
cd TRUST-1.9.2
./configure -help # To see the possible configure options.
./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. How to run preinstalled version?
-
for TOPAZE and IRENE (Skylake & AMD Rome) supercomputers (64-bit integers version):
source /ccc/cont002/home/den/triou/env_TRUST-1.9.2-int64.sh -
for TOPAZE and IRENE (AMD Rome) supercomputers (GPU version):
source /ccc/cont002/home/den/triou/env_TRUST-1.9.2-gpu.sh -
for IDRIS (jean-zay) supercomputer (64-bit integers version):
source /gpfswork/rech/aih/ume72pt/env_TRUST-1.9.2-int64.sh -
for IDRIS (jean-zay) supercomputer (GPU version):
source /gpfswork/rech/aih/ume72pt/env_TRUST-1.9.2-gpu.sh
3. TRUST Release notes version 1.9.2: Enhancements, modifications and corrected bugs since version 1.9.1:
16/05/23
(TRUST) Fix : In PolyMAC, auxiliary variables are now ignored reduction_0D fields. see check_boundary_diffusion_thermal_balance validation sheet.
16/05/23
(TRUST) Fix : Boundary fluxes (flux_bord_) had the wrong sign in PolyMAC.
15/05/23
(TRUST) Keyword : Add "reuse_preconditioner_nb_it_max n" option to PETSc solvers to reuse preconditioner when matrix changes (default no) if nb_it<=n
15/05/23
(TRUST) Keyword : Add LU (MUMPS) preconditionner: "petsc solver { precond LU { } ... }". May be useful for Newton methods with a reuse preconditioner strategy
10/05/23
(TRUST) New feature : New method 'partition()' in Jupyter validation form Python API. Can be used to partition a case from the notebook. See SampleFormJuptyer.
10/05/23
(TRUST) New feature : New tag '# NB_PAS_DT_MAX n #': can be put in datasets of validation forms to force the number of timesteps that will be used when running the NR test case.
09/05/23
(TRUST) New feature : New option at configure: -without-conda to (try to) install TRUST without using MiniConda. Use at your own risk!
09/05/23
(TRUST) New feature : New keyword Sondes_mobiles|Mobile_probles (as Sondes|Probes) useful for ALE simulations. This will update the positions of the probes in the mesh.
09/05/23
(TRUST) New feature : Nature of interpolation can be choosed for each field with Champ_fonc_tabule_morceaux_interp, see champ_fonc_tabule_different_meshes validation sheet.
03/05/23
(TRUST) Output : MED post-processing format not allowed if nbproc > 5120. Prefer lata format in parallel computation.
25/04/23
(TRUST) Keyword : New syntax for setting residuals computation: residuals { [norm L2|max] [relative 0|1|2] }. norm (L2 norm or max norm by default).
If relative (default 0), normalize with the first residuals (old seuil_statio_relatif_deconseille keyword). See validation form named "Residuals".
If relative set to 2, residual will be computed as R/(max-min).
25/04/23
(TRUST) New feature : Two new fields (that use MEDCoupling) can be used to couple problems defined on overlapping domains with different meshes: Champ_fonc_interp & Champ_fonc_tabule_morceaux_interp.
24/04/23
(TRUST) New option : In case of a code crash, an exit message is displayed containing the line number in the datafile triggering the error.
19/04/23
(TRUST) Validation : Add a new jupyter notebook to compare mono/multi-phase simulations with EOS and CoolProp.
14/04/23
(TRUST) New Feature : option "decoup" is now available for Champ_Fonc_MED and allows the parallel loading of big MED fields.
14/04/23
(TRUST) Change : Lire_MEDFile/Read_MEDFile and Champ_Fonc_MEDFile are not supported anymore.
06/04/23
(TRUST) Minor change : Use iteration instead of time when calling visit from trustutils in validation sheets
04/04/23
(TRUST) Major change : TRUST can be linked to a pre-compiled static library of CoolProp (./configure -with-coolprop=<YOUR_PATH_TO_COOLPROP_INSTALL>).
03/04/23
(TRUST) Portability : Fedora 38 is supported with: sudo dnf install patch g++ gfortran libX11-devel mesa-libGLU-devel texlive-scheme-full
03/04/23
(TRUST) Portability : GNU compilers 13.0.1 are supported
21/03/23
(TRUST) Portability : VisIt works now on Ubuntu 22
21/03/23
(TRUST) Portability : TRUST versions are now built with GNU compilers on orcus-intel/orcus-rome to avoid random crashes or slowdown with MUMPS library.
10/03/23
(TRUST) Major change : TRUST can be linked to a pre-compiled static library of EOS (./configure -with-eos=<YOUR_PATH_TO_EOS_INSTALL>).
07/03/23
(TRUST) New feature : Add MUSIG fields/medium + validation (from SCONE baltik) used with Pb_Multiphase
07/03/23
(TRUST) New feature : Add void_drift multiphase models + validation (both in VDF and PolyMAC_P0)
07/03/23
(TRUST) Validation : Add series of jupyter notebooks to validate Pb_Multiphase and compare VDF/PolyMAC_P0 results
07/03/23
(TRUST) New feature : It is possible to perform axi-symetrical simulations with Pb_Multiphase in VDF
07/03/23
(TRUST) New feature : New Option_VDF added "traitement_gradient" to compute correctly the velocity gradient at the corners. Can use also all_options to activate all Option_VDF options
07/03/23
(TRUST) New feature : Pb_Multiphase is compatable with the VDF discretization (CMFD baltik supports too the VDF discretization)
07/02/23
(TRUST) Fix : It was not possible to resume the field k_eps_realisable
02/02/23
(TRUST) Major Change : Domain and Zone are now merged into a single concept: Domaine. All former keywords remain supported (Sous_Zone, Create_domain_from_sous_zone, etc...), but internally the code now
only work with Domaine.
27/01/23
(TRUST) Portability : Adastra (CINES) cluster is supported
27/01/23
(TRUST) Portability : NVidia compilers (nvc++, nvc, nvfortran) now fully supported for GPU offload with OpenMP-target (./configure -cuda -openmp)
27/01/23
(TRUST) HPC : VEF GPU kernels optimized with a reduction of host-device copy
27/01/23
(TRUST) HPC : OpenBLAS 0.3.21 (vectorized, threaded) is now used for Blas/Lapack library
27/01/23
(TRUST) HPC : Vectorization flag (-mavx2, -mavx, ...) determined during configure phase and used during build (opt_avx mode is then deprecated)
27/01/23
(TRUST) Tools : Upgrade to MEDCoupling 9.10.0
23/01/23
(TRUST) Feature : convertAllToPoly option in Lire_MED keyword may now be used to convert all MED mesh to polyedra not only MED mesh with different cell types
19/01/23
(TRUST) Fix : Pressure force was not computed at t=tinit and not correctly updated/printed for a probe if dt_impr value was greater than probe period
13/01/23
(TRUST) Fix : Post-processing fields on sub-zones: couldn't post-process PolyMAC fields with MED format + some fields were not found because of bad names
03/01/23
(TRUST) Major Change : For Pb_Multiphase, simple calls are now applied to compute fluid/saturations properties (improve significantly the performance especially with libraries like EOS, RefProp, ...)
03/01/23
(TRUST) Change : Homogeneous Neumann boundary condition (BC) is applied on the velocity field if a fixed pressure BC is prescribed at an open boundary.
19/12/22
(TRUST) Output : if -journal verbosity set to a value >=1 when running computation, log files will be written even if nbproc > 5120
4. TRUST Developer notes version 1.9.2: Changes since version 1.9.1:
15/05/23
(TRUST) Major change : Complete API for GPU programming in TRUST/Baltiks is available now to use together with GPU compatible TRUSTArray classes (see Device.h|cpp&TRUSTArray.h|cpp) for more infos
15/05/23
(TRUST) Major change : VEF laminar flow may be simulated on GPU devices (NVidia/AMD) thanks to OpenMP offloading (./configure -cuda -openmp) and dedicated solvers (AmgX/rocALUTION)
14/04/23
(TRUST) Change : Lire_MEDFile/Read_MEDFile and Champ_Fonc_MEDFile are not supported anymore.
04/04/23
(TRUST) Major change : TRUST can be linked to a pre-compiled static library of CoolProp (./configure -with-coolprop=<YOUR_PATH_TO_COOLPROP_INSTALL>).
03/04/23
(TRUST) Minor change : A customized list of tests can be used for non-regression or validation: make check_optim TESTLIST="path_to_the_list" or make validation TESTLIST="path_to_the_list"
10/03/23
(TRUST) Major change : TRUST can be linked to a pre-compiled static library of EOS (./configure -with-eos=<YOUR_PATH_TO_EOS_INSTALL>).
10/03/23
(TRUST) MPI : MPI_Gather/MPI_Allgatheri/MPI_Allgatherv wrapped functions added to TRUST
07/02/23
(TRUST) Major change : TRUST_Ref is a template class now. No need for macros to declare/implement. Used always with the REF macro.
02/02/23
(TRUST) Major Change : Domain and Zone are now merged into a single concept: Domaine. All former keywords remain supported (Sous_Zone, Create_domain_from_sous_zone, etc...), but internally the code
now only work with Domaine. All Zone_* classes become Domaine_* class (Domaine_VDF, Domaine_VEF, Domaine_Cl_dis_base, etc...)
24/01/23
(TRUST) Major change : TRUST_Deriv is a template class now. No need for macros to declare/implement. Used always with the DERIV macro.
24/01/23
(TRUST) Major change : TRUST_List is a template class that encapsulates an std::list. No need for macros to declare/implement. Used always with the LIST macro.
24/01/23
(TRUST) Major change : TRUST_Vector is a template class that encapsulates an std::vector of shared_ptr. No need for macros to declare/implement. Used always with the VECT macro.
03/01/23
(TRUST) Parser_Eval : Huge refactoring !
03/01/23
(TRUST) Rename classes: Champ_Face => Champ_Face_VDF, Champ_Fonc_Face => Champ_Fonc_Face_VDF, Champ_Face_implementation => Champ_Face_VDF_implementation
5. externalpackages Release notes version 1.9.1: Enhancements, modifications and corrected bugs since version 1.9.2:
27/01/23
(externalpackages) Minor change: MEDCoupling upgraded to 9.10.0
6. Version tested on several OS
CentOS Linux release 7.9.2009
Debian GNU/Linux 11
Fedora release 30
Fedora release 32
Fedora release 34
Fedora release 36
Red Hat Enterprise Linux release 8.4
Red Hat Enterprise Linux release 8.5
Red Hat Enterprise Linux release 8.6
Ubuntu 18.04 LTS
Ubuntu 20.04 LTS
Ubuntu 22.04 LTS
7. Version portability with several compilers
clang++ 10.0.0
clang++ 12.0.0
clang++ 14.0.0
g++ 4.8.5
g++ 7.5.0
g++ 8.3.0
g++ 8.5.0
g++ 9.0.1
g++ 9.4.0
g++ 10.0.1
g++ 11.0.1
g++ 11.1.0
g++ 11.3.0
g++ 12.0.1
icpc 19.0.5.281
nvc++