Skip to content

Commit bb5b800

Browse files
committed
Merge remote-tracking branch 'upstream/master' into merge_paradiag
2 parents 7999d83 + 3044940 commit bb5b800

36 files changed

+683
-355
lines changed

.github/workflows/ci_pipeline.yml

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
with:
2626
environment-file: ${{ env.YML }}
2727
create-args: >-
28-
python=3.12
28+
python=3.13
2929
- name: Code reformatting with black
3030
run: |
3131
black pySDC --check --diff --color
@@ -39,7 +39,7 @@ jobs:
3939
fail-fast: false
4040
matrix:
4141
env: ['base', 'fenics', 'mpi4py', 'petsc', 'pytorch']
42-
python: ['3.9', '3.10', '3.11', '3.12']
42+
python: ['3.9', '3.10', '3.11', '3.12', '3.13']
4343
defaults:
4444
run:
4545
shell: bash -l {0}
@@ -70,7 +70,7 @@ jobs:
7070
mv .coverage coverage_${{ matrix.env }}.dat
7171
- name: Uploading artifacts
7272
uses: actions/upload-artifact@v4
73-
if: matrix.python == '3.12'
73+
if: matrix.python == '3.13'
7474
with:
7575
name: test-artifacts-cpu-${{ matrix.env }}
7676
path: |
@@ -98,7 +98,6 @@ jobs:
9898
- Second_orderSDC
9999
- soft_failure
100100
- TOMS
101-
python: ['3.9', '3.10', '3.11', '3.12']
102101
defaults:
103102
run:
104103
shell: bash -l {0}
@@ -109,8 +108,6 @@ jobs:
109108
uses: mamba-org/setup-micromamba@v1
110109
with:
111110
environment-file: "pySDC/projects/${{ matrix.env }}/environment.yml"
112-
create-args: >-
113-
python=${{ matrix.python }}
114111
- name: Install additional packages as needed
115112
run: |
116113
micromamba install -y --file etc/environment-tests.yml --freeze-installed
@@ -126,7 +123,6 @@ jobs:
126123
mv .coverage coverage_${{ matrix.env }}.dat
127124
- name: Uploading artifacts
128125
uses: actions/upload-artifact@v4
129-
if: matrix.python == '3.12'
130126
with:
131127
name: test-artifacts-project-${{ matrix.env }}
132128
path: |
@@ -173,14 +169,19 @@ jobs:
173169
user_firedrake_tests:
174170
runs-on: ubuntu-latest
175171
container:
176-
image: firedrakeproject/firedrake-vanilla:latest
172+
image: firedrakeproject/firedrake-vanilla-default:latest
177173
options: --user root
178174
volumes:
179175
- ${{ github.workspace }}:/repositories
180176
defaults:
181177
run:
182178
shell: bash -l {0}
183179
steps:
180+
- name: Fix HOME
181+
# For unknown reasons GitHub actions overwrite HOME to /github/home
182+
# which will break everything unless fixed
183+
# (https://github.com/actions/runner/issues/863)
184+
run: echo "HOME=/home/firedrake" >> "$GITHUB_ENV"
184185
- name: Checkout pySDC
185186
uses: actions/checkout@v4
186187
with:
@@ -190,25 +191,31 @@ jobs:
190191
with:
191192
repository: firedrakeproject/gusto
192193
path: ./gusto_repo
194+
- name: Create virtual environment
195+
# pass '--system-site-packages' so Firedrake can be found
196+
run: python3 -m venv --system-site-packages venv-pySDC
197+
193198
- name: Install pySDC
194199
run: |
195-
. /home/firedrake/firedrake/bin/activate
196-
python -m pip install --no-deps -e /repositories/pySDC
197-
python -m pip install qmat
200+
. venv-pySDC/bin/activate
201+
pip install -e /repositories/pySDC
202+
# test installation
203+
python -c "import pySDC; print(f'pySDC module: {pySDC}')"
198204
- name: Install gusto
199205
run: |
200-
. /home/firedrake/firedrake/bin/activate
201-
python -m pip install -e /repositories/gusto_repo
206+
. venv-pySDC/bin/activate
207+
pip install -e /repositories/gusto_repo
208+
# test installation
209+
python -c "import gusto; print(f'gusto module: {gusto}')"
202210
- name: run pytest
203211
run: |
204-
. /home/firedrake/firedrake/bin/activate
212+
. venv-pySDC/bin/activate
205213
firedrake-clean
206214
cd ./pySDC
207-
coverage run -m pytest --continue-on-collection-errors -v --durations=0 /repositories/pySDC/pySDC/tests -m firedrake
215+
python -m coverage run -m pytest --continue-on-collection-errors -v --durations=0 /repositories/pySDC/pySDC/tests -m firedrake
208216
timeout-minutes: 45
209217
- name: Make coverage report
210218
run: |
211-
. /home/firedrake/firedrake/bin/activate
212219
213220
cd ./pySDC
214221
mv data ../data_firedrake

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
:arrow_left: [Back to main page](./README.md)
44

5+
- April 11, 2025: Version 5.6 adds a framework for MPI-parallel I/O, developed by [\@tlunet](https://github.com/tlunet), making it easier to visualize the data obtained with pySDC on HPC machines in software such as ParaView.
6+
Also, pySDC is now compatible with the finite element library [Firedrake](https://github.com/firedrakeproject/firedrake) and the geophysical fluid dynamics library
7+
[Gusto](https://github.com/firedrakeproject/gusto), thanks to [\@jshipton](https://github.com/jshipton) and [\@brownbaerchen](https://github.com/brownbaerchen).
8+
The former allows to setup PDEs with finite element discretizations in pySDC and then solve in time with SDC and PFASST, while the latter allows to setup a geophysical fluid dynamics problem and then use pySDC with any SDC setup as a timestepper in Gusto.
59
- June 24, 2024: Major summer cleanup with Version 5.5. [\@tlunet](https://github.com/tlunet) extracted all quadrature-related stuff into his new standalone code
610
[qmat](https://github.com/Parallel-in-Time/qmat), which makes pySDC much more focussed and both parts easier to maintain.
711
[\@lisawim](https://github.com/lisawim) worked a lot on the DAE sweepers (including an MPI-parallel version), while [\@brownbaerchen](https://github.com/brownbaerchen) has fun with GPUs.

CITATION.cff

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,15 @@ authors:
2828
given-names: Jakob
2929
orcid: https://orcid.org/0000-0001-6280-8396
3030
affiliation: "Jülich Supercomputing Centre, Forschungszentrum Jülich GmbH, 52425 Jülich, Germany"
31+
- family-names: Shipton
32+
given-names: Jemma
33+
orcid: https://orcid.org/0000-0002-8635-0831
34+
affiliation: "Department of Mathematics and Statistics, University of Exeter, Exeter, UK"
3135

3236

33-
version: 5.5.2
37+
version: 5.6
3438
doi: 10.5281/zenodo.594191
35-
date-released: 2024-09-23
39+
date-released: 2025-04-11
3640
keywords:
3741
- "parallel-in-time"
3842
- "spectral deferred corrections"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ Any contribution is dearly welcome! If you want to contribute, please take the t
112112
This project has received funding from the [European High-Performance
113113
Computing Joint Undertaking](https://eurohpc-ju.europa.eu/) (JU) under
114114
grant agreement No 955701 ([TIME-X](https://www.time-x-eurohpc.eu/))
115-
and grant agreement No 101118139.
115+
and grant agreement No 101118139.
116116
The JU receives support from the European Union's Horizon 2020 research
117117
and innovation programme and Belgium, France, Germany, and Switzerland.
118118
This project also received funding from the [German Federal Ministry of
119119
Education and Research](https://www.bmbf.de/bmbf/en/home/home_node.html)
120120
(BMBF) grants 16HPC047 and 16ME0679K. Supported by the European Union - NextGenerationEU.
121-
The project also received help from the [Helmholtz Platform for Research Software Engineering - Preparatory Study (HiRSE_PS)](https://www.helmholtz-hirse.de/).
121+
The project also received help from the [Joint Lab "Helmholtz Information - Research Software Engineering" (HiRSE)](https://www.helmholtz-hirse.de/).
122122

123123
<p align="center">
124124
<img src="./docs/img/EuroHPC.jpg" height="105"/> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

docs/source/conf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@
7070
# built documents.
7171
#
7272
# The short X.Y version.
73-
version = '5.5'
73+
version = '5.6'
7474
# The full version, including alpha/beta/rc tags.
75-
release = '5.5.2'
75+
release = '5.6'
7676

7777
# The language for content autogenerated by Sphinx. Refer to documentation
7878
# for a list of supported languages.

etc/environment-fenics.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ dependencies:
99
- matplotlib>=3.0
1010
- dill>=0.2.6
1111
- fenics>=2019.1.0
12-
- mpi4py<=3.1.4
12+
- mpi4py
1313
- pip
1414
- pip:
1515
- qmat>=0.1.8

etc/environment-mpi4py.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ dependencies:
1414
- pip
1515
- pip:
1616
- qmat>=0.1.8
17+
- pytest-isolate-mpi

pySDC/core/problem.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,18 @@ def f_init(self):
8080
def get_default_sweeper_class(cls):
8181
raise NotImplementedError(f'No default sweeper class implemented for {cls} problem!')
8282

83+
def setUpFieldsIO(self):
84+
"""
85+
Set up FieldsIO for MPI with the space decomposition of this problem
86+
"""
87+
pass
88+
89+
def getOutputFile(self, fileName):
90+
raise NotImplementedError(f'No output implemented file for {type(self).__name__}')
91+
92+
def processSolutionForOutput(self, u):
93+
return u
94+
8395
def eval_f(self, u, t):
8496
"""
8597
Abstract interface to RHS computation of the ODE

0 commit comments

Comments
 (0)