From 13c83c9d077bec04f77b37e5c8c11f3f5737aca6 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:37:42 +0500 Subject: [PATCH 01/45] Hugo: Migrate Jekyll _layouts to Hugo layouts/_default (#944) --- .gitignore | 10 ++- _layouts/default.html | 99 ------------------------- _layouts/default_print.html | 23 ------ _layouts/none.html | 3 - _layouts/page.html | 106 --------------------------- _layouts/page_print.html | 18 ----- layouts/_default/baseof.html | 80 ++++++++++++++++++++ layouts/_default/default_print.html | 13 ++++ layouts/_default/list.html | 34 +++++++++ layouts/_default/none.html | 1 + layouts/_default/page.html | 32 ++++++++ layouts/_default/page_print.html | 21 ++++++ layouts/_default/single.html | 32 ++++++++ layouts/partials/compat_content.html | 29 ++++++++ 14 files changed, 250 insertions(+), 251 deletions(-) delete mode 100644 _layouts/default.html delete mode 100644 _layouts/default_print.html delete mode 100644 _layouts/none.html delete mode 100644 _layouts/page.html delete mode 100644 _layouts/page_print.html create mode 100644 layouts/_default/baseof.html create mode 100644 layouts/_default/default_print.html create mode 100644 layouts/_default/list.html create mode 100644 layouts/_default/none.html create mode 100644 layouts/_default/page.html create mode 100644 layouts/_default/page_print.html create mode 100644 layouts/_default/single.html create mode 100644 layouts/partials/compat_content.html diff --git a/.gitignore b/.gitignore index d87a59686ac..f97bf8b86c8 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,13 @@ _site/ .jekyll-cache _pdf .DS_Store -.idea +.idea/ vendor/ .bundle/ -Gemfile.lock \ No newline at end of file +Gemfile.lock +.hugo_build.lock +/public/ +/public-pdf/ +/pdf/docs.pdf +/resources/ +node_modules/ diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 897b496b2b3..00000000000 --- a/_layouts/default.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - {% include head.html %} - - - - {% if page.datatable == true %} - - - - - - {% endif %} - - -
- {% include topnav.html %} - - {% include news_banner.html onlanding=false %} -
-
- {% unless page.hide_sidebar %} -
-
- {% include sidebar.html %} -
-
- {{content}} -
-
- {% else %} -
- {{content}} -
- {% endunless %} -
- {% include footer.html %} - {% include scroll_to_top.html %} - -{% if site.google_analytics %} -{% include google_analytics.html %} -{% endif %} - - - diff --git a/_layouts/default_print.html b/_layouts/default_print.html deleted file mode 100644 index a0dce8a5355..00000000000 --- a/_layouts/default_print.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - {% include head_print.html %} - - - - - - - - - - - - diff --git a/_layouts/none.html b/_layouts/none.html deleted file mode 100644 index 60887a9201d..00000000000 --- a/_layouts/none.html +++ /dev/null @@ -1,3 +0,0 @@ ---- ---- -{{content}} \ No newline at end of file diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index 8b4a3236023..00000000000 --- a/_layouts/page.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -layout: default ---- - -
-

{{ page.title }}

-
- -{% if page.simple_map == true %} - - - -{% include custom/{{page.map_name}}.html %} - -{% elsif page.complex_map == true %} - - - -{% include custom/{{page.map_name}}.html %} - -{% endif %} - -
- - {% if page.summary %} -
- - {{ page.summary | markdownify | remove: '

' | remove: '

' }} -
- {% endif %} - -
-
- {% unless page.toc == false %} - - {% endunless %} -
- -
- {% unless page.editme == false %} - - {% endunless %} -
-
- - {{content}} - - {% if page.tags != null %} -
- Tags: - {% assign projectTags = site.data.tags.allowed-tags %} - {% for tag in page.tags %} - {% if projectTags contains tag %} - {{page.tagName}}{{tag}} - {% endif %} - {% endfor %} -
- {% endif %} - -{% comment %} -{% include commento.html %} -{% endcomment %} - - -{% include breadcrumb.html %} - -
- diff --git a/_layouts/page_print.html b/_layouts/page_print.html deleted file mode 100644 index 48f68b952cd..00000000000 --- a/_layouts/page_print.html +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: default_print -comments: true ---- -
-

{{ page.title }}

-
- -
- - {% if page.summary %} -
- - {{ page.summary | markdownify | remove: '

' | remove: '

' }} -
- {% endif %} - {{ content }} -
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html new file mode 100644 index 00000000000..6b6cb096961 --- /dev/null +++ b/layouts/_default/baseof.html @@ -0,0 +1,80 @@ + + +{{- with .Params.redirect_to }} + + + Redirecting… + + + + + + +

Redirecting…

+ Click here if you are not redirected. + +{{- else }} + + {{ partial "head.html" . }} + + +
+ {{ partial "topnav.html" . }} + {{ partial "news_banner.html" (dict "page" . "onlanding" .IsHome) }} +
+ + {{- $isLanding := or .IsHome (eq .Layout "landing_page") -}} + {{- if $isLanding }} +
+ {{ block "main" . }}{{ end }} +
+ {{- else }} + {{- $hideSidebar := eq (.Param "hide_sidebar") true -}} +
+ {{ if $hideSidebar }} +
+ {{ block "main" . }}{{ end }} +
+ {{ else }} +
+ +
+ {{ block "main" . }}{{ end }} +
+
+ {{ end }} +
+ {{- end }} + + {{ partial "footer.html" . }} + {{ partial "scroll_to_top.html" . }} + + + + {{ if .IsHome }} + + + {{ end }} + + +{{- end }} + diff --git a/layouts/_default/default_print.html b/layouts/_default/default_print.html new file mode 100644 index 00000000000..99cb5c3df5a --- /dev/null +++ b/layouts/_default/default_print.html @@ -0,0 +1,13 @@ + + + + {{ partial "head_print.html" . }} + + + + + diff --git a/layouts/_default/list.html b/layouts/_default/list.html new file mode 100644 index 00000000000..bb2fa24b893 --- /dev/null +++ b/layouts/_default/list.html @@ -0,0 +1,34 @@ +{{ define "main" }} +
+
+

{{ .Title }}

+
+ + {{ with .Params.summary }} +
{{ . | markdownify }}
+ {{ end }} + +
+
+ {{ partial "toc.html" . }} +
+
+ {{ partial "edit_metadata.html" . }} +
+
+ + {{ partial "compat_content.html" . }} + + {{ $pages := .RegularPages }} + {{ if $pages }} +
+ {{ range $pages.ByTitle }} +
+

{{ .Title }}

+ {{ with .Params.summary }}

{{ . | markdownify }}

{{ end }} +
+ {{ end }} +
+ {{ end }} +
+{{ end }} diff --git a/layouts/_default/none.html b/layouts/_default/none.html new file mode 100644 index 00000000000..28c1aa052bd --- /dev/null +++ b/layouts/_default/none.html @@ -0,0 +1 @@ +{{ partial "compat_content.html" . }} diff --git a/layouts/_default/page.html b/layouts/_default/page.html new file mode 100644 index 00000000000..05a74ee498c --- /dev/null +++ b/layouts/_default/page.html @@ -0,0 +1,32 @@ +{{ define "main" }} +
+
+

{{ .Title }}

+
+ + {{ with .Params.summary }} +
{{ . | markdownify }}
+ {{ end }} + +
+
+ {{ partial "toc.html" . }} +
+
+ {{ partial "edit_metadata.html" . }} +
+
+ + {{ partial "compat_content.html" . }} + + {{ with .Params.tags }} +
+ Tags: + {{ range . }} + {{ . }} + {{ end }} +
+ {{ end }} + {{ partial "breadcrumb.html" . }} +
+{{ end }} diff --git a/layouts/_default/page_print.html b/layouts/_default/page_print.html new file mode 100644 index 00000000000..d2c37886714 --- /dev/null +++ b/layouts/_default/page_print.html @@ -0,0 +1,21 @@ + + + + {{ partial "head_print.html" . }} + + + + + diff --git a/layouts/_default/single.html b/layouts/_default/single.html new file mode 100644 index 00000000000..05a74ee498c --- /dev/null +++ b/layouts/_default/single.html @@ -0,0 +1,32 @@ +{{ define "main" }} +
+
+

{{ .Title }}

+
+ + {{ with .Params.summary }} +
{{ . | markdownify }}
+ {{ end }} + +
+
+ {{ partial "toc.html" . }} +
+
+ {{ partial "edit_metadata.html" . }} +
+
+ + {{ partial "compat_content.html" . }} + + {{ with .Params.tags }} +
+ Tags: + {{ range . }} + {{ . }} + {{ end }} +
+ {{ end }} + {{ partial "breadcrumb.html" . }} +
+{{ end }} diff --git a/layouts/partials/compat_content.html b/layouts/partials/compat_content.html new file mode 100644 index 00000000000..00b2e0454af --- /dev/null +++ b/layouts/partials/compat_content.html @@ -0,0 +1,29 @@ +{{/* +TODO: Remove this temporary compatibility layer once imported repositories use +Hugo shortcodes directly instead of legacy Jekyll/Liquid syntax. +*/}} +{{- $rendered := .Content -}} +{{- $raw := .RawContent -}} +{{- if or (strings.Contains $raw "{%") (strings.Contains $raw "{{ site.") (strings.Contains $raw "{{site.") -}} + {{- $content := $raw -}} + {{- $blockTags := slice "disclaimer" "experimental" "important" "note" "tip" "version" "warning" -}} + + {{- /* Translate the legacy Jekyll callouts into the existing Hugo shortcodes. */ -}} + {{- range $tag := $blockTags -}} + {{- $openPattern := printf `{%%[[:space:]]*%s[[:space:]]*%%}` $tag -}} + {{- $closePattern := printf `{%%[[:space:]]*end%s[[:space:]]*%%}` $tag -}} + {{- $content = replaceRE $openPattern (printf `{{< %s >}}` $tag) $content -}} + {{- $content = replaceRE $closePattern (printf `{{< /%s >}}` $tag) $content -}} + {{- end -}} + + {{- /* The imported documentation uses only note and warning inline includes. */ -}} + {{- $content = replaceRE `{%[[:space:]]*include[[:space:]]+(note|warning)\.html[[:space:]]+content="([^"]*)"[[:space:]]*%}` `{{< ${1} >}}${2}{{< /${1} >}}` $content -}} + {{- $content = replaceRE `{{[[:space:]]*site\.([A-Za-z_][A-Za-z0-9_]*)[[:space:]]*}}` `{{< site_param "${1}" >}}` $content -}} + + {{- if eq .RelPermalink "/docs/adapters/fenics/" -}} + {{- $content = replaceRE `(?s)## How to cite.*\z` `{{< fenics_publications >}}` $content -}} + {{- end -}} + + {{- $rendered = .RenderString (dict "display" "block") $content -}} +{{- end -}} +{{- $rendered -}} From bcc32228d91c3c277f301febb22b975a5bf28010 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:35:18 +0200 Subject: [PATCH 02/45] Hugo: Initialize Hugo config directory and split module mounts (#945) --- _config.yml | 383 ---------------------------- _plugins/last_modified_at.rb | 46 ---- _plugins/subprojects.rb | 82 ------ config/_default/hugo.toml | 68 +++++ config/_default/module.toml | 479 +++++++++++++++++++++++++++++++++++ config/_default/params.toml | 19 ++ go.mod | 20 ++ go.sum | 28 ++ 8 files changed, 614 insertions(+), 511 deletions(-) delete mode 100644 _config.yml delete mode 100644 _plugins/last_modified_at.rb delete mode 100644 _plugins/subprojects.rb create mode 100644 config/_default/hugo.toml create mode 100644 config/_default/module.toml create mode 100644 config/_default/params.toml create mode 100644 go.mod create mode 100644 go.sum diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 681d7e6d58d..00000000000 --- a/_config.yml +++ /dev/null @@ -1,383 +0,0 @@ -repository: precice/precice.github.io - -output: web -# this property is useful for conditional filtering of content that is separate from the PDF. - -topnav_title: preCICE -# this appears on the top navigation bar next to the home button - -site_title: preCICE - The Coupling Library -# this appears in the html browser tab for the site title (seen mostly by search engines, not users) - -company_name: preCICE -# this appears in the footer - -github_editme_path: https://github.com/precice/precice.github.io/edit/master/ -# if you're using Github, provide the basepath to the branch you've created for reviews, following the sample here. if not, leave this value blank. Ends in trailing slash. - -google_analytics: -# if you have google-analytics ID, put it in. if not, edit this value to blank. - -host: 127.0.0.1 -# the preview server used. Leave as is. - -port: 4000 -# the port where the preview is rendered. You can leave this as is unless you have other Jekyll builds using this same port that might cause conflicts. in that case, use another port such as 4006. - -exclude: - - .idea/ - - .gitignore - - vendor/ - - vendor/bundle/ - - imported - - README.md - - var/ - - pdf/ - - pdf-docs.sh - - doxygen/ - - tools/ - - content/**/_index.md -# these are the files and directories that jekyll will exclude from the build - -highlighter: rouge -# library used for syntax highlighting - -markdown: kramdown -kramdown: - input: GFM - auto_ids: true - hard_wrap: false - syntax_highlighter: rouge - # math_engine: katex - # math_engine_opts: {} -# filter used to process markdown. note that kramdown differs from github-flavored markdown in some subtle ways - - -collections_dir: collections -collections: - - testimonials - - publications - # tooltips: - # output: false -# collections are declared here. this renders the content in _tooltips and processes it, but doesn't output it as actual files in the output unless you change output to true - -defaults: - - - scope: - path: "content" - type: "pages" - values: - layout: "page" - comments: false - # if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property - search: true - sidebar: home_sidebar - topnav: topnav - - - scope: - path: "content/docs" - type: "pages" - values: - layout: "page" - comments: false - # if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - - - scope: - path: "content/tutorials" - type: "pages" - values: - layout: "page" - comments: false - # if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property - search: true - sidebar: tutorial_sidebar - topnav: topnav - toc: true - - - scope: - path: "imported/tutorials/" - type: "pages" - values: - layout: "page" - comments: false - # if you don't want to use Commento.io and just hide comments, change true to false wherever you see the comments property - search: true - sidebar: tutorial_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/tutorials/edit/develop/ # ends in / - - - scope: - path: "imported/openfoam-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/openfoam-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/aste/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/aste/edit/develop/ # ends in / - - - scope: - path: "imported/micro-manager/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/micro-manager/edit/develop/ # ends in / - - - scope: - path: "imported/fmi-runner/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/fmi-runner/edit/main/ # ends in / - - - scope: - path: "imported/su2-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/su2-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/dune-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/dune-adapter/edit/main/ # ends in / - - - scope: - path: "imported/dumux-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/dumux-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/fenicsx-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/fenicsx-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/code_aster-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/code_aster-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/calculix-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/calculix-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/fenics-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/fenics-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/dealii-adapter/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: docs_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/dealii-adapter/edit/develop/ # ends in / - - - scope: - path: "imported/preeco-orga/" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: community_sidebar - topnav: topnav - toc: true - github_editme_path: https://github.com/precice/preeco-orga/edit/main/ # ends in / - - - scope: - path: "content/community" - type: "pages" - values: - layout: "page" - comments: false - search: true - sidebar: community_sidebar - topnav: topnav - toc: true - -# these are defaults used for the frontmatter for these file types - -sidebars: -- home_sidebar -- docs_sidebar -- tutorial_sidebar -- community_sidebar - -description: "preCICE is an open-source coupling library and ecosystem for general partitioned multi-physics and multi-scale simulations, including surface and volume coupling." - -# the description is used in the feed.xml file - -# needed for sitemap.xml file only -url: https://precice.org -# baseurl: /documentation-theme-jekyll - -github: [metadata] - -algolia: - application_id: LIT6P0EW26 - index_name: jekyll - search_only_api_key: 760ed6be3e165d08b4a798ac4aa82fe4 - nodes_to_index: 'p,code,table' # html tags to include in search index - max_record_size: 20000 - -mermaid: - src: 'https://cdn.jsdelivr.net/npm/mermaid@11.12.3/dist/mermaid.min.js' - -plugins: - - jekyll-redirect-from - - jekyll-sitemap - -subprojects: - - imported/aste/docs - - imported/dumux-adapter/docs - - imported/dune-adapter/docs - - imported/fmi-runner/docs - - imported/micro-manager/docs - - imported/openfoam-adapter/docs - - imported/preeco-orga/guidelines - - imported/su2-adapter/docs - - imported/fenicsx-adapter/docs - - imported/code_aster-adapter/docs - - imported/calculix-adapter/docs - - imported/fenics-adapter/docs - - imported/dealii-adapter/docs - - imported/tutorials/aste-turbine - - imported/tutorials/breaking-dam-2d - - imported/tutorials/channel-transport - - imported/tutorials/channel-transport-reaction - - imported/tutorials/channel-transport-particles - - imported/tutorials/elastic-tube-1d - - imported/tutorials/elastic-tube-3d - - imported/tutorials/flow-around-controlled-moving-cylinder - - imported/tutorials/flow-over-heated-plate - - imported/tutorials/flow-over-heated-plate-nearest-projection - - imported/tutorials/flow-over-heated-plate-partitioned-flow - - imported/tutorials/flow-over-heated-plate-steady-state - - imported/tutorials/flow-over-heated-plate-two-meshes - - imported/tutorials/free-flow-over-porous-media - - imported/tutorials/heat-exchanger - - imported/tutorials/heat-exchanger-simplified - - imported/tutorials/multiple-perpendicular-flaps - - imported/tutorials/oscillator - - imported/tutorials/oscillator-overlap - - imported/tutorials/partitioned-backwards-facing-step - - imported/tutorials/partitioned-burgers-1d - - imported/tutorials/partitioned-elastic-beam - - imported/tutorials/partitioned-heat-conduction - - imported/tutorials/partitioned-heat-conduction-complex - - imported/tutorials/partitioned-heat-conduction-direct - - imported/tutorials/partitioned-heat-conduction-overlap - - imported/tutorials/partitioned-heat-conduction-3d - - imported/tutorials/partitioned-pipe - - imported/tutorials/partitioned-pipe-multiscale - - imported/tutorials/partitioned-pipe-two-phase - - imported/tutorials/perpendicular-flap - - imported/tutorials/perpendicular-flap-stress - - imported/tutorials/quickstart - - imported/tutorials/resonant-circuit - - imported/tutorials/tests - - imported/tutorials/turek-hron-fsi3 - - imported/tutorials/two-scale-heat-conduction - - imported/tutorials/volume-coupled-diffusion - - imported/tutorials/volume-coupled-flow - - imported/tutorials/water-hammer - - imported/tutorials/wolf-sheep-soil-creep - -# We use these versions to centrally update links -# and other version-specific information. -# Note that Jekyll cuts off trailing zeros: https://stackoverflow.com/questions/37862167/trailing-zeros-in-jekyll-liquid -precice_version: 3.4.1 - -# This url is so bugprone that we keep it centrally here -matrix_url: "https://matrix.to/#/#precice_lobby:gitter.im?web-instance[element.io]=app.gitter.im" - -# Latest known number of Google scholar citations, manually updated -# Automation is tricky: https://github.com/precice/precice.github.io/issues/522 -# Date: 24.05.2026 -precice_v1_citations: 451 -precice_v1_citations_url: https://scholar.google.com/scholar?cites=5053469347483527186&as_sdt=2005&sciodt=0,5&hl=en -precice_v2_citations: 233 -precice_v2_citations_url: https://scholar.google.com/scholar?oi=bibs&hl=en&cites=17974677460269868025,12004404035922881061 diff --git a/_plugins/last_modified_at.rb b/_plugins/last_modified_at.rb deleted file mode 100644 index 3f92ce3fb15..00000000000 --- a/_plugins/last_modified_at.rb +++ /dev/null @@ -1,46 +0,0 @@ -# SPDX-FileCopyrightText: 2026 The preCICE developers - precice.org -# -# SPDX-License-Identifier: MIT -require 'open3' - -module Jekyll - class LastModifiedAtGenerator < Generator - safe true - priority :lowest - - def generate(site) - site.pages.each { |page| set_last_modified_at(page) } - if site.respond_to?(:docs_to_write) - site.docs_to_write.each { |doc| set_last_modified_at(doc) } - end - end - - private - - def set_last_modified_at(item) - # Skip if already specified in frontmatter - return if item.data['last_modified_at'] - - # Skip if there's no actual file path - file_path = item.path - return unless file_path && File.exist?(file_path) - - dir = File.dirname(file_path) - base = File.basename(file_path) - - # Get the timestamp from git log specifically from the file's directory. - # This naturally works for submodules because we run it inside the submodule dir. - stdout_str, status = Open3.capture2e("git", "-C", dir, "log", "-1", "--format=%ct", "--", base) - timestamp = status.success? ? stdout_str.strip : "" - - if timestamp.empty? - # Fallback to filesystem mtime if git history is not available - parsed_date = File.mtime(file_path) - else - parsed_date = Time.at(timestamp.to_i) - end - - item.data['last_modified_at'] = parsed_date - end - end -end diff --git a/_plugins/subprojects.rb b/_plugins/subprojects.rb deleted file mode 100644 index bb33b41735a..00000000000 --- a/_plugins/subprojects.rb +++ /dev/null @@ -1,82 +0,0 @@ -#SPDX-FileCopyrightText: 2020-2026 The preCICE developers - precice.org -# -#SPDX-License-Identifier: MIT - -require 'set' -module Jekyll - class SubprojectGenerator < Generator - safe true - priority :high # Subprojects need to be imported before other plugins run - - def generate(site) - - image_dest = "images" - - # Contains all static files required by tutorials - new_static_files = [] - # Contains the filenames of statics and which subproject they belong to - static_filenames = {} - - # Generate configured tutorials - (site.config['subprojects'] || []).each do |location| - Jekyll.logger.info("Subproject:", "#{location}") - - # Make sure the tutorial directory and README exist - unless File.directory?(site.in_source_dir(location)) - message ="No subproject found at #{location}" - Jekyll.logger.error("Tutorials:", message) - raise RuntimeError, message - end - - # Register the tutorial README as a page - pages = Dir.chdir(location) do - Dir.foreach(".").reject{ |f| File.directory?(f) || f.end_with?(".") }.select{ |f| Utils.has_yaml_header?(site.in_source_dir(File.join(location, f))) } - end - - unless pages.empty?() - Jekyll.logger.info("Adding pages:", pages.join(", ")) - pages.each do |file| - site.pages << Page.new(site, site.source, location, file) - end - end - - # Copy all images to images/ - images = File.join(location, 'images') - - next unless File.directory?(site.in_source_dir(images)) - - static_files = Dir.foreach(images).reject{ |f| File.directory?(File.join(images, f)) || f.end_with?(".")} - static_files.each do |image| - from = File.join(images, image) - to = File.join(image_dest, image) - Jekyll.logger.debug("Registering:", "#{from}") - - # Check for - if static_filenames.include?(image) - message = "#{image} was already added by subproject #{static_filenames[image]}!" - Jekyll.logger.error("Collision detected:", message) - raise message - else - static_filenames[image] = location - end - - # Skip the copy if the file already exists. This solves endless rebuild loops. - unless File.exist?(site.in_source_dir(to)) - Jekyll.logger.debug("Writing:", "#{to}") - FileUtils.cp(site.in_source_dir(from), site.in_source_dir(to)) - end - - # Save this static file for later - new_static_files << StaticFile.new(site, site.source, image_dest, image) - end - end - - # Reject all existing statics - existing_statics = site.static_files.map { |sf| sf.relative_path.delete_prefix('/') }.to_set - new_static_files.reject! { |static_file| existing_statics.include?(static_file.relative_path.delete_prefix('/')) } - - # Register all statics - site.static_files += new_static_files - end - end -end diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml new file mode 100644 index 00000000000..e912bc4055d --- /dev/null +++ b/config/_default/hugo.toml @@ -0,0 +1,68 @@ +# Hugo configuration for preCICE website +baseURL = "https://precice.org/" +locale = "en-us" +title = "preCICE - The Coupling Library" +enableGitInfo = true +enableRobotsTXT = true + +[module] +# Use the canonical Go module archive so its checksum matches go.sum. +proxy = "https://proxy.golang.org,direct" + +[params] +repository = "precice/precice.github.io" +output = "web" +topnav_title = "preCICE" +site_title = "preCICE - The Coupling Library" +company_name = "preCICE" +description = "preCICE is an open-source coupling library and ecosystem for general partitioned multi-physics and multi-scale simulations, including surface and volume coupling." +sidebars = ["home_sidebar", "docs_sidebar", "tutorial_sidebar", "community_sidebar"] +precice_version = "3.4.1" +matrix_url = "https://matrix.to/#/#precice_lobby:gitter.im?web-instance[element.io]=app.gitter.im" +precice_v1_citations = 451 +precice_v1_citations_url = "https://scholar.google.com/scholar?cites=5053469347483527186&as_sdt=2005&sciodt=0,5&hl=en" +precice_v2_citations = 233 +precice_v2_citations_url = "https://scholar.google.com/scholar?oi=bibs&hl=en&cites=17974677460269868025,12004404035922881061" + +[params.algolia] +application_id = "LIT6P0EW26" +index_name = "jekyll" +search_only_api_key = "760ed6be3e165d08b4a798ac4aa82fe4" +nodes_to_index = "p,code,table" +max_record_size = 20000 + +[params.mermaid] +src = "https://cdn.jsdelivr.net/npm/mermaid@11.12.3/dist/mermaid.min.js" + +[security] +allowContent = [".*"] + +[markup.goldmark.renderer] +unsafe = true + +[markup.highlight] +noClasses = false + +[markup.tableOfContents] +startLevel = 2 +endLevel = 4 +ordered = false + +[outputs] +home = ["HTML", "RSS", "Algolia", "SitemapIndex"] +section = ["HTML"] + +[outputFormats.RSS] +baseName = "feed" + +[outputFormats.Algolia] +mediaType = "application/json" +baseName = "algolia" +isPlainText = true +notAlternative = true + +[outputFormats.SitemapIndex] +mediaType = "application/xml" +baseName = "sitemap_index" +isPlainText = true +notAlternative = true diff --git a/config/_default/module.toml b/config/_default/module.toml new file mode 100644 index 00000000000..a7f99a1422a --- /dev/null +++ b/config/_default/module.toml @@ -0,0 +1,479 @@ +# CalculiX adapter +[[imports]] +path = "github.com/precice/calculix-adapter" + + [[imports.mounts]] + source = "docs/adapter-calculix-overview.md" + target = "content/docs/adapters/calculix/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/calculix" + files = ["! adapter-calculix-overview.md"] + +# code_aster adapter +[[imports]] +path = "github.com/precice/code_aster-adapter" + + [[imports.mounts]] + source = "docs/adapter-code_aster.md" + target = "content/docs/adapters/code_aster/_index.md" + + [[imports.mounts]] + source = "docs/images" + target = "content/docs/adapters/code_aster/images" + +# deal.II adapter +[[imports]] +path = "github.com/precice/dealii-adapter" + + [[imports.mounts]] + source = "docs/overview.md" + target = "content/docs/adapters/dealii/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/dealii" + files = ["! overview.md"] + +# DuMuX adapter +[[imports]] +path = "github.com/precice/dumux-adapter" + + [[imports.mounts]] + source = "docs/overview.md" + target = "content/docs/adapters/dumux/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/dumux" + files = ["! overview.md"] + +# DUNE adapter +[[imports]] +path = "github.com/precice/dune-adapter" + + [[imports.mounts]] + source = "docs/overview.md" + target = "content/docs/adapters/dune/_index.md" + +# FEniCS adapter +[[imports]] +path = "github.com/precice/fenics-adapter" + + [[imports.mounts]] + source = "docs/adapter-fenics.md" + target = "content/docs/adapters/fenics/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/fenics" + files = ["! adapter-fenics.md", "! ReleaseGuide.md"] + +# FEniCSx adapter +[[imports]] +path = "github.com/precice/fenicsx-adapter" + + [[imports.mounts]] + source = "docs/README.md" + target = "content/docs/adapters/fenicsx/_index.md" + +# OpenFOAM adapter +[[imports]] +path = "github.com/precice/openfoam-adapter" + + [[imports.mounts]] + source = "docs/README.md" + target = "content/docs/adapters/openfoam/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/openfoam" + files = ["! README.md", "! images/docs-adapter-openfoam-implicit-loop-src.md"] + +# SU2 adapter +[[imports]] +path = "github.com/precice/su2-adapter" + + [[imports.mounts]] + source = "docs/overview.md" + target = "content/docs/adapters/su2/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/adapters/su2" + files = ["! overview.md"] + +# ASTE +[[imports]] +path = "github.com/precice/aste" + + [[imports.mounts]] + source = "docs/README.md" + target = "content/docs/tooling/aste/_index.md" + +# FMI runner +[[imports]] +path = "github.com/precice/fmi-runner" + + [[imports.mounts]] + source = "docs/README.md" + target = "content/docs/tooling/fmi-runner/_index.md" + + [[imports.mounts]] + source = "docs/images" + target = "content/docs/tooling/fmi-runner/images" + +# Micro Manager +[[imports]] +path = "github.com/precice/micro-manager" + + [[imports.mounts]] + source = "docs/README.md" + target = "content/docs/tooling/micro-manager/_index.md" + + [[imports.mounts]] + source = "docs" + target = "content/docs/tooling/micro-manager" + files = ["! README.md", "! ReleaseGuide.md"] + +# preECO guidelines +[[imports]] +path = "github.com/precice/preeco-orga" + + [[imports.mounts]] + source = "guidelines/guidelines-adapters.md" + target = "content/community/contribute/guidelines/_index.md" + + [[imports.mounts]] + source = "guidelines" + target = "content/community/contribute/guidelines" + files = ["! guidelines-adapters.md"] + +# This file is automatically generated by tools/sync_tutorials.py +[[imports]] +path = "github.com/precice/tutorials" + + [[imports.mounts]] + source = "aste-turbine/README.md" + target = "content/tutorials/aste-turbine/_index.md" + + [[imports.mounts]] + source = "aste-turbine/images" + target = "content/tutorials/aste-turbine/images" + + [[imports.mounts]] + source = "breaking-dam-2d/README.md" + target = "content/tutorials/breaking-dam-2d/_index.md" + + [[imports.mounts]] + source = "breaking-dam-2d/images" + target = "content/tutorials/breaking-dam-2d/images" + + [[imports.mounts]] + source = "channel-transport/README.md" + target = "content/tutorials/channel-transport/_index.md" + + [[imports.mounts]] + source = "channel-transport/images" + target = "content/tutorials/channel-transport/images" + + [[imports.mounts]] + source = "channel-transport-particles/README.md" + target = "content/tutorials/channel-transport-particles/_index.md" + + [[imports.mounts]] + source = "channel-transport-particles/images" + target = "content/tutorials/channel-transport-particles/images" + + [[imports.mounts]] + source = "channel-transport-reaction/README.md" + target = "content/tutorials/channel-transport-reaction/_index.md" + + [[imports.mounts]] + source = "channel-transport-reaction/images" + target = "content/tutorials/channel-transport-reaction/images" + + [[imports.mounts]] + source = "elastic-tube-1d/README.md" + target = "content/tutorials/elastic-tube-1d/_index.md" + + [[imports.mounts]] + source = "elastic-tube-1d/images" + target = "content/tutorials/elastic-tube-1d/images" + + [[imports.mounts]] + source = "elastic-tube-3d/README.md" + target = "content/tutorials/elastic-tube-3d/_index.md" + + [[imports.mounts]] + source = "elastic-tube-3d/images" + target = "content/tutorials/elastic-tube-3d/images" + + [[imports.mounts]] + source = "flow-around-controlled-moving-cylinder/README.md" + target = "content/tutorials/flow-around-controlled-moving-cylinder/_index.md" + + [[imports.mounts]] + source = "flow-around-controlled-moving-cylinder/images" + target = "content/tutorials/flow-around-controlled-moving-cylinder/images" + + [[imports.mounts]] + source = "flow-over-heated-plate/README.md" + target = "content/tutorials/flow-over-heated-plate/_index.md" + + [[imports.mounts]] + source = "flow-over-heated-plate/images" + target = "content/tutorials/flow-over-heated-plate/images" + + [[imports.mounts]] + source = "flow-over-heated-plate-nearest-projection/README.md" + target = "content/tutorials/flow-over-heated-plate-nearest-projection/_index.md" + + [[imports.mounts]] + source = "flow-over-heated-plate-nearest-projection/images" + target = "content/tutorials/flow-over-heated-plate-nearest-projection/images" + + [[imports.mounts]] + source = "flow-over-heated-plate-partitioned-flow/README.md" + target = "content/tutorials/flow-over-heated-plate-partitioned-flow/_index.md" + + [[imports.mounts]] + source = "flow-over-heated-plate-partitioned-flow/images" + target = "content/tutorials/flow-over-heated-plate-partitioned-flow/images" + + [[imports.mounts]] + source = "flow-over-heated-plate-steady-state/README.md" + target = "content/tutorials/flow-over-heated-plate-steady-state/_index.md" + + [[imports.mounts]] + source = "flow-over-heated-plate-steady-state/images" + target = "content/tutorials/flow-over-heated-plate-steady-state/images" + + [[imports.mounts]] + source = "flow-over-heated-plate-two-meshes/README.md" + target = "content/tutorials/flow-over-heated-plate-two-meshes/_index.md" + + [[imports.mounts]] + source = "flow-over-heated-plate-two-meshes/images" + target = "content/tutorials/flow-over-heated-plate-two-meshes/images" + + [[imports.mounts]] + source = "free-flow-over-porous-media/README.md" + target = "content/tutorials/free-flow-over-porous-media/_index.md" + + [[imports.mounts]] + source = "free-flow-over-porous-media/images" + target = "content/tutorials/free-flow-over-porous-media/images" + + [[imports.mounts]] + source = "heat-exchanger/README.md" + target = "content/tutorials/heat-exchanger/_index.md" + + [[imports.mounts]] + source = "heat-exchanger/images" + target = "content/tutorials/heat-exchanger/images" + + [[imports.mounts]] + source = "heat-exchanger-simplified/README.md" + target = "content/tutorials/heat-exchanger-simplified/_index.md" + + [[imports.mounts]] + source = "heat-exchanger-simplified/images" + target = "content/tutorials/heat-exchanger-simplified/images" + + [[imports.mounts]] + source = "multiple-perpendicular-flaps/README.md" + target = "content/tutorials/multiple-perpendicular-flaps/_index.md" + + [[imports.mounts]] + source = "multiple-perpendicular-flaps/images" + target = "content/tutorials/multiple-perpendicular-flaps/images" + + [[imports.mounts]] + source = "oscillator/README.md" + target = "content/tutorials/oscillator/_index.md" + + [[imports.mounts]] + source = "oscillator/images" + target = "content/tutorials/oscillator/images" + + [[imports.mounts]] + source = "oscillator-overlap/README.md" + target = "content/tutorials/oscillator-overlap/_index.md" + + [[imports.mounts]] + source = "oscillator-overlap/images" + target = "content/tutorials/oscillator-overlap/images" + + [[imports.mounts]] + source = "partitioned-backwards-facing-step/README.md" + target = "content/tutorials/partitioned-backwards-facing-step/_index.md" + + [[imports.mounts]] + source = "partitioned-backwards-facing-step/images" + target = "content/tutorials/partitioned-backwards-facing-step/images" + + [[imports.mounts]] + source = "partitioned-burgers-1d/README.md" + target = "content/tutorials/partitioned-burgers-1d/_index.md" + + [[imports.mounts]] + source = "partitioned-burgers-1d/images" + target = "content/tutorials/partitioned-burgers-1d/images" + + [[imports.mounts]] + source = "partitioned-elastic-beam/README.md" + target = "content/tutorials/partitioned-elastic-beam/_index.md" + + [[imports.mounts]] + source = "partitioned-elastic-beam/images" + target = "content/tutorials/partitioned-elastic-beam/images" + + [[imports.mounts]] + source = "partitioned-heat-conduction/README.md" + target = "content/tutorials/partitioned-heat-conduction/_index.md" + + [[imports.mounts]] + source = "partitioned-heat-conduction/images" + target = "content/tutorials/partitioned-heat-conduction/images" + + [[imports.mounts]] + source = "partitioned-heat-conduction-3d/README.md" + target = "content/tutorials/partitioned-heat-conduction-3d/_index.md" + + [[imports.mounts]] + source = "partitioned-heat-conduction-3d/images" + target = "content/tutorials/partitioned-heat-conduction-3d/images" + + [[imports.mounts]] + source = "partitioned-heat-conduction-complex/README.md" + target = "content/tutorials/partitioned-heat-conduction-complex/_index.md" + + [[imports.mounts]] + source = "partitioned-heat-conduction-complex/images" + target = "content/tutorials/partitioned-heat-conduction-complex/images" + + [[imports.mounts]] + source = "partitioned-heat-conduction-direct/README.md" + target = "content/tutorials/partitioned-heat-conduction-direct/_index.md" + + [[imports.mounts]] + source = "partitioned-heat-conduction-direct/images" + target = "content/tutorials/partitioned-heat-conduction-direct/images" + + [[imports.mounts]] + source = "partitioned-heat-conduction-overlap/README.md" + target = "content/tutorials/partitioned-heat-conduction-overlap/_index.md" + + [[imports.mounts]] + source = "partitioned-heat-conduction-overlap/images" + target = "content/tutorials/partitioned-heat-conduction-overlap/images" + + [[imports.mounts]] + source = "partitioned-pipe/README.md" + target = "content/tutorials/partitioned-pipe/_index.md" + + [[imports.mounts]] + source = "partitioned-pipe/images" + target = "content/tutorials/partitioned-pipe/images" + + [[imports.mounts]] + source = "partitioned-pipe-multiscale/README.md" + target = "content/tutorials/partitioned-pipe-multiscale/_index.md" + + [[imports.mounts]] + source = "partitioned-pipe-multiscale/images" + target = "content/tutorials/partitioned-pipe-multiscale/images" + + [[imports.mounts]] + source = "partitioned-pipe-two-phase/README.md" + target = "content/tutorials/partitioned-pipe-two-phase/_index.md" + + [[imports.mounts]] + source = "partitioned-pipe-two-phase/images" + target = "content/tutorials/partitioned-pipe-two-phase/images" + + [[imports.mounts]] + source = "perpendicular-flap/README.md" + target = "content/tutorials/perpendicular-flap/_index.md" + + [[imports.mounts]] + source = "perpendicular-flap/images" + target = "content/tutorials/perpendicular-flap/images" + + [[imports.mounts]] + source = "perpendicular-flap-stress/README.md" + target = "content/tutorials/perpendicular-flap-stress/_index.md" + + [[imports.mounts]] + source = "perpendicular-flap-stress/images" + target = "content/tutorials/perpendicular-flap-stress/images" + + [[imports.mounts]] + source = "quickstart/README.md" + target = "content/tutorials/quickstart/_index.md" + + [[imports.mounts]] + source = "quickstart/images" + target = "content/tutorials/quickstart/images" + + [[imports.mounts]] + source = "resonant-circuit/README.md" + target = "content/tutorials/resonant-circuit/_index.md" + + [[imports.mounts]] + source = "resonant-circuit/images" + target = "content/tutorials/resonant-circuit/images" + + [[imports.mounts]] + source = "turek-hron-fsi3/README.md" + target = "content/tutorials/turek-hron-fsi3/_index.md" + + [[imports.mounts]] + source = "turek-hron-fsi3/images" + target = "content/tutorials/turek-hron-fsi3/images" + + [[imports.mounts]] + source = "two-scale-heat-conduction/README.md" + target = "content/tutorials/two-scale-heat-conduction/_index.md" + + [[imports.mounts]] + source = "two-scale-heat-conduction/images" + target = "content/tutorials/two-scale-heat-conduction/images" + + [[imports.mounts]] + source = "volume-coupled-diffusion/README.md" + target = "content/tutorials/volume-coupled-diffusion/_index.md" + + [[imports.mounts]] + source = "volume-coupled-diffusion/images" + target = "content/tutorials/volume-coupled-diffusion/images" + + [[imports.mounts]] + source = "volume-coupled-flow/README.md" + target = "content/tutorials/volume-coupled-flow/_index.md" + + [[imports.mounts]] + source = "volume-coupled-flow/images" + target = "content/tutorials/volume-coupled-flow/images" + + [[imports.mounts]] + source = "water-hammer/README.md" + target = "content/tutorials/water-hammer/_index.md" + + [[imports.mounts]] + source = "water-hammer/images" + target = "content/tutorials/water-hammer/images" + + [[imports.mounts]] + source = "wolf-sheep-soil-creep/README.md" + target = "content/tutorials/wolf-sheep-soil-creep/_index.md" + + [[imports.mounts]] + source = "wolf-sheep-soil-creep/images" + target = "content/tutorials/wolf-sheep-soil-creep/images" + + [[imports.mounts]] + source = "tools/tests/README.md" + target = "content/docs/dev-docs/system-tests/_index.md" diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 00000000000..96f8030b433 --- /dev/null +++ b/config/_default/params.toml @@ -0,0 +1,19 @@ +# Repository-specific edit links for local and mounted content. +github_editme_path = "https://github.com/precice/precice.github.io/edit/master/" + +[github_editme_paths] +"content" = "https://github.com/precice/precice.github.io/edit/master/" +"github.com/precice/aste" = "https://github.com/precice/aste/edit/develop/" +"github.com/precice/calculix-adapter" = "https://github.com/precice/calculix-adapter/edit/develop/" +"github.com/precice/code_aster-adapter" = "https://github.com/precice/code_aster-adapter/edit/develop/" +"github.com/precice/dealii-adapter" = "https://github.com/precice/dealii-adapter/edit/develop/" +"github.com/precice/dumux-adapter" = "https://github.com/precice/dumux-adapter/edit/develop/" +"github.com/precice/dune-adapter" = "https://github.com/precice/dune-adapter/edit/main/" +"github.com/precice/fenics-adapter" = "https://github.com/precice/fenics-adapter/edit/develop/" +"github.com/precice/fenicsx-adapter" = "https://github.com/precice/fenicsx-adapter/edit/develop/" +"github.com/precice/fmi-runner" = "https://github.com/precice/fmi-runner/edit/main/" +"github.com/precice/micro-manager" = "https://github.com/precice/micro-manager/edit/develop/" +"github.com/precice/openfoam-adapter" = "https://github.com/precice/openfoam-adapter/edit/develop/" +"github.com/precice/preeco-orga" = "https://github.com/precice/preeco-orga/edit/main/" +"github.com/precice/su2-adapter" = "https://github.com/precice/su2-adapter/edit/develop/" +"github.com/precice/tutorials" = "https://github.com/precice/tutorials/edit/master/" diff --git a/go.mod b/go.mod new file mode 100644 index 00000000000..c4dcf452696 --- /dev/null +++ b/go.mod @@ -0,0 +1,20 @@ +module github.com/precice/precice.github.io + +go 1.18 + +require ( + github.com/precice/aste v3.3.1-0.20260710102503-4e32a4f942e0+incompatible // indirect + github.com/precice/calculix-adapter v2.20.3-0.20260805122644-e3b7a6f17a2c+incompatible // indirect + github.com/precice/code_aster-adapter v0.0.0-20260709195159-6902b69ff0f9 // indirect + github.com/precice/dealii-adapter v0.0.0-20260803170126-67ae059ade0d // indirect + github.com/precice/dumux-adapter v3.0.1-0.20260727083532-7bb2e8d05512+incompatible // indirect + github.com/precice/dune-adapter v0.0.0-20260718211704-0723530a3f41 // indirect + github.com/precice/fenics-adapter v2.3.1-0.20260803194841-4615720762f4+incompatible // indirect + github.com/precice/fenicsx-adapter v1.0.2-0.20260716165953-17d67792f781 // indirect + github.com/precice/fmi-runner v0.2.2-0.20260718084031-4003d4b47035 // indirect + github.com/precice/micro-manager v0.11.2-0.20260727083507-453c84035ff6 // indirect + github.com/precice/openfoam-adapter v1.3.2-0.20260805151646-5a9eec4548ce // indirect + github.com/precice/preeco-orga v0.0.0-20260718211338-7b68152ffffe // indirect + github.com/precice/su2-adapter v0.0.0-20260718101756-fde3106dab59 // indirect + github.com/precice/tutorials v202104.1.2-0.20260805083843-a4b79f538087+incompatible // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 00000000000..e9c0e7d847b --- /dev/null +++ b/go.sum @@ -0,0 +1,28 @@ +github.com/precice/aste v3.3.1-0.20260710102503-4e32a4f942e0+incompatible h1:QA2eF30S8L9AKzBreYhB7udxuB821Zx63ZfG8swLinY= +github.com/precice/aste v3.3.1-0.20260710102503-4e32a4f942e0+incompatible/go.mod h1:EAVXbGcuMa93PBPU0Fvhf1/I1jZWx65fyoXeWTAsMMM= +github.com/precice/calculix-adapter v2.20.3-0.20260805122644-e3b7a6f17a2c+incompatible h1:0MleOt6xLW67XAfVANoSlJU1Fckmyoy0/Eljm+Ty2jo= +github.com/precice/calculix-adapter v2.20.3-0.20260805122644-e3b7a6f17a2c+incompatible/go.mod h1:/9lwEXili+aWDt0ffk34NI9uIQeC6kHurC8n4Eqnnf0= +github.com/precice/code_aster-adapter v0.0.0-20260709195159-6902b69ff0f9 h1:7mrhwlQx9rSMPFQ+aCfCbuelA3qhDWhrtuxkW5oWCfE= +github.com/precice/code_aster-adapter v0.0.0-20260709195159-6902b69ff0f9/go.mod h1:9mtpaThVgf0DaN9ijNGupNaC6M3GRGJzBBCfFiluxhk= +github.com/precice/dealii-adapter v0.0.0-20260803170126-67ae059ade0d h1:pQYH2yIM1VCG2pLhjjOhHmsD2jtXSYuJzt8dU6Z+4oE= +github.com/precice/dealii-adapter v0.0.0-20260803170126-67ae059ade0d/go.mod h1:Txux8IKhPrR8szFZSFrVDrYHBeDKhogDJSa4MSndoDI= +github.com/precice/dumux-adapter v3.0.1-0.20260727083532-7bb2e8d05512+incompatible h1:xmYUqxEWIJ7EwEUivkFpUq5gmMKuPSgiVYRaa3XUiHI= +github.com/precice/dumux-adapter v3.0.1-0.20260727083532-7bb2e8d05512+incompatible/go.mod h1:dTt5UfoJsQ24aj1lzS2+yD4TkNzVeQylsOQBKf47tkM= +github.com/precice/dune-adapter v0.0.0-20260718211704-0723530a3f41 h1:t0lkIdVA7NULl9GkLCXWPiS3GF2UUOLsQ1pzhKLws7M= +github.com/precice/dune-adapter v0.0.0-20260718211704-0723530a3f41/go.mod h1:drY/X4GgUF7tRGZ9+YpUHMh7CoMIz4IfAVWtUrgcMVM= +github.com/precice/fenics-adapter v2.3.1-0.20260803194841-4615720762f4+incompatible h1:ZP4dmDw4x6iPpd40E7tE3QAQuPzsCO1LzTfb6B+QgSo= +github.com/precice/fenics-adapter v2.3.1-0.20260803194841-4615720762f4+incompatible/go.mod h1:ItV/xMwFUt+uAwCAhMfBCWTfixJAZqDEuPgLepoq9AA= +github.com/precice/fenicsx-adapter v1.0.2-0.20260716165953-17d67792f781 h1:ySnRnvRrnC7NrIGyaNWXmlI40rzYHepLECvRqAFaCmM= +github.com/precice/fenicsx-adapter v1.0.2-0.20260716165953-17d67792f781/go.mod h1:CRcbNaBGmyNdmCPs7mZCdRp7Y9WL6HnEYAJjrRbhC0s= +github.com/precice/fmi-runner v0.2.2-0.20260718084031-4003d4b47035 h1:ZyOXvc2rEUHWscMuhjJLHmVDdeWY6WfVHB2RCRgM4pM= +github.com/precice/fmi-runner v0.2.2-0.20260718084031-4003d4b47035/go.mod h1:EleqiAITx34dkfFst5qa7R3vEp3zv0+Z+LztNucPNXo= +github.com/precice/micro-manager v0.11.2-0.20260727083507-453c84035ff6 h1:Sxi/tsbe5YeTypre+/XC6tqTcUu9FrCUcuPr2/d9XN4= +github.com/precice/micro-manager v0.11.2-0.20260727083507-453c84035ff6/go.mod h1:cRbIdTJlfgVxeDIRT0jmbRULBC1eiqR43MdawB8Nazw= +github.com/precice/openfoam-adapter v1.3.2-0.20260805151646-5a9eec4548ce h1:AVyoMiQh7ycVeJShCBzYTA/n1zJuS7A7AwpMzOk2GDc= +github.com/precice/openfoam-adapter v1.3.2-0.20260805151646-5a9eec4548ce/go.mod h1:VkhaDjB9nEvue1yw5V7PO4K21tPpkhI9jPiQ/dF+poo= +github.com/precice/preeco-orga v0.0.0-20260718211338-7b68152ffffe h1:vqFSYJSEksU2yu9muCaKF1/SL3RHK4GTvRB94plKNZY= +github.com/precice/preeco-orga v0.0.0-20260718211338-7b68152ffffe/go.mod h1:b+386uJGvHbRXqQArU0XswBG9gfoJ7hiszvbq2NYkUA= +github.com/precice/su2-adapter v0.0.0-20260718101756-fde3106dab59 h1:7cOX7h49zur4oomae+1+P7jJpwsoXDtsDzB8AHDX10E= +github.com/precice/su2-adapter v0.0.0-20260718101756-fde3106dab59/go.mod h1:62uO8/YUwX2R4w9RUlT/4fxWjKEwpEA312UYwvUaQbo= +github.com/precice/tutorials v202104.1.2-0.20260805083843-a4b79f538087+incompatible h1:/Cp4dv9VAE7KK8nq5/JC38Z9VBHMu2OehZdo5bT0CsQ= +github.com/precice/tutorials v202104.1.2-0.20260805083843-a4b79f538087+incompatible/go.mod h1:zILvlNlwVxg3xyjkcc2eOA8H2Z14nuzxuR5e+ctDxuQ= From 05ac1f1bc63695c221bc791bb72e72ce8bb3d0c4 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:43:32 +0500 Subject: [PATCH 03/45] Hugo: Add community and testimonial partials (#947) --- _includes/community_spotlight.html | 24 ------------------ layouts/partials/community_spotlight.html | 26 ++++++++++++++++++++ layouts/partials/developer_list.html | 30 +++++++++++++++++++++++ layouts/partials/logowall.html | 17 +++++++++++++ layouts/partials/testimonial_avatars.html | 5 ++++ layouts/partials/testimonial_pages.html | 1 + layouts/partials/testimonials.html | 30 +++++++++++++++++++++++ 7 files changed, 109 insertions(+), 24 deletions(-) delete mode 100644 _includes/community_spotlight.html create mode 100644 layouts/partials/community_spotlight.html create mode 100644 layouts/partials/developer_list.html create mode 100644 layouts/partials/logowall.html create mode 100644 layouts/partials/testimonial_avatars.html create mode 100644 layouts/partials/testimonial_pages.html create mode 100644 layouts/partials/testimonials.html diff --git a/_includes/community_spotlight.html b/_includes/community_spotlight.html deleted file mode 100644 index bd5011eb0f6..00000000000 --- a/_includes/community_spotlight.html +++ /dev/null @@ -1,24 +0,0 @@ - - -
- {% assign core_team = site.data.developer.leads | concat: site.data.developer.main | concat: site.data.developer['main-inactive'] | concat: site.data.developer.contributors %} - {% assign shown_githubs = '' %} - {% assign avatar_count = 0 %} - {% assign max_avatars = 99 %} - -
- {% for person in core_team %} - {% if avatar_count >= max_avatars %}{% break %}{% endif %} - - {% if person.github and shown_githubs contains person.github %}{% continue %}{% endif %} - - {% if person.github %} - - {{ person.fullname }} - - {% assign shown_githubs = shown_githubs | append: person.github | append: ',' %} - {% assign avatar_count = avatar_count | plus: 1 %} - {% endif %} - {% endfor %} -
-
diff --git a/layouts/partials/community_spotlight.html b/layouts/partials/community_spotlight.html new file mode 100644 index 00000000000..c3c297cc87d --- /dev/null +++ b/layouts/partials/community_spotlight.html @@ -0,0 +1,26 @@ + + +{{- $core := slice -}} +{{- with hugo.Data.developer.leads }}{{ $core = $core | append . }}{{ end -}} +{{- with hugo.Data.developer.main }}{{ $core = $core | append . }}{{ end -}} +{{- with (index hugo.Data.developer "main-inactive") }}{{ $core = $core | append . }}{{ end -}} +{{- with hugo.Data.developer.contributors }}{{ $core = $core | append . }}{{ end -}} +{{- $shown := "," -}} +{{- $avatarCount := 0 -}} +{{- $maxAvatars := 99 -}} + +
+
+ {{ range $person := $core }} + {{- $github := $person.github | default "" -}} + {{- $needle := printf ",%s," $github -}} + {{- if and $github (lt $avatarCount $maxAvatars) (not (in $shown $needle)) -}} + + {{ $person.fullname }} + + {{- $shown = printf "%s%s," $shown $github -}} + {{- $avatarCount = add $avatarCount 1 -}} + {{- end -}} + {{ end }} +
+
diff --git a/layouts/partials/developer_list.html b/layouts/partials/developer_list.html new file mode 100644 index 00000000000..ae5930c8785 --- /dev/null +++ b/layouts/partials/developer_list.html @@ -0,0 +1,30 @@ +{{- $group := .group -}} +{{- $people := index hugo.Data.developer $group -}} +{{- with $people }} +
+
+
+
    + {{- range $index, $person := sort . "name" }} + + {{- with $person.img }} +
    + Portrait +
    + {{- end }} +
    +

    + {{ $person.fullname }}
    + {{ $person.institution }} +

    +
    +
      + {{- with $person.orcid }}
    • {{ end }} + {{- with $person.github }}
    • {{ end }} +
    + + {{- end }} +
+
+
+{{- end }} diff --git a/layouts/partials/logowall.html b/layouts/partials/logowall.html new file mode 100644 index 00000000000..8a49f3a547c --- /dev/null +++ b/layouts/partials/logowall.html @@ -0,0 +1,17 @@ +
+ {{- range hugo.Data.logowall }} + {{- range .columns }} + {{- range .logos }} + + {{- end }} + {{- end }} + {{- end }} +
diff --git a/layouts/partials/testimonial_avatars.html b/layouts/partials/testimonial_avatars.html new file mode 100644 index 00000000000..106f41147bb --- /dev/null +++ b/layouts/partials/testimonial_avatars.html @@ -0,0 +1,5 @@ +{{- range partial "testimonial_pages.html" . -}} + {{- with .Params.img -}} + Overview of preCICE user stories + {{- end -}} +{{- end -}} diff --git a/layouts/partials/testimonial_pages.html b/layouts/partials/testimonial_pages.html new file mode 100644 index 00000000000..631351585b7 --- /dev/null +++ b/layouts/partials/testimonial_pages.html @@ -0,0 +1 @@ +{{- return (sort (where site.RegularPages "Section" "testimonials") "File.LogicalName" "desc") -}} diff --git a/layouts/partials/testimonials.html b/layouts/partials/testimonials.html new file mode 100644 index 00000000000..667301a4334 --- /dev/null +++ b/layouts/partials/testimonials.html @@ -0,0 +1,30 @@ +{{- range partial "testimonial_pages.html" . }} + {{- $testimonial := . -}} +

{{ .Title }}

+ +
+
+ {{ .Content }} + {{- with .Params.author }} +

+ - + {{- with $testimonial.Params.author_link -}} + {{ $testimonial.Params.author }} + {{- else -}} + {{ $testimonial.Params.author }} + {{- end -}} +
+ {{ with $testimonial.Params.organisation_link }}{{ $testimonial.Params.organisation }}{{ else }}{{ $testimonial.Params.organisation }}{{ end }} +

+ {{- end }} +
+
+ {{- with .Params.img }} +
+ {{ $testimonial.Title }} +
{{ $testimonial.Title }}
+
+ {{- end }} +
+
+{{- end }} From 42cbb2308ad3c3e1d53d19153694abd956e7fa56 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:49:47 +0500 Subject: [PATCH 04/45] Hugo: Add alert and callout partials (#949) --- _includes/callout.html | 1 - _includes/disclaimer.html | 1 - _includes/important.html | 1 - _includes/note.html | 1 - _includes/tip.html | 1 - _includes/warning.html | 1 - layouts/partials/alert.html | 7 +++++++ layouts/partials/callout.html | 4 ++++ layouts/partials/disclaimer.html | 1 + layouts/partials/important.html | 1 + layouts/partials/note.html | 1 + layouts/partials/tip.html | 1 + layouts/partials/warning.html | 1 + 13 files changed, 16 insertions(+), 6 deletions(-) delete mode 100644 _includes/callout.html delete mode 100644 _includes/disclaimer.html delete mode 100644 _includes/important.html delete mode 100644 _includes/note.html delete mode 100644 _includes/tip.html delete mode 100644 _includes/warning.html create mode 100644 layouts/partials/alert.html create mode 100644 layouts/partials/callout.html create mode 100644 layouts/partials/disclaimer.html create mode 100644 layouts/partials/important.html create mode 100644 layouts/partials/note.html create mode 100644 layouts/partials/tip.html create mode 100644 layouts/partials/warning.html diff --git a/_includes/callout.html b/_includes/callout.html deleted file mode 100644 index d492b1830d3..00000000000 --- a/_includes/callout.html +++ /dev/null @@ -1 +0,0 @@ -
{{include.content}}
diff --git a/_includes/disclaimer.html b/_includes/disclaimer.html deleted file mode 100644 index d97e38c8598..00000000000 --- a/_includes/disclaimer.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/_includes/important.html b/_includes/important.html deleted file mode 100644 index d7930ecf3d6..00000000000 --- a/_includes/important.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/_includes/note.html b/_includes/note.html deleted file mode 100644 index 2c1cfe967c1..00000000000 --- a/_includes/note.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/_includes/tip.html b/_includes/tip.html deleted file mode 100644 index 01a6706f14a..00000000000 --- a/_includes/tip.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/_includes/warning.html b/_includes/warning.html deleted file mode 100644 index fb48ecee3de..00000000000 --- a/_includes/warning.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/layouts/partials/alert.html b/layouts/partials/alert.html new file mode 100644 index 00000000000..3b1cdc3dd45 --- /dev/null +++ b/layouts/partials/alert.html @@ -0,0 +1,7 @@ +{{- $kind := .kind | default "note" -}} +{{- $content := .content | default "" -}} +{{- $page := .page | default page -}} +{{- $class := dict "note" "info" "warning" "danger" "tip" "success" "important" "warning" "experimental" "warning" "disclaimer" "info" "version" "info" -}} +{{- $icon := dict "note" "fa fa-info-circle" "warning" "fas fa-exclamation-circle" "tip" "fa fa-check-square" "important" "fas fa-exclamation-triangle" "experimental" "fas fa-flask" "disclaimer" "fa fa-hands-wash" "version" "fas fa-tag" -}} +{{- $label := dict "note" "Note" "warning" "Warning" "tip" "Tip" "important" "Important" "experimental" "Experimental" "disclaimer" "Disclaimer" "version" "Version" -}} + diff --git a/layouts/partials/callout.html b/layouts/partials/callout.html new file mode 100644 index 00000000000..58a97773940 --- /dev/null +++ b/layouts/partials/callout.html @@ -0,0 +1,4 @@ +{{- $type := .type | default "default" -}} +{{- $content := .content | default "" -}} +{{- $page := .page | default page -}} +
{{ $page.RenderString $content }}
diff --git a/layouts/partials/disclaimer.html b/layouts/partials/disclaimer.html new file mode 100644 index 00000000000..8179e5b45cb --- /dev/null +++ b/layouts/partials/disclaimer.html @@ -0,0 +1 @@ +{{ partial "alert.html" (dict "kind" "disclaimer" "content" (.content | default "") "page" (.page | default .)) }} diff --git a/layouts/partials/important.html b/layouts/partials/important.html new file mode 100644 index 00000000000..ac3020e0da2 --- /dev/null +++ b/layouts/partials/important.html @@ -0,0 +1 @@ +{{ partial "alert.html" (dict "kind" "important" "content" (.content | default "") "page" (.page | default .)) }} diff --git a/layouts/partials/note.html b/layouts/partials/note.html new file mode 100644 index 00000000000..827fe06c111 --- /dev/null +++ b/layouts/partials/note.html @@ -0,0 +1 @@ +{{ partial "alert.html" (dict "kind" "note" "content" (.content | default "") "page" (.page | default .)) }} diff --git a/layouts/partials/tip.html b/layouts/partials/tip.html new file mode 100644 index 00000000000..463b76c673a --- /dev/null +++ b/layouts/partials/tip.html @@ -0,0 +1 @@ +{{ partial "alert.html" (dict "kind" "tip" "content" (.content | default "") "page" (.page | default .)) }} diff --git a/layouts/partials/warning.html b/layouts/partials/warning.html new file mode 100644 index 00000000000..f04c8a44d96 --- /dev/null +++ b/layouts/partials/warning.html @@ -0,0 +1 @@ +{{ partial "alert.html" (dict "kind" "warning" "content" (.content | default "") "page" (.page | default .)) }} From 2455a3a733024bad36252a67a70ff373b87e1a42 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:51:25 +0500 Subject: [PATCH 05/45] Hugo: Add core page layout partials (#950) --- _includes/breadcrumb.html | 73 ----------------- _includes/footer.html | 69 ---------------- _includes/head.html | 123 ---------------------------- _includes/head_print.html | 84 ------------------- _includes/scroll_to_top.html | 75 ----------------- _includes/toc.html | 21 ----- _includes/topnav.html | 87 -------------------- layouts/partials/breadcrumb.html | 35 ++++++++ layouts/partials/footer.html | 50 +++++++++++ layouts/partials/head.html | 90 ++++++++++++++++++++ layouts/partials/head_print.html | 50 +++++++++++ layouts/partials/scroll_to_top.html | 45 ++++++++++ layouts/partials/toc.html | 5 ++ layouts/partials/topnav.html | 77 +++++++++++++++++ 14 files changed, 352 insertions(+), 532 deletions(-) delete mode 100644 _includes/breadcrumb.html delete mode 100644 _includes/footer.html delete mode 100644 _includes/head.html delete mode 100644 _includes/head_print.html delete mode 100644 _includes/scroll_to_top.html delete mode 100644 _includes/toc.html delete mode 100644 _includes/topnav.html create mode 100644 layouts/partials/breadcrumb.html create mode 100644 layouts/partials/footer.html create mode 100644 layouts/partials/head.html create mode 100644 layouts/partials/head_print.html create mode 100644 layouts/partials/scroll_to_top.html create mode 100644 layouts/partials/toc.html create mode 100644 layouts/partials/topnav.html diff --git a/_includes/breadcrumb.html b/_includes/breadcrumb.html deleted file mode 100644 index 70f45f67ee0..00000000000 --- a/_includes/breadcrumb.html +++ /dev/null @@ -1,73 +0,0 @@ -{% comment %} -The following code generates breadcrumb metadata from the topnav and sidebar if available. -{% endcomment %} - diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index ded314edc45..00000000000 --- a/_includes/footer.html +++ /dev/null @@ -1,69 +0,0 @@ - diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index bd053e49011..00000000000 --- a/_includes/head.html +++ /dev/null @@ -1,123 +0,0 @@ - - -{% if page.summary %} - -{% endif %} - - - - -{{ page.title }} | {{ site.site_title }} - - - - - - - - -{% if page.summary -%} - -{%- elsif site.description -%} - -{%- endif %} - - - - -{% if page.summary -%} - -{%- elsif site.description -%} - -{%- endif %} - - - -{% if page.url == "/index.html" -%} - -{%- else -%} - -{%- endif %} - - - - - - - - - - - - - - - - - - - - -{% if page.url == "/index.html" %} - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_includes/head_print.html b/_includes/head_print.html deleted file mode 100644 index 653b69eae66..00000000000 --- a/_includes/head_print.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - -{% if page.homepage == true %} {{site.homepage_title}} {% elsif page.title %}{{ page.title }}{% endif %} | {{ site.site_title }} - - - - - - - - - - - - - - - - - - - - -{% if page.url == "/index.html" %} - -{% endif %} - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/_includes/scroll_to_top.html b/_includes/scroll_to_top.html deleted file mode 100644 index 47de57a88fd..00000000000 --- a/_includes/scroll_to_top.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - \ No newline at end of file diff --git a/_includes/toc.html b/_includes/toc.html deleted file mode 100644 index 0006ecc8d87..00000000000 --- a/_includes/toc.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - -
diff --git a/_includes/topnav.html b/_includes/topnav.html deleted file mode 100644 index 13b4ef712d3..00000000000 --- a/_includes/topnav.html +++ /dev/null @@ -1,87 +0,0 @@ - - diff --git a/layouts/partials/breadcrumb.html b/layouts/partials/breadcrumb.html new file mode 100644 index 00000000000..0a008cb8723 --- /dev/null +++ b/layouts/partials/breadcrumb.html @@ -0,0 +1,35 @@ +{{- $topnavKey := .Param "topnav" | default "topnav" -}} +{{- $topnav := index hugo.Data $topnavKey | default hugo.Data.topnav -}} +{{- $sectionTitle := "" -}} +{{- $sectionURL := "" -}} +{{- range $entry := $topnav.topnav -}} + {{- range $item := $entry.items -}} + {{- $sectionSidebar := printf "%s_sidebar" ($item.section | default "") -}} + {{- if or (and $item.url (in $.RelPermalink $item.url)) (eq ($.Param "sidebar") $sectionSidebar) -}} + {{- $sectionTitle = $item.title -}} + {{- $sectionURL = $item.url -}} + {{- end -}} + {{- end -}} +{{- end -}} + diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html new file mode 100644 index 00000000000..be793a0cc36 --- /dev/null +++ b/layouts/partials/footer.html @@ -0,0 +1,50 @@ + diff --git a/layouts/partials/head.html b/layouts/partials/head.html new file mode 100644 index 00000000000..9a1a3403d13 --- /dev/null +++ b/layouts/partials/head.html @@ -0,0 +1,90 @@ +{{- $siteTitle := site.Title -}} +{{- with site.Params.site_title }}{{ $siteTitle = . }}{{ end -}} +{{- $title := $siteTitle -}} +{{- if and .Title (not .IsHome) }}{{ $title = printf "%s | %s" .Title $siteTitle }}{{ end -}} +{{- $description := "" -}} +{{- with .Params.summary }}{{ $description = plainify . }}{{ else }}{{ with site.Params.description }}{{ $description = plainify . }}{{ end }}{{ end -}} + + +{{ with $description }}{{ end }} +{{ with .Params.tags }}{{ end }} + +{{ $title }} + + + + + + + + + +{{ with $description }}{{ end }} + + +{{ with $description }}{{ end }} + +{{ with site.Home.OutputFormats.Get "rss" }} + +{{ end }} + + + + + + + + +{{ if .IsHome }}{{ end }} + + + +{{ block "head_extra" . }}{{ end }} + + + + + +{{ with site.Params.mermaid.src }}{{ end }} + + + + + + + + + diff --git a/layouts/partials/head_print.html b/layouts/partials/head_print.html new file mode 100644 index 00000000000..cf11b0ae672 --- /dev/null +++ b/layouts/partials/head_print.html @@ -0,0 +1,50 @@ +{{- $siteTitle := site.Title -}} +{{- with site.Params.site_title }}{{ $siteTitle = . }}{{ end -}} + + +{{ with .Params.summary }}{{ end }} +{{ with .Title }}{{ . }} | {{ end }}{{ $siteTitle }} + + + + + + + + + + + + + + + + + + + + diff --git a/layouts/partials/scroll_to_top.html b/layouts/partials/scroll_to_top.html new file mode 100644 index 00000000000..aecb7e19272 --- /dev/null +++ b/layouts/partials/scroll_to_top.html @@ -0,0 +1,45 @@ + + + + + diff --git a/layouts/partials/toc.html b/layouts/partials/toc.html new file mode 100644 index 00000000000..fe6eca3e3b1 --- /dev/null +++ b/layouts/partials/toc.html @@ -0,0 +1,5 @@ +{{- $toc := printf "%s" .TableOfContents -}} +{{- if and (ne (.Param "toc") false) (in $toc " + + From 5ae647bc1804236744073e0ec48a73d4bb5d3e27 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:53:26 +0500 Subject: [PATCH 06/45] Hugo: Add sidebar layouts (#951) --- _includes/sidebar.html | 15 --- _includes/sidebar_recursive.html | 122 ------------------ layouts/partials/sidebar.html | 33 +++++ layouts/partials/sidebar_is_web.html | 5 + layouts/partials/sidebar_item_active.html | 43 ++++++ .../partials/sidebar_page_matches_url.html | 20 +++ layouts/partials/sidebar_recursive.html | 83 ++++++++++++ layouts/partials/sidebar_resolve_url.html | 11 ++ layouts/partials/sidebar_url_clean.html | 8 ++ 9 files changed, 203 insertions(+), 137 deletions(-) delete mode 100644 _includes/sidebar.html delete mode 100644 _includes/sidebar_recursive.html create mode 100644 layouts/partials/sidebar.html create mode 100644 layouts/partials/sidebar_is_web.html create mode 100644 layouts/partials/sidebar_item_active.html create mode 100644 layouts/partials/sidebar_page_matches_url.html create mode 100644 layouts/partials/sidebar_recursive.html create mode 100644 layouts/partials/sidebar_resolve_url.html create mode 100644 layouts/partials/sidebar_url_clean.html diff --git a/_includes/sidebar.html b/_includes/sidebar.html deleted file mode 100644 index 3334ec8a057..00000000000 --- a/_includes/sidebar.html +++ /dev/null @@ -1,15 +0,0 @@ -{% assign sidebar = site.data.sidebars[page.sidebar].entries %} - - diff --git a/_includes/sidebar_recursive.html b/_includes/sidebar_recursive.html deleted file mode 100644 index 9a3870d487c..00000000000 --- a/_includes/sidebar_recursive.html +++ /dev/null @@ -1,122 +0,0 @@ -{% comment %} - Recursive sidebar: renders nested doc nav from _data/sidebars via folder.folderitems. - Parameters: item (folder node), level (1–4), parent_id (element id for data-bs-parent accordion group). - Branch rows use BS5 Collapse (data-bs-toggle, .collapse.show); leaves are plain nav-links. - Active state compares page.url (no leading slash) to each item url. -{% endcomment %} - -{% assign page_url_clean = page.url | remove_first: "/" %} - -{% assign item = include.item %} -{% assign title = item.title %} -{% assign url = item.url %} -{% assign folderitems = item.folderitems %} -{% assign subfolders = item.subfolders %} -{% assign subfolderitems = item.subfolderitems %} - -{% assign is_branch = false %} -{% if include.level == 1 %} - {% if folderitems.size > 0 %} - {% assign is_branch = true %} - {% endif %} -{% elsif include.level == 3 %} - {% assign is_branch = true %} -{% endif %} - -{% if is_branch == false %} - {% assign current_url_clean = url | remove_first: "/" %} - -{% else %} - {% capture current_uid %}{{ include.level }}-{{ title | slugify }}{% endcapture %} - {% assign current_id = current_uid | prepend: "sb-" %} - - {% assign any_active = false %} - {% assign current_url_clean = url | remove_first: "/" %} - {% if page_url_clean == current_url_clean and current_url_clean != "" %}{% assign any_active = true %}{% endif %} - - {% if any_active == false %} - {% for fi in folderitems %} - {% assign fi_url = fi.url | remove_first: "/" %} - {% if page_url_clean == fi_url and fi_url != "" %}{% assign any_active = true %}{% break %}{% endif %} - {% for sf in fi.subfolders %} - {% for sfi in sf.subfolderitems %} - {% assign sfi_url = sfi.url | remove_first: "/" %} - {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %} - {% endfor %} - {% if any_active %}{% break %}{% endif %} - {% endfor %} - {% if any_active %}{% break %}{% endif %} - {% endfor %} - {% endif %} - - {% if any_active == false %} - {% for sf in subfolders %} - {% for sfi in sf.subfolderitems %} - {% assign sfi_url = sfi.url | remove_first: "/" %} - {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %} - {% endfor %} - {% if any_active %}{% break %}{% endif %} - {% endfor %} - {% endif %} - - {% if any_active == false %} - {% for sfi in subfolderitems %} - {% assign sfi_url = sfi.url | remove_first: "/" %} - {% if page_url_clean == sfi_url and sfi_url != "" %}{% assign any_active = true %}{% break %}{% endif %} - {% endfor %} - {% endif %} - - -{% endif %} diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html new file mode 100644 index 00000000000..c6743085b7f --- /dev/null +++ b/layouts/partials/sidebar.html @@ -0,0 +1,33 @@ +{{- /* Renders the sidebar navigation. Reads the sidebar key from page + params, looks up the matching data file in data/sidebars/, and + delegates tree rendering to sidebar_recursive.html. */ -}} +{{- $sidebarKey := .Param "sidebar" | default "home_sidebar" -}} +{{- $sidebarKeyText := strings.TrimSpace (printf "%v" $sidebarKey) -}} +{{- $hasNoSidebar := or (eq $sidebarKeyText "nil") (eq $sidebarKeyText "") (eq $sidebarKeyText "false") -}} +{{- if not $hasNoSidebar -}} +{{- $sidebarData := index hugo.Data.sidebars $sidebarKey -}} +{{- $entries := slice -}} +{{- with $sidebarData.entries }}{{ $entries = . }}{{ end -}} +{{- $firstEntry := index $entries 0 -}} + +{{- if $firstEntry -}} + {{- $product := $firstEntry.product | default $firstEntry.title | default "" -}} + {{- $version := $firstEntry.version | default "" -}} + +{{- else -}} + {{- with $sidebarKey }} + + {{- end }} +{{- end -}} +{{- end -}} diff --git a/layouts/partials/sidebar_is_web.html b/layouts/partials/sidebar_is_web.html new file mode 100644 index 00000000000..ddf592e6822 --- /dev/null +++ b/layouts/partials/sidebar_is_web.html @@ -0,0 +1,5 @@ +{{- /* Returns truthy if the item should appear in web output + (i.e. its "output" field contains "web", defaulting to yes). */ -}} +{{- $output := "web" -}} +{{- with .output }}{{ $output = printf "%v" . }}{{ end -}} +{{- if in $output "web" -}}true{{- end -}} diff --git a/layouts/partials/sidebar_item_active.html b/layouts/partials/sidebar_item_active.html new file mode 100644 index 00000000000..fc7e479c899 --- /dev/null +++ b/layouts/partials/sidebar_item_active.html @@ -0,0 +1,43 @@ +{{- /* Recursively checks if any item in the given subtree matches the + current page. Returns truthy when a match is found, used to + expand parent collapse sections. Params: item, current. */ -}} +{{- $item := .item -}} +{{- $current := .current -}} +{{- $active := false -}} + +{{- with $item.url }} + {{- if partial "sidebar_page_matches_url.html" (dict "page" $current "url" .) }} + {{- $active = true -}} + {{- end }} +{{- end -}} + +{{- if not $active }} + {{- range $child := $item.folderitems }} + {{- if partial "sidebar_item_active.html" (dict "item" $child "current" $current) }} + {{- $active = true -}} + {{- end }} + {{- range $subfolder := $child.subfolders }} + {{- if partial "sidebar_item_active.html" (dict "item" $subfolder "current" $current) }} + {{- $active = true -}} + {{- end }} + {{- end }} + {{- end }} +{{- end -}} + +{{- if not $active }} + {{- range $subfolder := $item.subfolders }} + {{- if partial "sidebar_item_active.html" (dict "item" $subfolder "current" $current) }} + {{- $active = true -}} + {{- end }} + {{- end }} +{{- end -}} + +{{- if not $active }} + {{- range $child := $item.subfolderitems }} + {{- if partial "sidebar_item_active.html" (dict "item" $child "current" $current) }} + {{- $active = true -}} + {{- end }} + {{- end }} +{{- end -}} + +{{- if $active -}}true{{- end -}} diff --git a/layouts/partials/sidebar_page_matches_url.html b/layouts/partials/sidebar_page_matches_url.html new file mode 100644 index 00000000000..7072fe3a4ae --- /dev/null +++ b/layouts/partials/sidebar_page_matches_url.html @@ -0,0 +1,20 @@ +{{- /* Checks if a page matches a target URL. Compares against the page's + RelPermalink, front-matter url, permalink, and aliases for a + reliable match regardless of how the URL was defined. */ -}} +{{- $page := .page -}} +{{- $target := partial "sidebar_url_clean.html" .url -}} +{{- $matches := false -}} +{{- if and $page $target }} + {{- $urls := slice -}} + {{- with $page.RelPermalink }}{{ $urls = $urls | append . }}{{ end -}} + {{- with $page.Params.url }}{{ $urls = $urls | append . }}{{ end -}} + {{- with $page.Params.permalink }}{{ $urls = $urls | append . }}{{ end -}} + {{- with $page.Params.aliases }} + {{- range . }}{{ $urls = $urls | append . }}{{ end -}} + {{- end -}} + {{- range $urls }} + {{- $clean := partial "sidebar_url_clean.html" . -}} + {{- if eq $clean $target }}{{ $matches = true }}{{ end -}} + {{- end }} +{{- end -}} +{{- if $matches -}}true{{- end -}} diff --git a/layouts/partials/sidebar_recursive.html b/layouts/partials/sidebar_recursive.html new file mode 100644 index 00000000000..ed0de138968 --- /dev/null +++ b/layouts/partials/sidebar_recursive.html @@ -0,0 +1,83 @@ +{{- /* Recursively renders a sidebar tree node. + Leaf items become plain nav-links; branch items become collapsible + sections (Bootstrap 5 collapse). Params: item, current (page context), + level (nesting depth, 1-based), parentID (BS collapse parent). */ -}} +{{- $item := .item -}} +{{- $current := .current -}} +{{- $level := .level | default 1 -}} +{{- $parentID := .parentID | default "mysidebar" -}} +{{- $title := $item.title | default "" -}} +{{- $url := $item.url | default "" -}} +{{- $folderitems := $item.folderitems | default (slice) -}} +{{- $subfolders := $item.subfolders | default (slice) -}} +{{- $subfolderitems := $item.subfolderitems | default (slice) -}} +{{- $isBranch := false -}} +{{- if eq $level 1 }} + {{- if gt (len $folderitems) 0 }}{{ $isBranch = true }}{{ end -}} +{{- else if eq $level 3 }} + {{- $isBranch = true -}} +{{- end -}} +{{- $isActive := partial "sidebar_item_active.html" (dict "item" $item "current" $current) -}} +{{- $isCurrent := false -}} +{{- if $url }} + {{- $isCurrent = partial "sidebar_page_matches_url.html" (dict "page" $current "url" $url) -}} +{{- end -}} + +{{- if not $isBranch -}} + {{- $href := partial "sidebar_resolve_url.html" (dict "url" $url) -}} + +{{- else -}} + {{- $currentID := printf "sb-%d-%s" $level ($title | anchorize) -}} + {{- $nextLevel := add $level 1 -}} + +{{- end -}} diff --git a/layouts/partials/sidebar_resolve_url.html b/layouts/partials/sidebar_resolve_url.html new file mode 100644 index 00000000000..7c3d5f7c954 --- /dev/null +++ b/layouts/partials/sidebar_resolve_url.html @@ -0,0 +1,11 @@ +{{- /* Resolves a sidebar URL for use in href attributes. External URLs + (http, https, mailto, #) are returned as-is; internal paths + are passed through relURL. */ -}} +{{- $rawURL := .url | default "" -}} +{{- $isExternal := or (hasPrefix $rawURL "http://") (or (hasPrefix $rawURL "https://") (or (hasPrefix $rawURL "mailto:") (hasPrefix $rawURL "#"))) -}} + +{{- if $isExternal -}} + {{- $rawURL -}} +{{- else -}} + {{- $rawURL | relURL -}} +{{- end -}} diff --git a/layouts/partials/sidebar_url_clean.html b/layouts/partials/sidebar_url_clean.html new file mode 100644 index 00000000000..a6cc3b3a4b9 --- /dev/null +++ b/layouts/partials/sidebar_url_clean.html @@ -0,0 +1,8 @@ +{{- /* Normalises a URL for comparison: trims whitespace and strips + leading/trailing slashes so "docs/foo/" matches "docs/foo". */ -}} +{{- $url := "" -}} +{{- with . }}{{ $url = printf "%v" . }}{{ end -}} +{{- $url = strings.TrimSpace $url -}} +{{- $url = strings.TrimPrefix "/" $url -}} +{{- $url = strings.TrimSuffix "/" $url -}} +{{- $url -}} From 9a9801c02e448860849d00d4186af399e68d95dd Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 21:55:57 +0500 Subject: [PATCH 07/45] Hugo: Add third party integrations and analytics partials (#952) --- _includes/algolia.html | 155 -------------------------------- _includes/commento.html | 5 -- _includes/feedback.html | 13 --- _includes/google_analytics.html | 6 -- layouts/partials/algolia.html | 130 +++++++++++++++++++++++++++ 5 files changed, 130 insertions(+), 179 deletions(-) delete mode 100644 _includes/algolia.html delete mode 100644 _includes/commento.html delete mode 100644 _includes/feedback.html delete mode 100644 _includes/google_analytics.html create mode 100644 layouts/partials/algolia.html diff --git a/_includes/algolia.html b/_includes/algolia.html deleted file mode 100644 index 6f0cb541181..00000000000 --- a/_includes/algolia.html +++ /dev/null @@ -1,155 +0,0 @@ - \ No newline at end of file diff --git a/_includes/commento.html b/_includes/commento.html deleted file mode 100644 index c38386b5104..00000000000 --- a/_includes/commento.html +++ /dev/null @@ -1,5 +0,0 @@ -{% unless page.comments == false %} -
- - -{% endunless %} diff --git a/_includes/feedback.html b/_includes/feedback.html deleted file mode 100644 index 6031797fc85..00000000000 --- a/_includes/feedback.html +++ /dev/null @@ -1,13 +0,0 @@ -
  • -{% if site.feedback_text %} - {% assign feedback_text = site.feedback_text %} -{% else %} - {% assign feedback_text = "Feedback" %} -{% endif %} - -{% if site.feedback_link %} - -{% else %} - -{% endif %} -
  • diff --git a/_includes/google_analytics.html b/_includes/google_analytics.html deleted file mode 100644 index 56b2ee88c5d..00000000000 --- a/_includes/google_analytics.html +++ /dev/null @@ -1,6 +0,0 @@ - - -{% if site.google_analytics %} - - -{% endif %} \ No newline at end of file diff --git a/layouts/partials/algolia.html b/layouts/partials/algolia.html new file mode 100644 index 00000000000..d480aee9c62 --- /dev/null +++ b/layouts/partials/algolia.html @@ -0,0 +1,130 @@ +{{- $algolia := site.Params.algolia -}} +{{- if $algolia }} + +{{- end }} From b759d5fb403d9582d0d98c1589dd76d5d1c57fcf Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:36:45 +0200 Subject: [PATCH 08/45] Hugo: Add Hugo shortcodes (#961) --- _plugins/customblocks.rb | 83 --------------------- layouts/shortcodes/callout.html | 1 + layouts/shortcodes/community_spotlight.html | 1 + layouts/shortcodes/developer_list.html | 1 + layouts/shortcodes/disclaimer.html | 1 + layouts/shortcodes/experimental.html | 1 + layouts/shortcodes/fenics_publications.html | 1 + layouts/shortcodes/funding.html | 1 + layouts/shortcodes/important.html | 1 + layouts/shortcodes/inline_image.html | 1 + layouts/shortcodes/mermaid.html | 1 + layouts/shortcodes/newsletter.html | 1 + layouts/shortcodes/note.html | 1 + layouts/shortcodes/publication_panel.html | 2 + layouts/shortcodes/site_param.html | 6 ++ layouts/shortcodes/testimonial_avatars.html | 1 + layouts/shortcodes/testimonials.html | 1 + layouts/shortcodes/tip.html | 1 + layouts/shortcodes/version.html | 1 + layouts/shortcodes/warning.html | 1 + layouts/shortcodes/xmlreference.html | 1 + 21 files changed, 26 insertions(+), 83 deletions(-) delete mode 100644 _plugins/customblocks.rb create mode 100644 layouts/shortcodes/callout.html create mode 100644 layouts/shortcodes/community_spotlight.html create mode 100644 layouts/shortcodes/developer_list.html create mode 100644 layouts/shortcodes/disclaimer.html create mode 100644 layouts/shortcodes/experimental.html create mode 100644 layouts/shortcodes/fenics_publications.html create mode 100644 layouts/shortcodes/funding.html create mode 100644 layouts/shortcodes/important.html create mode 100644 layouts/shortcodes/inline_image.html create mode 100644 layouts/shortcodes/mermaid.html create mode 100644 layouts/shortcodes/newsletter.html create mode 100644 layouts/shortcodes/note.html create mode 100644 layouts/shortcodes/publication_panel.html create mode 100644 layouts/shortcodes/site_param.html create mode 100644 layouts/shortcodes/testimonial_avatars.html create mode 100644 layouts/shortcodes/testimonials.html create mode 100644 layouts/shortcodes/tip.html create mode 100644 layouts/shortcodes/version.html create mode 100644 layouts/shortcodes/warning.html create mode 100644 layouts/shortcodes/xmlreference.html diff --git a/_plugins/customblocks.rb b/_plugins/customblocks.rb deleted file mode 100644 index ff823f215d0..00000000000 --- a/_plugins/customblocks.rb +++ /dev/null @@ -1,83 +0,0 @@ -# SPDX-FileCopyrightText: 2022-2026 The preCICE developers - precice.org -# -# SPDX-License-Identifier: MIT -module Jekyll - class TipBlock < Liquid::Block - def render(context) - text = super - '' - end - end - - class NoteBlock < Liquid::Block - def render(context) - text = super - '' - end - end - - class ImportantBlock < Liquid::Block - def render(context) - text = super - '' - end - end - - class ExperimentalBlock < Liquid::Block - def render(context) - text = super - '' - end - end - - class DisclaimerBlock < Liquid::Block - def render(context) - text = super - '' - end - end - - class VersionBlock < Liquid::Block - def initialize(tag_name, markup, parse_context) - super - @version = markup.strip - end - - def released?(context) - if @version.nil? || @version.empty? - # No version defined — treat as released (show content unconditionally) - return true - end - - current_version = context.registers[:site].config['precice_version'] - # Use the built-in Gem::Versions to compare versions - Gem::Version.new(current_version) >= Gem::Version.new(@version) - end - - def render(context) - text = super - message = if released?(context) - "Version" - else - "Upcoming version" - end - '" - end - end - - class WarningBlock < Liquid::Block - def render(context) - text = super - '' - end - end - -end - -Liquid::Template.register_tag('tip', Jekyll::TipBlock) -Liquid::Template.register_tag('note', Jekyll::NoteBlock) -Liquid::Template.register_tag('important', Jekyll::ImportantBlock) -Liquid::Template.register_tag('experimental', Jekyll::ExperimentalBlock) -Liquid::Template.register_tag('disclaimer', Jekyll::DisclaimerBlock) -Liquid::Template.register_tag('warning', Jekyll::WarningBlock) -Liquid::Template.register_tag('version', Jekyll::VersionBlock) diff --git a/layouts/shortcodes/callout.html b/layouts/shortcodes/callout.html new file mode 100644 index 00000000000..5f4732d24a3 --- /dev/null +++ b/layouts/shortcodes/callout.html @@ -0,0 +1 @@ +{{ partial "callout.html" (dict "type" (.Get "type") "content" .Inner "page" .Page) }} diff --git a/layouts/shortcodes/community_spotlight.html b/layouts/shortcodes/community_spotlight.html new file mode 100644 index 00000000000..c0bed95b194 --- /dev/null +++ b/layouts/shortcodes/community_spotlight.html @@ -0,0 +1 @@ +{{- partial "community_spotlight.html" .Page | printf "%s" | replaceRE `(?m)^[ \t]+` "" | safeHTML -}} diff --git a/layouts/shortcodes/developer_list.html b/layouts/shortcodes/developer_list.html new file mode 100644 index 00000000000..a7150c55816 --- /dev/null +++ b/layouts/shortcodes/developer_list.html @@ -0,0 +1 @@ +{{- partial "developer_list.html" (dict "group" (.Get "group")) | printf "%s" | replaceRE `(?m)^[ \t]+` "" | safeHTML -}} diff --git a/layouts/shortcodes/disclaimer.html b/layouts/shortcodes/disclaimer.html new file mode 100644 index 00000000000..45a23e6ac23 --- /dev/null +++ b/layouts/shortcodes/disclaimer.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "disclaimer" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/experimental.html b/layouts/shortcodes/experimental.html new file mode 100644 index 00000000000..1535d74fd7d --- /dev/null +++ b/layouts/shortcodes/experimental.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "experimental" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/fenics_publications.html b/layouts/shortcodes/fenics_publications.html new file mode 100644 index 00000000000..7e15edd01ad --- /dev/null +++ b/layouts/shortcodes/fenics_publications.html @@ -0,0 +1 @@ +{{- partial "fenics_publications.html" .Page -}} diff --git a/layouts/shortcodes/funding.html b/layouts/shortcodes/funding.html new file mode 100644 index 00000000000..86a6575b18b --- /dev/null +++ b/layouts/shortcodes/funding.html @@ -0,0 +1 @@ +{{- partial "funding.html" .Page | printf "%s" | replaceRE `(?m)^[ \t]+` "" | safeHTML -}} diff --git a/layouts/shortcodes/important.html b/layouts/shortcodes/important.html new file mode 100644 index 00000000000..0b2884d2582 --- /dev/null +++ b/layouts/shortcodes/important.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "important" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/inline_image.html b/layouts/shortcodes/inline_image.html new file mode 100644 index 00000000000..7547b567fb4 --- /dev/null +++ b/layouts/shortcodes/inline_image.html @@ -0,0 +1 @@ +{{ partial "inline_image.html" (dict "file" (.Get "file") "alt" (.Get "alt")) }} diff --git a/layouts/shortcodes/mermaid.html b/layouts/shortcodes/mermaid.html new file mode 100644 index 00000000000..91cc27b68e1 --- /dev/null +++ b/layouts/shortcodes/mermaid.html @@ -0,0 +1 @@ +{{- printf "
    %s
    " (strings.TrimSpace .Inner) | safeHTML -}} diff --git a/layouts/shortcodes/newsletter.html b/layouts/shortcodes/newsletter.html new file mode 100644 index 00000000000..d77a171e53f --- /dev/null +++ b/layouts/shortcodes/newsletter.html @@ -0,0 +1 @@ +{{ partial "newsletter.html" .Page }} diff --git a/layouts/shortcodes/note.html b/layouts/shortcodes/note.html new file mode 100644 index 00000000000..a5da0621372 --- /dev/null +++ b/layouts/shortcodes/note.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "note" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/publication_panel.html b/layouts/shortcodes/publication_panel.html new file mode 100644 index 00000000000..a90e61c3d6c --- /dev/null +++ b/layouts/shortcodes/publication_panel.html @@ -0,0 +1,2 @@ +{{- $html := partial "publication_panel.html" (dict "title" (.Get "title") "flexible" (.Get "flexible") "wrapper" (.Get "wrapper") "show_doi_in_body" (.Get "show_doi_in_body") "require_pub_url" (.Get "require_pub_url")) | printf "%s" | replaceRE `(?m)^[ \t]+` "" -}} +{{- printf "\n%s\n" $html | safeHTML -}} diff --git a/layouts/shortcodes/site_param.html b/layouts/shortcodes/site_param.html new file mode 100644 index 00000000000..92d3c6a3625 --- /dev/null +++ b/layouts/shortcodes/site_param.html @@ -0,0 +1,6 @@ +{{- $key := .Get 0 -}} +{{- with index site.Params $key -}} + {{- . -}} +{{- else -}} + {{- errorf "The site_param shortcode could not find %q (%s)" $key .Position -}} +{{- end -}} diff --git a/layouts/shortcodes/testimonial_avatars.html b/layouts/shortcodes/testimonial_avatars.html new file mode 100644 index 00000000000..8ba73cce1c1 --- /dev/null +++ b/layouts/shortcodes/testimonial_avatars.html @@ -0,0 +1 @@ +{{- partial "testimonial_avatars.html" .Page | printf "%s" | replaceRE `(?m)^[ \t]+` "" | safeHTML -}} diff --git a/layouts/shortcodes/testimonials.html b/layouts/shortcodes/testimonials.html new file mode 100644 index 00000000000..41fd4926bfa --- /dev/null +++ b/layouts/shortcodes/testimonials.html @@ -0,0 +1 @@ +{{- partial "testimonials.html" .Page | printf "%s" | replaceRE `(?m)^[ \t]+` "" | safeHTML -}} diff --git a/layouts/shortcodes/tip.html b/layouts/shortcodes/tip.html new file mode 100644 index 00000000000..048c079e8e9 --- /dev/null +++ b/layouts/shortcodes/tip.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "tip" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/version.html b/layouts/shortcodes/version.html new file mode 100644 index 00000000000..b88c8bbf4bb --- /dev/null +++ b/layouts/shortcodes/version.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "version" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/warning.html b/layouts/shortcodes/warning.html new file mode 100644 index 00000000000..02a894ec1b8 --- /dev/null +++ b/layouts/shortcodes/warning.html @@ -0,0 +1 @@ +{{- partial "alert.html" (dict "kind" "warning" "content" .Inner "page" .Page) -}} diff --git a/layouts/shortcodes/xmlreference.html b/layouts/shortcodes/xmlreference.html new file mode 100644 index 00000000000..048f1f0bce5 --- /dev/null +++ b/layouts/shortcodes/xmlreference.html @@ -0,0 +1 @@ +{{ partial "xmlreference.html" .Page }} From 0c742575ddbb69a8a2fb40cd6d6c20a73db24877 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 22:07:12 +0500 Subject: [PATCH 09/45] Hugo: Add publication and tagging partials (#948) --- _includes/archive.html | 15 ----- _includes/publication_panel.html | 82 ----------------------- _includes/taglogic.html | 31 --------- layouts/partials/fenics_publications.html | 16 +++++ layouts/partials/publication_panel.html | 70 +++++++++++++++++++ layouts/partials/publications_by_tag.html | 13 ++++ layouts/partials/taglogic.html | 16 +++++ 7 files changed, 115 insertions(+), 128 deletions(-) delete mode 100644 _includes/archive.html delete mode 100644 _includes/publication_panel.html delete mode 100644 _includes/taglogic.html create mode 100644 layouts/partials/fenics_publications.html create mode 100644 layouts/partials/publication_panel.html create mode 100644 layouts/partials/publications_by_tag.html create mode 100644 layouts/partials/taglogic.html diff --git a/_includes/archive.html b/_includes/archive.html deleted file mode 100644 index 275850c9cb3..00000000000 --- a/_includes/archive.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default -type: archive ---- - -
    -

    {{ page.title }}

    -
    -
    - -{{ content }} -
    - - - diff --git a/_includes/publication_panel.html b/_includes/publication_panel.html deleted file mode 100644 index f993be6584a..00000000000 --- a/_includes/publication_panel.html +++ /dev/null @@ -1,82 +0,0 @@ -{% comment %} - Renders a blue-bordered publication citation box (same as precice.org / landing page). - - Usage: - {% include publication_panel.html title="Exact publication title" %} - {% include publication_panel.html pub=pub %} - {% include publication_panel.html pub=pub flexible=true wrapper=false show_doi_in_body=true %} - - Parameters: - title / pub — lookup or pass publication from site.publications - flexible — optional journal fields (fenics related literature) - wrapper — wrap in row + col-md-10 offset-md-1 (default: true) - show_doi_in_body — append doi link in the citation line - require_pub_url — only show Publisher's site when pub-url is set -{% endcomment %} - -{% if include.pub %} - {% assign pub = include.pub %} -{% elsif include.title %} - {% assign pub = nil %} - {% for p in site.publications %} - {% if p.title == include.title %} - {% assign pub = p %} - {% break %} - {% endif %} - {% endfor %} -{% endif %} - -{% if pub %} - {% if pub.doi %} - {% assign publisher_url = pub.doi | prepend: 'https://www.doi.org/' %} - {% else %} - {% assign publisher_url = pub.pub-url %} - {% endif %} - - {% assign use_wrapper = true %} - {% if include.wrapper == false %} - {% assign use_wrapper = false %} - {% endif %} - - {% if use_wrapper %} -
    -
    - {% endif %} -
    -
    - {{ pub.title }} -
    -
    -

    - {% if include.flexible %} - {{ pub.authors }}{% if pub.journal.name %} {{ pub.journal.name }}, {% endif %}{% if pub.journal.volume %}Volume {{ pub.journal.volume }}, {% endif %}{% if pub.journal.publisher %}{{ pub.journal.publisher }}, {% endif %}{{ pub.year }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }}{% endif %}. - {% elsif pub.journal.issue %} - {{ pub.authors }}, - {{ pub.journal.name }}, - {{ pub.year }}, - {{ pub.journal.volume }}:{{ pub.journal.issue }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }}{% endif %}. - {% else %} - {{ pub.authors }}, - {{ pub.journal.name }}{% if pub.journal.volume %}, - Volume {{ pub.journal.volume }}{% endif %}{% if pub.journal.publisher %}, - {{ pub.journal.publisher }}{% endif %}, - {{ pub.year }}{% if include.show_doi_in_body and pub.doi %}, doi:{{ pub.doi }}{% endif %}. - {% endif %} -

    - {% if include.flexible and include.require_pub_url %} - {% if pub.pub-url %} - Publisher's site   - {% endif %} - {% elsif publisher_url %} - Publisher's site   - {% endif %} - {% if pub.bibtex %} - Download BibTeX   - {% endif %} -
    -
    - {% if use_wrapper %} -
    -
    - {% endif %} -{% endif %} diff --git a/_includes/taglogic.html b/_includes/taglogic.html deleted file mode 100644 index 3bdbf6e902b..00000000000 --- a/_includes/taglogic.html +++ /dev/null @@ -1,31 +0,0 @@ -

    The following pages and posts are tagged with

    - - - {% assign thisTag = page.tagName %} - {% for page in site.pages %} - {% for tag in page.tags %} - {% if tag == thisTag %} - - - - - - {% endif %} - {% endfor %} - {% endfor %} - - {% assign thisTag = page.tagName %} - {% for post in site.posts %} - {% for tag in post.tags %} - {% if tag == thisTag %} - - - - - - {% endif %} - {% endfor %} - {% endfor %} - - -
    TitleTypeExcerpt
    {{page.title}}Page{% if page.summary %} {{ page.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ page.content | truncatewords: 50 | strip_html }} {% endif %}
    {{post.title}}Post{% if post.summary %} {{ post.summary | strip_html | strip_newlines | truncate: 160 }} {% else %} {{ post.content | truncatewords: 50 | strip_html }} {% endif %}
    diff --git a/layouts/partials/fenics_publications.html b/layouts/partials/fenics_publications.html new file mode 100644 index 00000000000..406a603e8a9 --- /dev/null +++ b/layouts/partials/fenics_publications.html @@ -0,0 +1,16 @@ +{{/* +TODO: Replace this adapter-specific compatibility partial with shared publication +rendering once imported repositories expose their publication sections in native +Hugo markup. It currently renders the legacy FEniCS publication loop. +*/}} +{{- $title := "FEniCS–preCICE: Coupling FEniCS to other simulation software" -}} +{{- $publications := where site.RegularPages "Section" "publications" -}} +{{- $citation := where $publications "Title" $title -}} + +

    How to cite

    +{{- with index $citation 0 -}} + {{- partial "publication_panel.html" (dict "pub" . "flexible" true) -}} +{{- end -}} + +

    Related literature

    +{{- partial "publications_by_tag.html" (dict "tag" "fenics") -}} diff --git a/layouts/partials/publication_panel.html b/layouts/partials/publication_panel.html new file mode 100644 index 00000000000..e5cfced85cd --- /dev/null +++ b/layouts/partials/publication_panel.html @@ -0,0 +1,70 @@ +{{- $input := . -}} +{{- $pubPage := false -}} +{{- $pubParams := dict -}} +{{- $pubTitle := "" -}} +{{- $title := $input.title | default "" -}} + +{{- with $input.pub -}} + {{- if reflect.IsMap . -}} + {{- $pubParams = . -}} + {{- $pubTitle = index . "title" -}} + {{- else -}} + {{- $pubPage = . -}} + {{- end -}} +{{- end -}} + +{{- if and (not $pubPage) (not $pubTitle) $title -}} + {{- range where site.RegularPages "Section" "publications" -}} + {{- if and (not $pubPage) (eq .Title $title) -}} + {{- $pubPage = . -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- with $pubPage -}} + {{- $pubParams = .Params -}} + {{- $pubTitle = .Title -}} +{{- end -}} + +{{- if $pubTitle -}} + {{- $authors := index $pubParams "authors" -}} + {{- $year := index $pubParams "year" -}} + {{- $journal := index $pubParams "journal" | default dict -}} + {{- $doi := index $pubParams "doi" -}} + {{- $publisherURL := index $pubParams "pub-url" -}} + {{- with $doi }}{{ $publisherURL = printf "https://www.doi.org/%s" . }}{{ end -}} + {{- $useWrapper := true -}} + {{- if eq $input.wrapper false }}{{ $useWrapper = false }}{{ end -}} + + {{ if $useWrapper }}
    {{ end }} +
    +
    + {{ $pubTitle }} +
    +
    +

    + {{ if $input.flexible }} + {{ $authors }}{{ with (index $journal "name") }} {{ . }},{{ end }}{{ with (index $journal "volume") }} Volume {{ . }},{{ end }}{{ with (index $journal "publisher") }} {{ . }},{{ end }} {{ $year }}{{ if and $input.show_doi_in_body $doi }}, doi:{{ $doi }}{{ end }}. + {{ else if (index $journal "issue") }} + {{ $authors }}, + {{ index $journal "name" }}, + {{ $year }}, + {{ index $journal "volume" }}:{{ index $journal "issue" }}{{ if and $input.show_doi_in_body $doi }}, doi:{{ $doi }}{{ end }}. + {{ else }} + {{ $authors }}, + {{ index $journal "name" }}{{ with (index $journal "volume") }}, + Volume {{ . }}{{ end }}{{ with (index $journal "publisher") }}, + {{ . }}{{ end }}, + {{ $year }}{{ if and $input.show_doi_in_body $doi }}, doi:{{ $doi }}{{ end }}. + {{ end }} +

    + {{ if and $input.flexible $input.require_pub_url }} + {{ with (index $pubParams "pub-url") }}Publisher's site  {{ end }} + {{ else }} + {{ with $publisherURL }}Publisher's site  {{ end }} + {{ end }} + {{ with (index $pubParams "bibtex") }}Download BibTeX  {{ end }} +
    +
    + {{ if $useWrapper }}
    {{ end }} +{{- end -}} diff --git a/layouts/partials/publications_by_tag.html b/layouts/partials/publications_by_tag.html new file mode 100644 index 00000000000..a34040d645b --- /dev/null +++ b/layouts/partials/publications_by_tag.html @@ -0,0 +1,13 @@ +{{- $tag := .tag -}} +{{- $publications := where site.RegularPages "Section" "publications" -}} +{{- $publications = sort $publications "Params.year" "desc" -}} +
    + {{- range $publications }} + {{- $pubTags := printf "%v" (index .Params "tag") -}} + {{- if in $pubTags $tag }} +
    + {{ partial "publication_panel.html" (dict "pub" . "wrapper" false "flexible" true "require_pub_url" true) }} +
    + {{- end }} + {{- end }} +
    diff --git a/layouts/partials/taglogic.html b/layouts/partials/taglogic.html new file mode 100644 index 00000000000..c0180714e1a --- /dev/null +++ b/layouts/partials/taglogic.html @@ -0,0 +1,16 @@ +{{- $tagName := .Params.tagName | default .Title -}} +

    The following pages and posts are tagged with

    + + + + {{ range site.RegularPages }} + {{ if in (.Params.tags | default slice) $tagName }} + + + + + + {{ end }} + {{ end }} + +
    TitleTypeExcerpt
    {{ .Title }}{{ .Type | title }}{{ with .Params.summary }}{{ . | plainify | truncate 160 }}{{ else }}{{ .Summary | plainify | truncate 160 }}{{ end }}
    From e369de20e5e7c298f8ef269f8de2e36e186266e0 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 22:10:19 +0500 Subject: [PATCH 10/45] Hugo: Add specialized Hugo layouts (#963) --- layouts/_markup/render-image.html | 9 ++++ {content => layouts}/index.html | 80 +++++++++++-------------------- layouts/publications/list.html | 16 +++++++ layouts/publications/single.html | 6 +++ layouts/testimonials/list.html | 12 +++++ layouts/testimonials/single.html | 33 +++++++++++++ 6 files changed, 105 insertions(+), 51 deletions(-) create mode 100644 layouts/_markup/render-image.html rename {content => layouts}/index.html (86%) create mode 100644 layouts/publications/list.html create mode 100644 layouts/publications/single.html create mode 100644 layouts/testimonials/list.html create mode 100644 layouts/testimonials/single.html diff --git a/layouts/_markup/render-image.html b/layouts/_markup/render-image.html new file mode 100644 index 00000000000..ef2279078a7 --- /dev/null +++ b/layouts/_markup/render-image.html @@ -0,0 +1,9 @@ +{{- $destination := .Destination -}} +{{- $resource := .Page.Resources.GetMatch .Destination -}} +{{- if not $resource -}} + {{- $resource = .Page.CurrentSection.Resources.GetMatch .Destination -}} +{{- end -}} +{{- with $resource -}} + {{- $destination = .RelPermalink -}} +{{- end -}} +{{ .Text }} diff --git a/content/index.html b/layouts/index.html similarity index 86% rename from content/index.html rename to layouts/index.html index 439df6a8276..0243ecdc375 100644 --- a/content/index.html +++ b/layouts/index.html @@ -1,19 +1,14 @@ ---- -title: preCICE - The Coupling Library -permalink: index.html -keywords: -toc: false -hide_sidebar: true -layout: landing_page -topnav: topnav ---- +{{ define "main" }} +{{- $params := site.Params -}} +{{- $preciceVersion := $params.precice_version -}} +{{- $preciceReleaseURL := printf "https://github.com/precice/precice/releases/tag/v%s" $preciceVersion -}}
    -

    Welcome to preCICE

    +

    Welcome to preCICE

    The coupling library for partitioned multi-physics simulations.

    @@ -21,7 +16,7 @@

    The coupling library for partitioned multi-physic - Latest v{{ site.precice_version }}   + Latest v{{ $preciceVersion }}   Get started  

    @@ -39,7 +34,7 @@

    The coupling library for partitioned multi-physic

    - visualisation of how preCICE couples different solvers + visualisation of how preCICE couples different solvers
    @@ -78,7 +73,7 @@

    Prepared for the next generation of multi-physics sim
    - non-invasive integration + non-invasive integration
    @@ -95,7 +90,7 @@

    Prepared for the next generation of multi-physics sim

    - Coupling of programs + Coupling of programs
    @@ -112,7 +107,7 @@

    Prepared for the next generation of multi-physics sim

    - numerical methods + numerical methods
    @@ -129,7 +124,7 @@

    Prepared for the next generation of multi-physics sim

    - scalability + scalability
    @@ -163,7 +158,7 @@

    Ready-to-use with your favourite open-source solver
    - openFOAM logo + openFOAM logo

    OpenFOAM  

    @@ -173,7 +168,7 @@

    Ready-to-use with your favourite open-source solver
    - CalculiX logo + CalculiX logo

    CalculiX  

    @@ -183,7 +178,7 @@

    Ready-to-use with your favourite open-source solver
    - FEniCS logo + FEniCS logo

    FEniCS  

    @@ -193,7 +188,7 @@

    Ready-to-use with your favourite open-source solver
    - deal.II logo + deal.II logo

    deal.II  

    @@ -203,7 +198,7 @@

    Ready-to-use with your favourite open-source solver
    - Nutils logo + Nutils logo

    Nutils  

    @@ -236,7 +231,7 @@

    What our community is saying

    We are using preCICE as it can handle numerical simulations of large sizes with ease as opposed to previous in-house couplers.

    - simulation biomechanics + simulation biomechanics

    —Kyle Davis

    University of the Free State, Department of Cardiothoracic Surgery, South Africa

    @@ -248,7 +243,7 @@

    What our community is saying

    The large number of coupling functionalities in preCICE gives the user the opportunity to build advanced and scalable simulations with ease.

    - simulation aerodynamics + simulation aerodynamics

    —Derek Risseeuw

    Aerodynamics, Faculty of Aerospace Engineering, TU Delft, The Netherlands

    @@ -260,7 +255,7 @@

    What our community is saying

    @@ -366,7 +361,7 @@

    Join the community!

    The quarterly preCICE newsletter - {% include newsletter.html %} + {{ partial "newsletter.html" . }}
    @@ -395,7 +390,7 @@

    You support preCICE – preCICE supports you

    - precice support program logo + precice support program logo
    @@ -476,26 +471,8 @@

    Tried and tested by a global community

    - - {% assign logowall = site.data.logowall %} -
    - {% for row in logowall %} - {% for column in row.columns %} - {% for logo in column.logos %} - - {% endfor %} - {% endfor %} - {% endfor %} -
    + + {{ partial "logowall.html" . }}
    Explore the preCICE community   @@ -540,3 +517,4 @@

    How does it look like?

    +{{ end }} diff --git a/layouts/publications/list.html b/layouts/publications/list.html new file mode 100644 index 00000000000..a76ddeb2853 --- /dev/null +++ b/layouts/publications/list.html @@ -0,0 +1,16 @@ +{{ define "main" }} +
    +
    +

    {{ .Title }}

    +
    + + {{ .Content }} + + {{- $publications := sort .RegularPages "Params.year" "desc" -}} + {{- range $publications }} +
    + {{ partial "publication_panel.html" (dict "pub" . "wrapper" false) }} +
    + {{- end }} +
    +{{ end }} diff --git a/layouts/publications/single.html b/layouts/publications/single.html new file mode 100644 index 00000000000..fa52e981bbf --- /dev/null +++ b/layouts/publications/single.html @@ -0,0 +1,6 @@ +{{ define "main" }} +
    + {{ partial "publication_panel.html" (dict "pub" . "wrapper" false "show_doi_in_body" true) }} + {{ with .Content }}
    {{ . }}
    {{ end }} +
    +{{ end }} diff --git a/layouts/testimonials/list.html b/layouts/testimonials/list.html new file mode 100644 index 00000000000..8a4a21faaef --- /dev/null +++ b/layouts/testimonials/list.html @@ -0,0 +1,12 @@ +{{ define "main" }} +
    +
    +

    {{ .Title }}

    +
    + + {{ .Content }} +
    + {{ partial "testimonials.html" . }} +
    +
    +{{ end }} diff --git a/layouts/testimonials/single.html b/layouts/testimonials/single.html new file mode 100644 index 00000000000..91fab86e9a0 --- /dev/null +++ b/layouts/testimonials/single.html @@ -0,0 +1,33 @@ +{{ define "main" }} +
    +
    +

    {{ .Title }}

    +
    + +
    +
    + {{ .Content }} + {{- with .Params.author }} +

    + - + {{- with $.Params.author_link -}} + {{ $.Params.author }} + {{- else -}} + {{ $.Params.author }} + {{- end -}} +
    + {{ with $.Params.organisation_link }}{{ $.Params.organisation }}{{ else }}{{ $.Params.organisation }}{{ end }} +

    + {{- end }} +
    +
    + {{- with .Params.img }} +
    + {{ $.Title }} +
    {{ $.Title }}
    +
    + {{- end }} +
    +
    +
    +{{ end }} From 9ef20d6c1990e722be689137568d9465241f5e55 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:37:27 +0200 Subject: [PATCH 11/45] Hugo: Add content utilities and helpers partials (#953) --- _includes/news_banner.html | 19 -------- {_includes => assets}/xmlreference.md | 0 layouts/partials/edit_button.html | 44 +++++++++++++++++++ layouts/partials/funding.html | 25 +++++++++++ layouts/partials/news_banner.html | 19 ++++++++ .../partials}/newsletter.html | 0 layouts/partials/xmlreference.html | 2 + 7 files changed, 90 insertions(+), 19 deletions(-) delete mode 100644 _includes/news_banner.html rename {_includes => assets}/xmlreference.md (100%) create mode 100644 layouts/partials/edit_button.html create mode 100644 layouts/partials/funding.html create mode 100644 layouts/partials/news_banner.html rename {_includes => layouts/partials}/newsletter.html (100%) create mode 100644 layouts/partials/xmlreference.html diff --git a/_includes/news_banner.html b/_includes/news_banner.html deleted file mode 100644 index 5db72e053aa..00000000000 --- a/_includes/news_banner.html +++ /dev/null @@ -1,19 +0,0 @@ -{% if include.onlanding %} -{% else %} -{% endif %} - -{% if include.onlanding %} - - - -{% endif %} diff --git a/_includes/xmlreference.md b/assets/xmlreference.md similarity index 100% rename from _includes/xmlreference.md rename to assets/xmlreference.md diff --git a/layouts/partials/edit_button.html b/layouts/partials/edit_button.html new file mode 100644 index 00000000000..59d2f51e457 --- /dev/null +++ b/layouts/partials/edit_button.html @@ -0,0 +1,44 @@ +{{- if ne (.Param "editme") false -}} + {{- $filePath := "" -}} + {{- $sourcePath := "" -}} + {{- with .File -}} + {{- $filePath = .Path -}} + {{- $filename := replace .Filename "\\" "/" -}} + {{- $sourcePath = replaceRE `^.*/(content|imported)/` `$1/` $filename -}} + {{- $sourcePath = replaceRE `^.*/pkg/mod/(github\.com/[^/]+/[^/@]+)(@[^/]+)?/(.*)$` `$1/$3` $sourcePath -}} + {{- if eq $sourcePath $filename -}} + {{- $sourcePath = replaceRE `^.*/([^/]+\.[^/.]+)$` `$1` $filename -}} + {{- end -}} + {{- if eq $sourcePath "" -}} + {{- $sourcePath = $filePath -}} + {{- end -}} + {{- end -}} + {{- $editBase := site.Params.github_editme_path -}} + {{- $editPath := $sourcePath -}} + + {{- range $prefix, $base := site.Params.github_editme_paths -}} + {{- if hasPrefix $sourcePath (printf "%s/" $prefix) -}} + {{- $editBase = $base -}} + {{- if ne $prefix "content" -}} + {{- $editPath = strings.TrimPrefix (printf "%s/" $prefix) $sourcePath -}} + {{- end -}} + {{- end -}} + {{- end -}} + + {{- with .Params.github_editme_path -}} + {{- $editBase = . -}} + {{- end -}} + + {{- if and $editBase $editPath -}} + + {{- end -}} +{{- end -}} diff --git a/layouts/partials/funding.html b/layouts/partials/funding.html new file mode 100644 index 00000000000..7ee143b956a --- /dev/null +++ b/layouts/partials/funding.html @@ -0,0 +1,25 @@ +
    + {{- range hugo.Data.funding }} +
    +
    +
    + + {{ .title }} + +
    +
    + + {{ .alt | default + +
    +
    + {{- with .description }}

    {{ . }}

    {{ end }} + {{- with .number }}

    Funding number: {{ . }}

    {{ end }} + {{- with .period }}

    Years running: {{ . }}

    {{ end }} +
    +
    +
    +
    +
    + {{- end }} +
    diff --git a/layouts/partials/news_banner.html b/layouts/partials/news_banner.html new file mode 100644 index 00000000000..fec9412684c --- /dev/null +++ b/layouts/partials/news_banner.html @@ -0,0 +1,19 @@ +{{/* +News banner template, disabled by default. To publish a banner, change `false` +below to `true` and edit only the announcement text and link below. The base +layout already calls this partial, and the existing classes should be kept for +consistent styling. To only show the baner on the front page, change the banner +block condition to `{{ if .onlanding }}`. +*/}} + +{{ if false }} + +{{ end }} diff --git a/_includes/newsletter.html b/layouts/partials/newsletter.html similarity index 100% rename from _includes/newsletter.html rename to layouts/partials/newsletter.html diff --git a/layouts/partials/xmlreference.html b/layouts/partials/xmlreference.html new file mode 100644 index 00000000000..66ef5ea28ab --- /dev/null +++ b/layouts/partials/xmlreference.html @@ -0,0 +1,2 @@ +{{- $raw := readFile "assets/xmlreference.md" -}} +{{- .RenderString $raw -}} From b55567017b3436401e2275c98db780552d6f8af1 Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Sun, 9 Aug 2026 22:28:14 +0500 Subject: [PATCH 12/45] Hugo: Replace Jekyll XML Outputs and Update Doxygen Sitemap Integration (#966) --- doxygen/patch.sh | 4 +-- feed.xml | 32 ------------------- .../index.sitemapindex.xml | 7 ++-- layouts/robots.txt | 4 +++ robots.txt | 6 ---- 5 files changed, 8 insertions(+), 45 deletions(-) delete mode 100644 feed.xml rename sitemap_index.xml => layouts/index.sitemapindex.xml (53%) create mode 100644 layouts/robots.txt delete mode 100644 robots.txt diff --git a/doxygen/patch.sh b/doxygen/patch.sh index 3302d4fa7e3..32f61cf073d 100755 --- a/doxygen/patch.sh +++ b/doxygen/patch.sh @@ -10,7 +10,7 @@ # - it sets the PROJECT_NUMBER to the release or the commit # - it sets the SITEMAP_URL for the main doxygen reference -if [ ! -f "website/_config.yml" ] || [ ! -f "main/Doxyfile" ] || [ ! -f "develop/Doxyfile" ] ; then +if [ ! -f "website/config/_default/hugo.toml" ] || [ ! -f "main/Doxyfile" ] || [ ! -f "develop/Doxyfile" ] ; then >&2 echo "Call from the root of the runner!" echo "Pwd $(pwd)" echo "Doxyfiles:" @@ -25,7 +25,7 @@ set -e # Remove config options sed -e "/^ *TAGFILES/d" -e "/^ *SITEMAP_URL/d" -e "/^ *PROJECT_NUMBER/d" -i main/Doxyfile develop/Doxyfile -BASEURL="https://precice.org/doxygen" +BASEURL="${DOXYGEN_BASE_URL:-https://precice.org/doxygen}" # This is relative to the Doxyfile TAGFILE="../website/doxygen/cppreference-doxygen-web.tag.xml=http://en.cppreference.com/w/" diff --git a/feed.xml b/feed.xml deleted file mode 100644 index 8962eade6d4..00000000000 --- a/feed.xml +++ /dev/null @@ -1,32 +0,0 @@ ---- -search: exclude -layout: none ---- - - - - - {{ site.title | xml_escape }} - {{ site.description | xml_escape }} - {{ site.url }}/ - - {{ site.time | date_to_rfc822 }} - {{ site.time | date_to_rfc822 }} - Jekyll v{{ jekyll.version }} - {% for post in site.posts limit:10 %} - - {{ post.title | xml_escape }} - {{ post.content | xml_escape }} - {{ post.date | date_to_rfc822 }} - {{ post.url | prepend: site.url }} - {{ post.url | prepend: site.url }} - {% for tag in post.tags %} - {{ tag | xml_escape }} - {% endfor %} - {% for tag in page.tags %} - {{ tag | xml_escape }} - {% endfor %} - - {% endfor %} - - diff --git a/sitemap_index.xml b/layouts/index.sitemapindex.xml similarity index 53% rename from sitemap_index.xml rename to layouts/index.sitemapindex.xml index 90d78d20ab8..1176865f1df 100644 --- a/sitemap_index.xml +++ b/layouts/index.sitemapindex.xml @@ -1,12 +1,9 @@ ---- -permalink: sitemap_index.xml ---- - {{ "sitemap.xml" | absolute_url }} + {{ "sitemap.xml" | absURL }} - {{ "doxygen/main/sitemap.xml" | absolute_url }} + {{ "doxygen/main/sitemap.xml" | absURL }} diff --git a/layouts/robots.txt b/layouts/robots.txt new file mode 100644 index 00000000000..643e3dffaed --- /dev/null +++ b/layouts/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: /doxygen/develop/ + +Sitemap: {{ "sitemap_index.xml" | absURL }} diff --git a/robots.txt b/robots.txt deleted file mode 100644 index 6ab00e7b196..00000000000 --- a/robots.txt +++ /dev/null @@ -1,6 +0,0 @@ ---- ---- -User-agent: * -Disallow: /doxygen/develop/ - -Sitemap: {{ "sitemap_index.xml" | absolute_url }} From f1681d412b03234c5b6c2b0b71f5051a7c4cd843 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:46:04 +0200 Subject: [PATCH 13/45] Hugo: Migrate content and static assets (#964) --- content/404.md | 4 +- content/_index.md | 13 ++ content/about.md | 59 ++++++++ content/about/_index.md | 0 content/about/overview.md | 113 ---------------- content/community/_index.md | 10 ++ content/community/channels.md | 5 +- .../contribute/contribute-to-precice.md | 39 +++--- content/community/contribute/open-projects.md | 15 ++- content/community/contributors.md | 76 +---------- .../minisymposia/eccomas-congress-2022.md | 2 + .../minisymposia/eccomas-coupled-2019.md | 2 + .../minisymposia/eccomas-coupled-2021.md | 2 + .../minisymposia/eccomas-coupled-2023.md | 2 + .../minisymposia/eccomas-coupled-2025.md | 2 + .../minisymposia/eccomas-eccm-ecfd-2018.md | 2 + .../community/minisymposia/iacm-wccm-2024.md | 2 + content/community/minisymposia/wccm-2021.md | 6 +- .../minisymposia/wccomas-wccm-2026.md | 2 + content/community/overview.md | 15 +-- content/community/projects.md | 33 +---- content/community/support-precice.md | 2 + content/community/training.md | 28 ++-- content/community/trainings/2026-10.md | 8 +- content/community/workshops/2020.md | 9 +- content/community/workshops/2021.md | 7 +- content/community/workshops/2022.md | 11 +- content/community/workshops/2023.md | 13 +- content/community/workshops/2024.md | 21 +-- content/community/workshops/2025.md | 13 +- content/community/workshops/2027.md | 9 +- content/community/workshops/organizing.md | 4 +- content/community/workshops/overview.md | 12 +- content/docs/_index.md | 10 ++ content/docs/adapters/gismo/overview.md | 2 + content/docs/adapters/nutils/overview.md | 2 + content/docs/adapters/overview.md | 3 + content/docs/configuration/advanced/action.md | 18 +-- .../configuration/advanced/coupling-multi.md | 10 +- content/docs/configuration/advanced/export.md | 22 +-- .../docs/configuration/advanced/logging.md | 2 + .../configuration/advanced/watchintegral.md | 6 +- .../docs/configuration/advanced/watchpoint.md | 2 + .../docs/configuration/basics/acceleration.md | 6 +- .../configuration/basics/communication.md | 6 +- .../basics/coupling-mesh-exchange.md | 4 +- content/docs/configuration/basics/coupling.md | 4 +- .../docs/configuration/basics/introduction.md | 19 +-- content/docs/configuration/basics/mapping.md | 56 ++++---- content/docs/configuration/overview.md | 6 +- content/docs/configuration/xml-reference.md | 17 ++- .../advanced/adapter-software-engineering.md | 14 +- .../advanced/coupling-flow.md | 10 +- .../advanced/direct-access.md | 14 +- .../advanced/distributed-meshes.md | 10 +- .../advanced/existing-mpi-environment.md | 2 + .../couple-your-code/advanced/fem-meshes.md | 4 +- .../couple-your-code/advanced/global-data.md | 2 + .../advanced/just-in-time-mapping.md | 10 +- .../advanced/moving-or-changing-meshes.md | 8 +- .../couple-your-code/advanced/waveform.md | 8 +- content/docs/couple-your-code/api.md | 6 +- content/docs/couple-your-code/overview.md | 2 + .../porting/couple-your-code-porting-v1-2.md | 11 +- .../porting/couple-your-code-porting-v2-3.md | 10 +- .../docs/couple-your-code/porting/overview.md | 2 + .../defining-mesh-connectivity.md | 11 +- .../step-by-step/gradient-data.md | 14 +- .../step-by-step/implicit-coupling.md | 14 +- .../initializing-coupling-data.md | 2 + .../step-by-step/mesh-and-data-access.md | 2 + .../step-by-step/preparing-your-solver.md | 14 +- .../step-by-step/steering-methods.md | 3 +- .../step-by-step/time-step-sizes.md | 23 ++-- content/docs/dev-docs/conventions.md | 2 + content/docs/dev-docs/eventtimings.md | 2 + content/docs/dev-docs/logging.md | 2 + content/docs/dev-docs/naming.md | 2 + content/docs/dev-docs/optimization.md | 2 + content/docs/dev-docs/overview.md | 2 + content/docs/dev-docs/publications.md | 2 + content/docs/dev-docs/release-strategy.md | 14 +- content/docs/dev-docs/release.md | 2 + content/docs/dev-docs/testing.md | 2 + content/docs/dev-docs/tooling.md | 2 + content/docs/docs-meta/cheatsheet.md | 86 ++++++------ content/docs/docs-meta/content-guidelines.md | 4 +- content/docs/docs-meta/landing-page.md | 4 +- content/docs/docs-meta/migration-guide.md | 126 ------------------ content/docs/docs-meta/overview.md | 2 - content/docs/docs-meta/publish-to-pdf.md | 2 +- content/docs/fundamentals/faq.md | 3 + content/docs/fundamentals/license.md | 2 + content/docs/fundamentals/literature-guide.md | 18 ++- content/docs/fundamentals/overview.md | 7 +- .../docs/fundamentals/previous-versions.md | 6 +- content/docs/fundamentals/roadmap.md | 3 + content/docs/fundamentals/terminology.md | 2 + content/docs/installation/bindings/fortran.md | 2 + content/docs/installation/bindings/julia.md | 6 +- content/docs/installation/bindings/matlab.md | 2 + content/docs/installation/bindings/python.md | 6 +- content/docs/installation/bindings/rust.md | 2 + .../building-from-source/building.md | 2 + .../building-from-source/cmake.md | 2 + .../building-from-source/configuration.md | 12 +- .../building-from-source/dependencies.md | 20 +-- .../building-from-source/finding.md | 2 + .../building-from-source/installation.md | 2 + .../building-from-source/preparation.md | 12 +- .../building-from-source/testing.md | 2 + .../building-from-source/troubleshooting.md | 2 + content/docs/installation/distribution.md | 2 + content/docs/installation/linking.md | 6 +- content/docs/installation/overview.md | 6 +- content/docs/installation/packages.md | 6 +- content/docs/installation/source-advanced.md | 10 +- content/docs/installation/spack.md | 10 +- content/docs/installation/special-systems.md | 34 ++--- content/docs/installation/vm.md | 4 +- content/docs/running/distributed.md | 2 + content/docs/running/output-files.md | 8 +- content/docs/running/overview.md | 2 + content/docs/running/simple.md | 2 + content/docs/running/slurm.md | 6 +- content/docs/tooling/builtin.md | 14 +- content/docs/tooling/cli.md | 2 + content/docs/tooling/config-visualization.md | 16 ++- content/docs/tooling/overview.md | 2 + content/docs/tooling/performance-analysis.md | 24 ++-- content/docs/tooling/rbf-shape.md | 6 +- content/faq/_index.html | 5 + content/{privacy/overview.md => privacy.md} | 2 + content/privacy/_index.md | 0 .../publications}/2009-GatzhammerMehl.md | 0 .../2009-GatzhammerMehlWeinzierl.md | 0 .../2010-BenkBungartzGatzhammerMehlNeckel.md | 0 .../2011-BungartzGatzhammerLiebMehlNeckel.md | 0 .../2011-GatzhammerMehlNeckel.md | 0 .../2013-BungartzGatzhammerMehlUekermann.md | 0 ...sGatzhammerHouzeauxMehlUekermannVazquez.md | 0 .../2014-GatzhammerMehlUekermann.md | 0 ...lomLindnerMehlScheufeleUekermannZuijlen.md | 0 ...zKlimachKruppLindnerMehlRollerUekermann.md | 1 - .../2015-BungartzLindnerMehlUekermann.md | 0 .../publications}/2015-Farcas.md | 0 .../publications}/2015-Gatzhammer.md | 0 .../2015-LindnerMehlScheufeleUekermann.md | 0 .../2015-LindnerMehlUekermann.md | 0 .../publications}/2015-Mikerov.md | 0 .../publications}/2015-Scheufele.md | 0 .../publications}/2015-Shukaev.md | 0 .../publications}/2016-BlomEtAl.md | 2 +- ...GatzhammerMehlScheufeleShukaevUekermann.md | 0 ...rtzLindnerMehlScheufeleShukaevUekermann.md | 2 +- .../publications}/2016-Cheung.md | 0 ...HaeltermanBogaersUekermannScheufeleMehl.md | 0 ...-MehlUekermannBijlBlomGatzhammerZuijlen.md | 0 .../publications}/2016-Rusch.md | 0 .../publications}/2016-Uekermann.md | 0 .../publications}/2016-Uekermann2.md | 0 .../publications}/2017-Abrams.md | 0 .../publications}/2017-Chourdakis.md | 0 .../2017-LindnerMehlUekermann.md | 0 ...-UekermannBungartzCheungChourdakisRusch.md | 0 .../publications}/2017-Vollmer.md | 0 .../publications}/2018-Bungartz-LRZ.md | 0 .../publications}/2018-Chourdakis_CoSaS.md | 0 .../publications}/2018-Hoshaber.md | 0 .../publications}/2018-Reiser.md | 0 .../publications}/2018-Rueth-ECCMECFD.md | 0 .../publications}/2018-Rueth-ISC.md | 0 .../publications}/2018-Rueth-SCSwed.md | 0 .../publications}/2018-Trujillo.md | 0 .../publications}/2019-Chourdakis_NLRSE19.md | 0 .../publications}/2019-Chourdakis_OFW.md | 0 .../publications}/2019-Hertrich.md | 0 .../publications}/2019-Huang.md | 0 .../publications}/2019-Lindner.md | 0 .../publications}/2019-Risseeuw.md | 0 .../publications}/2019-Simonis_DERSE19.md | 0 .../publications}/2019-Volland.md | 0 .../publications}/2020-Desai.md | 0 .../publications}/2020-Espinosa.md | 0 .../publications}/2020-ExaFSA.md | 2 +- .../publications}/2020-OFW15-training.md | 0 .../publications}/2020-Rueth-QNWI.md | 0 .../publications}/2021-Rodenberg-FEniCS.md | 0 .../publications}/2022-preCICEv2.md | 0 .../publications}/2023-OpenFOAM-preCICE.md | 0 .../publications}/2025-Workshops.md | 0 content/publications/_index.md | 10 ++ .../testimonials}/01-CIRA.md | 2 +- .../testimonials}/02-Siegen.md | 0 .../testimonials}/03-Strathclyde.md | 0 .../testimonials}/04-Darmstadt.md | 0 .../testimonials}/05-South-Africa.md | 0 .../testimonials}/06-Singapore.md | 0 .../testimonials}/07-Manchester.md | 0 .../testimonials}/08-Delft-Wind-Energy.md | 0 .../testimonials}/09-AIT-Ranshofen.md | 0 .../testimonials}/10-Delft-Aerodynamics.md | 0 .../testimonials}/11-Karlsruhe-FAST.md | 0 .../testimonials}/12-THerMoS.md | 0 .../testimonials}/13-DHCAE.md | 0 .../testimonials}/14-Espinosa.md | 0 .../testimonials}/15-Stuttgart-DuMuX.md | 0 .../testimonials}/16-Stuttgart-Fractures.md | 0 .../testimonials}/17-geoKW.md | 0 .../testimonials}/18-precice-mbdyn.md | 0 .../testimonials}/19-leuven.md | 0 .../testimonials}/20-Stuttgart-OpenDiHu.md | 0 .../testimonials}/21-hokkaido.md | 0 .../testimonials}/22-Stuttgart-Cyclorotor.md | 0 .../testimonials}/22-Stuttgart-inpreCICE.md | 2 +- .../testimonials}/23-Strathclyde.md | 0 .../testimonials}/24-LuXDEM.md | 0 .../testimonials}/25-GOVIKING.md | 0 .../testimonials}/26-vki-closed-loop.md | 0 .../testimonials}/27-ariane-fips.md | 2 +- .../testimonials}/28-biodynamo.md | 2 +- content/testimonials/_index.md | 10 ++ content/tutorials/_index.md | 10 ++ content/tutorials/overview.md | 12 +- content/tutorials/visualization.md | 2 + {_data => data}/alerts.yml | 0 {_data => data}/developer.yaml | 0 {_data => data}/funding.yml | 24 ++-- {_data => data}/logowall.yml | 0 .../sidebars/community_sidebar.yaml | 0 {_data => data}/sidebars/docs_sidebar.yml | 0 {_data => data}/sidebars/home_sidebar.yml | 0 .../sidebars/pdf_appendix_sidebar.yaml | 0 {_data => data}/sidebars/tutorial_sidebar.yml | 0 {_data => data}/timeline.yaml | 0 {_data => data}/topnav.yml | 0 CNAME => static/CNAME | 0 {assets => static/assets}/data/faq.json | 0 {assets => static/assets}/data/news.json | 0 .../assets}/openfoam-precice.bib | 0 .../assets}/organizing-workshops.bib | 0 .../assets}/precice-adapters-gacm2017.bib | 0 {assets => static/assets}/precice-v2.bib | 0 {assets => static/assets}/precice.bib | 0 {assets => static/assets}/rodenberg2021.bib | 0 {css => static/css}/bookcover.css | 0 {css => static/css}/bootstrap.min.css | 0 {css => static/css}/bootstrap.min.css.map | 0 {css => static/css}/boxshadowproperties.css | 0 {css => static/css}/community-spotlight.css | 0 {css => static/css}/customstyles-precice.css | 4 +- {css => static/css}/customstyles.css | 19 +-- .../css}/fontawesome.6.7.2.all.min.css | 0 .../css}/fonts/KaTeX_AMS-Regular.ttf | Bin .../css}/fonts/KaTeX_AMS-Regular.woff | Bin .../css}/fonts/KaTeX_AMS-Regular.woff2 | Bin .../css}/fonts/KaTeX_Caligraphic-Bold.ttf | Bin .../css}/fonts/KaTeX_Caligraphic-Bold.woff | Bin .../css}/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin .../css}/fonts/KaTeX_Caligraphic-Regular.ttf | Bin .../css}/fonts/KaTeX_Caligraphic-Regular.woff | Bin .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin .../css}/fonts/KaTeX_Fraktur-Bold.ttf | Bin .../css}/fonts/KaTeX_Fraktur-Bold.woff | Bin .../css}/fonts/KaTeX_Fraktur-Bold.woff2 | Bin .../css}/fonts/KaTeX_Fraktur-Regular.ttf | Bin .../css}/fonts/KaTeX_Fraktur-Regular.woff | Bin .../css}/fonts/KaTeX_Fraktur-Regular.woff2 | Bin {css => static/css}/fonts/KaTeX_Main-Bold.ttf | Bin .../css}/fonts/KaTeX_Main-Bold.woff | Bin .../css}/fonts/KaTeX_Main-Bold.woff2 | Bin .../css}/fonts/KaTeX_Main-BoldItalic.ttf | Bin .../css}/fonts/KaTeX_Main-BoldItalic.woff | Bin .../css}/fonts/KaTeX_Main-BoldItalic.woff2 | Bin .../css}/fonts/KaTeX_Main-Italic.ttf | Bin .../css}/fonts/KaTeX_Main-Italic.woff | Bin .../css}/fonts/KaTeX_Main-Italic.woff2 | Bin .../css}/fonts/KaTeX_Main-Regular.ttf | Bin .../css}/fonts/KaTeX_Main-Regular.woff | Bin .../css}/fonts/KaTeX_Main-Regular.woff2 | Bin .../css}/fonts/KaTeX_Math-BoldItalic.ttf | Bin .../css}/fonts/KaTeX_Math-BoldItalic.woff | Bin .../css}/fonts/KaTeX_Math-BoldItalic.woff2 | Bin .../css}/fonts/KaTeX_Math-Italic.ttf | Bin .../css}/fonts/KaTeX_Math-Italic.woff | Bin .../css}/fonts/KaTeX_Math-Italic.woff2 | Bin .../css}/fonts/KaTeX_SansSerif-Bold.ttf | Bin .../css}/fonts/KaTeX_SansSerif-Bold.woff | Bin .../css}/fonts/KaTeX_SansSerif-Bold.woff2 | Bin .../css}/fonts/KaTeX_SansSerif-Italic.ttf | Bin .../css}/fonts/KaTeX_SansSerif-Italic.woff | Bin .../css}/fonts/KaTeX_SansSerif-Italic.woff2 | Bin .../css}/fonts/KaTeX_SansSerif-Regular.ttf | Bin .../css}/fonts/KaTeX_SansSerif-Regular.woff | Bin .../css}/fonts/KaTeX_SansSerif-Regular.woff2 | Bin .../css}/fonts/KaTeX_Script-Regular.ttf | Bin .../css}/fonts/KaTeX_Script-Regular.woff | Bin .../css}/fonts/KaTeX_Script-Regular.woff2 | Bin .../css}/fonts/KaTeX_Size1-Regular.ttf | Bin .../css}/fonts/KaTeX_Size1-Regular.woff | Bin .../css}/fonts/KaTeX_Size1-Regular.woff2 | Bin .../css}/fonts/KaTeX_Size2-Regular.ttf | Bin .../css}/fonts/KaTeX_Size2-Regular.woff | Bin .../css}/fonts/KaTeX_Size2-Regular.woff2 | Bin .../css}/fonts/KaTeX_Size3-Regular.ttf | Bin .../css}/fonts/KaTeX_Size3-Regular.woff | Bin .../css}/fonts/KaTeX_Size3-Regular.woff2 | Bin .../css}/fonts/KaTeX_Size4-Regular.ttf | Bin .../css}/fonts/KaTeX_Size4-Regular.woff | Bin .../css}/fonts/KaTeX_Size4-Regular.woff2 | Bin .../css}/fonts/KaTeX_Typewriter-Regular.ttf | Bin .../css}/fonts/KaTeX_Typewriter-Regular.woff | Bin .../css}/fonts/KaTeX_Typewriter-Regular.woff2 | Bin {css => static/css}/katex.min.css | 0 {css => static/css}/landing-page.css | 0 {css => static/css}/syntax.css | 0 {css => static/css}/theme-precice.css | 0 .../fonts}/FiraMono-Regular.woff2 | Bin {fonts => static/fonts}/FiraSans-Bold.woff2 | Bin {fonts => static/fonts}/FiraSans-Italic.woff2 | Bin {fonts => static/fonts}/FiraSans-Light.woff2 | Bin {fonts => static/fonts}/FiraSans-Medium.woff2 | Bin .../fonts}/FiraSans-Regular.woff2 | Bin {images => static/images}/.gitignore | 0 {images => static/images}/404.png | Bin .../images}/community-banner.jpg | Bin .../images}/community-banner2.jpg | Bin .../images}/community-banner3.jpg | Bin .../images}/coupled_OF-CCX-mySolver_path.svg | 0 .../images}/developer/Benjamin_Uekermann.jpg | Bin .../images}/developer/Carme_Homs_Pons.jpg | Bin .../images}/developer/David_Schneider.jpg | Bin .../images}/developer/Felix_Neubauer.jpg | Bin .../images}/developer/Frederic_Simonis.jpg | Bin .../developer/Gerasimos_Chourdakis.jpg | Bin .../images}/developer/Hans_Bungartz.jpg | Bin .../images}/developer/Ishaan_Desai.jpg | Bin .../images}/developer/Jun_Chen.jpg | Bin .../images}/developer/Miriam_Mehl.jpg | Bin .../images}/developer/precice-devs.png | Bin .../images}/docs/Bindings.drawio | 0 {images => static/images}/docs/Bindings.png | Bin .../configuration-diameter-python-action.png | Bin .../configuration-elastic-tube-diameter.png | Bin ...pping-geometric-multiscale-axial-1d-3d.png | Bin ...ping-geometric-multiscale-axial-radial.png | Bin ...ping-geometric-multiscale-radial-1d-3d.png | Bin .../docs/configuration-mapping-variants.png | Bin .../docs/configuration-mesh-exchange.png | Bin .../images}/docs/configuration/doc-base.dot | 0 .../images}/docs/configuration/doc-base.png | Bin .../docs/configuration/doc-cplscheme.dot | 0 .../docs/configuration/doc-cplscheme.png | Bin .../images}/docs/configuration/doc-m2n.dot | 0 .../images}/docs/configuration/doc-m2n.png | Bin .../configuration/doc-mapping-options.svg | 0 .../configuration/doc-mapping-rbf-alias.svg | 0 .../doc-mapping-rbf-executors.svg | 0 .../docs/configuration/doc-mapping.dot | 0 .../docs/configuration/doc-mapping.png | Bin .../docs/configuration/doc-participants.dot | 0 .../docs/configuration/doc-participants.png | Bin .../docs/couple-your-code-fem-meshes.png | Bin .../couple-your-code-parallel-coupling.svg | 0 .../couple-your-code-parallel-coupling.tex | 0 .../docs/couple-your-code-serial-coupling.svg | 0 .../docs/couple-your-code-serial-coupling.tex | 0 .../couple-your-code-timestepping-first.odg | Bin .../couple-your-code-timestepping-first.png | Bin .../couple-your-code-timestepping-fixed.odg | Bin .../couple-your-code-timestepping-fixed.png | Bin ...ter-software-engineering-approaches.drawio | 0 ...dapter-software-engineering-approaches.svg | 0 .../configuration-files-precice-adapter.svg | 0 .../APIRelativeReadTime.pdf | Bin .../APIRelativeReadTime.png | Bin .../APIRelativeReadTime.tex | 0 .../WaveformConstant.png | Bin .../WaveformLinear.png | Bin .../docs/dev-docs-release-dependencies.dot | 0 .../docs/dev-docs-release-dependencies.svg | 0 .../images}/docs/dev-docs-release-example.svg | 0 .../docs/docs-installation-vm-screenshot.jpg | Bin .../images}/docs/install-decision.png | Bin .../images}/docs/install-decision.xml | 0 .../images}/docs/install-wsl.png | Bin .../docs/parallelizationSingleMesh.png | Bin .../parallelizationSingleMeshDuplicate.png | Bin .../images}/docs/parallelizationTwoMeshes.png | Bin .../docs/parallelizationWOCoupling.png | Bin .../config-visualizer-gui-heat-exchanger.png | Bin .../tooling/config-visualizer-gui-main.png | Bin .../tooling/elastictube1d-cpl-com-merged.svg | 0 .../docs/tooling/elastictube1d-data-flow.svg | 0 .../docs/tooling/elastictube1d-events.png | Bin .../docs/tooling/elastictube1d-full.svg | 0 .../profiling-aste-perfetto-parallel-all.png | Bin ...ing-aste-perfetto-parallel-fundamental.png | Bin .../profiling-elastictube1d-serial.png | Bin {images => static/images}/doughnuts.jpg | Bin .../events/precice2020-group-cropped.jpg | Bin .../images}/events/precice2020-group.jpeg | Bin .../images}/events/precice2020-support.jpeg | Bin .../images}/events/precice2020.svg | 0 .../images}/events/precice2021-group.png | Bin .../images}/events/precice2021.svg | 0 .../images}/events/precice2022-group.png | Bin .../images}/events/precice2022.svg | 0 .../images}/events/precice2023-course.jpeg | Bin .../events/precice2023-group-inside.jpeg | Bin .../images}/events/precice2023-group.jpg | Bin .../images}/events/precice2023-material.jpeg | Bin .../events/precice2023-world-cafe.jpeg | Bin .../images}/events/precice2023.svg | 0 .../images}/events/precice2024.svg | 0 .../precice2025/precice2025-logo-dtec.bw.jpg | Bin .../precice2025/precice2025-logo-hpc-bw.png | Bin .../events/precice2025/precice2025.svg | 0 .../events/precice2027/precice2027-path.svg | 0 .../precice-training-2026-slide.png | Bin .../training2026/precice-training-2026.svg | 0 .../images}/events/workshop24-group.jpg | Bin {images => static/images}/favicon.ico | Bin .../images}/funding/4tu+_ami.png | Bin {images => static/images}/funding/bmuv.png | Bin {images => static/images}/funding/dfg.jpg | Bin {images => static/images}/funding/eu.png | Bin {images => static/images}/funding/konwihr.png | Bin {images => static/images}/funding/simtech.png | Bin {images => static/images}/funding/sppexa.jpg | Bin {images => static/images}/heat-exchange.jpg | Bin {images => static/images}/icon-310x310.png | Bin {images => static/images}/icon.png | Bin {images => static/images}/icon.svg | 0 {images => static/images}/icon_filled.svg | 0 {images => static/images}/icon_filled2.svg | 0 {images => static/images}/icon_white.svg | 0 .../images}/lead-image-precice.svg | 0 .../images}/licensebutton-by-40_88x31.png | Bin {images => static/images}/logo-infos.png | Bin {images => static/images}/logo/LICENSE.md | 0 {images => static/images}/logo/logo-SU2.png | Bin {images => static/images}/logo/logo-ait.png | Bin .../images}/logo/logo-ariane.png | Bin {images => static/images}/logo/logo-astar.png | Bin {images => static/images}/logo/logo-ata.jpg | Bin {images => static/images}/logo/logo-awi.svg | 0 {images => static/images}/logo/logo-bgu.png | Bin .../images}/logo/logo-bitron.jpeg | Bin .../images}/logo/logo-braunschweig.jpg | Bin .../images}/logo/logo-calculix.png | Bin {images => static/images}/logo/logo-cira.jpg | Bin .../images}/logo/logo-codeaster.png | Bin .../images}/logo/logo-corvid.png | Bin .../images}/logo/logo-darmstadt.png | Bin .../images}/logo/logo-dealii.png | Bin {images => static/images}/logo/logo-delft.png | Bin {images => static/images}/logo/logo-dhcae.png | Bin .../images}/logo/logo-eth-psi.png | Bin .../images}/logo/logo-eurocfd.png | Bin .../images}/logo/logo-ex-mente.png | Bin .../images}/logo/logo-exeter.png | Bin .../images}/logo/logo-fenics.png | Bin {images => static/images}/logo/logo-fnb.png | Bin {images => static/images}/logo/logo-grs.jpeg | Bin {images => static/images}/logo/logo-gzhy.png | Bin .../images}/logo/logo-hokkaido.png | Bin {images => static/images}/logo/logo-hsu.svg | 0 {images => static/images}/logo/logo-hwu.png | Bin {images => static/images}/logo/logo-iag.png | Bin {images => static/images}/logo/logo-ices.png | Bin {images => static/images}/logo/logo-ifpen.jpg | Bin {images => static/images}/logo/logo-iit.png | Bin {images => static/images}/logo/logo-ikz.svg | 0 .../images}/logo/logo-illinois.png | Bin {images => static/images}/logo/logo-ipp.jpeg | Bin {images => static/images}/logo/logo-iws.jpg | Bin {images => static/images}/logo/logo-kaeri.png | Bin {images => static/images}/logo/logo-kit.png | Bin {images => static/images}/logo/logo-kth.png | Bin .../images}/logo/logo-leonardo.svg | 0 .../images}/logo/logo-leuven.png | Bin {images => static/images}/logo/logo-llnl.png | Bin {images => static/images}/logo/logo-lsm.gif | Bin {images => static/images}/logo/logo-lux.png | Bin .../images}/logo/logo-manchester.png | Bin .../images}/logo/logo-mintek.jpeg | Bin {images => static/images}/logo/logo-mtu.png | Bin .../images}/logo/logo-ndorms.jpeg | Bin {images => static/images}/logo/logo-nrg.png | Bin {images => static/images}/logo/logo-ntua.jpeg | Bin .../images}/logo/logo-nutils.png | Bin .../images}/logo/logo-openfoam.png | Bin {images => static/images}/logo/logo-ornl.svg | 0 .../images}/logo/logo-oxford.png | Bin .../images}/logo/logo-pol-milano.png | Bin .../images}/logo/logo-pprime.png | Bin .../images}/logo/logo-rwth-mbd.svg | 0 {images => static/images}/logo/logo-sc.png | Bin .../images}/logo/logo-siegen.png | Bin {images => static/images}/logo/logo-split.png | Bin .../images}/logo/logo-strathclyde.png | Bin {images => static/images}/logo/logo-sts.png | Bin .../images}/logo/logo-stuttgart.png | Bin .../images}/logo/logo-sunyatsen.png | Bin {images => static/images}/logo/logo-tue.png | Bin {images => static/images}/logo/logo-tum.png | Bin {images => static/images}/logo/logo-ucl.png | Bin {images => static/images}/logo/logo-ufs.png | Bin {images => static/images}/logo/logo-upc.png | Bin .../images}/logo/logo_stuttgart_400px.png | Bin .../images}/logo/logo_tue_400px.png | Bin .../images}/logo/logo_tum_400px.png | Bin {images => static/images}/paper-thumbnail.jpg | Bin .../images}/paper-v2-new-thumbnail.jpg | Bin .../images}/paper-v2-thumbnail.jpg | Bin .../images}/placeholder/placeholder.png | Bin .../images}/placeholder/placeholder_icon.png | Bin {images => static/images}/plugandplay.png | Bin .../images}/preCICE_logo_28px.svg | 0 .../images}/preCICE_logo_42px.svg | 0 .../preCICE_logo_whiteborder_small.png | Bin .../preCICE_logo_whiteborder_small.svg | 0 .../images}/preCICE_text_28px.svg | 0 {images => static/images}/precice-icon.svg | 0 .../images}/precice-icon_grey.svg | 0 .../images}/precice-icon_small.svg | 0 {images => static/images}/precice-support.svg | 0 {images => static/images}/precice.png | Bin {images => static/images}/simtech.png | Bin .../images}/testimonial_derek_square.jpg | Bin .../images}/testimonial_kyle_square.jpg | Bin .../images}/testimonial_manchester_square.jpg | Bin .../images}/testimonial_vinhtan_square.jpg | Bin .../testimonials/testimonial-24-LuXDEM.png | Bin .../testimonials/testimonial-25-GOVIKING.png | Bin .../testimonial-26-vki-closed-loop.png | Bin .../testimonial-27-ariane-fips.png | Bin .../testimonials/testimonial-28-biodynamo.png | Bin .../testimonial-ait-ranshofen.png | Bin .../images}/testimonials/testimonial-cira.jpg | Bin .../testimonials/testimonial-darmstadt.jpg | Bin .../testimonial-delft-aerodynamics.jpg | Bin .../testimonial-delft-wind-energy.jpg | Bin .../testimonials/testimonial-dhcae.jpg | Bin .../testimonials/testimonial-espinosa.png | Bin .../testimonials/testimonial-geokw.png | Bin .../testimonials/testimonial-hokkaido.png | Bin .../testimonial-karlsruhe-fast.jpg | Bin .../testimonials/testimonial-leuven.png | Bin .../testimonials/testimonial-manchester.jpg | Bin .../testimonial-precice-mbdyn.png | Bin .../testimonials/testimonial-siegen.jpg | Bin .../testimonials/testimonial-singapore.png | Bin .../testimonials/testimonial-south-africa.jpg | Bin .../testimonial-strathclyde-2.jpg | Bin .../testimonials/testimonial-strathclyde.jpg | Bin .../testimonial-stuttgart-cyclorotor.jpg | Bin .../testimonial-stuttgart-dumux.png | Bin .../testimonial-stuttgart-fractures.png | Bin .../testimonial-stuttgart-inprecice.png | Bin .../testimonial-stuttgart-opendihu.png | Bin .../testimonials/testimonial-thermos.jpg | Bin .../images}/training/training-basics.png | Bin .../images}/training/training-fsi.png | Bin .../images}/training/training-hpc.png | Bin .../training/training-implicit-coupling.png | Bin .../images}/training/training-mapping.png | Bin .../images}/training/training-mm.png | Bin .../images}/training/training-tools.png | Bin .../images}/usp/usp-arbitrary.svg | 0 {images => static/images}/usp/usp-minimal.svg | 0 .../images}/usp/usp-numerics.svg | 0 .../images}/usp/usp-scalability.svg | 0 {js => static/js}/auto-render.min.js | 0 {js => static/js}/copy-code.js | 2 +- {js => static/js}/customscripts.js | 1 - {js => static/js}/forum-fetch.js | 0 {js => static/js}/github-queries.js | 0 {js => static/js}/katex.min.js | 0 {js => static/js}/news-collect.js | 0 {js => static/js}/tex-svg.js | 0 {js => static/js}/toc.js | 0 {material => static/material}/README.md | 0 .../material}/coupled/README.txt | 0 .../material}/coupled/coupled_config.odg | Bin .../material}/coupled/coupled_config.pdf | Bin .../coupled/coupled_threeParticipants.pdf | Bin .../coupled/coupled_threeParticipants.svg | 0 .../material}/coupled/coupled_twoSolvers.odg | Bin .../material}/coupled/coupled_twoSolvers.pdf | Bin .../material}/flyers/preCICE2020-poster.pdf | Bin .../material}/flyers/preCICE2020-poster.png | Bin .../flyers/preCICE_flyer_January2018.pdf | Bin .../flyers/precice2023-poster-thumbnail.png | Bin .../material}/flyers/precice2023-poster.pdf | Bin .../flyers/precice2025-poster-thumbnail.png | Bin .../flyers/precice2027-poster-thumbnail.png | Bin .../logo/preCICE_Logo_4000_transparent.png | Bin .../logo/preCICE_Logo_4000_white.png | Bin .../material}/logo/precice.png | Bin .../material}/overview/precice-overview.pdf | Bin .../material}/overview/precice-overview.png | Bin .../webfonts}/fa-brands-400.eot | Bin .../webfonts}/fa-brands-400.svg | 0 .../webfonts}/fa-brands-400.ttf | Bin .../webfonts}/fa-brands-400.woff | Bin .../webfonts}/fa-brands-400.woff2 | Bin .../webfonts}/fa-regular-400.eot | Bin .../webfonts}/fa-regular-400.svg | 0 .../webfonts}/fa-regular-400.ttf | Bin .../webfonts}/fa-regular-400.woff | Bin .../webfonts}/fa-regular-400.woff2 | Bin .../webfonts}/fa-solid-900.eot | Bin .../webfonts}/fa-solid-900.svg | 0 .../webfonts}/fa-solid-900.ttf | Bin .../webfonts}/fa-solid-900.woff | Bin .../webfonts}/fa-solid-900.woff2 | Bin 618 files changed, 820 insertions(+), 763 deletions(-) create mode 100644 content/_index.md create mode 100644 content/about.md delete mode 100644 content/about/_index.md delete mode 100644 content/about/overview.md delete mode 100644 content/docs/docs-meta/migration-guide.md create mode 100644 content/faq/_index.html rename content/{privacy/overview.md => privacy.md} (99%) delete mode 100644 content/privacy/_index.md rename {collections/_publications => content/publications}/2009-GatzhammerMehl.md (100%) rename {collections/_publications => content/publications}/2009-GatzhammerMehlWeinzierl.md (100%) rename {collections/_publications => content/publications}/2010-BenkBungartzGatzhammerMehlNeckel.md (100%) rename {collections/_publications => content/publications}/2011-BungartzGatzhammerLiebMehlNeckel.md (100%) rename {collections/_publications => content/publications}/2011-GatzhammerMehlNeckel.md (100%) rename {collections/_publications => content/publications}/2013-BungartzGatzhammerMehlUekermann.md (100%) rename {collections/_publications => content/publications}/2014-CajasGatzhammerHouzeauxMehlUekermannVazquez.md (100%) rename {collections/_publications => content/publications}/2014-GatzhammerMehlUekermann.md (100%) rename {collections/_publications => content/publications}/2015-BlomLindnerMehlScheufeleUekermannZuijlen.md (100%) rename {collections/_publications => content/publications}/2015-BungartzKlimachKruppLindnerMehlRollerUekermann.md (99%) rename {collections/_publications => content/publications}/2015-BungartzLindnerMehlUekermann.md (100%) rename {collections/_publications => content/publications}/2015-Farcas.md (100%) rename {collections/_publications => content/publications}/2015-Gatzhammer.md (100%) rename {collections/_publications => content/publications}/2015-LindnerMehlScheufeleUekermann.md (100%) rename {collections/_publications => content/publications}/2015-LindnerMehlUekermann.md (100%) rename {collections/_publications => content/publications}/2015-Mikerov.md (100%) rename {collections/_publications => content/publications}/2015-Scheufele.md (100%) rename {collections/_publications => content/publications}/2015-Shukaev.md (100%) rename {collections/_publications => content/publications}/2016-BlomEtAl.md (94%) rename {collections/_publications => content/publications}/2016-BungartzLindnerGatzhammerMehlScheufeleShukaevUekermann.md (100%) rename {collections/_publications => content/publications}/2016-BungartzLindnerMehlScheufeleShukaevUekermann.md (94%) rename {collections/_publications => content/publications}/2016-Cheung.md (100%) rename {collections/_publications => content/publications}/2016-HaeltermanBogaersUekermannScheufeleMehl.md (100%) rename {collections/_publications => content/publications}/2016-MehlUekermannBijlBlomGatzhammerZuijlen.md (100%) rename {collections/_publications => content/publications}/2016-Rusch.md (100%) rename {collections/_publications => content/publications}/2016-Uekermann.md (100%) rename {collections/_publications => content/publications}/2016-Uekermann2.md (100%) rename {collections/_publications => content/publications}/2017-Abrams.md (100%) rename {collections/_publications => content/publications}/2017-Chourdakis.md (100%) rename {collections/_publications => content/publications}/2017-LindnerMehlUekermann.md (100%) rename {collections/_publications => content/publications}/2017-UekermannBungartzCheungChourdakisRusch.md (100%) rename {collections/_publications => content/publications}/2017-Vollmer.md (100%) rename {collections/_publications => content/publications}/2018-Bungartz-LRZ.md (100%) rename {collections/_publications => content/publications}/2018-Chourdakis_CoSaS.md (100%) rename {collections/_publications => content/publications}/2018-Hoshaber.md (100%) rename {collections/_publications => content/publications}/2018-Reiser.md (100%) rename {collections/_publications => content/publications}/2018-Rueth-ECCMECFD.md (100%) rename {collections/_publications => content/publications}/2018-Rueth-ISC.md (100%) rename {collections/_publications => content/publications}/2018-Rueth-SCSwed.md (100%) rename {collections/_publications => content/publications}/2018-Trujillo.md (100%) rename {collections/_publications => content/publications}/2019-Chourdakis_NLRSE19.md (100%) rename {collections/_publications => content/publications}/2019-Chourdakis_OFW.md (100%) rename {collections/_publications => content/publications}/2019-Hertrich.md (100%) rename {collections/_publications => content/publications}/2019-Huang.md (100%) rename {collections/_publications => content/publications}/2019-Lindner.md (100%) rename {collections/_publications => content/publications}/2019-Risseeuw.md (100%) rename {collections/_publications => content/publications}/2019-Simonis_DERSE19.md (100%) rename {collections/_publications => content/publications}/2019-Volland.md (100%) rename {collections/_publications => content/publications}/2020-Desai.md (100%) rename {collections/_publications => content/publications}/2020-Espinosa.md (100%) rename {collections/_publications => content/publications}/2020-ExaFSA.md (91%) rename {collections/_publications => content/publications}/2020-OFW15-training.md (100%) rename {collections/_publications => content/publications}/2020-Rueth-QNWI.md (100%) rename {collections/_publications => content/publications}/2021-Rodenberg-FEniCS.md (100%) rename {collections/_publications => content/publications}/2022-preCICEv2.md (100%) rename {collections/_publications => content/publications}/2023-OpenFOAM-preCICE.md (100%) rename {collections/_publications => content/publications}/2025-Workshops.md (100%) create mode 100644 content/publications/_index.md rename {collections/_testimonials => content/testimonials}/01-CIRA.md (95%) rename {collections/_testimonials => content/testimonials}/02-Siegen.md (100%) rename {collections/_testimonials => content/testimonials}/03-Strathclyde.md (100%) rename {collections/_testimonials => content/testimonials}/04-Darmstadt.md (100%) rename {collections/_testimonials => content/testimonials}/05-South-Africa.md (100%) rename {collections/_testimonials => content/testimonials}/06-Singapore.md (100%) rename {collections/_testimonials => content/testimonials}/07-Manchester.md (100%) rename {collections/_testimonials => content/testimonials}/08-Delft-Wind-Energy.md (100%) rename {collections/_testimonials => content/testimonials}/09-AIT-Ranshofen.md (100%) rename {collections/_testimonials => content/testimonials}/10-Delft-Aerodynamics.md (100%) rename {collections/_testimonials => content/testimonials}/11-Karlsruhe-FAST.md (100%) rename {collections/_testimonials => content/testimonials}/12-THerMoS.md (100%) rename {collections/_testimonials => content/testimonials}/13-DHCAE.md (100%) rename {collections/_testimonials => content/testimonials}/14-Espinosa.md (100%) rename {collections/_testimonials => content/testimonials}/15-Stuttgart-DuMuX.md (100%) rename {collections/_testimonials => content/testimonials}/16-Stuttgart-Fractures.md (100%) rename {collections/_testimonials => content/testimonials}/17-geoKW.md (100%) rename {collections/_testimonials => content/testimonials}/18-precice-mbdyn.md (100%) rename {collections/_testimonials => content/testimonials}/19-leuven.md (100%) rename {collections/_testimonials => content/testimonials}/20-Stuttgart-OpenDiHu.md (100%) rename {collections/_testimonials => content/testimonials}/21-hokkaido.md (100%) rename {collections/_testimonials => content/testimonials}/22-Stuttgart-Cyclorotor.md (100%) rename {collections/_testimonials => content/testimonials}/22-Stuttgart-inpreCICE.md (98%) rename {collections/_testimonials => content/testimonials}/23-Strathclyde.md (100%) rename {collections/_testimonials => content/testimonials}/24-LuXDEM.md (100%) rename {collections/_testimonials => content/testimonials}/25-GOVIKING.md (100%) rename {collections/_testimonials => content/testimonials}/26-vki-closed-loop.md (100%) rename {collections/_testimonials => content/testimonials}/27-ariane-fips.md (97%) rename {collections/_testimonials => content/testimonials}/28-biodynamo.md (98%) create mode 100644 content/testimonials/_index.md rename {_data => data}/alerts.yml (100%) rename {_data => data}/developer.yaml (100%) rename {_data => data}/funding.yml (90%) rename {_data => data}/logowall.yml (100%) rename {_data => data}/sidebars/community_sidebar.yaml (100%) rename {_data => data}/sidebars/docs_sidebar.yml (100%) rename {_data => data}/sidebars/home_sidebar.yml (100%) rename {_data => data}/sidebars/pdf_appendix_sidebar.yaml (100%) rename {_data => data}/sidebars/tutorial_sidebar.yml (100%) rename {_data => data}/timeline.yaml (100%) rename {_data => data}/topnav.yml (100%) rename CNAME => static/CNAME (100%) rename {assets => static/assets}/data/faq.json (100%) rename {assets => static/assets}/data/news.json (100%) rename {assets => static/assets}/openfoam-precice.bib (100%) rename {assets => static/assets}/organizing-workshops.bib (100%) rename {assets => static/assets}/precice-adapters-gacm2017.bib (100%) rename {assets => static/assets}/precice-v2.bib (100%) rename {assets => static/assets}/precice.bib (100%) rename {assets => static/assets}/rodenberg2021.bib (100%) rename {css => static/css}/bookcover.css (100%) rename {css => static/css}/bootstrap.min.css (100%) rename {css => static/css}/bootstrap.min.css.map (100%) rename {css => static/css}/boxshadowproperties.css (100%) rename {css => static/css}/community-spotlight.css (100%) rename {css => static/css}/customstyles-precice.css (99%) rename {css => static/css}/customstyles.css (98%) rename {css => static/css}/fontawesome.6.7.2.all.min.css (100%) rename {css => static/css}/fonts/KaTeX_AMS-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_AMS-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_AMS-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Bold.ttf (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Bold.woff (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Bold.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Caligraphic-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Bold.ttf (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Bold.woff (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Bold.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Fraktur-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Main-Bold.ttf (100%) rename {css => static/css}/fonts/KaTeX_Main-Bold.woff (100%) rename {css => static/css}/fonts/KaTeX_Main-Bold.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Main-BoldItalic.ttf (100%) rename {css => static/css}/fonts/KaTeX_Main-BoldItalic.woff (100%) rename {css => static/css}/fonts/KaTeX_Main-BoldItalic.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Main-Italic.ttf (100%) rename {css => static/css}/fonts/KaTeX_Main-Italic.woff (100%) rename {css => static/css}/fonts/KaTeX_Main-Italic.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Main-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Main-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Main-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Math-BoldItalic.ttf (100%) rename {css => static/css}/fonts/KaTeX_Math-BoldItalic.woff (100%) rename {css => static/css}/fonts/KaTeX_Math-BoldItalic.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Math-Italic.ttf (100%) rename {css => static/css}/fonts/KaTeX_Math-Italic.woff (100%) rename {css => static/css}/fonts/KaTeX_Math-Italic.woff2 (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Bold.ttf (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Bold.woff (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Bold.woff2 (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Italic.ttf (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Italic.woff (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Italic.woff2 (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_SansSerif-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Script-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Script-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Script-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Size1-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Size1-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Size1-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Size2-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Size2-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Size2-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Size3-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Size3-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Size3-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Size4-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Size4-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Size4-Regular.woff2 (100%) rename {css => static/css}/fonts/KaTeX_Typewriter-Regular.ttf (100%) rename {css => static/css}/fonts/KaTeX_Typewriter-Regular.woff (100%) rename {css => static/css}/fonts/KaTeX_Typewriter-Regular.woff2 (100%) rename {css => static/css}/katex.min.css (100%) rename {css => static/css}/landing-page.css (100%) rename {css => static/css}/syntax.css (100%) rename {css => static/css}/theme-precice.css (100%) rename {fonts => static/fonts}/FiraMono-Regular.woff2 (100%) rename {fonts => static/fonts}/FiraSans-Bold.woff2 (100%) rename {fonts => static/fonts}/FiraSans-Italic.woff2 (100%) rename {fonts => static/fonts}/FiraSans-Light.woff2 (100%) rename {fonts => static/fonts}/FiraSans-Medium.woff2 (100%) rename {fonts => static/fonts}/FiraSans-Regular.woff2 (100%) rename {images => static/images}/.gitignore (100%) rename {images => static/images}/404.png (100%) rename {images => static/images}/community-banner.jpg (100%) rename {images => static/images}/community-banner2.jpg (100%) rename {images => static/images}/community-banner3.jpg (100%) rename {images => static/images}/coupled_OF-CCX-mySolver_path.svg (100%) rename {images => static/images}/developer/Benjamin_Uekermann.jpg (100%) rename {images => static/images}/developer/Carme_Homs_Pons.jpg (100%) rename {images => static/images}/developer/David_Schneider.jpg (100%) rename {images => static/images}/developer/Felix_Neubauer.jpg (100%) rename {images => static/images}/developer/Frederic_Simonis.jpg (100%) rename {images => static/images}/developer/Gerasimos_Chourdakis.jpg (100%) rename {images => static/images}/developer/Hans_Bungartz.jpg (100%) rename {images => static/images}/developer/Ishaan_Desai.jpg (100%) rename {images => static/images}/developer/Jun_Chen.jpg (100%) rename {images => static/images}/developer/Miriam_Mehl.jpg (100%) rename {images => static/images}/developer/precice-devs.png (100%) rename {images => static/images}/docs/Bindings.drawio (100%) rename {images => static/images}/docs/Bindings.png (100%) rename {images => static/images}/docs/configuration-diameter-python-action.png (100%) rename {images => static/images}/docs/configuration-elastic-tube-diameter.png (100%) rename {images => static/images}/docs/configuration-mapping-geometric-multiscale-axial-1d-3d.png (100%) rename {images => static/images}/docs/configuration-mapping-geometric-multiscale-axial-radial.png (100%) rename {images => static/images}/docs/configuration-mapping-geometric-multiscale-radial-1d-3d.png (100%) rename {images => static/images}/docs/configuration-mapping-variants.png (100%) rename {images => static/images}/docs/configuration-mesh-exchange.png (100%) rename {images => static/images}/docs/configuration/doc-base.dot (100%) rename {images => static/images}/docs/configuration/doc-base.png (100%) rename {images => static/images}/docs/configuration/doc-cplscheme.dot (100%) rename {images => static/images}/docs/configuration/doc-cplscheme.png (100%) rename {images => static/images}/docs/configuration/doc-m2n.dot (100%) rename {images => static/images}/docs/configuration/doc-m2n.png (100%) rename {images => static/images}/docs/configuration/doc-mapping-options.svg (100%) rename {images => static/images}/docs/configuration/doc-mapping-rbf-alias.svg (100%) rename {images => static/images}/docs/configuration/doc-mapping-rbf-executors.svg (100%) rename {images => static/images}/docs/configuration/doc-mapping.dot (100%) rename {images => static/images}/docs/configuration/doc-mapping.png (100%) rename {images => static/images}/docs/configuration/doc-participants.dot (100%) rename {images => static/images}/docs/configuration/doc-participants.png (100%) rename {images => static/images}/docs/couple-your-code-fem-meshes.png (100%) rename {images => static/images}/docs/couple-your-code-parallel-coupling.svg (100%) rename {images => static/images}/docs/couple-your-code-parallel-coupling.tex (100%) rename {images => static/images}/docs/couple-your-code-serial-coupling.svg (100%) rename {images => static/images}/docs/couple-your-code-serial-coupling.tex (100%) rename {images => static/images}/docs/couple-your-code-timestepping-first.odg (100%) rename {images => static/images}/docs/couple-your-code-timestepping-first.png (100%) rename {images => static/images}/docs/couple-your-code-timestepping-fixed.odg (100%) rename {images => static/images}/docs/couple-your-code-timestepping-fixed.png (100%) rename {images => static/images}/docs/couple-your-code/adapter-software-engineering/adapter-software-engineering-approaches.drawio (100%) rename {images => static/images}/docs/couple-your-code/adapter-software-engineering/adapter-software-engineering-approaches.svg (100%) rename {images => static/images}/docs/couple-your-code/adapter-software-engineering/configuration-files-precice-adapter.svg (100%) rename {images => static/images}/docs/couple-your-code/couple-your-code-waveform/APIRelativeReadTime.pdf (100%) rename {images => static/images}/docs/couple-your-code/couple-your-code-waveform/APIRelativeReadTime.png (100%) rename {images => static/images}/docs/couple-your-code/couple-your-code-waveform/APIRelativeReadTime.tex (100%) rename {images => static/images}/docs/couple-your-code/couple-your-code-waveform/WaveformConstant.png (100%) rename {images => static/images}/docs/couple-your-code/couple-your-code-waveform/WaveformLinear.png (100%) rename {images => static/images}/docs/dev-docs-release-dependencies.dot (100%) rename {images => static/images}/docs/dev-docs-release-dependencies.svg (100%) rename {images => static/images}/docs/dev-docs-release-example.svg (100%) rename {images => static/images}/docs/docs-installation-vm-screenshot.jpg (100%) rename {images => static/images}/docs/install-decision.png (100%) rename {images => static/images}/docs/install-decision.xml (100%) rename {images => static/images}/docs/install-wsl.png (100%) rename {images => static/images}/docs/parallelizationSingleMesh.png (100%) rename {images => static/images}/docs/parallelizationSingleMeshDuplicate.png (100%) rename {images => static/images}/docs/parallelizationTwoMeshes.png (100%) rename {images => static/images}/docs/parallelizationWOCoupling.png (100%) rename {images => static/images}/docs/tooling/config-visualizer-gui-heat-exchanger.png (100%) rename {images => static/images}/docs/tooling/config-visualizer-gui-main.png (100%) rename {images => static/images}/docs/tooling/elastictube1d-cpl-com-merged.svg (100%) rename {images => static/images}/docs/tooling/elastictube1d-data-flow.svg (100%) rename {images => static/images}/docs/tooling/elastictube1d-events.png (100%) rename {images => static/images}/docs/tooling/elastictube1d-full.svg (100%) rename {images => static/images}/docs/tooling/profiling-aste-perfetto-parallel-all.png (100%) rename {images => static/images}/docs/tooling/profiling-aste-perfetto-parallel-fundamental.png (100%) rename {images => static/images}/docs/tooling/profiling-elastictube1d-serial.png (100%) rename {images => static/images}/doughnuts.jpg (100%) rename {images => static/images}/events/precice2020-group-cropped.jpg (100%) rename {images => static/images}/events/precice2020-group.jpeg (100%) rename {images => static/images}/events/precice2020-support.jpeg (100%) rename {images => static/images}/events/precice2020.svg (100%) rename {images => static/images}/events/precice2021-group.png (100%) rename {images => static/images}/events/precice2021.svg (100%) rename {images => static/images}/events/precice2022-group.png (100%) rename {images => static/images}/events/precice2022.svg (100%) rename {images => static/images}/events/precice2023-course.jpeg (100%) rename {images => static/images}/events/precice2023-group-inside.jpeg (100%) rename {images => static/images}/events/precice2023-group.jpg (100%) rename {images => static/images}/events/precice2023-material.jpeg (100%) rename {images => static/images}/events/precice2023-world-cafe.jpeg (100%) rename {images => static/images}/events/precice2023.svg (100%) rename {images => static/images}/events/precice2024.svg (100%) rename {images => static/images}/events/precice2025/precice2025-logo-dtec.bw.jpg (100%) rename {images => static/images}/events/precice2025/precice2025-logo-hpc-bw.png (100%) rename {images => static/images}/events/precice2025/precice2025.svg (100%) rename {images => static/images}/events/precice2027/precice2027-path.svg (100%) rename {images => static/images}/events/training2026/precice-training-2026-slide.png (100%) rename {images => static/images}/events/training2026/precice-training-2026.svg (100%) rename {images => static/images}/events/workshop24-group.jpg (100%) rename {images => static/images}/favicon.ico (100%) rename {images => static/images}/funding/4tu+_ami.png (100%) rename {images => static/images}/funding/bmuv.png (100%) rename {images => static/images}/funding/dfg.jpg (100%) rename {images => static/images}/funding/eu.png (100%) rename {images => static/images}/funding/konwihr.png (100%) rename {images => static/images}/funding/simtech.png (100%) rename {images => static/images}/funding/sppexa.jpg (100%) rename {images => static/images}/heat-exchange.jpg (100%) rename {images => static/images}/icon-310x310.png (100%) rename {images => static/images}/icon.png (100%) rename {images => static/images}/icon.svg (100%) rename {images => static/images}/icon_filled.svg (100%) rename {images => static/images}/icon_filled2.svg (100%) rename {images => static/images}/icon_white.svg (100%) rename {images => static/images}/lead-image-precice.svg (100%) rename {images => static/images}/licensebutton-by-40_88x31.png (100%) rename {images => static/images}/logo-infos.png (100%) rename {images => static/images}/logo/LICENSE.md (100%) rename {images => static/images}/logo/logo-SU2.png (100%) rename {images => static/images}/logo/logo-ait.png (100%) rename {images => static/images}/logo/logo-ariane.png (100%) rename {images => static/images}/logo/logo-astar.png (100%) rename {images => static/images}/logo/logo-ata.jpg (100%) rename {images => static/images}/logo/logo-awi.svg (100%) rename {images => static/images}/logo/logo-bgu.png (100%) rename {images => static/images}/logo/logo-bitron.jpeg (100%) rename {images => static/images}/logo/logo-braunschweig.jpg (100%) rename {images => static/images}/logo/logo-calculix.png (100%) rename {images => static/images}/logo/logo-cira.jpg (100%) rename {images => static/images}/logo/logo-codeaster.png (100%) rename {images => static/images}/logo/logo-corvid.png (100%) rename {images => static/images}/logo/logo-darmstadt.png (100%) rename {images => static/images}/logo/logo-dealii.png (100%) rename {images => static/images}/logo/logo-delft.png (100%) rename {images => static/images}/logo/logo-dhcae.png (100%) rename {images => static/images}/logo/logo-eth-psi.png (100%) rename {images => static/images}/logo/logo-eurocfd.png (100%) rename {images => static/images}/logo/logo-ex-mente.png (100%) rename {images => static/images}/logo/logo-exeter.png (100%) rename {images => static/images}/logo/logo-fenics.png (100%) rename {images => static/images}/logo/logo-fnb.png (100%) rename {images => static/images}/logo/logo-grs.jpeg (100%) rename {images => static/images}/logo/logo-gzhy.png (100%) rename {images => static/images}/logo/logo-hokkaido.png (100%) rename {images => static/images}/logo/logo-hsu.svg (100%) rename {images => static/images}/logo/logo-hwu.png (100%) rename {images => static/images}/logo/logo-iag.png (100%) rename {images => static/images}/logo/logo-ices.png (100%) rename {images => static/images}/logo/logo-ifpen.jpg (100%) rename {images => static/images}/logo/logo-iit.png (100%) rename {images => static/images}/logo/logo-ikz.svg (100%) rename {images => static/images}/logo/logo-illinois.png (100%) rename {images => static/images}/logo/logo-ipp.jpeg (100%) rename {images => static/images}/logo/logo-iws.jpg (100%) rename {images => static/images}/logo/logo-kaeri.png (100%) rename {images => static/images}/logo/logo-kit.png (100%) rename {images => static/images}/logo/logo-kth.png (100%) rename {images => static/images}/logo/logo-leonardo.svg (100%) rename {images => static/images}/logo/logo-leuven.png (100%) rename {images => static/images}/logo/logo-llnl.png (100%) rename {images => static/images}/logo/logo-lsm.gif (100%) rename {images => static/images}/logo/logo-lux.png (100%) rename {images => static/images}/logo/logo-manchester.png (100%) rename {images => static/images}/logo/logo-mintek.jpeg (100%) rename {images => static/images}/logo/logo-mtu.png (100%) rename {images => static/images}/logo/logo-ndorms.jpeg (100%) rename {images => static/images}/logo/logo-nrg.png (100%) rename {images => static/images}/logo/logo-ntua.jpeg (100%) rename {images => static/images}/logo/logo-nutils.png (100%) rename {images => static/images}/logo/logo-openfoam.png (100%) rename {images => static/images}/logo/logo-ornl.svg (100%) rename {images => static/images}/logo/logo-oxford.png (100%) rename {images => static/images}/logo/logo-pol-milano.png (100%) rename {images => static/images}/logo/logo-pprime.png (100%) rename {images => static/images}/logo/logo-rwth-mbd.svg (100%) rename {images => static/images}/logo/logo-sc.png (100%) rename {images => static/images}/logo/logo-siegen.png (100%) rename {images => static/images}/logo/logo-split.png (100%) rename {images => static/images}/logo/logo-strathclyde.png (100%) rename {images => static/images}/logo/logo-sts.png (100%) rename {images => static/images}/logo/logo-stuttgart.png (100%) rename {images => static/images}/logo/logo-sunyatsen.png (100%) rename {images => static/images}/logo/logo-tue.png (100%) rename {images => static/images}/logo/logo-tum.png (100%) rename {images => static/images}/logo/logo-ucl.png (100%) rename {images => static/images}/logo/logo-ufs.png (100%) rename {images => static/images}/logo/logo-upc.png (100%) rename {images => static/images}/logo/logo_stuttgart_400px.png (100%) rename {images => static/images}/logo/logo_tue_400px.png (100%) rename {images => static/images}/logo/logo_tum_400px.png (100%) rename {images => static/images}/paper-thumbnail.jpg (100%) rename {images => static/images}/paper-v2-new-thumbnail.jpg (100%) rename {images => static/images}/paper-v2-thumbnail.jpg (100%) rename {images => static/images}/placeholder/placeholder.png (100%) rename {images => static/images}/placeholder/placeholder_icon.png (100%) rename {images => static/images}/plugandplay.png (100%) rename {images => static/images}/preCICE_logo_28px.svg (100%) rename {images => static/images}/preCICE_logo_42px.svg (100%) rename {images => static/images}/preCICE_logo_whiteborder_small.png (100%) rename {images => static/images}/preCICE_logo_whiteborder_small.svg (100%) rename {images => static/images}/preCICE_text_28px.svg (100%) rename {images => static/images}/precice-icon.svg (100%) rename {images => static/images}/precice-icon_grey.svg (100%) rename {images => static/images}/precice-icon_small.svg (100%) rename {images => static/images}/precice-support.svg (100%) rename {images => static/images}/precice.png (100%) rename {images => static/images}/simtech.png (100%) rename {images => static/images}/testimonial_derek_square.jpg (100%) rename {images => static/images}/testimonial_kyle_square.jpg (100%) rename {images => static/images}/testimonial_manchester_square.jpg (100%) rename {images => static/images}/testimonial_vinhtan_square.jpg (100%) rename {images => static/images}/testimonials/testimonial-24-LuXDEM.png (100%) rename {images => static/images}/testimonials/testimonial-25-GOVIKING.png (100%) rename {images => static/images}/testimonials/testimonial-26-vki-closed-loop.png (100%) rename {images => static/images}/testimonials/testimonial-27-ariane-fips.png (100%) rename {images => static/images}/testimonials/testimonial-28-biodynamo.png (100%) rename {images => static/images}/testimonials/testimonial-ait-ranshofen.png (100%) rename {images => static/images}/testimonials/testimonial-cira.jpg (100%) rename {images => static/images}/testimonials/testimonial-darmstadt.jpg (100%) rename {images => static/images}/testimonials/testimonial-delft-aerodynamics.jpg (100%) rename {images => static/images}/testimonials/testimonial-delft-wind-energy.jpg (100%) rename {images => static/images}/testimonials/testimonial-dhcae.jpg (100%) rename {images => static/images}/testimonials/testimonial-espinosa.png (100%) rename {images => static/images}/testimonials/testimonial-geokw.png (100%) rename {images => static/images}/testimonials/testimonial-hokkaido.png (100%) rename {images => static/images}/testimonials/testimonial-karlsruhe-fast.jpg (100%) rename {images => static/images}/testimonials/testimonial-leuven.png (100%) rename {images => static/images}/testimonials/testimonial-manchester.jpg (100%) rename {images => static/images}/testimonials/testimonial-precice-mbdyn.png (100%) rename {images => static/images}/testimonials/testimonial-siegen.jpg (100%) rename {images => static/images}/testimonials/testimonial-singapore.png (100%) rename {images => static/images}/testimonials/testimonial-south-africa.jpg (100%) rename {images => static/images}/testimonials/testimonial-strathclyde-2.jpg (100%) rename {images => static/images}/testimonials/testimonial-strathclyde.jpg (100%) rename {images => static/images}/testimonials/testimonial-stuttgart-cyclorotor.jpg (100%) rename {images => static/images}/testimonials/testimonial-stuttgart-dumux.png (100%) rename {images => static/images}/testimonials/testimonial-stuttgart-fractures.png (100%) rename {images => static/images}/testimonials/testimonial-stuttgart-inprecice.png (100%) rename {images => static/images}/testimonials/testimonial-stuttgart-opendihu.png (100%) rename {images => static/images}/testimonials/testimonial-thermos.jpg (100%) rename {images => static/images}/training/training-basics.png (100%) rename {images => static/images}/training/training-fsi.png (100%) rename {images => static/images}/training/training-hpc.png (100%) rename {images => static/images}/training/training-implicit-coupling.png (100%) rename {images => static/images}/training/training-mapping.png (100%) rename {images => static/images}/training/training-mm.png (100%) rename {images => static/images}/training/training-tools.png (100%) rename {images => static/images}/usp/usp-arbitrary.svg (100%) rename {images => static/images}/usp/usp-minimal.svg (100%) rename {images => static/images}/usp/usp-numerics.svg (100%) rename {images => static/images}/usp/usp-scalability.svg (100%) rename {js => static/js}/auto-render.min.js (100%) rename {js => static/js}/copy-code.js (96%) rename {js => static/js}/customscripts.js (97%) rename {js => static/js}/forum-fetch.js (100%) rename {js => static/js}/github-queries.js (100%) rename {js => static/js}/katex.min.js (100%) rename {js => static/js}/news-collect.js (100%) rename {js => static/js}/tex-svg.js (100%) rename {js => static/js}/toc.js (100%) rename {material => static/material}/README.md (100%) rename {material => static/material}/coupled/README.txt (100%) rename {material => static/material}/coupled/coupled_config.odg (100%) rename {material => static/material}/coupled/coupled_config.pdf (100%) rename {material => static/material}/coupled/coupled_threeParticipants.pdf (100%) rename {material => static/material}/coupled/coupled_threeParticipants.svg (100%) rename {material => static/material}/coupled/coupled_twoSolvers.odg (100%) rename {material => static/material}/coupled/coupled_twoSolvers.pdf (100%) rename {material => static/material}/flyers/preCICE2020-poster.pdf (100%) rename {material => static/material}/flyers/preCICE2020-poster.png (100%) rename {material => static/material}/flyers/preCICE_flyer_January2018.pdf (100%) rename {material => static/material}/flyers/precice2023-poster-thumbnail.png (100%) rename {material => static/material}/flyers/precice2023-poster.pdf (100%) rename {material => static/material}/flyers/precice2025-poster-thumbnail.png (100%) rename {material => static/material}/flyers/precice2027-poster-thumbnail.png (100%) rename {material => static/material}/logo/preCICE_Logo_4000_transparent.png (100%) rename {material => static/material}/logo/preCICE_Logo_4000_white.png (100%) rename {material => static/material}/logo/precice.png (100%) rename {material => static/material}/overview/precice-overview.pdf (100%) rename {material => static/material}/overview/precice-overview.png (100%) rename {webfonts => static/webfonts}/fa-brands-400.eot (100%) rename {webfonts => static/webfonts}/fa-brands-400.svg (100%) rename {webfonts => static/webfonts}/fa-brands-400.ttf (100%) rename {webfonts => static/webfonts}/fa-brands-400.woff (100%) rename {webfonts => static/webfonts}/fa-brands-400.woff2 (100%) rename {webfonts => static/webfonts}/fa-regular-400.eot (100%) rename {webfonts => static/webfonts}/fa-regular-400.svg (100%) rename {webfonts => static/webfonts}/fa-regular-400.ttf (100%) rename {webfonts => static/webfonts}/fa-regular-400.woff (100%) rename {webfonts => static/webfonts}/fa-regular-400.woff2 (100%) rename {webfonts => static/webfonts}/fa-solid-900.eot (100%) rename {webfonts => static/webfonts}/fa-solid-900.svg (100%) rename {webfonts => static/webfonts}/fa-solid-900.ttf (100%) rename {webfonts => static/webfonts}/fa-solid-900.woff (100%) rename {webfonts => static/webfonts}/fa-solid-900.woff2 (100%) diff --git a/content/404.md b/content/404.md index c7a40e5b023..1564315ac71 100644 --- a/content/404.md +++ b/content/404.md @@ -3,12 +3,14 @@ title: "Page Not Found" search: exclude hide_sidebar: true permalink: /404.html +aliases: + - /404.html editme: false ---
    -![404 - page not found](images/404.png) +![404 - page not found](/images/404.png)
    diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 00000000000..109729a8088 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,13 @@ +--- +title: preCICE - The Coupling Library +keywords: +toc: false +hide_sidebar: true +topnav: topnav +cascade: + layout: page + comments: false + search: true + sidebar: home_sidebar + topnav: topnav +--- diff --git a/content/about.md b/content/about.md new file mode 100644 index 00000000000..044deb7ceb5 --- /dev/null +++ b/content/about.md @@ -0,0 +1,59 @@ +--- +title: About the preCICE project +permalink: about.html +aliases: + - /about.html + - /timeline/ +keywords: about, project leaders, timeline, impressum, legal +summary: +hide_sidebar: true +toc: false +editme: false +redirect_from: + - /timeline/ +--- + +## Development + +preCICE is developed in the groups of [Benjamin Uekermann (Usability and Sustainability of Simulation Software)](https://www.ipvs.uni-stuttgart.de/departments/us3/) and [Miriam Schulte (Simulation of Large Systems)](https://www.ipvs.uni-stuttgart.de/departments/sgs/) at the University of Stuttgart and in the group of [Hans-Joachim Bungartz (Scientific Computing in Computer Science)](https://www.cs.cit.tum.de/en/sccs/home/) at the Technical University of Munich. [Support contracts](community-support-precice.html) are offered through [TTI GmbH](https://www.tti-stuttgart.de/). + +
    +preCICE contributors +
    + +For the full list of contributors to preCICE please see our [community page](community-contributors). + +The conceptual ideas of preCICE are not completely new. preCICE is an advancement of FSI*ce, developed by Markus Brenk. + +## Planning and development of precice.org + +The website in its current form was planned and implemented by CH Lorenz Research and Innovation Consulting together with the preCICE team. For more information contact [Christopher Lorenz](https://christopherlorenz.com) at christopher[dot]lorenz[at]chlorenz[dot]ug. + +## Funding + +{{< funding >}} + +## Prince XML + +We use a non-commercial license of [Prince XML](http://www.princexml.com/) to generate the PDF version of the documentation. For more information see our [meta documentation page](docs-meta-publish-to-pdf.html). + +## Website analytics + +We use the open-source and privacy-friendly analytics service [Plausible](https://plausible.io/). Everyone can see the [analytics for this website](https://plausible.io/precice.org). + +## Impressum + +This website is maintained by + +Benjamin Uekermann - +Universität Stuttgart - +Universitätsstraße 38 - +70569 Stuttgart + +## Privacy + +You can find the preCICE [privacy policy here](privacy.html). + +![preCICE doughnuts](/images/doughnuts.jpg) + +preCICE is tasty because it is made with love by its contributors. diff --git a/content/about/_index.md b/content/about/_index.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/content/about/overview.md b/content/about/overview.md deleted file mode 100644 index ade1200f8a0..00000000000 --- a/content/about/overview.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: About the preCICE project -permalink: about.html -keywords: about, project leaders, timeline, impressum, legal -summary: -hide_sidebar: true -toc: false -editme: false -redirect_from: - - /about/ - - /timeline/ ---- - -## Development - -preCICE is developed in the groups of [Benjamin Uekermann (Usability and Sustainability of Simulation Software)](https://www.ipvs.uni-stuttgart.de/departments/us3/) and [Miriam Schulte (Simulation of Large Systems)](https://www.ipvs.uni-stuttgart.de/departments/sgs/) at the University of Stuttgart and in the group of [Hans-Joachim Bungartz (Scientific Computing in Computer Science)](https://www.cs.cit.tum.de/en/sccs/home/) at the Technical University of Munich. [Support contracts](community-support-precice.html) are offered through [TTI GmbH](https://www.tti-stuttgart.de/). - -
    -preCICE contributors -
    - -For the full list of contributors to preCICE please see our [community page](community-contributors). - - - -The conceptual ideas of preCICE are not completely new. preCICE is an advancement of FSI*ce, developed by Markus Brenk. - -## Planning and development of precice.org - -The website in its current form was planned and implemented by CH Lorenz Research and Innovation Consulting together with the preCICE team. For more information contact [Christopher Lorenz](https://christopherlorenz.com) at christopher[dot]lorenz[at]chlorenz[dot]ug. - -## Funding - -
    -{% for item in site.data.funding %} -
    -
    -
    - - - {{ item.title }} - - -
    -
    - - Logo - -
    -
    - {% if item.description %}

    {{ item.description }}

    {% endif %} - {% if item.number %}

    Funding number: {{ item.number }}

    {% endif %} -

    Years running: {{ item.period }}

    -
    -
    -
    -
    -
    -{% endfor %} -
    - -## Prince XML - -We use a non-commercial license of [Prince XML](http://www.princexml.com/) to generate the PDF version of the documentation. For more information see our [meta documentation page](docs-meta-publish-to-pdf.html). - -## Website analytics - -We use the open-source and privacy-friendly analytics service [Plausible](https://plausible.io/). Everyone can see the [analytics for this website](https://plausible.io/precice.org). - -## Impressum - -This website is maintained by - -Benjamin Uekermann - -Universität Stuttgart - -Universitätsstraße 38 - -70569 Stuttgart - -## Privacy - -You can find the preCICE [privacy policy here](privacy.html). - -![preCICE doughnuts](images/doughnuts.jpg) - -preCICE is tasty because it is made with love by its contributors. diff --git a/content/community/_index.md b/content/community/_index.md index e69de29bb2d..cc84a6dff95 100644 --- a/content/community/_index.md +++ b/content/community/_index.md @@ -0,0 +1,10 @@ +--- +title: Community +cascade: + layout: page + comments: false + search: true + sidebar: community_sidebar + topnav: topnav + toc: true +--- diff --git a/content/community/channels.md b/content/community/channels.md index cab4f650f7e..e001a8e1584 100644 --- a/content/community/channels.md +++ b/content/community/channels.md @@ -1,6 +1,9 @@ --- title: Community channels permalink: community-channels.html +aliases: + - /community-channels.html + - /resources/ keywords: contact, follow, social, stay in touch, news, videos, YouTube, Gitter, newsletter, newsfeed, mailing list, mastodon, bluesky summary: toc: false @@ -15,7 +18,7 @@ We have all been there: you start using a new tool, only to find out that you do You can find us on our [preCICE forum on Discourse](https://precice.discourse.group/), which is great for structured discussions that help everyone. We try our best to help everyone, but this approach does not scale. We would be very happy if you also try to help others - only together way we can build a helping and welcoming online community! -For quick orientation questions, feel free to drop us a short message on the [preCICE Matrix chatroom]({{ site.matrix_url }}). +For quick orientation questions, feel free to drop us a short message on the [preCICE Matrix chatroom](https://matrix.to/#/#precice_lobby:gitter.im?web-instance%5Belement.io%5D=app.gitter.im). ## I want to stay up-to-date diff --git a/content/community/contribute/contribute-to-precice.md b/content/community/contribute/contribute-to-precice.md index e3146198d6d..6cb8282ab8a 100644 --- a/content/community/contribute/contribute-to-precice.md +++ b/content/community/contribute/contribute-to-precice.md @@ -1,6 +1,8 @@ --- title: Contribute to preCICE permalink: community-contribute-to-precice.html +aliases: + - /community-contribute-to-precice.html keywords: contribute, develop summary: toc: true @@ -72,9 +74,9 @@ or to demonstrate a new feature. We welcome contributions to our [tutorials repo and we will discuss it with you over a few [review](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/reviewing-proposed-changes-in-a-pull-request) iterations. If you roughly follow the guidelines in this section, your contribution could be merged very quickly. Since we aim to maintain and update all tutorials, it is important for us that every tutorial merged follows the same structure and conventions. -{% tip %} +{{< tip >}} Get in touch with us early and we will be very happy to help you with every step! Open a first draft Pull Request on GitHub and we can together bring it into a fitting shape. -{% endtip %} +{{< /tip >}} First time working with Git? Watch a [lecture on Git](https://missing.csail.mit.edu/2020/version-control/). @@ -147,9 +149,9 @@ In the `README.md` file, following the general structure of the existing tutoria - an example picture or video of the results. - Don't forget to adapt the `permalink:` field in the beginning of the file. -{% note %} -If you add a complete new tutorial case, the case also needs to be added to the [tutorials sidebar](https://github.com/precice/precice.github.io/blob/master/_data/sidebars/tutorial_sidebar.yml) on the [tutorials website section](tutorials.html). Please open a pull request to the [website repository](https://github.com/precice/precice.github.io). -{% endnote %} +{{< note >}} +If you add a complete new tutorial case, also add its Hugo module mounts to `config/_default/module.toml` and its permalink to the [tutorials sidebar](https://github.com/precice/precice.github.io/blob/master/data/sidebars/tutorials_sidebar.yml) in a pull request to the [website repository](https://github.com/precice/precice.github.io). +{{< /note >}} ### The metadata file @@ -191,7 +193,6 @@ After testing and merging, we will generate the reference results of the new tes - Mesh names start with the participant/domain name, e.g. `Fluid-Mesh`. - Mesh names of participants with multiple interfaces contain the interface in the mesh name, e.g. `Fluid-Upstream-Mesh`. For meshes on which it is important to distinguish between face centers and face nodes, the modifier comes at the end, e.g. `Fluid-Upstream-Mesh-Centers`. - Watchpoint names should be describing the point, not be a generic name. -- Images need to be named as `tutorials--.png` to be correctly displayed on the website. You can then refer to them as `![title](images/tutorials--.png)`. Subdirectories are not allowed. ### Open a pull request @@ -215,14 +216,20 @@ We automate many checks with [GitHub actions](https://github.com/features/action ### Adding a new tutorial to the website -The content of the tutorials is sourced from the develop branch of the tutorials repository, which is specified in the `.gitmodules` file of the website repository. Hence, in general, anything merged to develop in the tutorials appears on the website. Consider putting some `note` [alert box](docs-meta-cheatsheet.html#alerts) on top of your new tutorial page to describe any unreleased requirements. +Tutorial content is imported from the tutorials repository with Hugo Modules. +The `Update Hugo modules` workflow records the selected tutorial revision in +`go.mod` and `go.sum`. Consider putting a `note` +[alert box](docs-meta-cheatsheet.html#alerts) on top of your new tutorial page +to describe any unreleased requirements. -*New* tutorials will not directly appear on the website, but they need some additional steps. After merging to the tutorials develop, open a pull request with the following changes in the [website repository](https://github.com/precice/precice.github.io) ([example](https://github.com/precice/precice.github.io/pull/275)): +New tutorials will not directly appear on the website. After merging a new +tutorial, open a pull request with these changes in the +[website repository](https://github.com/precice/precice.github.io): -1. Trigger the [update submodules workflow](https://github.com/precice/precice.github.io/actions/workflows/update-submodules.yml) and, after it completes, create a new branch and pull request (this may also happen automatically, or someone from the preCICE team may have to do it for you). -2. Edit the [`_config.yml` file](https://github.com/precice/precice.github.io/blob/master/_config.yml) to append the directory name of your tutorial under `subprojects:`. -3. Edit the [tutorials sidebar](https://github.com/precice/precice.github.io/blob/master/_data/sidebars/tutorial_sidebar.yml) to add your tutorial permalink (defined in the heading of the `README.md` you created) to a fitting place, next to a similar tutorial. -4. Edit the [tutorials landing page](https://github.com/precice/precice.github.io/blob/master/content/tutorials/overview.md) to add your tutorial to the overview. +1. Add the tutorial's Hugo module mounts to `config/_default/module.toml`. +2. Add its permalink to a fitting place in the + [tutorials sidebar](https://github.com/precice/precice.github.io/blob/master/data/sidebars/tutorials_sidebar.yml), next to a similar tutorial. +3. Edit the [tutorials landing page](https://github.com/precice/precice.github.io/blob/master/content/tutorials/overview.md) to add the tutorial to the overview. After your PR gets reviewed, approved, and merged, the website will be built automatically, and your tutorial will appear online in a couple of minutes. @@ -236,13 +243,13 @@ You can pick up issues that you would like to work on from any repository you li Look for [contributing guidelines](https://github.com/precice/precice/blob/develop/docs/CONTRIBUTING.md) in each repository. The [developer documentation](dev-docs-overview.html) will also be useful. -{% tip %} +{{< tip >}} Read on our [Roadmap](fundamentals-roadmap.html) what is already in our to-do list before starting to write large parts of code. -{% endtip %} +{{< /tip >}} -{% tip %} +{{< tip >}} There are [guidelines for adapters](community-guidelines-adapters.html) and [guidelines for application cases](community-guidelines-application-cases.html). -{% endtip %} +{{< /tip >}} ## Helping other users diff --git a/content/community/contribute/open-projects.md b/content/community/contribute/open-projects.md index 6ceba073016..396af727c1e 100644 --- a/content/community/contribute/open-projects.md +++ b/content/community/contribute/open-projects.md @@ -4,6 +4,9 @@ keywords: contribute, GSoC, google summer of code, student summary: Open opportunities for contributing to preCICE toc: true permalink: community-contribute-open-projects.html +aliases: + - /community-contribute-open-projects.html + - /gsoc/ redirect_from: - /gsoc/ --- @@ -32,9 +35,9 @@ If you want to contribute with a student project (typically a thesis), see the [ This page highlights a few specific projects that are not directly suitable for a thesis ([thesis-suitable issues in the core library](https://github.com/precice/precice/issues?q=is%3Aissue%20state%3Aopen%20label%3Athesis)), but are also a bit more than a [good first issue](https://github.com/precice/precice/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22). Some of these projects we advertise publicly, in programs such as the Google Summer of Code. -{% tip %} +{{< tip >}} Are you looking for or offering a thesis / PhD / other related job? Have a look also at [our forum](https://precice.discourse.group/c/jobs/13). -{% endtip %} +{{< /tip >}} ## Google Summer of Code (GSoC) @@ -54,16 +57,16 @@ Additionally, show us what you have tried already (see "entry test" in each proj We will contact you via replies and/or private messages in the forum, to find out together if these topics are a good fit. You can alternatively ask quick questions in the [Matrix chat](https://matrix.to/#/#precice_lobby:gitter.im?web-instance[element.io]=app.gitter.im). Don't miss the [guidelines](#general-guidelines) at the bottom of this page. -{% important %} +{{< important >}} We are a small project, and we are experiencing a spike of activity, which is very difficult to review next to the usual work. Please do not ask whether you can work on an issue - not without details. If you find something interesting to you that you feel it is clear enough for you to contribute, go ahead and submit a PR. We value quality higher than quantity. If you find something interesting, take your time and focus on it. We expect to work with the accepted GSoC participants in the summer. Our capacity to review external contributions before that is very limited. -{% endimportant %} +{{< /important >}} -{% important %} +{{< important >}} We have already received too many pull requests in the period before proposals open. For this reason, we have now restricted interactions with the preCICE repositories to collaborators. If you have not reached out so far, chances for selection are very small. -{% endimportant %} +{{< /important >}} ### Submitting proposals diff --git a/content/community/contributors.md b/content/community/contributors.md index ecea076fa22..c87939de075 100644 --- a/content/community/contributors.md +++ b/content/community/contributors.md @@ -1,6 +1,8 @@ --- title: Contributors permalink: community-contributors.html +aliases: + - /community-contributors.html keywords: contributors, developers, maintainers summary: toc: true @@ -8,33 +10,7 @@ toc: true ## Maintainers -
    -{% assign dev_main = site.data.developer.main | sort: "name" %} -
    -
    -
      - {% for p in dev_main %} - -
      - {% if p.img %} - Portrait - {% endif %} -
      -
      -

      - {{ p.fullname }}
      - {{ p.institution }} -

      -
      -
        - {% if p.orcid %}
      • {% endif %} - {% if p.github %}
      • {% endif %} -
      - - {% endfor %} -
    -
    -
    +{{< developer_list group="main" >}} If you are interested in joining the team of preCICE maintainers, please [contact Benjamin Uekermann](https://www.ipvs.uni-stuttgart.de/departments/us3/). @@ -42,52 +18,10 @@ If you are interested in joining the team of preCICE maintainers, please [contac Previous maintainers and their affiliation at the time of their last significant contribution. -
    -{% assign dev_premain = site.data.developer.main-inactive | sort: "name" %} -
    -
    -
      - {% for p in dev_premain %} - -
      -

      - {{ p.fullname }}
      - {{ p.institution }} -

      -
      -
        - {% if p.orcid %}
      • {% endif %} - {% if p.github %}
      • {% endif %} -
      - - {% endfor %} -
    -
    -
    +{{< developer_list group="main-inactive" >}} ## Further contributors Previous contributors and their affiliation at the time of their last significant contribution. -
    -{% assign dev_contrib = site.data.developer.contributors | sort: "name" %} -
    -
    -
      - {% for p in dev_contrib %} - -
      -

      - {{ p.fullname }}
      - {{ p.institution }} -

      -
      -
        - {% if p.orcid %}
      • {% endif %} - {% if p.github %}
      • {% endif %} -
      - - {% endfor %} -
    -
    -
    +{{< developer_list group="contributors" >}} diff --git a/content/community/minisymposia/eccomas-congress-2022.md b/content/community/minisymposia/eccomas-congress-2022.md index d451f767d59..74d66236057 100644 --- a/content/community/minisymposia/eccomas-congress-2022.md +++ b/content/community/minisymposia/eccomas-congress-2022.md @@ -3,6 +3,8 @@ title: ECCOMAS Congress 2022 keywords: 2022, ECCOMAS, event, events, minisymposium summary: permalink: eccomas-congress-2022.html +aliases: + - /eccomas-congress-2022.html toc: false --- diff --git a/content/community/minisymposia/eccomas-coupled-2019.md b/content/community/minisymposia/eccomas-coupled-2019.md index 320c0bcaa7a..adafa1ec65a 100644 --- a/content/community/minisymposia/eccomas-coupled-2019.md +++ b/content/community/minisymposia/eccomas-coupled-2019.md @@ -3,6 +3,8 @@ title: ECCOMAS Coupled Problems 2019 keywords: 2019, ECCOMAS, COUPLED, event, events, minisymposium summary: permalink: eccomas-coupled-2019.html +aliases: + - /eccomas-coupled-2019.html toc: false --- diff --git a/content/community/minisymposia/eccomas-coupled-2021.md b/content/community/minisymposia/eccomas-coupled-2021.md index 405bed358db..8a06b1d3103 100644 --- a/content/community/minisymposia/eccomas-coupled-2021.md +++ b/content/community/minisymposia/eccomas-coupled-2021.md @@ -3,6 +3,8 @@ title: ECCOMAS Coupled Problems 2021 keywords: 2021, ECCOMAS, COUPLED, event, events, minisymposium summary: permalink: eccomas-coupled-2021.html +aliases: + - /eccomas-coupled-2021.html toc: false --- diff --git a/content/community/minisymposia/eccomas-coupled-2023.md b/content/community/minisymposia/eccomas-coupled-2023.md index 20598e20bac..5cd9413af4b 100644 --- a/content/community/minisymposia/eccomas-coupled-2023.md +++ b/content/community/minisymposia/eccomas-coupled-2023.md @@ -3,6 +3,8 @@ title: ECCOMAS Coupled Problems 2023 keywords: 2023, ECCOMAS, COUPLED, event, events, minisymposium summary: permalink: eccomas-coupled-2023.html +aliases: + - /eccomas-coupled-2023.html toc: false --- diff --git a/content/community/minisymposia/eccomas-coupled-2025.md b/content/community/minisymposia/eccomas-coupled-2025.md index 3c2af1fe02d..a42208e9cc8 100644 --- a/content/community/minisymposia/eccomas-coupled-2025.md +++ b/content/community/minisymposia/eccomas-coupled-2025.md @@ -3,6 +3,8 @@ title: ECCOMAS Coupled Problems 2025 keywords: 2025, ECCOMAS, COUPLED, event, events, minisymposium summary: permalink: eccomas-coupled-2025.html +aliases: + - /eccomas-coupled-2025.html toc: false --- diff --git a/content/community/minisymposia/eccomas-eccm-ecfd-2018.md b/content/community/minisymposia/eccomas-eccm-ecfd-2018.md index d400e778a56..99e92b546fd 100644 --- a/content/community/minisymposia/eccomas-eccm-ecfd-2018.md +++ b/content/community/minisymposia/eccomas-eccm-ecfd-2018.md @@ -3,6 +3,8 @@ title: ECCOMAS ECCM ECFD 2018 keywords: 2018, ECCOMAS, event, events, minisymposium summary: permalink: eccomas-eccm-ecfd-2018.html +aliases: + - /eccomas-eccm-ecfd-2018.html toc: false --- diff --git a/content/community/minisymposia/iacm-wccm-2024.md b/content/community/minisymposia/iacm-wccm-2024.md index a0acc671d92..fe35a79dc84 100644 --- a/content/community/minisymposia/iacm-wccm-2024.md +++ b/content/community/minisymposia/iacm-wccm-2024.md @@ -3,6 +3,8 @@ title: iacm WCCM 2024 keywords: 2024, IACM, ECCOMAS, WCCM, event, events, minisymposium summary: permalink: iacm-wccm-2024.html +aliases: + - /iacm-wccm-2024.html toc: false --- diff --git a/content/community/minisymposia/wccm-2021.md b/content/community/minisymposia/wccm-2021.md index 8f62ac72e68..5e844c64751 100644 --- a/content/community/minisymposia/wccm-2021.md +++ b/content/community/minisymposia/wccm-2021.md @@ -3,6 +3,8 @@ title: ECCOMAS WCCM 2020 keywords: 2020, WCCM, ECCOMAS, event, events, minisymposium summary: permalink: community-events-wccm-eccomas-2020.html +aliases: + - /community-events-wccm-eccomas-2020.html toc: false --- @@ -14,9 +16,9 @@ The [ECCOMAS WCCM 2020](https://web.archive.org/web/20201203110253/https://www.w Thanks to the WCCM organizers, authors were given access to their recorded talks to be shared with the public. The links of the titles below lead to the recordings on SlideLive. -{% note %} +{{< note >}} If you gave a talk at the minisymposium, please contact us and we will include it in the list! -{% endnote %} +{{< /note >}} - 2067 - [An Introduction to the preCICE Coupling Library](https://slideslive.com/38944676) by Gerasimos Chourdakis - 2340 - [Adaptive Dynamic Meshes for Fully-Parallel Partitioned Multi-Physics in preCICE](https://slideslive.com/38944678) by Frédéric Simonis diff --git a/content/community/minisymposia/wccomas-wccm-2026.md b/content/community/minisymposia/wccomas-wccm-2026.md index 3c49e68512d..d890e30a0fc 100644 --- a/content/community/minisymposia/wccomas-wccm-2026.md +++ b/content/community/minisymposia/wccomas-wccm-2026.md @@ -3,6 +3,8 @@ title: ECCOMAS WCCM 2026 keywords: 2026, ECCOMAS, WCCM, event, events, minisymposium summary: permalink: eccomas-wccm-2026.html +aliases: + - /eccomas-wccm-2026.html toc: false --- diff --git a/content/community/overview.md b/content/community/overview.md index 47116813b8c..eaf2de3144f 100644 --- a/content/community/overview.md +++ b/content/community/overview.md @@ -1,19 +1,21 @@ --- title: Become part of the preCICE community permalink: community.html +aliases: + - /community.html keywords: summary: toc: false editme: true --- -preCICE Workshop banner +preCICE Workshop banner ## preCICE workshops Do you want to meet the community and learn what is new in preCICE? There is no better way than to join [one of our workshops](precice-workshop.html) or [trainings](community-training.html)! -preCICE Workshop group picture +preCICE Workshop group picture ## The preCICE forum @@ -30,12 +32,7 @@ There are different ways how to support preCICE and get priority support from th We have compiled a community showcase with several of the most impressive preCICE implementations. The range of application fields is diverse, including e.g. simulating the [temperatures on the moon](community-projects.html#simulation-of-temperatures-on-the-moon-with-thermos), the [biomechanics of the heart valve](community-projects.html#evaluation-of-heart-valve-biomechanics), [modelling wind in urban areas](community-projects.html#hybrid-simulation-methods-for-wind-modelling-in-urban-areas), and simulating [high impact loads on structures](community-projects.html#fsi-simulations-of-high-impact-loads-on-structures). You can find many more use cases on the [community stories page](community-projects.html). -{% assign testimonials = site.testimonials | reverse %} -{%- for testimonial in testimonials -%} -{%- if testimonial.img -%} -Overview of preCICE user stories -{%- endif -%} -{% endfor %} +{{< testimonial_avatars >}} ## Contributions to preCICE @@ -43,4 +40,4 @@ Since its first commit in 2008, preCICE has been developed by three generations Some of the people that have significantly contributed to repositories of preCICE on GitHub (arbitrary order): -{% include community_spotlight.html %} +{{< community_spotlight >}} diff --git a/content/community/projects.md b/content/community/projects.md index 1e959e9f846..998d7dbc1c4 100644 --- a/content/community/projects.md +++ b/content/community/projects.md @@ -1,6 +1,9 @@ --- title: Community stories permalink: community-projects.html +aliases: + - /community-projects.html + - /testimonials/ keywords: summary: toc: true @@ -8,37 +11,15 @@ redirect_from: /testimonials/ editme: false --- -{{site.data.alerts.note}} +{{< note >}} Do you use preCICE? We are always happy to hear about interesting projects that use preCICE. To add your project here, just fill the form and we will take care of the rest. -If you prefer, you can directly create a pull request to the website repository on GitHub (it is easy also if you don't yet have any GitHub experience!). A copy of a previous testimonial is a great starting point. Adjust it to your liking, and add a picture. +If you prefer, you can directly create a pull request to the website repository on GitHub (it is easy also if you don't yet have any GitHub experience!). A copy of a previous testimonial is a great starting point. Adjust it to your liking, and add a picture. A good example is this pull request.
    -{{site.data.alerts.end}} +{{< /note >}}
    -{% assign testimonials = site.testimonials | reverse %} -{% for testimonial in testimonials %} - -

    {{ testimonial.title }}

    - -
    -
    - -{{ testimonial.content }} -—**[{{ testimonial.author }}]({{ testimonial.author_link }})** -{{ testimonial.organisation }} - -
    -
    - -
    -{{ testimonial.title }} -
    {{ testimonial.title }}
    -
    - -
    -
    -{% endfor %} +{{< testimonials >}}
    diff --git a/content/community/support-precice.md b/content/community/support-precice.md index 4e7e128778c..8a05c9de89d 100644 --- a/content/community/support-precice.md +++ b/content/community/support-precice.md @@ -1,6 +1,8 @@ --- title: You support preCICE – preCICE supports you permalink: community-support-precice.html +aliases: + - /community-support-precice.html keywords: support, priority support, private support, research project, industry, commercial, license, contracting, sub-contracting, service level agreement, NDA, price, on-site meeting, training summary: Support preCICE to help the software remain and grow. In return, the preCICE team supports your work. There are three different variants for such a collaboration. toc: true diff --git a/content/community/training.md b/content/community/training.md index eb762f12d80..511e25c8c2c 100644 --- a/content/community/training.md +++ b/content/community/training.md @@ -3,6 +3,8 @@ title: preCICE training keywords: workshop, teaching, support, api, implicit coupling, tools, data mapping, training summary: A hands-on introduction to preCICE, recommended for new users that want to learn how to couple their own codes and beyond. permalink: community-training.html +aliases: + - /community-training.html toc: true --- @@ -27,43 +29,43 @@ We regularly add new modules - don't hesitate to let us know if you would have a We couple two simple Python codes, discussing the basic methods of the preCICE API. -![Basics training: Configuration](images/training/training-basics.png) +![Basics training: Configuration](/images/training/training-basics.png) ### Tools We take a tour over available tools to configure, understand, and post-process preCICE simulations. More specifically, we have a look at the preCICE logger, config visualizer, mesh exports, and watchpoints of preCICE. We also discuss common tips for visualizing partitioned simulations in ParaView. -![Basics training: Tools](images/training/training-tools.png) +![Basics training: Tools](/images/training/training-tools.png) ### Implicit coupling We use a conjugate heat transfer scenario coupling OpenFOAM with Nutils to study implicit coupling, including acceleration methods. -![Basics training: Implicit coupling](images/training/training-implicit-coupling.png) +![Basics training: Implicit coupling](/images/training/training-implicit-coupling.png) ### Data mapping We explore aspects of accuracy and efficiency in data mapping, using [ASTE](tooling-aste.html). -![Basics training: Mapping](images/training/training-mapping.png) +![Basics training: Mapping](/images/training/training-mapping.png) ### Workflow for FSI simulations In this [community-contributed part of the course](https://github.com/precice/community-training/tree/main/fsi-workflow), we are going step by step through the process of creating a fluid-structure interaction simulation coupling CalculiX and OpenFOAM. We start by creating the meshes for both solvers, using FreeCAD and snappyHexMesh. We then setup and run single-physics simulations, before we couple them. -![Application training: FSI workflow](images/training/training-fsi.png) +![Application training: FSI workflow](/images/training/training-fsi.png) ### Parallelization and HPC workflows We parallelize the same Python codes used in the Basics module, we analyze the performance-related events, run partitioned simulations in parallel on SLURM-enabled systems, and look deeper into common performance-related pitfalls. -![HPC training: Tracing](images/training/training-hpc.png) +![HPC training: Tracing](/images/training/training-hpc.png) ### Macro-micro coupling We couple many micro simulations to a macro simulation: We use the [Micro Manager](tooling-micro-manager-overview.html) to set up Python and C++ micro simulations, learn how manage runtime using adaptivity, implement model adaptivity, and run the micro simulations in parallel with adaptivity and load balancing. -![Macro-Micro training: Adaptivity](images/training/training-mm.png) +![Macro-Micro training: Adaptivity](/images/training/training-mm.png) ## How to prepare? @@ -73,19 +75,19 @@ You can either (a) use a prepared system image that we provide (a virtual machin To reduce system-related friction during the training, we recommend starting with option (a). On virtual trainings, that is a VM image; on in-person trainings, that might be a bootable live USB. -{% important %} +{{< important >}} Before the training, verify your installation, and contact us as soon as possible regarding any issues. For example, try running the [elastic-tube-1d Python tutorial](tutorials-elastic-tube-1d.html) (check if it is already under `~/tutorials/`). -{% endimportant %} +{{< /important >}} ### Provided virtual machine image Close to the training start, you will receive instructions with a link to an up-to-date provided VM image, very similar to the [demo VM](installation-vm.html). We typically provide a [Vagrant](https://developer.hashicorp.com/vagrant) box made for [VirtualBox](https://www.virtualbox.org/). -{% note %} +{{< note >}} At the moment, this modified Ubuntu image is only available for Intel/AMD x86-64 CPUs. -{% endnote %} +{{< /note >}} System requirements: ideally 25GB of free storage, 8GB of RAM, and more than 4 CPU cores. By default, the VM is configured with 4GB of RAM and 4 CPU cores, both configurable. @@ -97,9 +99,9 @@ In our on-site trainings, some bootable USB sticks are provided, based on the Ub allowing you to work on a temporary live session, without installing anything on your system. These should work on any laptop with an x86-64 CPU, as long as you have the rights to boot from USB. In particular, these do not work on Apple Silicon systems. -{% important %} +{{< important >}} If you use a bootable USB, make sure to select trying a live session, and not installing (or take care that you do not remove your data). -{% endimportant %} +{{< /important >}} Notes: diff --git a/content/community/trainings/2026-10.md b/content/community/trainings/2026-10.md index a4a0b83216d..7189ad87666 100644 --- a/content/community/trainings/2026-10.md +++ b/content/community/trainings/2026-10.md @@ -3,10 +3,12 @@ title: preCICE online training 2026 keywords: precice training 2026, event, events, training summary: permalink: precice-online-training-2026-oct.html +aliases: + - /precice-online-training-2026-oct.html toc: false --- -preCICE training banner +preCICE training banner In October 5-9, 2026, we are organizing the first online preCICE training, mainly targeting participants in the US, Canada, and Latin America (time: 12–3 pm EDT (UTC-4)) that cannot easily travel to the [preCICE Workshop](precice-workshop.html) – with the [next workshop being in March 2027](precice-workshop-2027.html). Over the span of one week, the training will include elements of the longer [training course](community-training.html) of the preCICE Workshop, invited talks, and news from the preCICE developers. @@ -54,7 +56,7 @@ We are preparing an interactive online event with 3h slots over a week. Prelimin Feel free to use [this advertising material](https://ipvscloud.informatik.uni-stuttgart.de/s/5tMqRPek4MKq9F9). Did you know? Many past participants only discovered this workshop via a direct email. -preCICE online training advertising slide (png thumbnail) +preCICE online training advertising slide (png thumbnail) {{- end }} +{{- end }} diff --git a/layouts/_default/default_print.html b/layouts/_default/default_print.html index 99cb5c3df5a..ff6360f6c26 100644 --- a/layouts/_default/default_print.html +++ b/layouts/_default/default_print.html @@ -6,7 +6,7 @@ diff --git a/layouts/_default/list.html b/layouts/_default/list.html index 5fe9ca20d48..80ccf503e6c 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -1,4 +1,19 @@ {{ define "main" }} +{{ if eq (site.Params.output | default "web") "pdf" }} +
    +
    +

    {{ .Title }}

    +
    + + {{ with .Params.summary }} +
    {{ . | markdownify }}
    + {{ end }} + + {{ partial "toc.html" . }} + + {{ partial "compat_content.html" . }} +
    +{{ else }}

    {{ .Title }}

    @@ -32,3 +47,4 @@

    {{ .Title }}

    {{ end }}
    {{ end }} +{{ end }} diff --git a/layouts/_default/page.html b/layouts/_default/page.html index 7f59efa7505..451eb748a1c 100644 --- a/layouts/_default/page.html +++ b/layouts/_default/page.html @@ -1,4 +1,19 @@ {{ define "main" }} +{{ if eq (site.Params.output | default "web") "pdf" }} +
    +
    +

    {{ .Title }}

    +
    + + {{ with .Params.summary }} +
    {{ . | markdownify }}
    + {{ end }} + + {{ partial "toc.html" . }} + + {{ partial "compat_content.html" . }} +
    +{{ else }}

    {{ .Title }}

    @@ -30,3 +45,4 @@

    {{ .Title }}

    {{ partial "breadcrumb.html" . }}
    {{ end }} +{{ end }} diff --git a/layouts/_default/page_print.html b/layouts/_default/page_print.html index d2c37886714..e4f50bd7e0d 100644 --- a/layouts/_default/page_print.html +++ b/layouts/_default/page_print.html @@ -13,7 +13,8 @@

    {{ . | markdownify }}

    {{ end }} - {{ .Content }} + {{ partial "toc.html" . }} + {{ partial "compat_content.html" . }}
    diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 7f59efa7505..451eb748a1c 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,4 +1,19 @@ {{ define "main" }} +{{ if eq (site.Params.output | default "web") "pdf" }} +
    +
    +

    {{ .Title }}

    +
    + + {{ with .Params.summary }} +
    {{ . | markdownify }}
    + {{ end }} + + {{ partial "toc.html" . }} + + {{ partial "compat_content.html" . }} +
    +{{ else }}

    {{ .Title }}

    @@ -30,3 +45,4 @@

    {{ .Title }}

    {{ partial "breadcrumb.html" . }}
    {{ end }} +{{ end }} diff --git a/layouts/_markup/render-link.html b/layouts/_markup/render-link.html new file mode 100644 index 00000000000..9a4ca821c57 --- /dev/null +++ b/layouts/_markup/render-link.html @@ -0,0 +1,44 @@ +{{- $destination := .Destination -}} +{{- $fragment := "" -}} +{{- if in $destination "#" -}} + {{- $parts := split $destination "#" -}} + {{- $destination = index $parts 0 -}} + {{- $fragment = index $parts 1 -}} +{{- end -}} + +{{- $isExternal := or (hasPrefix $destination "http://") (hasPrefix $destination "https://") (hasPrefix $destination "mailto:") (hasPrefix $destination "ftp://") -}} +{{- $isAnchorOnly := and (eq $destination "") (ne $fragment "") -}} + +{{- $href := .Destination -}} +{{- $isInternal := false -}} + +{{- if $isAnchorOnly -}} + {{- $href = printf "#%s" $fragment -}} + {{- $isInternal = true -}} +{{- else if not $isExternal -}} + {{- $targetPage := false -}} + {{- if ne $destination "" -}} + {{- $targetPage = .Page.GetPage $destination -}} + {{- if not $targetPage -}} + {{- $targetPage = partial "pdf/page-for-url.html" (dict "site" .Page.Site "url" $destination) -}} + {{- end -}} + {{- end -}} + {{- with $targetPage -}} + {{- $isInternal = true -}} + {{- if ne $fragment "" -}} + {{- $href = printf "%s#%s" .Permalink $fragment -}} + {{- else -}} + {{- $href = .Permalink -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- $classes := slice -}} +{{- if $isInternal -}} + {{- $classes = $classes | append "internal-link" -}} +{{- end -}} +{{- if or (strings.Contains .Text "{{ .Text | safeHTML }} diff --git a/layouts/index.pdfappendixpart.html b/layouts/index.pdfappendixpart.html new file mode 100644 index 00000000000..758d6df3b57 --- /dev/null +++ b/layouts/index.pdfappendixpart.html @@ -0,0 +1 @@ +{{ partial "pdf/appendix-part.html" . }} diff --git a/layouts/index.pdfdocspart.html b/layouts/index.pdfdocspart.html new file mode 100644 index 00000000000..f37042654a9 --- /dev/null +++ b/layouts/index.pdfdocspart.html @@ -0,0 +1 @@ +{{ partial "pdf/docs-part.html" . }} diff --git a/layouts/index.pdftitle.html b/layouts/index.pdftitle.html new file mode 100644 index 00000000000..294dbba61fe --- /dev/null +++ b/layouts/index.pdftitle.html @@ -0,0 +1 @@ +{{ partial "pdf/title.html" . }} diff --git a/layouts/index.pdftoc.html b/layouts/index.pdftoc.html new file mode 100644 index 00000000000..64f164e166e --- /dev/null +++ b/layouts/index.pdftoc.html @@ -0,0 +1 @@ +{{ partial "pdf/toc.html" . }} diff --git a/layouts/index.pdftutorialspart.html b/layouts/index.pdftutorialspart.html new file mode 100644 index 00000000000..c0eeb57c2a9 --- /dev/null +++ b/layouts/index.pdftutorialspart.html @@ -0,0 +1 @@ +{{ partial "pdf/tutorials-part.html" . }} diff --git a/layouts/index.princelist.txt b/layouts/index.princelist.txt new file mode 100644 index 00000000000..e832c680d4d --- /dev/null +++ b/layouts/index.princelist.txt @@ -0,0 +1 @@ +{{ partial "pdf/prince-list.txt" . }} diff --git a/layouts/partials/compat_content.html b/layouts/partials/compat_content.html index 00b2e0454af..d4e7e1e7c24 100644 --- a/layouts/partials/compat_content.html +++ b/layouts/partials/compat_content.html @@ -4,10 +4,13 @@ */}} {{- $rendered := .Content -}} {{- $raw := .RawContent -}} -{{- if or (strings.Contains $raw "{%") (strings.Contains $raw "{{ site.") (strings.Contains $raw "{{site.") -}} +{{- if or (strings.Contains $raw "{%") (strings.Contains $raw "{{ site.") (strings.Contains $raw "{{site.") (strings.Contains $raw "{:.") -}} {{- $content := $raw -}} {{- $blockTags := slice "disclaimer" "experimental" "important" "note" "tip" "version" "warning" -}} + {{- /* Strip legacy Kramdown attribute lists such as {:.no-icon} */ -}} + {{- $content = replaceRE `\{:\.[^}]+\}` `` $content -}} + {{- /* Translate the legacy Jekyll callouts into the existing Hugo shortcodes. */ -}} {{- range $tag := $blockTags -}} {{- $openPattern := printf `{%%[[:space:]]*%s[[:space:]]*%%}` $tag -}} diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 9a1a3403d13..1a9d11e7555 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -48,6 +48,36 @@ {{ with site.Params.mermaid.src }}{{ end }} + `, + plain: "Use tool-config to configure the application. Property Value", + section: "docs", + kind: "page", + tags: ["tool"], + categories: [], + keywords: "configuration", + date: 1_784_198_400, + }, + ], +}; + +test("creates Jekyll-compatible records with heading and anchor metadata", () => { + const records = createRecords(searchExport); + + assert.equal(records.length, 3); + assert.equal(records[0].title, "Example Guide"); + assert.equal(records[0].url, "/docs/example/"); + assert.equal(records[0].anchor, "install"); + assert.deepEqual(records[0].headings, ["Installation"]); + assert.match(records[0].html, /^

    /); + assert.equal(records[1].content, "tool-config"); + assert.equal(records[2].content, "PropertyValue"); + assert.equal(records[0].custom_ranking.heading, 80); + assert.match(records[0].objectID, /^[a-f0-9]{64}$/); + assert.equal(records.some((record) => record.content.includes("ignored content")), false); +}); + +test("creates deterministic object IDs", () => { + const first = createRecords(searchExport).map((record) => record.objectID); + const second = createRecords(searchExport).map((record) => record.objectID); + + assert.deepEqual(first, second); +}); + +test("excludes callouts so a tutorial result starts with its introduction", () => { + const calloutExport = structuredClone(searchExport); + calloutExport.nodesToIndex = "p"; + calloutExport.pages[0].html = ` +

    +

    This document introduces the example setup.

    + `; + calloutExport.pages[0].plain = "Note: Download the example files. This document introduces the example setup."; + + const records = createRecords(calloutExport); + + assert.equal(records.length, 1); + assert.equal(records[0].content, "This document introduces the example setup."); + assert.equal(records[0].content.includes("Download the example files"), false); +}); + +test("splits oversized records without exceeding the configured limit", () => { + const longExport = structuredClone(searchExport); + longExport.nodesToIndex = "p"; + longExport.pages[0].html = `

    ${"word ".repeat(400)}

    `; + longExport.pages[0].plain = "word ".repeat(400); + + const records = createRecords(longExport, { maxRecordSize: 500 }); + + assert.ok(records.length > 1); + assert.ok(records.every((record) => recordByteSize(record) <= 500)); +}); + +test("rejects invalid Hugo exports and command-line arguments", () => { + assert.throws(() => validateSearchExport({ schemaVersion: 2 }), /Unsupported Algolia export schema/); + assert.throws(() => parseCliArgs(["--batch-size", "0"]), /positive integer/); + assert.throws(() => parseCliArgs(["--unexpected"]), /Unknown option/); +}); diff --git a/tools/package-lock.json b/tools/package-lock.json new file mode 100644 index 00000000000..d1c313d583d --- /dev/null +++ b/tools/package-lock.json @@ -0,0 +1,534 @@ +{ + "name": "precice-website-tools", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "precice-website-tools", + "dependencies": { + "algoliasearch": "^5.0.0", + "cheerio": "^1.0.0" + }, + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/@algolia/abtesting": { + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.23.0.tgz", + "integrity": "sha512-j45MBISstltys9QyQ4xf6quRiN1g7vMuwQL9VM4dx8YuRZvCQ173b9royZAx6iAbRX3IB1VnG1z//NuwyQ8jpQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-abtesting": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.57.0.tgz", + "integrity": "sha512-JVFFujiZUCguk5tz3LZr4fTQxqpIrj4/Jw3SI7kMljSqtfLxYn/s/TWH0J2s4iNfsDpxPhgFGMotCpmDI4kZ8w==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.57.0.tgz", + "integrity": "sha512-6KqECK4ED3JJQEoDrQWnGPQzElA828xAD4qK5ceawNNyP/LcSvzAoLHjFkoTPksZ/kxj6VUtCRH+IHZesLltng==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.57.0.tgz", + "integrity": "sha512-uqpGF3oXYsoCbQq5d7BzNrNTfIfuvJyGP1CKvSW27T9boUg7KOwyxsAw1AX0a3jSW2HrYEJ/NN+Z4MiGivbpeQ==", + "license": "MIT", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-insights": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.57.0.tgz", + "integrity": "sha512-u5NboJVJXDEFplvNnqqX4CxkXPYysjJRj47hOSh9329H8kG5gFLKJBIiS5utMQ+GZm8xQl3Te7NInDk6elEADQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.57.0.tgz", + "integrity": "sha512-uzc0b2LmHAK9/QID4xeo35OG84AkZl4YewkCqawqAOGLjT2eZpM/OZx45ESygMHG30Ws+ZTSdluPtMJcUnrbWQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-query-suggestions": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.57.0.tgz", + "integrity": "sha512-dIAhnM6ue/ssa5PjgNfu4g8A4yTojl9ZOUzZU3wIaIKRerL2R/3Emuf9n/D6ICXXP167KC6XCeC7nliSw7cuSw==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.57.0.tgz", + "integrity": "sha512-2TTPTTKSJmCptvhCm4Xf3bBYMqZni+Pgc2hVdqc4l9wsBpSJNVTVIKpnd10OubUgkGcmppVDj1XQqYaf6EnPSQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/ingestion": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.57.0.tgz", + "integrity": "sha512-W4JseHKt+pzOxlFV+T3MWEG0h4Z2Se5zjoXUD0ewlw8aOWMG/yjRdopUdLQsXULepB/My2tDuZjkwk2sMfsUrQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/monitoring": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.57.0.tgz", + "integrity": "sha512-BrxJVE0/eLinEPICCD7BKN/2xnt0nkjge70u8zzE2ISP3fuB3tjLgcwpanUycvlHBFLI4gK0l5ol54p6IYuR/Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/recommend": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.57.0.tgz", + "integrity": "sha512-Gc29jkeiLKlVfHvyrIgyUHHE+aYTdXEeLfK42rjr5/1TTVsYwUJz0XkvoIBIqfMjcDg6gXeHb1jTUZ0H+SYIlQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.57.0.tgz", + "integrity": "sha512-PIPnPN7MP3fp2VAi01BVXhCWmD366ZB2Hkq5TlYKtThd4KxUtMmaaNDpFgVCTXtSIqWVZLJntOHRvxg/sIPd8Q==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-fetch": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.57.0.tgz", + "integrity": "sha512-AX3RlOudXMdTwtwUqdAf5hAVLvXfOZZH1FZh6ALDdrhVLT0TtAIe48N6nYcWcTnwoTxK/wDIQqZ19IMjK8zJAA==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@algolia/requester-node-http": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.57.0.tgz", + "integrity": "sha512-cWZc1dKb7wy9/wPpwMtL1y89gK2G7y2A47Coa7zwf1ydtIeJm4+S+XxoQ2b/ZRiQnrC1YHavLjYUPDCdnT7Khg==", + "license": "MIT", + "dependencies": { + "@algolia/client-common": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/algoliasearch": { + "version": "5.57.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.57.0.tgz", + "integrity": "sha512-HpND7MBGctOAkd1GoQoDZCGoCpqNTS5NG1LuhElFet3RdLJkwnyTYZXZhXwtpAQPrI36fqQ3eT6KQrdKDTKu3A==", + "license": "MIT", + "dependencies": { + "@algolia/abtesting": "1.23.0", + "@algolia/client-abtesting": "5.57.0", + "@algolia/client-analytics": "5.57.0", + "@algolia/client-common": "5.57.0", + "@algolia/client-insights": "5.57.0", + "@algolia/client-personalization": "5.57.0", + "@algolia/client-query-suggestions": "5.57.0", + "@algolia/client-search": "5.57.0", + "@algolia/ingestion": "1.57.0", + "@algolia/monitoring": "1.57.0", + "@algolia/recommend": "5.57.0", + "@algolia/requester-browser-xhr": "5.57.0", + "@algolia/requester-fetch": "5.57.0", + "@algolia/requester-node-http": "5.57.0" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/cheerio": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", + "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "encoding-sniffer": "^0.2.1", + "htmlparser2": "^10.1.0", + "parse5": "^7.3.0", + "parse5-htmlparser2-tree-adapter": "^7.1.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^7.19.0", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=20.18.1" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/encoding-sniffer": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", + "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/htmlparser2": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", + "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.2", + "entities": "^7.0.1" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "license": "MIT", + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.0.tgz", + "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + } + } +} diff --git a/tools/package.json b/tools/package.json new file mode 100644 index 00000000000..d618d1c7c76 --- /dev/null +++ b/tools/package.json @@ -0,0 +1,16 @@ +{ + "name": "precice-website-tools", + "private": true, + "type": "module", + "engines": { + "node": ">=20.18.1" + }, + "scripts": { + "algolia:index": "node algolia-index.mjs", + "test:algolia": "node --test algolia-index.test.mjs" + }, + "dependencies": { + "algoliasearch": "^5.0.0", + "cheerio": "^1.0.0" + } +} From 80caebfad2db5efd7c1c769cbe1ae20162ddbd0f Mon Sep 17 00:00:00 2001 From: MuhammadAashirAslam Date: Mon, 24 Aug 2026 17:48:44 +0500 Subject: [PATCH 20/45] Hugo: Fix contributors page and overview image (#978) --- content/docs/fundamentals/overview.md | 2 +- layouts/partials/developer_list.html | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/content/docs/fundamentals/overview.md b/content/docs/fundamentals/overview.md index 37ec66d30bb..738e8c516b4 100644 --- a/content/docs/fundamentals/overview.md +++ b/content/docs/fundamentals/overview.md @@ -21,7 +21,7 @@ it with any other code at runtime. For well-known solvers such as OpenFOAM, deal preCICE is free/open-source software, using the [GNU LGPL3 license](https://www.gnu.org/licenses/lgpl-3.0.en.html). This license ensures the open future of the project, while allowing you to use the library also in closed-source solvers. The code is publicly available and actively developed on [GitHub](https://github.com/precice). See more [license information](fundamentals-license.html). -![Big-picture overview of preCICE](material/overview/precice-overview.png) +![Big-picture overview of preCICE](/material/overview/precice-overview.png) Writing about preCICE? [Get this image and more material](https://github.com/precice/precice.github.io/tree/master/material). diff --git a/layouts/partials/developer_list.html b/layouts/partials/developer_list.html index ae5930c8785..d9e4ff14217 100644 --- a/layouts/partials/developer_list.html +++ b/layouts/partials/developer_list.html @@ -1,16 +1,17 @@ {{- $group := .group -}} {{- $people := index hugo.Data.developer $group -}} {{- with $people }} -
    -
    -
      +
      +
        {{- range $index, $person := sort . "name" }} - {{- with $person.img }} -
        - Portrait -
        + {{- if eq $group "main" }} + {{- with $person.img }} +
        + Portrait +
        + {{- end }} {{- end }}

        From e1b9568d6e0dbd84bf24e6b265fd5024b70eabba Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:49:16 +0200 Subject: [PATCH 21/45] Hugo: Update content documentation (#970) Co-authored-by: Gerasimos Chourdakis --- README.md | 169 ++++++++++----------- content/docs/docs-meta/common-issues.md | 57 ++++++-- content/docs/docs-meta/overview.md | 187 +++++++++++++----------- content/docs/docs-meta/search.md | 99 +++++-------- 4 files changed, 261 insertions(+), 251 deletions(-) diff --git a/README.md b/README.md index 11faf5a7486..03affc3ed32 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,116 @@ -# preCICE Webpage - [precice.org](https://precice.org/) +# preCICE website - [precice.org](https://precice.org/) -## Local development +## Building the website locally -First install [`pre-commit`](https://repology.org/project/python:pre-commit/versions) to keep your commits clean. +The website uses the [Hugo](https://gohugo.io/) static site generator and +[GitHub Pages](https://pages.github.com/). Install Hugo Extended and Go using +the versions configured in the GitHub Actions workflows. Follow Hugo's +[installation guide](https://gohugo.io/installation/) and Go's +[installation guide](https://go.dev/doc/install); Hugo Extended is required for +the site's asset pipeline. Hugo Modules require Git and Go, as described in the +[Hugo Modules documentation](https://gohugo.io/hugo-modules/use-modules/). Node.js +is only needed when working on Algolia search. -The website is using [Jekyll](https://jekyllrb.com/) static website generator and [Github pages](https://pages.github.com/). -To run and develop it locally you need to install [`rbenv`](rbenv.org) using `apt install rbenv ruby-build`. -Then use `rbenv init` and follow the instructions to set it up. -With `rbenv` installed and activated in your shell: +After installation, check the tools before building: ```bash -git clone --recurse-submodules https://github.com/precice/precice.github.io && cd precice.github.io -pre-commit install -rbenv install -bundle install -bundle exec jekyll serve -l +hugo version +go version ``` -You can now view website locally in your browser at `localhost:4000`. - -## Update submodules - -Submodules do not yet get updated automatically. This means if you change something in the OpenFOAM adapter documentation or the description of the tutorials, you need to explicitly trigger an update here: +Clone the repository and start the local development server: ```bash -git submodule update --remote --merge +git clone https://github.com/precice/precice.github.io.git +cd precice.github.io +hugo server ``` -This updates **all** submodules. You can call it from everywhere (you do not need to `cd` into the submodule). -Afterwards, commit and push. - -Do not directly edit the content of the submodules from within the website repository. This might give ugly merge conflicts. - -## Pull with submodules - -To pull changes including submodules - -```bash -git pull --recurse-submodules -``` +You can now view the website locally at . On the first +build, Hugo automatically downloads the module versions recorded in `go.mod`. ## Build inside a Docker container -Instead of building on your system (which requires some setup the first time), you can directly serve the website from a Docker container (using the community image [`jekyll/jekyll`](https://hub.docker.com/r/jekyll/jekyll)). In this directory, after you initialize and update the git submodules, run the following: +Instead of building on your system (which requires some setup the first time), you can directly serve the website from a Docker container (using the [official Hugo image](https://github.com/gohugoio/hugo/pkgs/container/hugo) - [Dockerfile](https://github.com/gohugoio/hugo/blob/master/Dockerfile)). In this directory, run the following: ```shell -docker run --rm --volume="$PWD:/srv/jekyll:Z" --publish 127.0.0.1:4000:4000 -it jekyll/jekyll jekyll serve +docker run --rm --volume="$PWD:/project:Z" -p 1313:1313 -it ghcr.io/gohugoio/hugo:latest serve --bind 0.0.0.0 ``` Arguments: -* `docker run`: The Docker command to run a container from an existing image -* `--rm`: Automatically remove (or not) the container when it exists -* `--volume`: Mount the current directory (`$PWD`) to a directory in the container (`/srv/jekyll`), so that only the current container can see the content (`:Z`) -* `--publish`: Publish the container's port 4000 (where Jekyll serves the website) to the host port 4000. Note that `127.0.0.1` is the localhost in IPv4. For IPv6, you can replace that with `[::1]`. -* `-it`: Interactive container, capturing signals (such as `Ctrl-C`). -* `jekyll/jekyll`: The image -* `jekyll serve`: The command to run. Somehow, the current default `make` target does not work in this context. +- `docker run`: The Docker command to run a container from an existing image +- `--rm`: Automatically remove (or not) the container when it exists +- `--volume`: Mount the current directory (`$PWD`) to a directory in the container (`/project/`), so that only the current container can see the content (`:Z`) +- `--publish`: Publish the container's port 1313 (where Hugo serves the website) to the host port 1313 +- `-it`: Interactive container, capturing signals (such as `Ctrl-C`) +- `ghcr.io/gohugoio/hugo:latest`: The image. If `latest` fails, v0.165.0 is known to work. +- `serve`: The Hugo command to run +- `--bind 0.0.0.0`: Bind all network addresses to the 0.0.0.0 interface (important to access the website from the host). -## Further information - -If you would like to learn more about the preCICE documentation, a good start are the [documentation of the documentation pages](https://precice.org/docs-meta-overview.html). +## Contributing -## Changing the news banner +First install [pre-commit](https://pre-commit.com/) using its +[installation instructions](https://pre-commit.com/#install) to keep commits +clean: -Edit [`_includes/news_banner.html`](_includes/news_banner.html). - -A good starting point is the following: - -```html -

        +```bash +pre-commit install ``` -Use the following to selectively change appearance. +Before opening a pull request, run the production build and verify that all checks pass: -```html -{% if include.landing %} - Displayed on the landing page. -{% else %} - Displayed on other pages. -{% endif %} +```bash +hugo mod verify +hugo --gc --minify --cleanDestinationDir --environment production +pre-commit run --all-files ``` -## Common issues while building the site +## Update imported documentation -* If you get permission issues to install gems, resist the impulse of `sudo`: you can install the dependencies locally by running `bundle config set --local path 'vendor/bundle'` before `bundle install`. +Adapter, tutorial, and tooling documentation is included through Hugo Modules. +The `Update Hugo modules` workflow checks the upstream repositories daily and +records the selected revisions in `go.mod` and `go.sum`. -* If you get errors like `Gem::Ext::BuildError: ERROR: Failed to build gem native extension.` or `mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h`, then (as the error message suggests), you may need to install a Ruby development environment (e.g., `ruby-dev`). +To update the imported documentation locally, run: -* If you are a poor soul that is stuck developing on Windows, the `-l` flag is known to crash, so best try without. +```bash +python3 tools/sync_hugo_modules.py +``` -* Should you get the warning +Review and commit the resulting `go.mod` and `go.sum` changes. Do not edit +downloaded module files from this repository; make documentation changes in the +repository that owns them. - ```bash - Fetching citation data failed with OpenURI::HTTPError - ``` +Adding a new imported project requires an import and mounts in +`config/_default/module.toml`, an edit-link mapping in +`config/_default/params.toml`, and a navigation entry where appropriate. Adding +a tutorial currently also requires an entry in +`data/sidebars/tutorials_sidebar.yml`. - while building the site locally, then you have been rate limited by Google Scholar. The citation database won't be up to date. Alternatively open [http://scholar.google.com/](http://scholar.google.com/) in a browser and complete the Captcha. +## Further information -For further information see the [documentation page on common issues](https://precice.org/docs-meta-common-issues.html). +The [documentation of the documentation pages](content/docs/docs-meta/overview.md) +(or on the [website](https://precice.org/docs-meta-overview.html)) +explains the website structure, navigation, front matter, and imported content. +See the [search documentation](content/docs/docs-meta/search.md) for details on +Algolia search indexing and configuration. -## Licenses +## Changing the news banner -The website in this repository (https://precice.org/) is maintained by the preCICE developers. -It is based on the following dependencies (as licensed), with modifications or additional code licensed under the MIT license. +Edit [`layouts/partials/news_banner.html`](layouts/partials/news_banner.html). +The partial explains how to enable or disable the banner, change its text and +link, and choose whether it appears on the landing page or on other pages. -Dependencies: +## Common issues while building the site -* [Jekyll](https://jekyllrb.com/), which is [available on GitHub](https://github.com/jekyll/jekyll) under an [MIT license](https://github.com/jekyll/jekyll/blob/master/LICENSE). -* Theme: [documentation-theme-jekyll](https://idratherbewriting.com/documentation-theme-jekyll/), which is [available on GitHub](https://github.com/tomjoht/documentation-theme-jekyll) under an [MIT license](https://github.com/tomjoht/documentation-theme-jekyll/blob/gh-pages/LICENSE). -* Linked JavaScript libraries: - * [Algolia instantsearch.js](https://www.algolia.com/doc/guides/building-search-ui/what-is-instantsearch/js), which is [available on GitHub](https://github.com/algolia/instantsearch) under an [MIT license](https://github.com/algolia/instantsearch/blob/master/LICENSE). - * [anchorjs](https://www.bryanbraun.com/anchorjs/), which is [available on GitHub](https://github.com/bryanbraun/anchorjs) under an [MIT license](https://github.com/bryanbraun/anchorjs/blob/main/LICENSE). - * [asciinema-player](https://docs.asciinema.org/manual/player/), which is [available on GitHub](https://github.com/asciinema/asciinema-player) under an [Apache 2.0 license](https://github.com/asciinema/asciinema-player/blob/develop/LICENSE). - * [Boostrap](https://getbootstrap.com/), which is [available on GitHub](https://github.com/twbs/bootstrap) under an [MIT license](https://github.com/twbs/bootstrap/blob/main/LICENSE). - * [FontAwesome free](https://fontawesome.com/license/free), which is [available on GitHub](https://github.com/FortAwesome/Font-Awesome) and [licensed](https://github.com/FortAwesome/Font-Awesome/blob/6.x/LICENSE.txt) as follows: Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License. - * [jQuery](https://jquery.com/), which is [available on GitHub](https://github.com/jquery/jquery) under an [MIT license](https://jquery.com/license/). - * [KaTeX](https://katex.org/), which is [available on GitHub](https://github.com/KaTeX/KaTeX) under an [MIT license](https://github.com/KaTeX/KaTeX/blob/main/LICENSE). - * [Moment.js](https://momentjs.com/), which is [available on GitHub](https://github.com/moment/moment/) under an [MIT license](https://github.com/moment/moment/blob/develop/LICENSE). - * [qrcode-generator](https://kazuhikoarase.github.io/qrcode-generator/js/demo/), which is [available on GitHub](https://github.com/kazuhikoarase/qrcode-generator/) under an [MIT license](https://github.com/kazuhikoarase/qrcode-generator/blob/master/LICENSE). +- If Hugo cannot download a module, first check that Git and Go are installed, + then run `hugo mod verify`. A fresh clone needs network access to download the hugo modules. +For further information, see [common issues](content/docs/docs-meta/common-issues.md). -The content of the documentation pages included in this repository is licensed under a [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.en). +## Licenses -Note that the preCICE core library itself has a software license, [LGPL v3](https://www.gnu.org/licenses/lgpl-3.0.en.html), and is maintained in a [different repository](https://github.com/precice/precice). +The content of the preCICE webpage is licensed under +[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/deed.en). Third-party +licenses are collected in the `licenses` subfolder. preCICE itself is licensed +under [LGPL v3](https://www.gnu.org/licenses/lgpl-3.0.en.html). diff --git a/content/docs/docs-meta/common-issues.md b/content/docs/docs-meta/common-issues.md index 15def59bd99..a09391ce60a 100644 --- a/content/docs/docs-meta/common-issues.md +++ b/content/docs/docs-meta/common-issues.md @@ -1,26 +1,59 @@ --- -title: Troubleshooting and Common Issues +title: Troubleshooting and common issues permalink: docs-meta-common-issues.html -keywords: issues, troubleshooting, bugs, errors, warnings, documentation, jekyll, build locally -summary: +aliases: + - /docs-meta-common-issues.html +keywords: issues, troubleshooting, Hugo, modules, build locally +summary: "Solutions for common local Hugo and module build problems." --- -## Jekyll error '429 Too Many Requests' +## Hugo cannot download a module -When building the site locally in frequent succession, Jekyll might complain in the following way: +Hugo Modules require Git and Go. A fresh clone downloads the versions recorded +in `go.mod` when Hugo first builds the site, so it also requires network access. +Check the local tools and verify the configured modules with: ```bash - open-uri.rb:364:in `open_http': 429 Too Many Requests (OpenURI::HTTPError) +git --version +go version +hugo mod verify ``` -### Cause +## Hugo reports a checksum mismatch -In order to retrieve the current number of citations on Google Scholar, we use the `nokogiri` gem to scrape [http://scholar.google.com/scholar?hl=en&cites=5053469347483527186](http://scholar.google.com/scholar?hl=en&cites=5053469347483527186) and extract the number of citations (for more information see `_plugins/googlescholar.rb`). Frequent scraping attempts can hit Google's rate limit and lead to a soft IP ban. +If an upstream repository changes a revision that was already downloaded, Go +will reject it because its content no longer matches the checksum in `go.sum`. +Do not disable checksum verification. Instead, synchronize the affected module +revision, review the resulting `go.mod` and `go.sum` changes, and commit them +together: -### Solution +```bash +python3 tools/sync_hugo_modules.py +hugo mod verify +``` + +## Local imported content is older than upstream content + +Hugo builds imported documentation from the revisions pinned in `go.mod`, not +from another checkout on your computer. Run the `Update Hugo modules` workflow +or the synchronization command above to select newer upstream revisions. + +## Stale assets or cache issues + +If local builds retain stale assets or encounter cache permission issues, run Hugo with `--cleanDestinationDir` and `--gc` to purge unreferenced generated assets: + +```bash +hugo --cleanDestinationDir --gc +``` + +You can also direct Hugo to use a custom local cache directory: + +```bash +HUGO_CACHEDIR=/tmp/precice-hugo-cache hugo server +``` -Either visit [http://scholar.google.com](http://scholar.google.com) in your browser and solve the Captcha or deactivate the `googlescholar.rb` plugin temporarily, e.g. by renaming it to `googlescholar.rb_`, or commenting out its contents. +## Search results are stale -## Jekyll crashes on Windows +Building the site locally only creates `public/algolia.json`; it does not automatically upload records to Algolia. -Some of the flags (arguments) for running `jekyll build` or `jekyll serve` are known to crash on Windows, e.g. `--safe -l` or `--detach`. In most cases there is no workaround, because the features are simply not implemented or available in Windows, so run the command without the flag. +See the [Search documentation](/docs-meta-search.html) for instructions on validating and publishing search records. diff --git a/content/docs/docs-meta/overview.md b/content/docs/docs-meta/overview.md index 86e40fef27e..32513ce8672 100644 --- a/content/docs/docs-meta/overview.md +++ b/content/docs/docs-meta/overview.md @@ -1,151 +1,168 @@ --- title: Documentation of the documentation -keywords: pages, authoring, exclusion, frontmatter -summary: "This page is an introduction to the development of the preCICE documentation, based on a jekyll theme called documentation-theme-jekyll. You will learn how to run jekyll locally, about the sidebar structure, how to name and where to save documentation pages and what a minimal frontmatter looks like." +keywords: pages, authoring, front matter, Hugo, modules +summary: "An introduction to developing the preCICE documentation with Hugo: local builds, navigation, page structure, front matter, and imported content." permalink: docs-meta-overview.html +aliases: + - /docs-meta-overview.html --- ## About the content -This majority of this documentation focuses on the technical side of writing content. See [our content guidelines](docs-meta-content-guidelines.html) to learn what the content should look like. +Most of this documentation focuses on the technical side of writing content. +See the [content guidelines](docs-meta-content-guidelines.html) to learn what +the content should look like. -## About the theme +## About the website -This site is based on a jekyll theme by technical writer Tom Joht called [documentation-theme-jekyll](https://github.com/tomjoht/documentation-theme-jekyll). At the time of writing this theme was the second most popular documentation-style jekyll theme on [jamstackthemes.dev](https://jamstackthemes.dev/#ssg=jekyll) and has been selected for its rich feature set and clean, functional design out of the box. - -In addition Tom did a great job documenting the theme (using the theme) and you can read about specific features and their implementation and use [in his documentation](https://idratherbewriting.com/documentation-theme-jekyll/index.html). +The website is built with [Hugo](https://gohugo.io/). Website-owned Markdown +pages live in `content/`, navigation data lives in `data/sidebars/`, and shared +templates live in `layouts/`. Hugo combines these with static files and +documentation imported from other preCICE repositories. ## Getting started -To develop the website locally it is recommended to install jekyll and run +Install Hugo Extended and Go using the versions listed in the repository +`README.md`, then run: ```bash -bundle exec jekyll serve +hugo server ``` -The [theme's documentation page](https://idratherbewriting.com/documentation-theme-jekyll/index.html#2-install-jekyll) has a step-by-step guide to install jekyll and the plugin ("gem") manager `bundler`. When running jekyll for the first time you might have to install and/or update the gems first: +Open . Hugo watches local files and rebuilds the site +when they change. On the first run, it downloads the module versions recorded +in `go.mod`. + +Before opening a pull request, use the production build: ```bash -bundle install -bundle update +hugo mod verify +hugo --gc --minify --cleanDestinationDir --environment production ``` -Now try again `bundle exec jekyll serve` and the site should be running at `http://localhost:4000/`. Jekyll will refresh and rebuild when you change files. +## How the website works in a nutshell -## How documentation-theme-jekyll works in a nutshell +The two main ingredients behind the website are: -The two main ingredients behind this jekyll theme are - -1. **The sidebar**, i.e. the navigation tree. Jekyll builds the sidebar based on the `sidebar.yml` in the `_data/sidebars` directory. The YAML contains the relative structure of the navigation tree as well as the links to the html pages. -2. **A set of pages**, i.e. Markdown or html files. Jekyll parses the Markdown or html files in the `pages` directory, renders them to html (in case of Markdown), and places them in the root folder. +1. **The sidebar:** the navigation tree. The sidebar partial renders the YAML + files in `data/sidebars/` into the navigation shown on each page. +2. **A set of pages:** Markdown files in `content/` and mounted Markdown files + from imported repositories. Hugo renders them to HTML using the templates in + `layouts/`. ### Sidebar -Here is a snippet from the `_data\sidebars\docs_sidebar.yml` that spans (the maximum) two levels: +The sidebar data retains the established three-level structure. For example, +the following excerpt from `data/sidebars/docs_sidebar.yml` represents a page +with nested pages: ```yaml entries: - title: sidebar - product: Docs - version: 2.1.0 + product: Documentation folders: - - title: Configuration output: web, pdf folderitems: - - title: Basics url: /configuration-introduction.html output: web, pdf - subfolders: - - title: Coupling Scheme + - title: Coupling scheme output: web, pdf subfolderitems: - - title: Overview url: /configuration-coupling.html output: web, pdf - - - title: Multi Coupling - url: /configuration-coupling-multi.html - output: web, pdf - - - title: Acceleration - url: /configuration-acceleration.html - output: web, pdf ``` +The `url` of each entry must match the rendered page URL. The `output` field +controls whether the entry appears on the website, in the compiled offline PDF +(`web, pdf`), or only on the website (`web`). For details on PDF target +filtering, see [Publish to PDF](/docs-meta-publish-to-pdf.html). Keep the +established `.html` URLs when moving an existing page, and use an alias when a +page URL must change. + ### Where to save files -Save Markdown files in the `pages` directory in an appropriate subdirectory. Jekyll is agnostic to this folder structure - subdirectories are for human ease of organisation only. +Save website-owned Markdown files below `content/` in the section that owns +them. The directory structure is meaningful to Hugo: a directory containing +`_index.md` is a section and its path contributes to page URLs. ```text -pages -|_ docs - |_ configuration - |_ configuration-introduction.html - |_ ... - |_ installation - |_ ... +content/ +└── docs/ + └── configuration/ + └── basics/ + └── introduction.md ``` -### Naming conventions - -{% important %} -Because of the flat hierarchy files have to be named uniquely. -{% endimportant %} +To maintain backward compatibility with established top-level URLs (such as +`/configuration-introduction.html`) without breaking external links or +bookmarks, pages define `aliases` to redirect from flat URL patterns to +their nested location. -This can be easily achieved by baking in the category/topic into the filename and adds some welcome robustness, e.g. - -```text -docs -|_ configuration - |_ configuration-introduction.html - |_ configuration-coupling.html - |_ configuration-coupling-multi.html -``` - -File names should contain hyphens `-` instead of underscores `_` following best practices for [SEO](https://support.google.com/webmasters/answer/76329?hl=en). +### Naming conventions -In addition use the singular form where possible, e.g. `configration-action.html` instead of `configuration-actions.html`. +Hugo derives URLs from content paths, so file names no longer need to be unique +across the complete documentation tree. Use descriptive, lower-case file names +with hyphens instead of underscores, for example +`configuration-introduction.md`. Use the singular form where it reads +naturally. Preserve an existing public URL with `permalink` or `aliases` when a +file is moved. -### Minimal viable frontmatter +### Minimal viable front matter -The minimal frontmatter contains only the options `title` and `permalink` (required) but should be complemented by `keywords` and `summary` (optional). +Every page needs a title. Existing pages should retain their `permalink` to +preserve public URLs; new pages usually derive their URL from their path. Add +keywords and a summary where they improve search and page metadata. ```yaml --- -title: Configuration Basics +title: Configuration basics permalink: configuration-introduction.html keywords: configuration, basics, overview -summary: "preCICE needs to be configured at runtime via an `xml` file, typically named `precice-config.xml`. Here, you specify which solvers participate in the coupled simulation, which coupling data values they exchange, which numerical methods are used for the data mapping and the fixed-point acceleration and many other things. " +summary: "Configure participants, meshes, exchanged data, mappings, and coupling schemes." --- ``` -The `permalink` has to be the full file name ending in `.html` with no leading slash `\`. During the build process jekyll processes the frontmatter and places the file at `permalink` value, i.e. in the root directory (by default is `_site`). - -## Rendering content from external repositories - -While the main content of this website is sourced from the same [repository](https://github.com/precice/precice.github.io) that hosts the mechanics of it, some content is sourced from separate repositories. The main reason is to keep the documentation next to the respective code, so that developers can view it without looking at the website and update it in the same contribution, while users can find everything in the same place. Read more about this concept in the [preCICE v2 reference paper](https://doi.org/10.12688/openreseurope.14445.2). This practice is not yet uniformly adopted, but we are working on migrating more content. - -External repositories are included as Git submodules, specified in the [`.gitmodules`](https://github.com/precice/precice.github.io/blob/master/.gitmodules) file. One example is the [tutorials](tutorials), which is covered by [additional documentation for adding new tutorials](https://precice.org/community-contribute-to-precice.html#adding-a-new-tutorial-to-the-website). - -To fetch content from an external repository/project (replace the `my-*` with the actual names): - -1. Switch to a new branch of the website and specify the new module: `git submodule add https://github.com/precice/my-project imported/my-project`. -2. Set the branch to track, if not the default: `git submodule set-branch --branch my-branch imported/my-project`. This is particularly useful in case you are adding new documentation via a pull request. However, remember to reset the branch after merging. -3. The above commands should have modified the `.gitmodules` file and staged changes. Commit the result (remember to push later, after testing). -4. Update all submodules with `git submodule update --remote --merge`. If successful, you should see your new project in the `imported/` directory. Remember that the branch in your external project must already be published. -5. Update the commit that the module points to: `git add imported/my-project && git commit -m "Update my-project submodule" && git push`. You should only see a `modified: imported/my-project (new commits)` in your `git status`, not the files of that directory. -6. In your GitHub pull request to the website, at the "files changed" view, you should see a submodule with a Git reference to your new project in the `imported/` directory. +Use `aliases` to redirect previous URLs to the page: -To render the fetched content on the website: +```yaml +aliases: + - /configuration-introduction.html +``` -1. In the file [`_config.yml`](https://github.com/precice/precice.github.io/blob/master/_config.yml), specify the newly imported directory in the list of `subprojects:`. -2. In the same file, add an entry under the `defaults:` list, associating the subproject with some layout, sidebar, a path for the "Edit me" button, and more features. -3. Remember to make the new pages discoverable, e.g., by adding them to some [sidebar](https://github.com/precice/precice.github.io/tree/master/_data/sidebars), or linking from another page. +The [documentation cheatsheet](docs-meta-cheatsheet.html) lists supported front +matter fields and Hugo shortcodes. -After you merge the pull request in the external repository, remember to change the branch in the submodule (step 2) and in the `_config.yml` (step 1). If you squash-and-merge the pull request, the commit you were pointing to will not exist anymore. The easiest workaround it to delete the `imported/my-project` folder and update the submodules again (remember to add, commit, and push). You can always check the `git diff` for the commit it will point the submodule to. +## Rendering content from external repositories -To update the content, push to your repository and then [manually trigger the "update submodules" workflow](https://github.com/precice/precice.github.io/actions/workflows/update-submodules.yml). Alternatively, add a GitHub Actions workflows to your repository, to [update the website automatically](https://github.com/precice/tutorials/blob/master/.github/workflows/update-website.yml). You will need to [share the `WORKFLOW_DISPATCH_TOKEN` with the external repository](https://github.com/organizations/precice/settings/secrets/actions). +Some website content is maintained in the repository that owns the related +adapter, tutorial, or tool. This keeps documentation close to the code while +presenting it in one place on the website. Hugo Modules mount that source +content into the website's content tree. + +To add a new imported repository: + +1. Add its module import and mounts in `config/_default/module.toml`, and add + the corresponding edit-link mapping in `config/_default/params.toml`. +2. Run `hugo mod get github.com/precice/my-project@` (to fetch and pin + the target commit or branch in `go.mod`). +3. Run `hugo mod tidy` (to prune unused dependencies) and `hugo mod verify` (to + validate checksums in `go.sum`). +4. Add the rendered pages to a sidebar file (`data/sidebars/`). +5. Build the website locally (`hugo server`) and verify the page URLs, + edit links, and last-modified dates. + +The `Update Hugo modules` workflow (`.github/workflows/update-submodules.yml`) +automatically synchronizes imported repositories and records their selected +revisions in `go.mod` and `go.sum`. External repositories (such as +`precice/tutorials` and adapter repositories) include an `update-website.yml` +GitHub Actions workflow that triggers this update whenever documentation pull +requests are merged upstream, ensuring changes appear on the website +immediately rather than waiting for the daily scheduled run. + +Do not copy imported content directly into this repository or edit the +downloaded module cache. Always make content changes in the upstream +repository, which will then automatically propagate to the website. diff --git a/content/docs/docs-meta/search.md b/content/docs/docs-meta/search.md index 2ca258c089f..c47d221d099 100644 --- a/content/docs/docs-meta/search.md +++ b/content/docs/docs-meta/search.md @@ -1,84 +1,63 @@ --- title: Update the search index keywords: search, Algolia, search index, update search index -summary: +summary: "Build, validate, and publish the Hugo-generated Algolia search index." permalink: docs-meta-search.html +aliases: + - /docs-meta-search.html --- ## Overview -Our search is powered by Algolia, using their [free community plan](https://www.algolia.com/pricing/). Algolia conveniently provides the `jekyll-algolia` gem at [https://github.com/algolia/jekyll-algolia](https://github.com/algolia/jekyll-algolia) for a smooth integration with jekyll. +The website search is powered by [Algolia](https://www.algolia.com/). Hugo +generates `public/algolia.json` from rendered page content, and the Node.js CLI +in `tools/algolia-index.mjs` converts that export into Algolia records and +atomically replaces the configured index. ## Configuring search -In `_config.yml` the `algolia-jekyll` gem is configured as follows: +The public frontend settings are configured under `[params.algolia]` in +`config/_default/hugo.toml`: -```yaml -algolia: - application_id: XXX - index_name: XXX - search_only_api_key: XXX - nodes_to_index: 'p,code,table' +```toml +[params.algolia] +application_id = "your-application-id" +index_name = "your-index-name" +search_only_api_key = "your-search-only-key" +nodes_to_index = "p,code,table" +max_record_size = 20000 ``` -Of note is the last entry `nodes_to_index` that determines which HTML tags will be indexed. - -There is an upper limit on how much information one such node, e.g. the content of a `` block, may contain. In rare cases extra long `` blocks may have to be broken up into several ones. +`nodes_to_index` controls which rendered HTML elements become search records. +`max_record_size` is the maximum serialized record size accepted by the target +Algolia plan; the indexer validates and splits records as needed. The +search-only key is visible in the browser (public) and must be restricted to search +access. Never commit the `Write API Key`. ## Updating the index -The `jekyll-algolia` gem makes updating the index a breeze. Simply change into the root directory and execute: +First install the Node.js dependencies and build the Hugo export: ```bash -ALGOLIA_API_KEY='XXX' bundle exec jekyll algolia +npm --prefix tools ci +npm --prefix tools run test:algolia +hugo --gc --minify --cleanDestinationDir --environment production +npm --prefix tools run algolia:index -- --dry-run ``` -Result: - -```text -Configuration file: E:/code/precice.github.io_new/_config.yml -Processing site... - Subproject: imported/tutorials/quickstart - Adding pages: README.md - Subproject: imported/tutorials/elastic-tube-1d - Adding pages: README.md - Subproject: imported/tutorials/elastic-tube-3d - Adding pages: README.md - Subproject: imported/tutorials/flow-over-heated-plate - Adding pages: README.md - Subproject: imported/tutorials/flow-over-heated-plate-steady-state - Adding pages: README.md - Subproject: imported/tutorials/flow-over-heated-plate-nearest-projection - Adding pages: README.md - Subproject: imported/tutorials/heat-exchanger - Adding pages: README.md - Subproject: imported/tutorials/multiple-perpendicular-flaps - Adding pages: README.md - Subproject: imported/tutorials/partitioned-elastic-beam - Adding pages: README.md - Subproject: imported/tutorials/partitioned-heat-conduction - Adding pages: README.md - Subproject: imported/tutorials/partitioned-heat-conduction-complex - Adding pages: README.md - Subproject: imported/tutorials/perpendicular-flap - Adding pages: README.md - Subproject: imported/tutorials/turek-hron-fsi3 - Adding pages: README.md - Subproject: imported/tutorials/partitioned-pipe - Adding pages: README.md - Subproject: imported/openfoam-adapter/docs - Adding pages: config.md, extend.md, get.md, openfoam-support.md, README.md - -Progress: |====================================================================| +The dry run validates the JSON schema, configured selector, record sizes, and +resulting records without contacting Algolia. To publish after that validation, +provide a restricted indexing key in the environment: -Progress: |==========================================Settings are already up todate. -Getting list of existing records -Updating records in index jekyll... -Records to delete: 1582 -Records to add: 1718 - -Progress: |====================================================================| -✔ Indexing complete +```bash +export ALGOLIA_APP_ID="your-application-id" +export ALGOLIA_WRITE_API_KEY="your-restricted-indexing-key" +export ALGOLIA_INDEX_NAME="your-index-name" +npm --prefix tools run algolia:index ``` -Be aware, that updates to the index count towards the limit of free operations, so it is recommended to update once a month. +The indexing key needs `addObject`, `deleteIndex`, and `editSettings` +permissions, and its index restriction must include the temporary index prefix +used for atomic replacement. Production updates run through the `Update the +Algolia search index` workflow, which reads these values from repository +secrets. From ac44f6a058d95e5eb85d99f9085e55e9fd571069 Mon Sep 17 00:00:00 2001 From: Gerasimos Chourdakis Date: Tue, 20 Oct 2026 10:50:55 +0200 Subject: [PATCH 22/45] Hugo: Remove remaining Jekyll-related files (#973) Also update content with recent changes. Co-authored-by: Gerasimos Chourdakis --- .gitignore | 8 - .gitmodules | 54 ------ .ruby-version | 1 - .vscode/settings.json | 6 - Gemfile | 30 --- LICENSE-MIT-documentation-theme-jekyll.txt | 21 --- LICENSE.hugo.txt | 201 +++++++++++++++++++++ _includes/image.html | 1 - _includes/initialize_shuffle.html | 130 ------------- _includes/inline_image.html | 1 - _includes/links.html | 44 ----- _layouts/landing_page.html | 32 ---- _layouts/post.html | 39 ---- data/sidebars/community_sidebar.yaml | 1 - faq.html | 5 - imported/aste | 1 - imported/calculix-adapter | 1 - imported/code_aster-adapter | 1 - imported/dealii-adapter | 1 - imported/dumux-adapter | 1 - imported/dune-adapter | 1 - imported/fenics-adapter | 1 - imported/fenicsx-adapter | 1 - imported/fmi-runner | 1 - imported/micro-manager | 1 - imported/openfoam-adapter | 1 - imported/preeco-orga | 1 - imported/su2-adapter | 1 - imported/tutorials | 1 - layouts/partials/news_banner.html | 6 +- search.json | 33 ---- tooltips.json | 19 -- 32 files changed, 205 insertions(+), 441 deletions(-) delete mode 100644 .gitmodules delete mode 100644 .ruby-version delete mode 100644 .vscode/settings.json delete mode 100644 Gemfile delete mode 100644 LICENSE-MIT-documentation-theme-jekyll.txt create mode 100644 LICENSE.hugo.txt delete mode 100644 _includes/image.html delete mode 100644 _includes/initialize_shuffle.html delete mode 100644 _includes/inline_image.html delete mode 100644 _includes/links.html delete mode 100644 _layouts/landing_page.html delete mode 100644 _layouts/post.html delete mode 100644 faq.html delete mode 160000 imported/aste delete mode 160000 imported/calculix-adapter delete mode 160000 imported/code_aster-adapter delete mode 160000 imported/dealii-adapter delete mode 160000 imported/dumux-adapter delete mode 160000 imported/dune-adapter delete mode 160000 imported/fenics-adapter delete mode 160000 imported/fenicsx-adapter delete mode 160000 imported/fmi-runner delete mode 160000 imported/micro-manager delete mode 160000 imported/openfoam-adapter delete mode 160000 imported/preeco-orga delete mode 160000 imported/su2-adapter delete mode 160000 imported/tutorials delete mode 100644 search.json delete mode 100644 tooltips.json diff --git a/.gitignore b/.gitignore index f97bf8b86c8..9fc93985579 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,5 @@ -_site/ -.sass-cache/ -.jekyll-metadata -.jekyll-cache -_pdf .DS_Store .idea/ -vendor/ -.bundle/ -Gemfile.lock .hugo_build.lock /public/ /public-pdf/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e43310a50bb..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,54 +0,0 @@ -[submodule "tutorials"] - path = imported/tutorials - url = https://github.com/precice/tutorials.git - branch = develop -[submodule "openfoam-adapter"] - path = imported/openfoam-adapter - url = https://github.com/precice/openfoam-adapter.git - branch = develop -[submodule "imported/aste"] - path = imported/aste - url = https://github.com/precice/aste.git - branch = develop -[submodule "imported/micro-manager"] - path = imported/micro-manager - url = https://github.com/precice/micro-manager.git - branch = develop -[submodule "imported/fmi-runner"] - path = imported/fmi-runner - url = https://github.com/precice/fmi-runner - branch = main -[submodule "imported/su2-adapter"] - path = imported/su2-adapter - url = https://github.com/precice/su2-adapter - branch = develop -[submodule "imported/dune-adapter"] - path = imported/dune-adapter - url = https://github.com/precice/dune-adapter - branch = main -[submodule "imported/dumux-adapter"] - path = imported/dumux-adapter - url = https://github.com/precice/dumux-adapter - branch = develop -[submodule "imported/preeco-orga"] - path = imported/preeco-orga - url = https://github.com/precice/preeco-orga -[submodule "imported/fenicsx-adapter"] - path = imported/fenicsx-adapter - url = https://github.com/precice/fenicsx-adapter - branch = develop -[submodule "imported/code_aster-adapter"] - path = imported/code_aster-adapter - url = https://github.com/precice/code_aster-adapter - branch = develop -[submodule "imported/calculix-adapter"] - path = imported/calculix-adapter - url = https://github.com/precice/calculix-adapter - branch = develop -[submodule "imported/fenics-adapter"] - path = imported/fenics-adapter - url = https://github.com/precice/fenics-adapter - branch = develop -[submodule "imported/dealii-adapter"] - path = imported/dealii-adapter - url = https://github.com/precice/dealii-adapter \ No newline at end of file diff --git a/.ruby-version b/.ruby-version deleted file mode 100644 index 15a27998172..00000000000 --- a/.ruby-version +++ /dev/null @@ -1 +0,0 @@ -3.3.0 diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 5af001d5591..00000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -// Place your settings in this file to overwrite default and user settings. -{ - "files.associations": { - "*.html": "liquid" - } -} diff --git a/Gemfile b/Gemfile deleted file mode 100644 index cacff13c4b0..00000000000 --- a/Gemfile +++ /dev/null @@ -1,30 +0,0 @@ -source "https://rubygems.org" - -gem 'jekyll', ">= 4.1.1" - -gem "posix-spawn", github: "https://github.com/rtomayko/posix-spawn/pull/93" -# sass-embeded in 3.0.0 pulls google-protobuf which fails to compile -gem "jekyll-sass-converter", "< 3" - -group :jekyll_plugins do - gem 'jekyll-algolia' - gem 'jekyll-relative-links' - gem 'jekyll-seo-tag' - gem 'jekyll-sitemap' - gem 'jekyll-redirect-from' - gem 'jekyll-mermaid' -end - -gem 'jemoji' - -group :dev do - gem 'jekyll-watch' -end - -# Maybe in the future -# https://rubygems.org/gems/jekyll-assets -# https://rubygems.org/gems/jekyll-minifier - -# For current Ruby installations (3+?) -gem "webrick" - diff --git a/LICENSE-MIT-documentation-theme-jekyll.txt b/LICENSE-MIT-documentation-theme-jekyll.txt deleted file mode 100644 index e04b3d02e32..00000000000 --- a/LICENSE-MIT-documentation-theme-jekyll.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Tom Johnson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/LICENSE.hugo.txt b/LICENSE.hugo.txt new file mode 100644 index 00000000000..261eeb9e9f8 --- /dev/null +++ b/LICENSE.hugo.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/_includes/image.html b/_includes/image.html deleted file mode 100644 index 10ddd3e2ed6..00000000000 --- a/_includes/image.html +++ /dev/null @@ -1 +0,0 @@ -
        {% if include.url %}{% endif %}{{include.alt}}{% if include.url %}{% endif %}{% if include.caption %}
        {{include.caption}}
        {% endif %}
        \ No newline at end of file diff --git a/_includes/initialize_shuffle.html b/_includes/initialize_shuffle.html deleted file mode 100644 index 9a0f048dd11..00000000000 --- a/_includes/initialize_shuffle.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - diff --git a/_includes/inline_image.html b/_includes/inline_image.html deleted file mode 100644 index 1e7fd187cb7..00000000000 --- a/_includes/inline_image.html +++ /dev/null @@ -1 +0,0 @@ -{{include.alt}} diff --git a/_includes/links.html b/_includes/links.html deleted file mode 100644 index 4f99e9422ef..00000000000 --- a/_includes/links.html +++ /dev/null @@ -1,44 +0,0 @@ -{% comment %}Get links from each sidebar, as listed in the _config.yml file under sidebars{% endcomment %} - -{% for sidebar in site.sidebars %} -{% for entry in site.data.sidebars[sidebar].entries %} -{% for folder in entry.folders %} -{% for folderitem in folder.folderitems %} -{% if folderitem.url contains "html#" %} -[{{folderitem.url | remove: "/" }}]: {{folderitem.url | remove: "/"}} -{% else %} -[{{folderitem.url | remove: "/" | remove: ".html"}}]: {{folderitem.url | remove: "/"}} -{% endif %} -{% for subfolders in folderitem.subfolders %} -{% for subfolderitem in subfolders.subfolderitems %} -[{{subfolderitem.url | remove: "/" | remove: ".html"}}]: {{subfolderitem.url | remove: "/"}} -{% endfor %} -{% endfor %} -{% endfor %} -{% endfor %} -{% endfor %} -{% endfor %} - - -{% comment %} Get links from topnav {% endcomment %} - -{% for entry in site.data.topnav.topnav %} -{% for item in entry.items %} -{% if item.external_url == null %} -[{{item.url | remove: "/" | remove: ".html"}}]: {{item.url | remove: "/"}} -{% endif %} -{% endfor %} -{% endfor %} - -{% comment %}Get links from topnav dropdowns {% endcomment %} - -{% for entry in site.data.topnav.topnav_dropdowns %} -{% for folder in entry.folders %} -{% for folderitem in folder.folderitems %} -{% if folderitem.external_url == null %} -[{{folderitem.url | remove: "/" | remove: ".html"}}]: {{folderitem.url | remove: "/"}} -{% endif %} -{% endfor %} -{% endfor %} -{% endfor %} - diff --git a/_layouts/landing_page.html b/_layouts/landing_page.html deleted file mode 100644 index e81737b4a2d..00000000000 --- a/_layouts/landing_page.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - {% include head.html %} - - - -
        - {% include topnav.html %} - - {% include news_banner.html onlanding=true %} -
        -
        - - {{content}} -
        - - {% include footer.html %} - {% include scroll_to_top.html %} - - - - - - - -{% if site.google_analytics %} -{% include google_analytics.html %} -{% endif %} - - \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index 773c953fafc..00000000000 --- a/_layouts/post.html +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: default ---- -
        - -
        -

        {{ page.title }}

        - - - -
        - -
        - - {% if page.summary %} -
        {{page.summary}}
        - {% endif %} - - {{ content }} -
        - - - -
        - -{% include commento.html %} - -{{site.data.alerts.hr_shaded}} - -{% include footer.html %} diff --git a/data/sidebars/community_sidebar.yaml b/data/sidebars/community_sidebar.yaml index 03cbe6262c6..968251028c0 100644 --- a/data/sidebars/community_sidebar.yaml +++ b/data/sidebars/community_sidebar.yaml @@ -161,4 +161,3 @@ entries: - diff --git a/faq.html b/faq.html deleted file mode 100644 index 6dedbd60f11..00000000000 --- a/faq.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: FAQ -permalink: /faq/index.html -redirect_to: https://precice.discourse.group/tag/faq ---- diff --git a/imported/aste b/imported/aste deleted file mode 160000 index 4e32a4f942e..00000000000 --- a/imported/aste +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4e32a4f942e0b96f56095cea653d4af470dee1d4 diff --git a/imported/calculix-adapter b/imported/calculix-adapter deleted file mode 160000 index 5a3eaedcd16..00000000000 --- a/imported/calculix-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5a3eaedcd166de772ef2269e26e8ead8144a6d35 diff --git a/imported/code_aster-adapter b/imported/code_aster-adapter deleted file mode 160000 index 6902b69ff0f..00000000000 --- a/imported/code_aster-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6902b69ff0f97a728d536e895891dd2bb222b4ca diff --git a/imported/dealii-adapter b/imported/dealii-adapter deleted file mode 160000 index 67ae059ade0..00000000000 --- a/imported/dealii-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 67ae059ade0db805ba4d5cd562d7895b36acbe37 diff --git a/imported/dumux-adapter b/imported/dumux-adapter deleted file mode 160000 index 7bb2e8d0551..00000000000 --- a/imported/dumux-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7bb2e8d0551283f47fd71d5a44e695154a328731 diff --git a/imported/dune-adapter b/imported/dune-adapter deleted file mode 160000 index 0723530a3f4..00000000000 --- a/imported/dune-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0723530a3f4131ed720b4883daf4aa99aac5c485 diff --git a/imported/fenics-adapter b/imported/fenics-adapter deleted file mode 160000 index 46c8deb54b1..00000000000 --- a/imported/fenics-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 46c8deb54b14c69d9b1c55efd0e94ba6e3e65ea2 diff --git a/imported/fenicsx-adapter b/imported/fenicsx-adapter deleted file mode 160000 index 7d689a41a7d..00000000000 --- a/imported/fenicsx-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7d689a41a7d7fe197f028ba324fa88082ecee18a diff --git a/imported/fmi-runner b/imported/fmi-runner deleted file mode 160000 index 4003d4b4703..00000000000 --- a/imported/fmi-runner +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4003d4b4703599cf664f274912f5f81b2f2c5c64 diff --git a/imported/micro-manager b/imported/micro-manager deleted file mode 160000 index e67a1aa5481..00000000000 --- a/imported/micro-manager +++ /dev/null @@ -1 +0,0 @@ -Subproject commit e67a1aa5481e85a37a15f10196494d9b1950a659 diff --git a/imported/openfoam-adapter b/imported/openfoam-adapter deleted file mode 160000 index 0801887b958..00000000000 --- a/imported/openfoam-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0801887b958f3101389cb719838dc8fc864d5369 diff --git a/imported/preeco-orga b/imported/preeco-orga deleted file mode 160000 index 68cc53b83c7..00000000000 --- a/imported/preeco-orga +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 68cc53b83c7525048279f81073efb8ad4188aca4 diff --git a/imported/su2-adapter b/imported/su2-adapter deleted file mode 160000 index fde3106dab5..00000000000 --- a/imported/su2-adapter +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fde3106dab5941590f45aba135eec9fe0f450a47 diff --git a/imported/tutorials b/imported/tutorials deleted file mode 160000 index 1622cfa837e..00000000000 --- a/imported/tutorials +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 1622cfa837e521ecb4ac92f395fd0a8a645f9284 diff --git a/layouts/partials/news_banner.html b/layouts/partials/news_banner.html index fec9412684c..783b587418a 100644 --- a/layouts/partials/news_banner.html +++ b/layouts/partials/news_banner.html @@ -6,12 +6,14 @@ block condition to `{{ if .onlanding }}`. */}} -{{ if false }} +{{ if true }}