This page details the major changes and new functionalities released with TRUST version 1.9.4! 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:
- new LES Smagorinksy and WALE models have been developped for Pb_Multiphase. Any real case should still be run in the TrioCFD derived application (CMFD module), but this helps non regression testing on the TRUST side;
- a series of problems XXX_List_Concenration & XXX_List_Concenration_Turbulent have been added, and can be used to solve a list of N arbitrary concentration equations. It is notably now possible to define different diffusion coefficients for each concentration equation (which is not the case when using list_scalaire_passif problem !!!)
- similarly, a series of problems XXX_Cloned_Concenration & XXX_Cloned_Concenration_Turbulent can be used to state only a single concentration equation in the .data, but clone N equations. We assume here that the same boundary conditions are used. It is still possible to define different diffusion coefficients for each cloned equation.
Also please note the following new functionalities:
- it is now possible to resume Pb_Multiphase simulations (both via last time or champ_fonc_reprise)
- the physical properties libraries CoolProp and EOS can now be used with Dilatable flows problems.
- the keywords Champ_front_parametrique (boundary fields list) and Champ_parametrique (fields list) have been added to chain multi-stationary or stationary-transient scenarios (see V&V sheets under Verification/Champs). Experimental, only tested with Flica5
- and finally DP_Impose and regulated pressure loses are not compatible with VEF discretizations
Code input / outputs
The two big changes in I/O are:
- the introduction of the CGNS format (CFD General Notation System). It is not yet available for FT interface mesh (will be soon !). This standard format aims at providing a portable, well-supported postprocessing format that do not require a custom plugin compilation, as it is the case now with LATA.
- the creation of a new TU file format to better detail the performances of the code. The files ‘XX_comm.TU’ and ‘XX_detail.TU’ have been replaced by ‘XX_csv.TU’ which contains a CSV formated logs of the computation times. The keyword ‘stat_per_proc_perf_log’ can be used to obtain detailed performance logs per processor. See the validation form ‘HowTo/Post_treatment_performance’ for detailed explanation on how global TU information are computed.
The other following changes are to be noted:
- the new post-processing format “single_lata” can be used with a TRUST 64 bit integers version. Also the option “write_singlelata” has been added to the ‘lata_analyzer’ tool: this is useful to merge multiple binary lata files in a single one.
- on the partitioning side:
- Added “mesh_numbering” multi-scalar field to plot {node,cell,face} numerotation for visualization
- Added “ecrire_med” option to Partition tools to write partition field into a MED file
- “Partition_tool Fichier_MED” can read now the partition MED file from a previous partitionned domain to create a conform partitioned mesh
- on the postprocessing side, the new keywords : ‘Fields_file’, ‘Statistics_file’, ‘Serial_statistics_file’, ‘Mobile_Probes_file’, ‘Int_Probes_file’ and ‘Int_Arrays_file’ can now be used to define post-processing blocks in an annex datafile. See the ‘postpro_annex_file’ test case.
- finally, the save/restart .xyz file may now be written in ASCII format with “EcritureLectureSpecial EcrFicPartage” keyword. Fields are written in “x(i) y(i) z(i) value(i)” format.
Solvers and performance
The following new features concerning the solvers have been added:
- add “petsc LU_Strumpack { }” as direct solver from STRUMPACK library
-
add two ILU preconditioners based on Block Low Ranking parametrized (epsilon) compression: petsc gcp gmres { precond ilu_mumps ilu_strumpack { epsilon value } … }. May be useful on problems with solver slow convergence. - in the IJK simulations only, we now fallback on the coarse solver if the IJK-multigrid algorithm has not reached convergence during the current timestep (this concerns IJK discretization only).
For parallel cases, Champ_Fonc_Interp can now be used with the OverlapDEC, the parallel interpolation engine from MEDCoupling.
Finally there is still an on-going effort to have a more GPU-capable version of the code with the help of the Kokkos library.
Tools / Validation
In Jupyter validation forms:
- in the Python API, the method ‘run.description()’ is not available anymore. A MarkDown block should be used instead.
- we have replaced the deprecated Pandas ‘append’ with ‘concat’ in Jupyter notebooks.
Dataset changes
Here are all the syntax changes in the TRUST dataset:
- the obsolete syntax for Champ_Fonc_Fonction, Champ_Fonc_Fonction_txyz, and Sutherland (pre v1.8.4) is not accepted anymore.
- the obsolete syntax for Champ_Fonc_tabule (pre v1.8.4) is not accepted anymore. Syntax should be on the form “Champ_fonc_tabule { pb field } nbcomp { table }”
- the keyword ‘ecrire_fichier_xyz_valeur’ is now used in a single block, with attributes ‘dt’, ‘fields’ and ‘boundaries’, instead of having multiple instances of the keyword.
Prerequisites / portability
The following prerequisite upgrades were done:
- Update PETSc to 3.20.0 (dependancies like MUMPS,… not updated yet)
- CMake 3.21.0 or newer is necessary to install PETSc and so TRUST.
- Lots of portability stuff for MAC: extension .so => dylib, linker, NB_PHYSICAL_CORES, awk …
- OpenBLAS version updated to 0.3.25, this may result into some numerical differences in tests using this library.
- Upgrade to MEDCoupling 9.13.0 (including multiple patches for tetrahedral remapping).
Misc
Here are the other less notable improvements/changes in this version. In terms of keywords and command line options:
- a new syntax is available for facsec with Euler implicit scheme, more options allowed in datafile to monitor facsec behavior: facsec { [facsec_ini] [facsec_max] [rapport_residus] [nb_ite_sans_accel_max] }. It can also be a function of time, as follows: facsec expression(t)
- it is now possible to use “Unite” keyword in Definition_champs with Transformation and Morceau_Equation to specify the unit of the field (specified unit will be written in post-processing files instead of “??”)
- EcritureLectureSpecial is forced to 0 for PolyMAC_P0 simulations; ie: for resuming a simulation, only binary sauv files are accepted for this discretization.
- a new option ‘trust -quiet jdd.data’ can be used to run a dataset with not output on the console.
- himp and Text in Terme_Puissance_Thermique_Echange_Impose can now be champ_fonc fields.
And also:
- TRUST can be linked to a pre-compiled static library of CoolProp 6.6.0 version;
- the ICoCo resetTime() method has been implemented, allowing to reset the time origin during the computation. This functionnality is still under development, and notably the way postprocessing files are handled might still evolve in the future;
Bug fixes
Finally, various bugs have been fixed :
- Nusselt.face file was not updated at the end of computation if this latter is stopped by putting 1 in .stop file
- Fixed bug in post-processing fields on nodes (SOM) in MED Format (internal MEDCouplingUMesh was not always in sync with Domaine)
- Fixed handling of empty domains in VEF, PolyMAC_P0, and other related areas.
- Bug fix in pb_couple on the same domain with missing APPEND for fields.
- Resolved the issue in Perte_Charge_VEF with non-uniform, non-xyz viscosity.
- Refine keywords (eg: Raffiner_simplexes, Raffiner_isotrope_parallele) were not refining sub_zones.
- Element-wall distance is now correctly calculated in the diffusion-operator for multi-component cases.