code_saturne v9.2 publiée
27 juillet 2026

code_saturne v9.2 publiée

Nous avons le plaisir de vous annoncer que la version 9.2.0 de code_saturne est désormais disponible.

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_properties under two new attributes: p0_face_id contains the face id, while p0_rank_id contains 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 (previously n_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_prediction to 0.
  • Scheme versioning: add cs_convection_diffusion_set_scheme_version function, 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_RC implementation is comparable to that of the CS_GRADIENT_LIMIT_FACE one, 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_EWA to any existing cs_time_moment_define_by_* function, with the time scale T given via an optional "trailing" ewa_time_scale argument. 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_setup to 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_thermal as deprecated. The function is not yet removed to allow update by users.
  • Expand use of optional CATALYST_IMPLEMENTATION_NAME environment 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_WARNINGS compilation flag at the configure step.
  • Add extra debugging options for cs_mdspan and cs_array classes. 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_INIT option 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-fortran configure 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_t object, 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_3d objects which are owned and managed by the series' owner. The other fields have their _vals (cs_array_2d) objects pointing to sub_arrays of the cs_array_3d owner.
  • 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_helper class 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.

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>