From 6cefb9b5f6bca8193e580af9576584732af31c42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Delaporte-Mathurin?= <40028739+RemDelaporteMathurin@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:43:42 -0500 Subject: [PATCH 01/13] Add URL checker to doctest workflow (main) Added URL checker action to validate links in documentation files. --- .github/workflows/doctest.yml | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml index bfc2b2d44..b58c7ec11 100644 --- a/.github/workflows/doctest.yml +++ b/.github/workflows/doctest.yml @@ -16,6 +16,33 @@ jobs: activate-environment: festim-docs environment-file: docs/environment.yml + - name: urls-checker + uses: urlstechie/urlchecker-action@master + with: + # A subfolder or path to navigate to in the present or cloned repository + subfolder: docs + + # A comma-separated list of file types to cover in the URL checks + file_types: .md,.py,.rst + + # Choose whether to include file with no URLs in the prints. + print_all: false + + # The timeout seconds to provide to requests, defaults to 5 seconds + timeout: 5 + + # How many times to retry a failed request (each is logged, defaults to 1) + retry_count: 3 + + # A comma separated links to exclude during URL checks + exclude_urls: + + # A comma separated patterns to exclude during URL checks + exclude_patterns: + + # choose if the force pass or not + force_pass : false + - name: Doc Tests shell: bash -l {0} - run: sphinx-build -b doctest docs/source docs/_build/doctest \ No newline at end of file + run: sphinx-build -b doctest docs/source docs/_build/doctest From 359eabd14ff2639e6d0fcc32d8a56aa1c4a38d2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Delaporte-Mathurin?= <40028739+RemDelaporteMathurin@users.noreply.github.com> Date: Fri, 13 Feb 2026 13:50:51 -0500 Subject: [PATCH 02/13] broken link --- docs/source/userguide/beginners_guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/userguide/beginners_guide.rst b/docs/source/userguide/beginners_guide.rst index df459aa9a..21dddd010 100644 --- a/docs/source/userguide/beginners_guide.rst +++ b/docs/source/userguide/beginners_guide.rst @@ -31,7 +31,7 @@ Your first FESTIM script ------------------------ -Follow `this tutorial `_ to learn how +Follow `this tutorial `_ to learn how to run a simple 1D diffusion problem in steady state with an homogeneous temperature, a volumetric source of hydrogen, and the concentration fixed at zero at boundaries. From 0cb8735032e7c9e450f6604be04b09b0103cab8c Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 13:52:16 -0500 Subject: [PATCH 03/13] broken link --- docs/source/userguide/sources.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/userguide/sources.rst b/docs/source/userguide/sources.rst index be91970dc..068ce399d 100644 --- a/docs/source/userguide/sources.rst +++ b/docs/source/userguide/sources.rst @@ -43,7 +43,7 @@ Hydrogen implanted in a material can be simulated by a Gaussian-shaped volumetri ), ] -This class is used in `this tutorial `_. +This class is used in `this tutorial `_. Radioactive decay From df29d711e8b1c55b8e2ca45430ac5bf92f2342bf Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 13:53:36 -0500 Subject: [PATCH 04/13] built in meshes --- docs/source/userguide/mesh.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/userguide/mesh.rst b/docs/source/userguide/mesh.rst index 8d106a9ea..f64c02773 100644 --- a/docs/source/userguide/mesh.rst +++ b/docs/source/userguide/mesh.rst @@ -620,6 +620,6 @@ If you have a CAD model, you can export it to a mesh with SALOME. Meshes from FEniCS ------------------ -See the `FEniCS documentation `_ for more built-in meshes. +See the `FEniCS documentation `_ for more built-in meshes. From f652b7c619fbde70b366beb01082e912c2a3fbcd Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 13:56:39 -0500 Subject: [PATCH 05/13] removed en --- docs/source/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/index.rst b/docs/source/index.rst index 309881de6..bc1617ff4 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -54,7 +54,7 @@ Moreover, users can rapidly get started with FESTIM thanks to its python API. :link: api/festim :link-type: doc -FESTIM was originally developed at the `Institute for Magnetic Fusion Research (IRFM) `_ and the `Process and Materials Sciences Laboratory (LSPM) `_. +FESTIM was originally developed at the `Institute for Magnetic Fusion Research (IRFM) `_ and the `Process and Materials Sciences Laboratory (LSPM) `_. Various research institutions and private companies now contribute actively to FESTIM's development. For more information, feel free to ask questions on the `FESTIM Discourse Page `_. From ea410169d225b26372164fbeeff2ac778a98f885 Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 14:28:20 -0500 Subject: [PATCH 06/13] ignore LSPM link in check --- .github/workflows/doctest.yml | 2 +- docs/source/index.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml index b58c7ec11..b9fce52d9 100644 --- a/.github/workflows/doctest.yml +++ b/.github/workflows/doctest.yml @@ -35,7 +35,7 @@ jobs: retry_count: 3 # A comma separated links to exclude during URL checks - exclude_urls: + exclude_urls: https://www.lspm.cnrs.fr/en/home/ # A comma separated patterns to exclude during URL checks exclude_patterns: diff --git a/docs/source/index.rst b/docs/source/index.rst index bc1617ff4..309881de6 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -54,7 +54,7 @@ Moreover, users can rapidly get started with FESTIM thanks to its python API. :link: api/festim :link-type: doc -FESTIM was originally developed at the `Institute for Magnetic Fusion Research (IRFM) `_ and the `Process and Materials Sciences Laboratory (LSPM) `_. +FESTIM was originally developed at the `Institute for Magnetic Fusion Research (IRFM) `_ and the `Process and Materials Sciences Laboratory (LSPM) `_. Various research institutions and private companies now contribute actively to FESTIM's development. For more information, feel free to ask questions on the `FESTIM Discourse Page `_. From fa563ddff0f12b862fc04af8f4128cfbdeba7edf Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 14:47:19 -0500 Subject: [PATCH 07/13] removed sphinx contrib --- docs/environment.yml | 1 - docs/source/conf.py | 1 - .../userguide/export_post_processing.rst | 4 +- docs/source/userguide/mesh.rst | 42 +++++++++---------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/docs/environment.yml b/docs/environment.yml index d0a4eb0fc..2bab8f22c 100644 --- a/docs/environment.yml +++ b/docs/environment.yml @@ -16,4 +16,3 @@ dependencies: - sphinxcontrib-bibtex - sphinx-copybutton - pillow - - sphinxcontrib-images diff --git a/docs/source/conf.py b/docs/source/conf.py index fe8374bf0..8d3f57f0d 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -59,7 +59,6 @@ "sphinx_design", "sphinxcontrib.bibtex", "matplotlib.sphinxext.plot_directive", - "sphinxcontrib.images", ] suppress_warnings = ["autosectionlabel.*"] diff --git a/docs/source/userguide/export_post_processing.rst b/docs/source/userguide/export_post_processing.rst index 6a4004507..c5446b6e7 100644 --- a/docs/source/userguide/export_post_processing.rst +++ b/docs/source/userguide/export_post_processing.rst @@ -70,13 +70,13 @@ The file can then be opened in Paraview or any other software that can read XDMF - Open the XDMF file then select the reader Xdmf3 Reader S -.. thumbnail:: ../images/paraview_guide_1.png +.. figure:: ../images/paraview_guide_1.png :width: 400 :align: center - Edit the colour map and rescale the colourbar to present the proper view of results -.. thumbnail:: ../images/paraview_guide_2.png +.. figure:: ../images/paraview_guide_2.png :width: 400 :align: center diff --git a/docs/source/userguide/mesh.rst b/docs/source/userguide/mesh.rst index f64c02773..61f1eefd0 100644 --- a/docs/source/userguide/mesh.rst +++ b/docs/source/userguide/mesh.rst @@ -79,7 +79,7 @@ The following is a workflow using the python API to make a mesh that can be dire Here we will walk through GMSH's usage when creating a monoblock subsection consisting of tungsten surrounding a tube of CuCrZr -.. thumbnail:: ../images/gmsh_tut_1.png +.. figure:: ../images/gmsh_tut_1.png :width: 400 :align: center @@ -205,7 +205,7 @@ At any point, the GMSH GUI can be opened by running the line after synchronizing the model. Running this command at this stage will open the GUI, displaying something that looks like this: -.. thumbnail:: ../images/gmsh_tut_2.png +.. figure:: ../images/gmsh_tut_2.png :width: 400 :align: center @@ -226,13 +226,13 @@ GMSH assigns the surface labels cyclically when performing the extrusion, so the After opening the GUI, again after synchronising and using `gmsh.fltk.run()`, go into 'Tools' then 'Options', and ensure that 'Surfaces' is checked under 'Geometry'. This will make the surfaces are visible and selectable in the visualisation. -.. thumbnail:: ../images/gmsh_tut_3.png +.. figure:: ../images/gmsh_tut_3.png :width: 400 :align: center We can then hover our mouse over each surface to see its information. For example, we can see that the front tungsten surface is defined as Plane 7, and borders the volume 1. -.. thumbnail:: ../images/gmsh_tut_4.png +.. figure:: ../images/gmsh_tut_4.png :width: 400 :align: center @@ -379,7 +379,7 @@ A FESTIM simulation can then be run: This produces the following visualisation in Paraview: -.. thumbnail:: ../images/gmsh_tut_5.png +.. figure:: ../images/gmsh_tut_5.png :width: 400 :align: center @@ -395,13 +395,13 @@ Building the geometry in SALOME 1. Open SALOME and create a new study. 2. Activate the Geometry module -.. thumbnail:: ../images/salome_guide_1.png +.. figure:: ../images/salome_guide_1.png :width: 400 :align: center 3. Create a first square by clicking "Create rectangular face". Keep the default parameters. Click "Apply and Close" -.. thumbnail:: ../images/salome_guide_2.png +.. figure:: ../images/salome_guide_2.png :width: 400 :align: center @@ -409,26 +409,26 @@ Building the geometry in SALOME 5. Translate the second square by clicking "Operations/Transformation/Translation" -.. thumbnail:: ../images/salome_guide_3.png +.. figure:: ../images/salome_guide_3.png :width: 400 :align: center 6. Make sure Face 2 is selected. Enter 100 for the Dx value. Click "Apply and Close" -.. thumbnail:: ../images/salome_guide_4.png +.. figure:: ../images/salome_guide_4.png :width: 400 :align: center 7. Create a compound by clicking "New Entity/Build/Compound" make sure Face_1 and Translation_1 are selected then click "Apply and Close". -.. thumbnail:: ../images/salome_guide_5.png +.. figure:: ../images/salome_guide_5.png :width: 400 :align: center 8. Create a group "New Entity/Group/Create group". In Shape Type, select the 2D surface. Name the group "left_volume". Make sure Compound_1 is selected. Click on the left square and click "Add" (2 should appear in the white window). Click "Apply and Close". -.. thumbnail:: ../images/salome_guide_6.png +.. figure:: ../images/salome_guide_6.png :width: 400 :align: center @@ -436,19 +436,19 @@ Click on the left square and click "Add" (2 should appear in the white window). 10. Create another group "left_boundary" but this time in Shape Type select the 1D curve. Click on the left edge of the left square and click "Add". Click "Apply and Close". -.. thumbnail:: ../images/salome_guide_7.png +.. figure:: ../images/salome_guide_7.png :width: 400 :align: center 11. Repeat the operation to create a group "right_boundary" with the right edge of the right square. Your study should look like: -.. thumbnail:: ../images/salome_guide_8.png +.. figure:: ../images/salome_guide_8.png :width: 400 :align: center 12. Click on "Mesh" to activate the mesh module. -.. thumbnail:: ../images/salome_guide_9.png +.. figure:: ../images/salome_guide_9.png :width: 400 :align: center @@ -456,13 +456,13 @@ Click on the left square and click "Add" (2 should appear in the white window). 14. Make sure Compound_1 is selected in "Geometry". Under the 2D tab, select "NETGEN 1D-2D" as algorithm. -.. thumbnail:: ../images/salome_guide_10.png +.. figure:: ../images/salome_guide_10.png :width: 400 :align: center 15. Next to "Hypothesis" click on the gear symbol. Select "NETGEN 2D Simple Parameters". Click Ok. Click "Apply and Close". -.. thumbnail:: ../images/salome_guide_11.png +.. figure:: ../images/salome_guide_11.png :width: 400 :align: center @@ -470,7 +470,7 @@ Click on the left square and click "Add" (2 should appear in the white window). 16. Export the mesh to MED by right clicking on Mesh_1 in the Object Browser, then Export/MED file. Choose a location where you want to write your MED file and click Save. -.. thumbnail:: ../images/salome_guide_12.png +.. figure:: ../images/salome_guide_12.png :width: 400 :align: center @@ -548,7 +548,7 @@ Here, the left volume is tagged with ID 6, the right boundary is tagged with ID 18. Inspect the produced XDMF files with Paraview using the XDMF3 S reader. The file mesh_domains.xdmf should look like: -.. thumbnail:: ../images/salome_guide_13.png +.. figure:: ../images/salome_guide_13.png :width: 400 :align: center @@ -587,7 +587,7 @@ Here, the left volume is tagged with ID 6, the right boundary is tagged with ID 20. The simulation should run without errors. The solute field can be visualised with Paraview. -.. thumbnail:: ../images/salome_guide_14.png +.. figure:: ../images/salome_guide_14.png :width: 400 :align: center @@ -600,13 +600,13 @@ If you have a CAD model, you can export it to a mesh with SALOME. 2. Activate the Geometry module 3. Import STEP file by clicking "File/Import/STEP" -.. thumbnail:: ../images/salome_guide_cad_1.png +.. figure:: ../images/salome_guide_cad_1.png :width: 400 :align: center 4. By clicking "Fit to selection" you can see the imported geometry: -.. thumbnail:: ../images/salome_guide_cad_2.png +.. figure:: ../images/salome_guide_cad_2.png :width: 400 :align: center From 185adcd5201e58b5d5699e5b49b3652567e3db5d Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 14:55:36 -0500 Subject: [PATCH 08/13] update env for setuptools bug --- docs/environment.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/environment.yml b/docs/environment.yml index 2bab8f22c..a1655b2eb 100644 --- a/docs/environment.yml +++ b/docs/environment.yml @@ -3,6 +3,8 @@ channels: - conda-forge - defaults dependencies: + - setuptools<82 + - wheel<0.45 - fenics - python>=3.10 - matplotlib==3.7.1 From 919cc3bfc251d55fae9421b0f9c0656ea2d7e55a Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 15:00:09 -0500 Subject: [PATCH 09/13] figure --- docs/source/theory.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/theory.rst b/docs/source/theory.rst index 0f3ac2f63..2b364b173 100644 --- a/docs/source/theory.rst +++ b/docs/source/theory.rst @@ -299,7 +299,7 @@ introducing hydrogen surface species :math:`c_\mathrm{s}\,[\mathrm{m}^{-2}]`. Evolution of hydrogen surface concentration is determined by the atomic flux balance at the surface, as sketched in the simplified energy diagram below. -.. thumbnail:: images/potential_diagram.png +.. figure:: images/potential_diagram.png :align: center :width: 800 From 6d1aa79ccde76b367d7582065e1ac0b06c478739 Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 15:01:07 -0500 Subject: [PATCH 10/13] add theses.fr to excluded patterns --- .github/workflows/doctest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml index b9fce52d9..36e60fe3f 100644 --- a/.github/workflows/doctest.yml +++ b/.github/workflows/doctest.yml @@ -38,7 +38,7 @@ jobs: exclude_urls: https://www.lspm.cnrs.fr/en/home/ # A comma separated patterns to exclude during URL checks - exclude_patterns: + exclude_patterns: https://theses.fr/ # choose if the force pass or not force_pass : false From f2421910f03d25da315c773fc8674d7bbb7fe636 Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 15:10:51 -0500 Subject: [PATCH 11/13] added theses.fr to excluded urls --- .github/workflows/doctest.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml index 36e60fe3f..b8b0f4b65 100644 --- a/.github/workflows/doctest.yml +++ b/.github/workflows/doctest.yml @@ -35,10 +35,10 @@ jobs: retry_count: 3 # A comma separated links to exclude during URL checks - exclude_urls: https://www.lspm.cnrs.fr/en/home/ + exclude_urls: https://www.lspm.cnrs.fr/en/home/, https://www.theses.fr/2022PA131054 # A comma separated patterns to exclude during URL checks - exclude_patterns: https://theses.fr/ + exclude_patterns: # choose if the force pass or not force_pass : false From 9cb3a7ad499838947f5d875b663bb992ece4917d Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 15:25:51 -0500 Subject: [PATCH 12/13] no space --- .github/workflows/doctest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/doctest.yml b/.github/workflows/doctest.yml index b8b0f4b65..cb5de018c 100644 --- a/.github/workflows/doctest.yml +++ b/.github/workflows/doctest.yml @@ -35,7 +35,7 @@ jobs: retry_count: 3 # A comma separated links to exclude during URL checks - exclude_urls: https://www.lspm.cnrs.fr/en/home/, https://www.theses.fr/2022PA131054 + exclude_urls: https://www.lspm.cnrs.fr/en/home/,https://www.theses.fr/2022PA131054 # A comma separated patterns to exclude during URL checks exclude_patterns: From e05cb20181bb0a9a31badb9837a4a23cc30188cc Mon Sep 17 00:00:00 2001 From: RemDelaporteMathurin Date: Fri, 13 Feb 2026 16:05:57 -0500 Subject: [PATCH 13/13] downgrade setuptools --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 274b77936..7fc3a85d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: shell: bash -l {0} run: | # conda upgrade --strict-channel-priority -c conda-forge --all - conda install -c conda-forge fenics numpy=1.24 "python>=3.10" + conda install -c conda-forge fenics numpy=1.24 "python>=3.10" "setuptools<82" - name: Install dependencies shell: bash -l {0}