Skip to content

Release V1.9.0

Compare
Choose a tag to compare
@trust-tma trust-tma released this 30 Jun 15:24
· 3097 commits to master since this release

TRUST is a thermalhydraulic software package for CFD simulations.
It was originally designed for incompressible single-phase and Low Mach Number flows,
but an increasing effort is made towards simulating real compressible multi-phase flows.
This software is OpenSource (BSD license).


New TRUST version released v1.9.0

is now available on GitHub: https://github.com/cea-trust-platform/trust-code


Table of contents

  1. How to install?
  2. How to run preinstalled version?
  3. TRUST Release notes
  4. TRUST Developer notes
  5. externalpackages Release notes
  6. Version tested on several OS
  7. Version portability with several compilers

TRUST support team: [email protected]
Website: http://triocfd.cea.fr/


1. How to install?

First method:

git clone https://github.com/cea-trust-platform/trust-code.git TRUST-1.9.0
cd TRUST-1.9.0
wget ftp://ftp.cea.fr/pub/TRUST/externalpackages/externalpackages-1.9.0.tar
tar xf externalpackages-1.9.0.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.0/TRUST-1.9.0.tar.gz
tar xzf TRUST-1.9.0.tar.gz
cd TRUST-1.9.0
./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


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.0-int64.sh

  • for TOPAZE and IRENE (AMD Rome) supercomputers (GPU version):
    source /ccc/cont002/home/den/triou/env_TRUST-1.9.0-gpu.sh

  • for IDRIS (jean-zay) supercomputer (64-bit integers version):
    source /gpfswork/rech/fej/ugz82dj/env_TRUST-1.9.0-int64.sh

  • for IDRIS (jean-zay) supercomputer (GPU version):
    source /gpfswork/rech/fej/ugz82dj/env_TRUST-1.9.0-gpu.sh


3. TRUST Release notes version 1.9.0: Enhancements, modifications and corrected bugs since version 1.8.4:

17/06/22 (TRUST) New feature : New ICoCo method : set/getInputIntValue() to drive the "equation_non_resolue" parameter. Also added "getDirectAccessToUnknown()" method to directly access TRUST unknown array.
14/06/22 (TRUST) Tools : Upgrade to MEDCoupling 9.9.0
07/06/22 (TRUST) Major Change: Much more functionalities and developpements for Pb_Multiphase. The problem supports now additional equations for turbulence modelling !
07/06/22 (TRUST) Major Change: Huge refactoring/reformulation of the discretizations PolyMAC & PolyMAC_P0 (previous CoviMAC). Schemes are now more stable and compatible with Pb_Multiphase
30/05/22 (TRUST) Fix : High frequency writing MED files were slower and slower
30/05/22 (TRUST) Build : Add configure option -force_system_mpi to use system MPI library (provided MPICH library by default on PC)
23/05/22 (TRUST) New feature : Add a new turbulent boundary layer model (WW) that can be used for an immersed boundary condition (IBC) with the finite element discretization
10/05/22 (TRUST) New keyword : Post processing option "DeprecatedKeepDuplicatedProbes 1" to keep previous strategy when writing probes (keep duplicated points)
09/05/22 (TRUST) Fix : Option Correction_visco_turb_pour_controle_pas_de_temps wasn't correctly implemented producing residual jumps during restart
09/05/22 (TRUST) V&V : New verification sheet for GPU solver with semi-implicit scheme added under Validation/Rapports_automatiques/Verification/Solveurs/GPU directory
09/05/22 (TRUST) New keyword : Add impr_extremums 0|1 option for time scheme in order to print unknowns range with dt_impr period (useful to track over/undershoots caused by convective operator)
06/05/22 (TRUST) New keyword : Equation option "disable_equation_residual 0|1" to not use current equation residual when computing problem residual (useful for permanent KEps simulation when residuals don't decrease)
05/05/22 (TRUST) Portability : Ubuntu 22 supported (VisIt issues though)
05/05/22 (TRUST) Portability : Fedora 36 and GNU compilers 12.0.1 are supported
04/05/22 (TRUST) New keyword : Champ_Front_Tabule_Lu is a new boundary field that can be used to create a Champ_Front_Tabule field from a column file. Syntax : Champ_Front_Tabule_Lu nb_comp your_file
04/05/22 (TRUST) New feature : Add list of low-storage/classical time Runge-Kutta schemes with order 2,3 and 4.
03/05/22 (TRUST) New keyword : Definition_champs_fichier { file filename } to read definition_champs from a file
03/05/22 (TRUST) Major Change: Class and SFINAE templates are introduced to factorize the implementation of TRUST Don fields.
20/04/22 (TRUST) Fix : Unit if known was not written into MED file for a scalar field
20/04/22 (TRUST) New keyword : Partition_tool Fichier_MED: allows to split a domain according to an integer field (giving the proc number of each element) stored in a MED file.
07/04/22 (TRUST) Major Change: TRUST int/double Arrays, Vects, Tabs and Travs are now class templates
01/04/22 (TRUST) New feature : New implementation of Champ_fonc_tabule_morceaux. Allows to use multiple parameter fields and improve performance.
28/03/22 (TRUST) Fix : Champ_front_synt boundary condition had some bugs which are fixed now, parameter p ranamed to KeOverKmin.
28/03/22 (TRUST) Major Change: Pb_Multiphase can handle arbitrary additional equations (LIST) to handle turbulence modelling
28/03/22 (TRUST) Major Change: The CoviMAC discretization is improved and leads to more stable results
08/03/22 (TRUST) Fix : Keyword Pre_calc_pression crashed under certain circumstancies due to unitialized values of tau_tan
22/02/22 (TRUST) V&V : Add new validation forms poiseuille_vdf & cavite_entrainee_2D
22/02/22 (TRUST) Fix : It is possible to use now an implicit scheme with the VDF option traitement_coins (necessary for a Poiseuille test case for example)
22/02/22 (TRUST) Fix : Coeff/flux implementations are now coherent in the VDF face diffusion operator
22/02/22 (TRUST) Major Change: The transpose of the velocity gradient is now taken into account in the VDF face diffusion operator (for const/var & lam/turb cases)
17/02/22 (TRUST) Build : configure option -force_provided_mpich becomes the default on PC. On HPC cluster, configure keeps on detecting MPI modules loaded
17/02/22 (TRUST) V&V : New verification sheet for GPU solver with semi-implicit scheme added under Validation/Rapports_automatiques/Verification/Solveurs/GPU directory
17/02/22 (TRUST) New option : Option save_matrix_mtx_format to export from PETSc solvers the matrix to Matrix Market format file (.mtx)
10/02/22 (TRUST) Fix : Add the possibility to read int64 HDF5 files if possible (no overflow) with an int32 binary, and vice-versa.
09/02/22 (TRUST) Major Change: Most of the PRM validation forms are migrated to the Jupyter notebook format.
09/02/22 (TRUST) New feature : Jupyter validation forms are fully functional. See Validation/Rapports_automatiques/README_jupyter.md. This is now the preferred format for validation forms.
12/01/22 (TRUST) Major Change: Class and Substitution Failure Is Not An Error (SFINAE) templates are extensively used for the VDF evaluators, iterators and operators
10/01/22 (TRUST) Fix : Champ_front_recyclage was not working properly if used in parallel calculations
06/01/22 (TRUST) Fix : PETSc Cholesky crashed on int64 builds with Intel compiler
06/01/22 (TRUST) New keyword : Internal thermal boundary conditions. See validation sheets Echange_impose and echg_interne
06/01/22 (TRUST) New keyword : ModifyDomaineAxi1D|Convert_1D_to_1Daxi to convert 1D mesh to 1D axisymmetric mesh
06/01/22 (TRUST) New keyword : Champ_front_xyz_tabule to define a space-dependent boundary field which is also time tabulated. E.g: champ_front_xyz_tabule 1 x*y { t0 t1 t2 a1 a2 a3 }
06/01/22 (TRUST) Change : Stability time step for diffusion operator is now the same on PolyMAC conform mesh compared to VDF mesh
06/01/22 (TRUST) New keyword : Sondes_fichier { fichier filename } to read probes definition into a file


4. TRUST Developer notes version 1.9.0: Changes since version 1.8.4:

16/06/22 (TRUST) File indentation is now applied to all c, cpp, h, and tpp files. It can be avoided by placing the tag TRUST_NO_INDENT in the first ten lines of the file.
25/05/22 (TRUST) Nom et Motcle can now be built from std::string (avoiding painful usage of c_str() method ...)
13/05/22 (TRUST) NO MORE .P files in TRUST sources. All is implemented and factorized via "Real C++ templates"
13/05/22 (TRUST) Template implementation for TRUSTTab_parts and ConstTRUSTTab_parts, the previous Int/DoubleTab_parts and ConstInt/DoubleTab_parts
13/05/22 (TRUST) Add the class template TRUSTTab_Vector which replaces the VECT macro and can be used for TRUSTArray, TRUSTVect, TRUSTTab and TRUSTTrav template classes
11/05/22 (TRUST) String2 class has been removed from sources. It should be replaced by an uppercase std::string
09/05/22 (TRUST) Add -ctest option to trust wrapper to parallel check tests with ctest
03/05/22 (TRUST) Add three generic class templates (TRUSTChamp_Don_generique,TRUSTChamp_Morceaux_generique & TRUSTChamp_Divers_generique) + SFINAE methods to factorize the implementation of 12 classes that derive from Champ_Don_base.
13/04/22 (TRUST) VDF operators/sources follow the Interface_Bloc architecture
07/04/22 (TRUST) To test a subtype of ArrOfXXX, XXXVect, XXXTab and XXXTrav, use a dynamic_cast (see for example the method MD_Vector_tools::creer_tableau_distribue)
07/04/22 (TRUST) static_cast and dynamic_cast should be now used to down-cast ArrOfXXX, XXXVect, XXXTab (No more ref_cast since no more implement_instansciable => no type_info)
07/04/22 (TRUST) To forward declare ArrOfXXX, XXXVect, XXXTab and XXXTrav in a header file, just #include <TRUSTTabs_forward.h>. Previous forward declaration "i.e. class ArrOfXXX;" WILL NOT WORK
07/04/22 (TRUST) Classes VECT(ArrOfXXX), VECT(XXXVect) and VECT(XXXTab) are now implemented in TRUSTArrays.h, TRUSTVects.h and TRUSTTabs.h
07/04/22 (TRUST) Same follows for the previous Int/DoubleList and Int/DoubleLists. They are now class templates TRUSTList and TRUSTLists
07/04/22 (TRUST) Header files and includes change. Should include TRUSTArray.h instead of ArrOfXXX.h, TRUSTVect.h instead of XXXVect.h, TRUSTTab.h instead of XXXTab.h and TRUSTTrav.h instead of XXXTrav.h
07/04/22 (TRUST) ArrOfXXX, XXXVect, XXXTab and XXXTrav are now typedefs and NOT classes. They inherit respectively from TRUSTArray, TRUSTVect, TRUSTTab and TRUSTTrav
07/04/22 (TRUST) TRUST int/double Arrays, Vects, Tabs and Travs are now class templates
01/04/22 (TRUST) Class Champ_Tabule_Morceaux is now replaced by the class Champ_Fonc_Tabule_Morceaux (a much more generic implementation)
10/03/22 (TRUST) Add -Wsuggest-override flag to force override when redefining virtual methods (Add line "cpp_flags : -Wno-suggest-override" into project.cfg to disable into a Baltik)
22/02/22 (TRUST) TEST_COEFF is a constexpr in the VDF diff evaluator. It can be used for debugging the coefficients of the implicit matrix and verify coherency with flux methods implementation
22/02/22 (TRUST) The transpose of the velocity gradient is now taken into account in the VDF face diffusion operator (for const/var & lam/turb cases)
17/02/22 (TRUST) Heaptrack tool supported to follow memory allocations: trust -heaptrack datafile
15/02/22 (TRUST) TRUST methods (min, max, dmin, dmax, dabs) are now replaced by std::min, std::max, std::min, std::max and std::fabs methods respectively
12/01/22 (TRUST) Add SingleDouble class: encapsulates a unique double value with the same public interface as ArrOfDouble. Used for efficiency purposes in VDF flux/sources evals/iters when dealing with single-component field.
12/01/22 (TRUST) A part of the VDF source terms that use iters/evals pass to a template implementation (macros are removed)
12/01/22 (TRUST) Substitution Failure Is Not An Error (SFINAE) templates are introduced for Eval/Iter and VDF operators
12/01/22 (TRUST) No more scalar methods for VDF flux iterators/evaluators
12/01/22 (TRUST) ArrOfDouble for VDF elem/face fluxes and not DoubleVect (no // structure required !)
12/01/22 (TRUST) Face VDF evals implement identical methods, thanks to SFINAE ! enum classes and constexpr bools are extensively used
12/01/22 (TRUST) No more dynamic casting for the Evaluators in the VDF operators ! All is statically done
12/01/22 (TRUST) Conv/Diff/Dift VDF elem/face operators inherit from a class template with SFINAE template specializations
12/01/22 (TRUST) NSCBC (previous boundary condition) is definitively removed


5. externalpackages Release notes version 1.9.0: Enhancements, modifications and corrected bugs since version 1.8.4:

14/06/22 (externalpackages) Minor change: MEDCoupling upgraded to 9.9.0
26/04/22 (externalpackages) Portability: Upgrade doxygen version from 1.7.4 to 1.9.3 and keep old version if new version's build fails
31/03/22 (externalpackages) Portability: pandoc package added to conda
09/02/22 (externalpackages) Portability: Jupyter package added to conda


6. Version tested on several OS

CentOS Linux release 7.9.2009
Debian GNU/Linux 11
Debian GNU/Linux 9
Fedora release 26
Fedora release 30
Fedora release 32
Fedora release 34
Fedora release 36
Red Hat Enterprise Linux Server release 7.9
Red Hat Enterprise Linux release 8.4
Ubuntu 16.04 LTS
Ubuntu 18.04 LTS
Ubuntu 20.04 LTS
Ubuntu 22.04 LTS (VisIt software not already available on this OS)


7. Version portability with several compilers

clang++ 10.0.0
clang++ 8.0.0
cuda-g++ 8.3.0
g++ 10.0.1
g++ 10.2.1
g++ 11.0.1
g++ 11.2.0
g++ 12.0.1
g++ 4.8.5
g++ 5.4.0
g++ 6.3.0
g++ 7.1.1
g++ 7.5.0
g++ 8.3.0
g++ 8.4.1
g++ 9.0.1
g++ 9.4.0
icpc 18.0.3
icpc 19.0.5.281
icpc 19.1.3.304