Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
72244f8
Added new branch with collisionless TC from develop
vreville Dec 3, 2024
cb3bea8
Fixed undeclared CL arrays (GPU compiling)
vreville Dec 12, 2024
6ec6d0d
collisionless tc as an option of bragTDiffusion
Dec 14, 2024
9ac6698
idefix error includes collisionless status
vreville Dec 16, 2024
94a71d2
Added a saturation option for collisionless formulation
vreville Dec 20, 2024
e2f7a9a
add a column Density example
glesur Jan 12, 2025
26ffc60
add some documentation
glesur Jan 12, 2025
a1e6e67
add it to the tests
glesur Jan 12, 2025
9c58596
imrove documentation
glesur Jan 12, 2025
6283fd5
add doc link for column density
glesur Jan 12, 2025
8277ed0
missing testme file
glesur Jan 12, 2025
31ae1b8
add a 3D interface for column density computation
glesur Jan 14, 2025
d656036
Upwind scheme for cless TC with limiters + tests
Jan 15, 2025
7c10ec0
fix dimensions for alias
glesur Jan 15, 2025
79e70cf
updated ShowConfig functions from braginskii tc and viscosity to disp…
jeankpf Jan 16, 2025
c1cd824
Merge pull request #1 from jeankpf/collisionlessTC
vreville Jan 16, 2025
4286299
Merge pull request #316 from idefix-code/V2.2.00
glesur Jan 18, 2025
d0f348a
Génération automatique de plots de performance dans la doc
Jan 17, 2025
a61eb61
Updated doc for Collisionless TC
vreville Jan 20, 2025
7bef7a9
Corrected doc typo
vreville Jan 20, 2025
8f48bc2
Corrected typo
vreville Jan 21, 2025
1f891c7
add global routines to dump Idefix arrays (useful for debugging or
glesur Jan 21, 2025
afc3e4d
add missing header
glesur Jan 21, 2025
e840e2f
revert back to old reference commit sha to avoid merge conflicts
glesur Jan 21, 2025
ac10470
go back to last reference before fork
glesur Jan 22, 2025
76e399a
Récupération des derniers benchmarks sur JeanZay
Jan 24, 2025
49a56ee
Récupération de benchs pour H100; ajout de labels aux axes
Jan 24, 2025
0cb52ea
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Jan 24, 2025
0c07a8e
Use a std::vector of IdefixArray as input for the userdef braginskii …
vreville Jan 29, 2025
250610a
corrected typo
vreville Jan 29, 2025
2f54bb5
Merge pull request #308 from idefix-code/addColumnDensityExample
glesur Feb 9, 2025
898fcf3
add some doc
glesur Feb 9, 2025
241c69c
refactor DumpArray
glesur Feb 10, 2025
ab340ed
implements a 1st order IMEX1 solver for polydisperse dust species
glesur Feb 10, 2025
c0fbc84
switch for std.vector.at() in userdef TD tests
vreville Feb 11, 2025
22eaf5b
refactor dust drag law
glesur Feb 11, 2025
cbcc63f
clean up
glesur Feb 11, 2025
05ca488
change signature of userdef drag function
glesur Feb 11, 2025
6fbd722
add the dustyShock test from Benitez-Llambay 2019
glesur Feb 11, 2025
60740e7
add back dump files for reference
glesur Feb 11, 2025
4b8e277
update reference files for new dusyShock
glesur Feb 11, 2025
e844bc1
add documentation for implicit dust module
glesur Feb 11, 2025
78fae02
use proper update variables istead of pre-stage ones
glesur Feb 13, 2025
59a91d3
switch off heating terms when feedback is disabled (feedback assumes
glesur Feb 13, 2025
f1141ee
typo
glesur Feb 13, 2025
9b2afc5
restore energy conservation in implicit scheme with feedback
glesur Feb 13, 2025
e8d34bb
fix label of dust tracers with non-isothermal equation of state
glesur Feb 13, 2025
f87b698
Merge pull request #317 from vreville/CollisionlessTC
glesur Feb 17, 2025
34d9366
fix a bug that could lead to Nans when using the RKL scheme on grids
glesur Feb 19, 2025
cb7b999
change the way polar singularities are handled
glesur Feb 19, 2025
2874fda
-refactor curvature terms without using a small number on all Areas
glesur Feb 19, 2025
461ae58
fix typo
glesur Feb 20, 2025
a4ed690
fix capture on Cuda
glesur Feb 20, 2025
b3481f5
do not make an exception when Area=0, as this artificiallykills off one
glesur Feb 20, 2025
af6b3b7
update reference test
glesur Feb 20, 2025
9ea85b0
do not perform implicit capture
glesur Feb 20, 2025
ff459c0
remove reference to useless feedback
glesur Feb 20, 2025
3c9f26d
update signature of fargo+planet+dust drag function
glesur Feb 21, 2025
630836b
Merge pull request #321 from idefix-code/implicitDrag
glesur Feb 21, 2025
59dc0d6
Merge pull request #318 from idefix-code/addDumpArray
glesur Feb 21, 2025
ecb9d2d
Merge pull request #323 from idefix-code/fixRKLSmallGridSpacing
glesur Feb 21, 2025
902c003
add the job to the test suite
glesur Feb 21, 2025
24a62e4
update reference commit #
glesur Feb 21, 2025
c34b819
clean up test
glesur Feb 21, 2025
6f3bedd
too much cleaning
glesur Feb 22, 2025
dbdd28d
final cleanup
glesur Feb 22, 2025
2bc09a0
Merge pull request #324 from idefix-code/addCollionslessTCTest
glesur Feb 22, 2025
da27024
check coarsening inside ghost zone, and detect Nan.
glesur Mar 3, 2025
8bed32b
fix loop unrolling
glesur Mar 3, 2025
3d96f41
add back axis flux tube test
glesur Mar 3, 2025
f283f78
remove analysis from axisfluxtube
glesur Mar 4, 2025
4c9985f
add environement to gitignore
glesur Mar 4, 2025
3fb2236
final improvement to error message on grid coarsening levels
glesur Mar 4, 2025
1d9d101
use one single plot
glesur Mar 4, 2025
282cd12
Merge pull request #329 from idefix-code/checkCoarseningLevels
glesur Mar 4, 2025
4771bde
Update Adastra Mi250 to lock Rocm version
glesur Mar 6, 2025
b2168df
add benchmark data
glesur Mar 10, 2025
eccab2d
Merge pull request #319 from lih/marc-bench-plots
glesur Mar 11, 2025
d59ecf0
attempt at fixing Kokkos SYCL loop configuration (a proper benchmark
glesur Mar 11, 2025
ca9c8b0
tabs
glesur Mar 11, 2025
dd702ab
add a static_assert so that the error observed on syscl doesn't go
glesur Mar 12, 2025
9d7c589
do this for all loops
glesur Mar 12, 2025
217a812
catch misbehaved loops earlier (fix cuda!), and be more explicit.
glesur Mar 12, 2025
e58f724
cleaning up
glesur Mar 12, 2025
4c8ccb8
Merge pull request #331 from idefix-code/fixSyclConfig
glesur Mar 12, 2025
939f0cd
fix axis current regularisation along the south pole
glesur Mar 31, 2025
8e0481e
make divB check diemsionless
glesur Apr 14, 2025
bfc1aca
Merge pull request #334 from idefix-code/improveDivB
glesur Apr 15, 2025
1c33a03
Merge pull request #333 from idefix-code/fixJaxis
glesur Apr 16, 2025
d894627
use one single extra parameter for dump time output
glesur Apr 16, 2025
83986d0
add doc for wallclock dump outputs
glesur Apr 16, 2025
2529e80
Improve Wallclock dump outputs
glesur Apr 16, 2025
28ff697
Merge branch 'master' into develop
glesur Apr 16, 2025
1be4115
Add units (#338)
glesur Apr 25, 2025
e4b5a83
add Kokkos::fence at the beginning of profiling regions to fix profil…
glesur May 16, 2025
b22cd25
fix the energetic of ShearingBox+Fargo (#346)
glesur Jun 12, 2025
81f9143
Fix axis and reflective boundary conditions (#345)
glesur Jun 16, 2025
bea1c7b
fix "size" drag force with adiabatic equation of state (sound speed w…
glesur Oct 18, 2025
cde3a14
Doc updates (#354)
glesur Oct 18, 2025
0446afc
update changelog for new release
glesur Oct 18, 2025
60f1645
update version #
glesur Oct 18, 2025
10f91c6
incorrect issue #
glesur Oct 18, 2025
b6c24d6
Update src/units.hpp
glesur Oct 18, 2025
697c13c
Update src/units.hpp
glesur Oct 18, 2025
73547fe
Update doc/source/reference/idefix.ini.rst
glesur Oct 18, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.2.02] 2025-10-18
### Changed

- Added a module to add explicit units (#338)
- fixed a bug that could lead to incorrect profiling information on non-blocking cuda loops (#341)
- fixed a bug that could lead to incorrect energy budget when shearing box and fargo were both enabled (#346)
- fixed a bug that led to incorrect BX2 reconstruction when axis is not used on both sides of the domain (#345)
- fixed a bug that led to incorrect reflective boundary conditions on B when DIMENSIONS < 3 (#345)
- fixed a bug that led to incorrect dust stopping time when the adiabatic equation of state is used with "size" drag law (#353)

### Added

- documentation for the continuous integration (#354)

## [2.2.01] 2025-04-16
### Changed

Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ set (CMAKE_CXX_STANDARD 17)

set(Idefix_VERSION_MAJOR 2)
set(Idefix_VERSION_MINOR 2)
set(Idefix_VERSION_PATCH 01)
set(Idefix_VERSION_PATCH 02)

project (idefix VERSION 2.2.01)
project (idefix VERSION 2.2.02)
option(Idefix_MHD "enable MHD" OFF)
option(Idefix_MPI "enable Message Passing Interface parallelisation" OFF)
option(Idefix_HIGH_ORDER_FARGO "Force Fargo to use a PPM reconstruction scheme" OFF)
Expand Down
2 changes: 1 addition & 1 deletion doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
author = 'Geoffroy Lesur'

# The full version, including alpha/beta/rc tags
release = '2.2.00'
release = '2.2.02'



Expand Down
13 changes: 11 additions & 2 deletions doc/source/faq.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,18 @@ How can I stop the code without loosing the current calculation?
I'm doing performance measures. How do I disable all outputs in *Idefix*?
Add ``-nowrite`` when you call *Idefix* executable.

VTK output appears corrupted when running with MPI (OpenMPI)
Some OpenMPI configurations (notably OpenMPI 4 with the ompio component) can produce corrupted VTK/VTU output when running with MPI enabled. This appears to be caused by bugs in OpenMPI's ompio I/O component.
Disable ompio so OpenMPI falls back to ROMIO (MPICH's MPI-IO), which is typically more stable:

Developement
------------
.. code-block:: console

mpirun --mca io ^ompio ...

This has resolved intermittent corruption for several users. See issue #348 for discussion and reports.

Development
-----------

I have a serious bug (e.g. segmentation fault), in my setup, how do I proceed?
Add ``-DIdefix_DEBUG=ON`` to ``cmake`` and recompile to find out exactly where the code crashes (see :ref:`debugging`).
Expand Down
1 change: 1 addition & 0 deletions doc/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ The Idefix collaboration benefited from funding from the “Programme National d
reference
modules
programmingguide
testing
performances
kokkos
contributing
Expand Down
25 changes: 24 additions & 1 deletion doc/source/reference/idefix.ini.rst
Original file line number Diff line number Diff line change
Expand Up @@ -265,8 +265,10 @@ section as followed:
+----------------+-------------------------+---------------------------------------------------------------------------------------------+
| Mcentral | real | | Mass of the central object when a central potential is enabled (see above). Default is 1. |
+----------------+-------------------------+---------------------------------------------------------------------------------------------+
| gravCst | real | | Set the value of the gravitational constant :math:`G_c` used by the central |
| gravCst | real or string | | Set the value of the gravitational constant :math:`G_c` used by the central |
| | | | mass potential and self-gravitational potential (when enabled) ). Default is 1. |
| | | | If set to "units", Idefix will compute the gravitational constant from the user units |
| | | | defined in the units section (see :ref:`unitsSection`). |
+----------------+-------------------------+---------------------------------------------------------------------------------------------+
| bodyForce | string | | Adds an acceleration vector to each cell of the domain. The only value allowed |
| | | | is ``userdef``. The ``Gravity`` class then expects a user-defined bodyforce function to |
Expand Down Expand Up @@ -310,7 +312,28 @@ of gravitational potential in the ``Gravity`` section (see :ref:`gravitySection`
| | | | Default is 1 (i.e. self-gravity is computed at every cycle). |
+----------------+-------------------------+---------------------------------------------------------------------------------------------+

.. _unitsSection:

``Units`` section
------------------

This optional section controls how the code handles units. By default, Idefix work "unit free" and this section is not useful.
However, some physical processes like self-gravity or radiative transfer require the explicit use of units to define natural constants.
These entries define how one code units should be converted to CGS units. When used, the following values should be set:

+----------------+--------------------+-----------------------------------------------------------------------------------------------------------+
| Entry name | Parameter type | Comment |
+================+====================+===========================================================================================================+
| length | float | The code unit length: 1 code unit = `length` cm. 1 by default. |
+----------------+--------------------+-----------------------------------------------------------------------------------------------------------+
| velocity | float | The code unit velocity: 1 code unit = `velocity` cm/s. 1 by default. |
+----------------+--------------------+-----------------------------------------------------------------------------------------------------------+
| density | float | The code unit density: 1 code unit = `density` g/cm^3. 1 by default. |
+----------------+--------------------+-----------------------------------------------------------------------------------------------------------+

.. note::
The units module automatically reconstruct all of the units (time, temperature, magnetic field, etc.) from the above 3 fundamental constants. These can
all be obtained from the global object ``idfx::units``. Note however that the code outputs remain in code units, even if `[Units]` are defined.

``RKL`` section
------------------
Expand Down
117 changes: 117 additions & 0 deletions doc/source/testing.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
Continuous Integration (CI) tests
================================

This document describes the GitHub Actions continuous-integration setup used to run the Idefix
test-suite. The CI is implemented by two workflows checked in .github/workflows:

- .github/workflows/idefix-ci.yml
- .github/workflows/idefix-ci-jobs.yml

Overview
--------

The CI is split in two layers:

- A top-level workflow (.github/workflows/idefix-ci.yml) that:

- runs a Linter job (pre-commit) on push / PR / manual dispatch,
- then calls a reusable workflow for different compiler/backends (intel, gcc, cuda)
providing two inputs: TESTME_OPTIONS and IDEFIX_COMPILER.

- A reusable workflow (.github/workflows/idefix-ci-jobs.yml) that:

- defines the actual test jobs grouped by physics domain (ShocksHydro, ParabolicHydro,
ShocksMHD, ParabolicMHD, Fargo, ShearingBox, SelfGravity, Planet, Dust, Braginskii,
Examples, Utils),
- runs test scripts on self-hosted runners,
- expects the repository to be checked out with submodules,
- invokes the repository-provided CI helper scripts to configure / build / run tests.

Key configuration points
------------------------

- Inputs passed from the top-level workflow:

- TESTME_OPTIONS (string): flags forwarded to the per-test runner (examples: -cuda, -Werror,
-intel, -all).
- IDEFIX_COMPILER (string): which compiler the tests should use (e.g. icc, gcc, nvcc).

- Environment variables set by the reusable workflow:

- IDEFIX_COMPILER, TESTME_OPTIONS, PYTHONPATH, IDEFIX_DIR

- Linter job:

- Runs only when repository is the main project (not arbitrary forks).
- Uses actions/setup-python and runs pre-commit (pre-commit/action@v3 and pre-commit-ci/lite).
- Prevents regressions in style and common mistakes before running heavy test jobs.

- Test execution:

- All test jobs call the repository script scripts/ci/run-tests with a test directory
and the TESTME_OPTIONS flags. Example invocation (from the workflows):
scripts/ci/run-tests $IDEFIX_DIR/test/HD/sod -all $TESTME_OPTIONS

- The reusable workflow is written to execute many test directories in separate job steps,
so each physics group is kept logically separated in CI logs.

Runners and prerequisites
-------------------------

- The heavy numerical tests run on self-hosted runners (see runs-on: self-hosted).
The CI assumes appropriate hardware and dependencies are available on those runners
(compilers, MPI, GPUs when CUDA/HIP flags are used, required system libraries).

- The workflows check out the repository and its submodules. Submodules must be available
on the CI machines.

How tests are driven (testme scripts)
-------------------------------------

Each test directory contains a small Python "testMe" driver that uses the helper Python
class documented in the repository:

- See the test helper documentation: :doc:`idfxTest <testing/idfxTest>`

That helper (idfxTest) is responsible for:

- parsing TESTME_OPTIONS-like flags (precision, MPI, CUDA, reconstruction, vector potential, etc.),
- calling configure / compile / run,
- performing standard python checks and non-regression (RMSE) comparisons against
reference dumps,
- optionally creating / updating reference dumps (init mode).

Practical examples
------------------

- Example of a CI invocation (triggered by workflows):

- Top-level workflow calls the reusable jobs workflow for each compiler/back-end, e.g.
TESTME_OPTIONS="-cuda -Werror" IDEFIX_COMPILER=nvcc

- Running tests locally (developer machine)
- You can mimic what CI does by calling the repository helper script directly. Example:
scripts/ci/run-tests /path/to/idefix/test/HD/sod -all -mpi -dec 2 2 -reconstruction 3 -single

Notes for maintainers
---------------------

- The reusable jobs workflow contains a commented concurrency block for optional cancellation
of in-flight runs — consider enabling it if you want to auto-cancel redundant CI runs.
- Because tests are run on self-hosted runners, ensure the pools have the required compilers,
MPI stacks and GPU drivers for the requested TESTME_OPTIONS.
- Keep TESTME_OPTIONS in sync with the options understood by the test helper documented in
:doc:`idfxTest <testing/idfxTest>`.

Relevant files
--------------

- Workflow entry point: .github/workflows/idefix-ci.yml
- Reusable jobs: .github/workflows/idefix-ci-jobs.yml
- Test helper documentation: :doc:`idfxTest <testing/idfxTest>`

.. toctree::
:maxdepth: 2
:caption: Contents:

testing/idfxTest.rst
Loading