Release 9.2.0 (2026-07-06)
Numerics:
- Update to pressure reference face: it was previously stored in the isostd array, it is now stored in
cs_glob_fluid_propertiesunder two new attributes:p0_face_idcontains the face id, whilep0_rank_idcontains the rank id. It can therefore now be accessed by the user or any other place in the code. The array isostd now has a size of n_b_faces (previouslyn_b_faces+1). - Update in pressure BCs is now done between prediction and correction to avoid taking p^(n+1) bc and p^(n) field in prediction, thus creating spurious pressure gradient in case of time dependent pressure BC.
- The old behavior can be restored by setting
cs_glob_velocity_pressure_param->update_pbc_after_predictionto 0.
- The old behavior can be restored by setting
- Scheme versioning: add
cs_convection_diffusion_set_scheme_versionfunction, to make it possible to revert to schemes as similar as possible to those used in older versions. This will allow making more significant updates in the combination of diffusion and convection schemes while keeping a safety net until sufficient feedback is available. - Gradients: added computation mode for cell-based gradient clipping, to ensure reconstruction at I'/J' values does not break monotonicity for scalars, and remains within the bounds of the maximum variation between cell and neighbor values for vectors and tensors. The cast of this new
CS_GRADIENT_LIMIT_RCimplementation is comparable to that of theCS_GRADIENT_LIMIT_FACEone, but should provide for better boundedness with less clipping (so higher precision). - CDO: Change the default algorithm to compute geometrical quantities in CDO schemes. The new choice should be more robust on very low quality meshes.
- CDO: Several fixes in the order of building the cell system in CDOFb monolithic schemes. A careful care has to be done between the augmentation of the system, the static condensation and the way to enforce Dirichlet boundary conditions.
- CDO: Add mapped inlet option for Dirichlet boundary conditions.
- CDO: Add pseudo-steady option when solving Navier-Stokes with unsteady model in order to find a stationary solution. The computation is stopped when the the stationary solution is found with respect to convergence parameters.
- A new algorithm for projection of nodal field using CFEMDEC from ParaMEDMEM is implemented. This is fully distributed in memory and CPU. This new projection is now used for coupling with code_aster to receive mesh displacement and optionally to send boundary stress.
User changes:
- Introduce an exponentially weighted average (EWA) accumulator type with a user-specified time scale T. The EWA is selected by passing
CS_TIME_MOMENT_EWAto any existingcs_time_moment_define_by_*function, with the time scale T given via an optional "trailing"ewa_time_scaleargument. It defaults to -1 (unset), so all existing call sites remain unchanged and only EWA moments need to pass T. - 1D wall thermal module:
- Users can now use
cs_user_1d_wall_thermal_setupto define a 1D wall thermal condition using high-level API based on boundary zones.- Allow postprocessing of the thermal field. Currently, the output is linked to the default writer, but future work will provide access through the GUI for these parameters.
- This is part of an ongoing modernization work of the module. This update now sets
cs_user_1d_wall_thermalas deprecated. The function is not yet removed to allow update by users.
- Users can now use
- Expand use of optional
CATALYST_IMPLEMENTATION_NAMEenvironment variable from "stub", "paraview", and "legacy" to "ensight", "med", and "cgns". This is useful when running or debugging an existing case on a build where Catalyst is not available, or when loading Catalyst under a debugger is very slow. - Add high level API which is GPU compatible for users. This allows not having to specify a context directly. This modification also now defines a default context which is reachable in all routines. As an example, users can now simply write:
cs::parallel_for(n_values, CS_LAMBDA (cs_lnum_t e_id) {...}); - Restart: selection of further mesh preprocessing behavior and/or restarting from another mesh is now more explicit and consistent. When restarting from another mesh, it should now always be in
restart/mesh_input.csm. - Histograms: replace PNG format output option with SVG. This allows removing the dependency on Catalyst for this option.
- Separate mesh refinement element level and generation extraction functions. This allows visualizing both refinement level and generation for interior faces.
Architectural changes:
- Add the possibility to suppress compiler warnings which are generated by the inclusion of header files of external libraries (when the warning is within the library). This suppression can be deactivated by using the
-DCS_DONT_SUPPRESS_EXTERNAL_WARNINGScompilation flag at the configure step. - Add extra debugging options for
cs_mdspanandcs_arrayclasses. These options can be activated using compilation flags provided at the configure step or during compilation.-DCS_ARRAY_DBG_BOUNDS: adds a check bounds whenever one's tries to use an access operator, () or [], which results in an error if the provided indices are out of bounds. This option is compatible with both CPU and GPU runtimes.- For cs_array only, the
-DCS_ARRAY_DBG_INIToption forces an initialization at signaling NaN whenever a new array is created with a data allocation. Thus, an error is generated if the array is used uninitialized in a mathematical operation.
- Drop C language compatibility for user-defined functions.
- Add a HIP, AMD GPUs, backend to code_saturne.
- Make Fortran compiler an optional prerequisite
- Fortran dependency is now only required for the Atmo module, and more specifically for the Polyphemus chemistry functions.
- Disabling Fortran at configure step is done using the
--disable-fortranconfigure flag. - If Fortran is disable in configure step, the corresponding code is not compiled, and if any Fortran functions are needed from the atmospheric flows module, based on the user defined parameters, then the code exits with a specific error message.
- Add multi-dimensional arrays for "linked" fields.
- It is now possible to define, for a
cs_field_tobject, that it is a part of a series. By doing so, one of the linked fields is defined as the owner of the series, and handles the data allocation. The other fields then only use a view of the data (non owners). - This new mechanism uses
cs_array_3dobjects which are owned and managed by the series' owner. The other fields have their_vals (cs_array_2d)objects pointing to sub_arrays of thecs_array_3downer.
- It is now possible to define, for a
- Mesh refinement: restructured handling of polyhedral cells refinement, based on the hypothesis than in most cases, only a small subset of all cells require refinement with a polyhedral template, but that this refinement is more complex and costly than that of other types of cells.
- Add a
cs_cell_refine_helperclass which can handle local refinement of a single polyhedron, allowing future refinement template improvements independently from the array sizes computation stage. - Preallocate arrays specific to polyhedra which must be refined.
- At the counting stage, the refinement of polyhedra is actually computed (using a cs_cell_refine_helper object per thread), and stored in buffers.
- At the actual refinement stage, data is copied.
- Add a
SMGR:
- SLURM batch mode: read batch example from installation config on cluster
- The postprocessing step now copy data used to display results into the destination POST folder with the following structure:
POST/CURRENT/<case>/<run_id>