diff --git a/.gitignore b/.gitignore index 4d354b9df..0e3886ead 100644 --- a/.gitignore +++ b/.gitignore @@ -65,7 +65,7 @@ instance/ # Sphinx documentation docs/*/_build/ -docs/*/_static/ +# docs/*/_static/ docs/*/_templates/ # PyBuilder @@ -116,7 +116,7 @@ venv.bak/ # Docs files docs/source/_build/ -docs/source/_static/ +# docs/source/_static/ # Visual Studio Code settings .vscode/ \ No newline at end of file diff --git a/docs/source/_static/favicon.png b/docs/source/_static/favicon.png new file mode 100644 index 000000000..d1f684cd0 Binary files /dev/null and b/docs/source/_static/favicon.png differ diff --git a/docs/source/_static/gallery/arc.png b/docs/source/_static/gallery/arc.png new file mode 100644 index 000000000..065651770 Binary files /dev/null and b/docs/source/_static/gallery/arc.png differ diff --git a/docs/source/_static/gallery/fitting_tds.png b/docs/source/_static/gallery/fitting_tds.png new file mode 100644 index 000000000..3c968db5b Binary files /dev/null and b/docs/source/_static/gallery/fitting_tds.png differ diff --git a/docs/source/_static/gallery/hx.gif b/docs/source/_static/gallery/hx.gif new file mode 100644 index 000000000..08114ab26 Binary files /dev/null and b/docs/source/_static/gallery/hx.gif differ diff --git a/docs/source/_static/gallery/microstructure.png b/docs/source/_static/gallery/microstructure.png new file mode 100644 index 000000000..35564dd82 Binary files /dev/null and b/docs/source/_static/gallery/microstructure.png differ diff --git a/docs/source/_static/gallery/monoblock.png b/docs/source/_static/gallery/monoblock.png new file mode 100644 index 000000000..9c1f058d0 Binary files /dev/null and b/docs/source/_static/gallery/monoblock.png differ diff --git a/docs/source/_static/gallery/openmc_coupling.png b/docs/source/_static/gallery/openmc_coupling.png new file mode 100644 index 000000000..f75e8ad7c Binary files /dev/null and b/docs/source/_static/gallery/openmc_coupling.png differ diff --git a/docs/source/_static/gallery/permeation.png b/docs/source/_static/gallery/permeation.png new file mode 100644 index 000000000..18cea4500 Binary files /dev/null and b/docs/source/_static/gallery/permeation.png differ diff --git a/docs/source/_static/gallery/probe.png b/docs/source/_static/gallery/probe.png new file mode 100644 index 000000000..21b341e97 Binary files /dev/null and b/docs/source/_static/gallery/probe.png differ diff --git a/docs/source/_static/gallery/tds.png b/docs/source/_static/gallery/tds.png new file mode 100644 index 000000000..097194659 Binary files /dev/null and b/docs/source/_static/gallery/tds.png differ diff --git a/docs/source/images/user_logos/Beihang_University.png b/docs/source/_static/logos/Beihang_University.png similarity index 100% rename from docs/source/images/user_logos/Beihang_University.png rename to docs/source/_static/logos/Beihang_University.png diff --git a/docs/source/images/user_logos/Commonwealth_Fusion_Systems Devens_MA_USA.png b/docs/source/_static/logos/Commonwealth_Fusion_Systems Devens_MA_USA.png similarity index 100% rename from docs/source/images/user_logos/Commonwealth_Fusion_Systems Devens_MA_USA.png rename to docs/source/_static/logos/Commonwealth_Fusion_Systems Devens_MA_USA.png diff --git a/docs/source/images/user_logos/Cranfield_University_UK.png b/docs/source/_static/logos/Cranfield_University_UK.png similarity index 100% rename from docs/source/images/user_logos/Cranfield_University_UK.png rename to docs/source/_static/logos/Cranfield_University_UK.png diff --git a/docs/source/images/user_logos/ENEA.png b/docs/source/_static/logos/ENEA.png similarity index 100% rename from docs/source/images/user_logos/ENEA.png rename to docs/source/_static/logos/ENEA.png diff --git a/docs/source/images/user_logos/ENI.png b/docs/source/_static/logos/ENI.png similarity index 100% rename from docs/source/images/user_logos/ENI.png rename to docs/source/_static/logos/ENI.png diff --git a/docs/source/images/user_logos/Exeter_University_UK.png b/docs/source/_static/logos/Exeter_University_UK.png similarity index 100% rename from docs/source/images/user_logos/Exeter_University_UK.png rename to docs/source/_static/logos/Exeter_University_UK.png diff --git a/docs/source/images/user_logos/Frazer_Nash.png b/docs/source/_static/logos/Frazer_Nash.png similarity index 100% rename from docs/source/images/user_logos/Frazer_Nash.png rename to docs/source/_static/logos/Frazer_Nash.png diff --git a/docs/source/images/user_logos/IRFM_cadarache_France.png b/docs/source/_static/logos/IRFM_cadarache_France.png similarity index 100% rename from docs/source/images/user_logos/IRFM_cadarache_France.png rename to docs/source/_static/logos/IRFM_cadarache_France.png diff --git a/docs/source/images/user_logos/ITER_organization_France.png b/docs/source/_static/logos/ITER_organization_France.png similarity index 100% rename from docs/source/images/user_logos/ITER_organization_France.png rename to docs/source/_static/logos/ITER_organization_France.png diff --git "a/docs/source/images/user_logos/Institut_Jo\305\276ef_Stefan.png" "b/docs/source/_static/logos/Institut_Jo\305\276ef_Stefan.png" similarity index 100% rename from "docs/source/images/user_logos/Institut_Jo\305\276ef_Stefan.png" rename to "docs/source/_static/logos/Institut_Jo\305\276ef_Stefan.png" diff --git a/docs/source/images/user_logos/Institute_of_plasma_physics_Chinese_academy_of_sciences.png b/docs/source/_static/logos/Institute_of_plasma_physics_Chinese_academy_of_sciences.png similarity index 100% rename from docs/source/images/user_logos/Institute_of_plasma_physics_Chinese_academy_of_sciences.png rename to docs/source/_static/logos/Institute_of_plasma_physics_Chinese_academy_of_sciences.png diff --git a/docs/source/images/user_logos/Kyoto_Fusioneering.png b/docs/source/_static/logos/Kyoto_Fusioneering.png similarity index 100% rename from docs/source/images/user_logos/Kyoto_Fusioneering.png rename to docs/source/_static/logos/Kyoto_Fusioneering.png diff --git a/docs/source/images/user_logos/LSPM_Villetaneuse_France.png b/docs/source/_static/logos/LSPM_Villetaneuse_France.png similarity index 100% rename from docs/source/images/user_logos/LSPM_Villetaneuse_France.png rename to docs/source/_static/logos/LSPM_Villetaneuse_France.png diff --git a/docs/source/images/user_logos/Logo_of_University_of_Tsukuba.png b/docs/source/_static/logos/Logo_of_University_of_Tsukuba.png similarity index 100% rename from docs/source/images/user_logos/Logo_of_University_of_Tsukuba.png rename to docs/source/_static/logos/Logo_of_University_of_Tsukuba.png diff --git a/docs/source/images/user_logos/MEPhI_moscow_Russia.png b/docs/source/_static/logos/MEPhI_moscow_Russia.png similarity index 100% rename from docs/source/images/user_logos/MEPhI_moscow_Russia.png rename to docs/source/_static/logos/MEPhI_moscow_Russia.png diff --git a/docs/source/images/user_logos/MIT_Cambridge_MA_USA.png b/docs/source/_static/logos/MIT_Cambridge_MA_USA.png similarity index 100% rename from docs/source/images/user_logos/MIT_Cambridge_MA_USA.png rename to docs/source/_static/logos/MIT_Cambridge_MA_USA.png diff --git a/docs/source/images/user_logos/Marathon_Fusion_USA.png b/docs/source/_static/logos/Marathon_Fusion_USA.png similarity index 100% rename from docs/source/images/user_logos/Marathon_Fusion_USA.png rename to docs/source/_static/logos/Marathon_Fusion_USA.png diff --git a/docs/source/images/user_logos/Oak_Ridge_National_Laboratory.png b/docs/source/_static/logos/Oak_Ridge_National_Laboratory.png similarity index 100% rename from docs/source/images/user_logos/Oak_Ridge_National_Laboratory.png rename to docs/source/_static/logos/Oak_Ridge_National_Laboratory.png diff --git a/docs/source/images/user_logos/Politecnico_di_Torino.png b/docs/source/_static/logos/Politecnico_di_Torino.png similarity index 100% rename from docs/source/images/user_logos/Politecnico_di_Torino.png rename to docs/source/_static/logos/Politecnico_di_Torino.png diff --git a/docs/source/images/user_logos/Thea_Energy_USA.png b/docs/source/_static/logos/Thea_Energy_USA.png similarity index 100% rename from docs/source/images/user_logos/Thea_Energy_USA.png rename to docs/source/_static/logos/Thea_Energy_USA.png diff --git a/docs/source/images/user_logos/UKAEA_UK.png b/docs/source/_static/logos/UKAEA_UK.png similarity index 100% rename from docs/source/images/user_logos/UKAEA_UK.png rename to docs/source/_static/logos/UKAEA_UK.png diff --git a/docs/source/images/user_logos/University_San_Diego.png b/docs/source/_static/logos/University_San_Diego.png similarity index 100% rename from docs/source/images/user_logos/University_San_Diego.png rename to docs/source/_static/logos/University_San_Diego.png diff --git a/docs/source/images/user_logos/University_Wisconsin_Madison_USA.png b/docs/source/_static/logos/University_Wisconsin_Madison_USA.png similarity index 100% rename from docs/source/images/user_logos/University_Wisconsin_Madison_USA.png rename to docs/source/_static/logos/University_Wisconsin_Madison_USA.png diff --git a/docs/source/images/user_logos/University_of_Surrey.png b/docs/source/_static/logos/University_of_Surrey.png similarity index 100% rename from docs/source/images/user_logos/University_of_Surrey.png rename to docs/source/_static/logos/University_of_Surrey.png diff --git a/docs/source/images/user_logos/University_of_Tsukuba.png b/docs/source/_static/logos/University_of_Tsukuba.png similarity index 100% rename from docs/source/images/user_logos/University_of_Tsukuba.png rename to docs/source/_static/logos/University_of_Tsukuba.png diff --git a/docs/source/images/user_logos/Zap_Energy.png b/docs/source/_static/logos/Zap_Energy.png similarity index 100% rename from docs/source/images/user_logos/Zap_Energy.png rename to docs/source/_static/logos/Zap_Energy.png diff --git a/docs/source/images/user_logos/digiLab_UK.png b/docs/source/_static/logos/digiLab_UK.png similarity index 100% rename from docs/source/images/user_logos/digiLab_UK.png rename to docs/source/_static/logos/digiLab_UK.png diff --git a/docs/source/_static/logos/rochester.svg b/docs/source/_static/logos/rochester.svg new file mode 100644 index 000000000..f45981220 --- /dev/null +++ b/docs/source/_static/logos/rochester.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/source/_static/style.css b/docs/source/_static/style.css index ba64e9e20..ce90d5b9d 100644 --- a/docs/source/_static/style.css +++ b/docs/source/_static/style.css @@ -1,5 +1,13 @@ @import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,400;0,700;0,900;1,400;1,700;1,900&family=Open+Sans:ital,wght@0,400;0,600;1,400;1,600&display=swap'); +/* ============================================================= + FESTIM BRAND COLOURS + ============================================================= */ +:root { + --festim-primary: #1a4848; + --festim-primary-hover: #f7b000; +} + body { font-family: 'Open Sans', sans-serif; } @@ -48,6 +56,28 @@ code { padding: 2.5rem 0rem 0.5rem 0rem; } +/* ============================================================= + BRAND COLOUR HEADINGS + ============================================================= */ +html .festim-section-heading, +html .festim-hero-text h1 { + color: var(--festim-primary); +} + +html .festim-feature-card h3 { + color: var(--festim-primary); +} + +html .festim-nav-card i { + color: var(--festim-primary); +} + +/* Tone it down slightly in dark mode so it stays readable */ +html[data-theme="dark"] .festim-section-heading, +html[data-theme="dark"] .festim-hero-text h1, +html[data-theme="dark"] .festim-feature-card h3 { + color: color-mix(in srgb, var(--festim-primary) 85%, #fff); +} /* SPHINX-BOOK-THEME HOTFIX (top-right icons): @@ -75,4 +105,449 @@ https://github.com/executablebooks/sphinx-book-theme/issues/879 h3 { font-size: 125%; font-weight: normal; +} + + +/* ============================================================= + FESTIM LANDING PAGE STYLES + ============================================================= */ + +/* ---- Section headings ---- */ +.festim-section-heading { + text-align: center; + margin-top: 3rem; + margin-bottom: 1.5rem; +} + +/* ============================================================= + HERO + ============================================================= */ +.festim-hero { + display: flex; + align-items: center; + justify-content: center; + gap: 3rem; + padding: 3rem 1rem 2rem; + flex-wrap: wrap; +} + +.festim-hero-text { + flex: 1 1 360px; + max-width: 500px; +} + +.festim-hero-text h1 { + font-size: 3rem; + margin-bottom: 0.5rem; +} + +.festim-hero-subtitle { + font-size: 1.25rem; + color: var(--pst-color-text-muted); + margin-bottom: 1.5rem; + line-height: 1.5; +} + +.festim-hero-subtitle a { + font-weight: 600; +} + +.festim-hero-buttons { + display: flex; + gap: 0.75rem; + flex-wrap: wrap; +} + +/* ---- Override button colours on landing page ---- */ +.festim-hero-buttons .btn-primary, +.festim-hero-buttons .btn-primary:visited { + background-color: var(--festim-primary); + border-color: var(--festim-primary); + color: #fff; +} + +.festim-hero-buttons .btn-primary:hover, +.festim-hero-buttons .btn-primary:focus, +.festim-hero-buttons .btn-primary:active { + background-color: var(--festim-primary-hover); + border-color: var(--festim-primary-hover); + color: #fff; + text-decoration: none; +} + +.festim-hero-buttons .btn-outline-primary, +.festim-hero-buttons .btn-outline-primary:visited { + color: var(--festim-primary); + border-color: var(--festim-primary); + background-color: transparent; +} + +.festim-hero-buttons .btn-outline-primary:hover, +.festim-hero-buttons .btn-outline-primary:focus, +.festim-hero-buttons .btn-outline-primary:active { + background-color: var(--festim-primary-hover); + border-color: var(--festim-primary-hover); + color: #fff; + text-decoration: none; +} + +/* ---- Community section buttons ---- */ +.festim-community-buttons .btn-outline-primary, +.festim-community-buttons .btn-outline-primary:visited { + color: var(--festim-primary); + border-color: var(--festim-primary); + background-color: transparent; +} + +.festim-community-buttons .btn-outline-primary:hover, +.festim-community-buttons .btn-outline-primary:focus, +.festim-community-buttons .btn-outline-primary:active { + background-color: var(--festim-primary); + border-color: var(--festim-primary); + color: #fff; + text-decoration: none; +} + +/* ---- Carousel in hero ---- */ +.festim-hero-carousel { + flex: 1 1 400px; + max-width: 520px; +} + +.festim-hero-carousel .carousel { + border-radius: 0.5rem; + overflow: hidden; + background-color: var(--pst-color-surface); + border: 1px solid var(--pst-color-border); +} + +.festim-hero-carousel .carousel-item img { + width: calc(100% - 2rem); + height: 320px; + object-fit: contain; + margin: 1rem auto; + display: block; +} + +.festim-carousel-caption { + text-align: center; + padding: 0.5rem 1rem 1rem; + color: var(--pst-color-text-muted); + font-size: 0.9rem; + margin: 0; +} + +.festim-hero-carousel .carousel-control-prev-icon, +.festim-hero-carousel .carousel-control-next-icon { + filter: drop-shadow(0 0 2px var(--pst-color-text-base)); +} + +/* responsive: stack on small screens */ +@media (max-width: 768px) { + .festim-hero { + flex-direction: column; + text-align: center; + } + .festim-hero-buttons { + justify-content: center; + } + .festim-hero-carousel { + max-width: 100%; + } +} + +/* ============================================================= + LOGO RIBBON + ============================================================= */ +.festim-ribbon-wrapper { + overflow: hidden; + position: relative; + width: 100%; + padding: 1rem 0; +} + +/* Fade edges */ +.festim-ribbon-wrapper::before, +.festim-ribbon-wrapper::after { + content: ""; + position: absolute; + top: 0; + bottom: 0; + width: 60px; + z-index: 2; + pointer-events: none; +} + +.festim-ribbon-wrapper::before { + left: 0; + background: linear-gradient(to right, var(--pst-color-background), transparent); +} + +.festim-ribbon-wrapper::after { + right: 0; + background: linear-gradient(to left, var(--pst-color-background), transparent); +} + +.festim-ribbon-track { + display: flex; + align-items: center; + gap: 2.5rem; + width: max-content; + animation: festim-scroll 60s linear infinite; +} + +.festim-ribbon-track:hover { + animation-play-state: paused; +} + +html .festim-ribbon-track img, +html[data-theme="dark"] .festim-ribbon-track img { + height: 50px; + width: auto; + object-fit: contain; + filter: grayscale(100%); + opacity: 0.7; + transition: filter 0.3s ease, opacity 0.3s ease; +} + +html .festim-ribbon-track img:hover, +html[data-theme="dark"] .festim-ribbon-track img:hover { + filter: grayscale(0%); + opacity: 1.0; +} + +@keyframes festim-scroll { + 0% { + transform: translateX(0); + } + 100% { + transform: translateX(-50%); + } +} + +/* ============================================================= + NAVIGATION CARDS + ============================================================= */ +.festim-nav-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; + max-width: 900px; + margin: 0 auto 2rem; + padding: 0 1rem; +} + +.festim-nav-card { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.75rem; + padding: 2rem 1rem; + border-radius: 0.5rem; + border: 1px solid var(--pst-color-border); + background-color: var(--pst-color-surface); + text-decoration: none; + color: var(--pst-color-text-base); + transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; +} + +.festim-nav-card:hover { + transform: translateY(-3px); + box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1); + border-color: var(--festim-primary); + text-decoration: none; + color: var(--pst-color-text-base); +} + +.festim-nav-card:visited { + color: var(--pst-color-text-base); +} + +.festim-nav-card i { + font-size: 2rem; + color: var(--festim-primary); +} + +.festim-nav-card span { + font-size: 1.05rem; + font-weight: 600; +} + +@media (max-width: 600px) { + .festim-nav-grid { + grid-template-columns: repeat(2, 1fr); + } +} + +/* ============================================================= + WHY FESTIM - FEATURE CARDS + ============================================================= */ +.festim-features { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 1.5rem; + max-width: 1100px; + margin: 0 auto 2rem; + padding: 0 1rem; +} + +.festim-feature-card { + flex: 1 1 180px; + max-width: 200px; + text-align: center; + padding: 1.5rem 1rem; + border-radius: 0.75rem; + border: 1px solid transparent; + transition: border-color 0.3s ease, transform 0.2s ease; +} + +.festim-feature-card:hover { + border-color: var(--festim-primary); + transform: translateY(-4px); +} + +.festim-feature-icon { + width: 56px; + height: 56px; + margin: 0 auto 1rem; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background-color: color-mix(in srgb, var(--festim-primary) 15%, transparent); +} + +.festim-feature-icon i { + font-size: 1.4rem; + color: var(--festim-primary); +} + +.festim-feature-card h3 { + font-size: 1rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--pst-color-text-base); +} + +.festim-feature-card p { + font-size: 0.875rem; + line-height: 1.5; + color: var(--pst-color-text-muted); + margin: 0; +} + +@media (max-width: 600px) { + .festim-feature-card { + max-width: 100%; + flex: 1 1 100%; + } +} + +/* ============================================================= + CITING FESTIM + ============================================================= */ +.festim-cite { + max-width: 700px; + margin: 0 auto 2rem; + text-align: center; + padding: 0 1rem; +} + +.festim-cite > p { + color: var(--pst-color-text-muted); + margin-bottom: 1.25rem; +} + +/* ---- DOI badge ---- */ +.festim-doi-badge { + display: inline-flex; + border-radius: 0.375rem; + overflow: hidden; + font-size: 0.85rem; + font-weight: 600; + text-decoration: none; + margin-bottom: 1.5rem; + border: 1px solid var(--pst-color-border); + transition: box-shadow 0.2s ease; +} + +.festim-doi-badge:hover { + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + text-decoration: none; +} + +.festim-doi-label { + background-color: var(--festim-primary); + color: #fff; + padding: 0.4rem 0.65rem; +} + +.festim-doi-value { + padding: 0.4rem 0.75rem; + color: var(--pst-color-text-base); + background-color: var(--pst-color-surface); +} + +/* ---- BibTeX dropdown ---- */ +.festim-bibtex { + text-align: left; + border: 1px solid var(--pst-color-border); + border-radius: 0.5rem; + overflow: hidden; + transition: border-color 0.2s ease; +} + +.festim-bibtex:hover { + border-color: var(--festim-primary); +} + +.festim-bibtex summary { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.75rem 1rem; + cursor: pointer; + font-weight: 600; + font-size: 0.95rem; + color: var(--pst-color-text-base); + list-style: none; + user-select: none; +} + +.festim-bibtex summary::-webkit-details-marker { + display: none; +} + +.festim-bibtex summary i:first-child { + color: var(--festim-primary); +} + +.festim-bibtex-chevron { + margin-left: auto; + font-size: 0.75rem; + transition: transform 0.2s ease; + color: var(--pst-color-text-muted); +} + +.festim-bibtex[open] .festim-bibtex-chevron { + transform: rotate(180deg); +} + +.festim-bibtex pre { + margin: 0; + padding: 1rem; + background-color: var(--pst-color-surface); + border-top: 1px solid var(--pst-color-border); + border-radius: 0; + font-size: 0.8rem; + line-height: 1.6; + overflow-x: auto; +} + +.festim-bibtex code { + color: var(--pst-color-text-base); + background: none; + padding: 0; } \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 2016a27ea..92f58f39e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -5,63 +5,21 @@ # -- Path setup -------------------------------------------------------------- -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# import os import sys sys.path.insert(0, os.path.abspath("../../src")) - -# Generate the map - -# Add the directory containing your Python script to the Python path -sys.path.insert(0, os.path.abspath(".")) - -import map - -m = map.generate_map() -current_dir = os.path.dirname(__file__) -html_path = os.path.join(current_dir, "_static", "map.html") - -# create _static directory if it doesn't exist -os.makedirs(os.path.dirname(html_path), exist_ok=True) - -m.save(html_path) - - -# Generate the map - -# Add the directory containing your Python script to the Python path -sys.path.insert(0, os.path.abspath(".")) - - -m = map.generate_map() -current_dir = os.path.dirname(__file__) -html_path = os.path.join(current_dir, "_static", "map.html") - -# create _static directory if it doesn't exist -os.makedirs(os.path.dirname(html_path), exist_ok=True) - -m.save(html_path) - # -- Project information ----------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = "FESTIM" -copyright = "2022-2023, FESTIM contributors" +copyright = "2022-2026, FESTIM contributors" author = "FESTIM-dev" -release = "1.0.0" -version = "1.0" # -- General configuration --------------------------------------------------- -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. extensions = [ "sphinx.ext.autodoc", "sphinx.ext.autosummary", @@ -79,37 +37,24 @@ suppress_warnings = ["autosectionlabel.*"] -napoleon_use_ivar = True # needed to correctly format class attributes +napoleon_use_ivar = True -# Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. exclude_patterns = [] - source_suffix = ".rst" -# The master toctree document. master_doc = "index" -# The name of the Pygments (syntax highlighting) style to use. pygments_style = None - -# shorten module names in readme add_module_names = False -# bibliography file bibtex_bibfiles = ["bibliography/references.bib"] # -- Options for HTML output ------------------------------------------------- -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# html_theme = "pydata_sphinx_theme" html_static_path = ["_static"] html_css_files = ["style.css"] @@ -159,6 +104,8 @@ "analytics": dict(google_analytics_id="G-SCL2TVV7BK"), } +html_favicon = "_static/favicon.png" + html_sidebars = { "**": [ "sidebar-nav-bs", diff --git a/docs/source/images/icons/book-2-svgrepo-com.svg b/docs/source/images/icons/book-2-svgrepo-com.svg deleted file mode 100644 index b24aa3976..000000000 --- a/docs/source/images/icons/book-2-svgrepo-com.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/check-square-svgrepo-com.svg b/docs/source/images/icons/check-square-svgrepo-com.svg deleted file mode 100644 index fbdfb91c6..000000000 --- a/docs/source/images/icons/check-square-svgrepo-com.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/clapperboard-play-svgrepo-com.svg b/docs/source/images/icons/clapperboard-play-svgrepo-com.svg deleted file mode 100644 index 3d68ad02d..000000000 --- a/docs/source/images/icons/clapperboard-play-svgrepo-com.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/code-square-svgrepo-com.svg b/docs/source/images/icons/code-square-svgrepo-com.svg deleted file mode 100644 index 142d36bf7..000000000 --- a/docs/source/images/icons/code-square-svgrepo-com.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/graph-up-svgrepo-com.svg b/docs/source/images/icons/graph-up-svgrepo-com.svg deleted file mode 100644 index 949d15420..000000000 --- a/docs/source/images/icons/graph-up-svgrepo-com.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/keyboard-svgrepo-com.svg b/docs/source/images/icons/keyboard-svgrepo-com.svg deleted file mode 100644 index 027f70f42..000000000 --- a/docs/source/images/icons/keyboard-svgrepo-com.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/source/images/icons/running-2-svgrepo-com.svg b/docs/source/images/icons/running-2-svgrepo-com.svg deleted file mode 100644 index f0699589a..000000000 --- a/docs/source/images/icons/running-2-svgrepo-com.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index 3170d4911..b9c20609b 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -1,85 +1,307 @@ -FESTIM -====== +:html_theme.sidebar_secondary.remove: -FESTIM is a FEniCS-based application for solving coupled hydrogen transport - heat transfer simulations. -The tool is based on the finite element methods to solve the McNabb & Foster transport equations and the heat equation. -It is capable of solving 1D/2D/3D multimaterial simulations and provides support for a wide-range of boundary conditions, which makes it a very versatile tool that can be adapted to many use cases. -Moreover, users can rapidly get started with FESTIM thanks to its python API. +.. meta:: + :title: FESTIM -.. All the logos are from this collection https://www.svgrepo.com/collection/solar-linear-icons/ +.. title:: FESTIM -.. grid:: 3 - :gutter: 2 +.. raw:: html + + +
+
+

FESTIM

+

+ Simulate hydrogen transport in materials with Python, powered by + FEniCS +

+ +
+ + +
- .. grid-item:: - .. card:: Installation - :img-top: images/icons/running-2-svgrepo-com.svg - :link: installation - :link-type: doc +.. raw:: html + + +

Why FESTIM?

- .. grid-item:: +
- .. card:: User guide - :img-top: images/icons/book-2-svgrepo-com.svg - :link: userguide/index - :link-type: doc +
+
+ +
+

Multi-dimensional

+

Run simulations in 1D, 2D, or 3D to match your problem geometry.

+
- .. grid-item:: +
+
+ +
+

Multi-material

+

Model complex assemblies with multiple materials and hydrogen isotopes.

+
- .. card:: Tutorials - :img-top: images/icons/clapperboard-play-svgrepo-com.svg - :link: https://festim-workshop.readthedocs.io/ +
+
+ +
+

Python API

+

Get started quickly with a clean, minimal Python interface.

+
- .. grid-item:: +
+
+ +
+

Built on FEniCS

+

Leverages a mature finite element framework for robust, scalable simulations.

+
- .. card:: Developer guide - :img-top: images/icons/code-square-svgrepo-com.svg - :link: devguide/index - :link-type: doc +
+ +.. raw:: html - .. grid-item:: - .. card:: V&V - :img-top: images/icons/check-square-svgrepo-com.svg - :link: https://festim-vv-report.readthedocs.io/en/latest/ + +

Explore the documentation

- .. grid-item:: - .. card:: Fellowship - :img-top: images/icons/graph-up-svgrepo-com.svg - :link: fellowship - :link-type: doc +
+ + + Installation + + + + User guide + + + + Tutorials + + + + Developer guide + + + + V&V + + + + Fellowship + +
+ + +.. raw:: html -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 `_. + +

Trusted by researchers worldwide

+
+
-.. admonition:: Recommended publication for citing - :class: tip + Oak Ridge National Laboratory + IRFM + LSPM + MIT + Thea Energy + Commonwealth Fusion Systems + University of Wisconsin-Madison + Marathon Fusion + University of San Diego + MEPhI + ITER + UKAEA + digiLab + Cranfield University + Politecnico di Torino + Beihang University + ASIPP + Institut Jozef Stefan + Kyoto Fusioneering + ENI + ENEA + Zap Energy + Frazer Nash + University of Surrey + University of Tsukuba + University of Exeter + University of Rochester - Rémi Delaporte-Mathurin, James Dark, Gabriele Ferrero, Etienne A. Hodille, Vladimir Kulagin, Samuele Meschini, - "`FESTIM: An open-source code for hydrogen transport simulations. - International Journal of Hydrogen Energy 63 (2024): 786-802. `_", + + Oak Ridge National Laboratory + IRFM + LSPM + MIT + Thea Energy + Commonwealth Fusion Systems + University of Wisconsin-Madison + Marathon Fusion + University of San Diego + MEPhI + ITER + UKAEA + digiLab + Cranfield University + Politecnico di Torino + Beihang University + ASIPP + Institut Jozef Stefan + Kyoto Fusioneering + ENI + ENEA + Zap Energy + Frazer Nash + University of Surrey + University of Tsukuba + University of Exeter + University of Rochester +
+
+ +

+ Want your institution listed? + Open an issue. +

-Map of FESTIM users -------------------- .. raw:: html - + +

Citing FESTIM

+ +
+

If you use FESTIM in your research, please cite the following publication:

+ + + DOI + 10.1016/j.ijhydene.2026.153987 + +
+ + + BibTeX + + +

+         @article{dark_festim_2026,
+            title = {{FESTIM} v2.0: {Upgraded} framework for multi-species hydrogen transport and enhanced performance},
+            volume = {220},
+            issn = {0360-3199},
+            shorttitle = {{FESTIM} v2.0},
+            url = {https://www.sciencedirect.com/science/article/pii/S0360319926006245},
+            doi = {10.1016/j.ijhydene.2026.153987},
+            journal = {International Journal of Hydrogen Energy},
+            author = {Dark, James and Delaporte-Mathurin, Rémi and Dokken, Jørgen S. and Yang, Huihua and Khurana, Chirag and Dunnell, Kaelyn and Ferrero, Gabriele and Kulagin, Vladimir and Meschini, Samuele and Dufour, Jonathan and Hodille, Etienne A.},
+            month = mar,
+            year = {2026},
+         }
+      
+
+
+ + +.. raw:: html -.. admonition:: Add your institution + +

Join the community

- If you would like your institution to be added to this map, please `open an issue `_. +

+ Have a question, found a bug, or want to contribute? + Connect with the FESTIM community. +

+ --------- -Contents --------- .. toctree:: :maxdepth: 1 + :hidden: installation userguide/index diff --git a/docs/source/map.json b/docs/source/map.json deleted file mode 100644 index 2f9a6ed46..000000000 --- a/docs/source/map.json +++ /dev/null @@ -1,370 +0,0 @@ -{ - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -84.3101, - 35.9312 - ] - }, - "properties": { - "name": "Oak Ridge National Laboratory", - "path": "images/user_logos/Oak_Ridge_National_Laboratory.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 5.7843, - 43.7254 - ] - }, - "properties": { - "name": "IRFM cadarache France", - "path": "images/user_logos/IRFM_cadarache_France.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 2.3458, - 48.9583 - ] - }, - "properties": { - "name": "LSPM Villetaneuse France", - "path": "images/user_logos/LSPM_Villetaneuse_France.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -71.0921, - 42.3601 - ] - }, - "properties": { - "name": "MIT Cambridge, MA USA", - "path": "images/user_logos/MIT_Cambridge_MA_USA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -74.6596903, - 40.35006468849364 - ] - }, - "properties": { - "name": "Thea Energy USA", - "path": "images/user_logos/Thea_Energy_USA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -71.6152, - 42.5406 - ] - }, - "properties": { - "name": "Commonwealth Fusion Systems Devens, MA USA", - "path": "images/user_logos/Commonwealth_Fusion_Systems Devens_MA_USA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -89.4012, - 43.0761 - ] - }, - "properties": { - "name": "University Wisconsin Madison USA", - "path": "images/user_logos/University_Wisconsin_Madison_USA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -122.41135340346865, - 37.77479335835942 - ] - }, - "properties": { - "name": "Marathon Fusion USA", - "path": "images/user_logos/Marathon_Fusion_USA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -117.1611, - 32.7157 - ] - }, - "properties": { - "name": "University San Diego", - "path": "images/user_logos/University_San_Diego.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 37.6649462235042, - 55.66362336404334 - ] - }, - "properties": { - "name": "MEPhI moscow Russia", - "path": "images/user_logos/MEPhI_moscow_Russia.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 5.0266, - 43.5455 - ] - }, - "properties": { - "name": "ITER organization France", - "path": "images/user_logos/ITER_organization_France.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -1.229138717146069, - 51.65868576158049 - ] - }, - "properties": { - "name": "UKAEA UK", - "path": "images/user_logos/UKAEA_UK.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -3.530686738097156, - 50.719235968686455 - ] - }, - "properties": { - "name": "digiLab UK", - "path": "images/user_logos/digiLab_UK.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -0.4269, - 52.0720 - ] - }, - "properties": { - "name": "Cranfield University UK", - "path": "images/user_logos/Cranfield_University_UK.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 7.6818, - 45.0703 - ] - }, - "properties": { - "name": "Politecnico di Torino", - "path": "images/user_logos/Politecnico_di_Torino.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 116.3056, - 39.9923 - ] - }, - "properties": { - "name": "Beihang University", - "path": "images/user_logos/Beihang_University.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 117.2703, - 31.8669 - ] - }, - "properties": { - "name": "Institute of Plasma Physics, Chinese Academy of Sciences", - "path": "images/user_logos/Institute_of_plasma_physics_Chinese_academy_of_sciences.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 14.487728061376515, - 46.043586411058726 - ] - }, - "properties": { - "name": "Institut Jožef Stefan", - "path": "images/user_logos/Institut_Jožef_Stefan.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 139.76446527724698, - 35.68673663876397 - ] - }, - "properties": { - "name": "Kyoto Fusioneering", - "path": "images/user_logos/Kyoto_Fusioneering.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 12.455144726473035, - 41.818823289415484 - ] - }, - "properties": { - "name": "ENI", - "path": "images/user_logos/ENI.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 12.670768074076161, - 41.83511773016589 - ] - }, - "properties": { - "name": "ENEA", - "path": "images/user_logos/ENEA.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -122.2637636728507, - 47.94311816450899 - ] - }, - "properties": { - "name": "Zap Energy", - "path": "images/user_logos/Zap_Energy.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -0.3409612613765139, - 51.305321198230246 - ] - }, - "properties": { - "name": "Frazer Nash", - "path": "images/user_logos/Frazer_Nash.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -0.5894234846558715, - 51.243827970913635 - ] - }, - "properties": { - "name": "University of Surrey", - "path": "images/user_logos/University_of_Surrey.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - 140.10389, - 36.11139 - ] - }, - "properties": { - "name": "University of Tsukuba", - "path": "images/user_logos/Logo_of_University_of_Tsukuba.png" - } - }, - { - "type": "Feature", - "geometry": { - "type": "Point", - "coordinates": [ - -3.5350, - 50.7361 - ] - }, - "properties": { - "name": "Exeter University UK", - "path": "images/user_logos/Exeter_University_UK.png" - } - } - - ] -} \ No newline at end of file diff --git a/docs/source/map.py b/docs/source/map.py deleted file mode 100644 index ad4a65cb8..000000000 --- a/docs/source/map.py +++ /dev/null @@ -1,60 +0,0 @@ -import json - -import folium -from folium.plugins import MarkerCluster -from PIL import Image - -LOGO_HEIGHT = 60 - - -def generate_map(clustered=True, draggable=False): - # Load GeoJSON data - with open("map.json") as f: - data = json.load(f) - - # Create a map centered on a specific location - m = folium.Map( - location=[42.256349987281666, -37.61204625889672], - zoom_start=3, - tiles="cartodbpositron", - ) - if clustered: - marker_cluster = MarkerCluster().add_to(m) - # Iterate over features in the GeoJSON data - for feature in data["features"]: - name = feature["properties"]["name"] - print(name) - coordinates = feature["geometry"]["coordinates"] - - # Get the dimensions of the image from local images - - if "path" in feature["properties"]: - path = feature["properties"]["path"] - image_dimensions = Image.open(path).size - - if image_dimensions: - height_to_width_ratio = image_dimensions[1] / image_dimensions[0] - image_dimensions = (LOGO_HEIGHT, int(LOGO_HEIGHT * height_to_width_ratio)) - else: - image_dimensions = (LOGO_HEIGHT, LOGO_HEIGHT) - # Create a marker with a custom icon and popup - if coordinates != [0, 0]: - icon = folium.CustomIcon(path, icon_size=image_dimensions) - marker = folium.Marker( - location=[coordinates[1], coordinates[0]], - icon=icon, - draggable=draggable, - ) - if clustered: - marker.add_to(marker_cluster) - else: - marker.add_to(m) - else: - print("no coordinates for", name) - return m - - -if __name__ == "__main__": - m = generate_map(clustered=False, draggable=True) - m.save("map.html") - print("Map saved to map.html") diff --git a/docs/source/theory.rst b/docs/source/theory.rst index f403c19d8..3a79fc2f3 100644 --- a/docs/source/theory.rst +++ b/docs/source/theory.rst @@ -71,11 +71,9 @@ Two different interface cases can then occur. At the interface between two Sieve .. math:: :label: eq_continuity - \begin{eqnarray} \frac{c_\mathrm{m}^-}{K_S^-}&=&\frac{c_\mathrm{m}^+}{K_S^+} \\ &\mathrm{or}& \\ \frac{c_\mathrm{m}^-}{K_H^-}&=&\frac{c_\mathrm{m}^+}{K_H^+} - \end{eqnarray} where exponents :math:`+` and :math:`-` denote both sides of the interface.