Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/workflows/core.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ jobs:
arch: [default, complex]
runs-on: [self-hosted, Linux]
container:
image: ubuntu:latest
# TODO: set to 'ubuntu:latest'
image: ubuntu:noble
outputs:
sdist_conclusion: ${{ steps.report_sdist.outputs.conclusion }}
env:
Expand Down Expand Up @@ -477,7 +478,8 @@ jobs:
name: Build and test Firedrake (Linux CUDA)
runs-on: [self-hosted, Linux, gpu]
container:
image: ubuntu:latest
# TODO: set to 'ubuntu:latest'
image: ubuntu:noble
options: --gpus all
if: inputs.test_gpu
env:
Expand Down
15 changes: 4 additions & 11 deletions docs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ help:

TARGETS = html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext

GENERATED_FILES = source/team.rst source/demos source/element_list.csv source/apt_deps.txt source/homebrew_deps.txt source/minimal_apt_deps.txt source/petsc_configure_options.txt
GENERATED_FILES = source/team.rst source/demos source/element_list.csv source/apt_deps.txt source/homebrew_deps.txt source/petsc_configure_options.txt

publishpdf:
env FIREDRAKE_MANUAL_RELEASE=`date +%Y-%m` $(MAKE) latexpdf
Expand Down Expand Up @@ -86,26 +86,19 @@ source/team.rst: source/team2.py

source/apt_deps.txt:
python3 ../scripts/firedrake-configure \
--package-manager apt-x86_64 \
--os ubuntu24.04-x86_64 \
--show-system-packages > source/apt_deps.tmp
mv source/apt_deps.tmp source/apt_deps.txt

source/homebrew_deps.txt:
python3 ../scripts/firedrake-configure \
--package-manager brew-arm64 \
--os macos-arm64 \
--show-system-packages > source/homebrew_deps.tmp
mv source/homebrew_deps.tmp source/homebrew_deps.txt

source/minimal_apt_deps.txt:
python3 ../scripts/firedrake-configure \
--package-manager apt-x86_64 \
--show-minimal-system-packages > source/minimal_apt_deps.tmp
mv source/minimal_apt_deps.tmp source/minimal_apt_deps.txt


source/petsc_configure_options.txt:
python3 ../scripts/firedrake-configure \
--no-package-manager \
--os unknown \
--show-petsc-configure-options > source/petsc_configure_options.tmp
mv source/petsc_configure_options.tmp source/petsc_configure_options.txt

Expand Down
102 changes: 83 additions & 19 deletions docs/source/firedrake_26.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,6 @@ Participants may register for either part of the week, but we hope that many
will take the opportunity to learn more about these two related projects by
staying for the whole week.

Key dates
---------

* Abstract deadline 20 April 2026.
* Registration deadline 27 April 2026.
* 1-3 June PETSc user meeting 2026.
* 3-5 June Firedrake '26.

Venue & registration
--------------------

Expand Down Expand Up @@ -63,16 +55,88 @@ venue <https://mercureoxfordhawkwellhouse.com>`__ or booking a hotel by
London Paddington, as it is a convenient midpoint between London Heathrow and
Oxford.

`Register here! <https://cvent.me/lqGoPm>`__

Abstract submissions
--------------------
Programme
---------

Submissions for either part of the week for either oral or poster presentation
can be made `on EasyChair
<https://easychair.org/conferences/?conf=petscfiredrake26>`__. In the spirit of
supporting the whole community to communicate their results, we anticipate that
all submissions will be accepted for presentation in some form.
Abstract submissions are now closed. The full programme will be made available
soon but the agenda for the week is as follows (note that timings may not be
exact):

**Monday**

.. table::
:align: left

=========== ============
10:00-10:30 PETSc talks
10:30-11:00 coffee break
11:00-11:45 PETSc talks
11:45-13:30 lunch
13:30-14:45 PETSc talks
14:45-15:30 coffee break
15:30-16:45 PETSc talks
=========== ============

**Tuesday**

.. table::
:align: left

=========== ============
09:00-10:00 PETSc talks
10:00-10:45 coffee break
10:45-11:45 PETSc talks
11:45-13:30 lunch
13:30-14:45 PETSc talks
14:45-15:30 coffee break
15:30-16:45 PETSc talks
=========== ============

**Wednesday**

.. table::
:align: left

=========== ====================
09:00-10:15 PETSc tutorial 1
10:15-11:00 coffee break
11:00-12:15 PETSc tutorial 2
12:15-13:30 lunch
13:30-14:45 Firedrake tutorial 1
14:45-15:30 coffee break
15:30-16:45 Firedrake tutorial 2
16:45-17:30 poster session
=========== ====================

**Thursday**

.. table::
:align: left

=========== ===============
09:00-10:00 Firedrake talks
10:00-10:45 coffee break
10:45-11:45 Firedrake talks
11:45-13:30 lunch
13:30-14:45 Firedrake talks
14:45-15:30 coffee break
15:30-16:45 Firedrake talks
=========== ===============

**Friday**

.. table::
:align: left

=========== ===============
09:00-10:00 Firedrake talks
10:00-10:45 coffee break
10:45-11:45 Firedrake talks
11:45-13:30 lunch
13:30-14:15 Firedrake talks
14:15-15:00 coffee break
15:00-16:00 Firedrake talks
=========== ===============

Travel
------
Expand All @@ -86,13 +150,13 @@ The venue is:
| United Kingdom

From Oxford
...........
~~~~~~~~~~~

The venue is on the number 3 and 3A bus routes from Oxford Station. Buses are
frequent and contactless credit card payments are accepted on the bus.

By air
......
~~~~~~

Oxford lies between London and Birmingham. The closest London airport is London
Heathrow.
Expand Down
11 changes: 5 additions & 6 deletions docs/source/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,9 @@ ensure that these system dependencies are in place. Some of the dependencies
downloaded by PETSc ``configure`` by passing additional flags like
``--download-mpich`` or ``--download-openblas`` (run ``./configure --help | less`` to
see what is available). To give you a guide as to what system dependencies are
needed, on Ubuntu they are:
needed, on Ubuntu they are::

.. literalinclude:: minimal_apt_deps.txt
:language: text
build-essential flex gfortran git ninja-build pkg-config python3-dev python3-pip

.. _install_petsc:

Expand Down Expand Up @@ -157,15 +156,15 @@ do the following steps:
If you are using one of the
:ref:`officially supported distributions<supported_systems>` then these configure
options will include paths to system packages so PETSc can correctly find and
link against them. If you are not then you should pass the ``--no-package-manager``
link against them. If you are not then you should pass the ``--os unknown``
flag to obtain a set of configure options where ``firedrake-configure``
pessimistically assumes that no external packages are available, and hence need
to be downloaded and compiled from source::

$ python3 ../firedrake-configure --no-package-manager --show-petsc-configure-options | xargs -L1 ./configure
$ python3 ../firedrake-configure --os unknown --show-petsc-configure-options | xargs -L1 ./configure

For the default build, running ``firedrake-configure`` with
``--no-package-manager`` will produce the flags:
``--os unknown`` will produce the flags:

.. literalinclude:: petsc_configure_options.txt
:language: text
Expand Down
2 changes: 1 addition & 1 deletion firedrake/adjoint/covariance_operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -669,7 +669,7 @@ def rng(self):
return self._rngs

def sample(self, rng=None, tensor=None):
tensor = tensor or Function(self.function_space)
tensor = tensor or Function(self.function_space())
for cov, tsub, rsub in zip(self.subcovariances,
tensor.subfunctions,
rng or self.rng()):
Expand Down
14 changes: 7 additions & 7 deletions firedrake/preconditioners/assembled.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ class AssembledPC(PCBase):
_prefix = "assembled_"

def initialize(self, pc):
from firedrake.assemble import get_assembler
A, P = pc.getOperators()

if pc.type != "python":
Expand Down Expand Up @@ -45,7 +44,13 @@ def initialize(self, pc):

(a, bcs) = self.form(pc, test, trial)

form_assembler = get_assembler(a, bcs=bcs, form_compiler_parameters=fcp, mat_type=mat_type, options_prefix=options_prefix)
self._ctx_ref = self.new_snes_ctx(opc, a, bcs, mat_type,
fcp=fcp,
sub_mat_type=sub_mat_type,
options_prefix=options_prefix)

form_assembler = self._ctx_ref._assembler_jac

self.P = form_assembler.allocate()
self._assemble_P = form_assembler.assemble
self._assemble_P(tensor=self.P)
Expand All @@ -62,11 +67,6 @@ def initialize(self, pc):
# We set a DM and an appropriate SNESContext on the constructed PC so one
# can do e.g. multigrid or patch solves.
dm = opc.getDM()
self._ctx_ref = self.new_snes_ctx(opc, a, bcs, mat_type,
fcp=fcp,
sub_mat_type=sub_mat_type,
options_prefix=options_prefix)

pc.setDM(dm)
pc.setOptionsPrefix(options_prefix)
pc.setOperators(A, self.P.petscmat)
Expand Down
30 changes: 11 additions & 19 deletions firedrake/scripts/firedrake-zenodo
Original file line number Diff line number Diff line change
Expand Up @@ -287,35 +287,27 @@ variable FIREDRAKE_GITHUB_TOKEN to a github personal access token.""")


def zenodo_records():
"""Grab all zenodo records of tagged Firedrake component releases.
"""Grab the 100 most recent zenodo records of tagged Firedrake component releases.

:returns: An iterable of zenodo records.
:raises LookupError: if we were not able find any records."""
result = None
i = 1
while True:
if i > 8000//25:
raise RuntimeError("More than 8000 uploads on zenodo?")
:raises LookupError: if we were not able find any records.

We only load the 100 most recent tags to avoid running into rate-limiter issues
from Zenodo.

"""
result = []
for i in range(1, 5):
response = requests.get(f"{ZENODO_URL}/records", params={"q": 'owners:19586 OR owners:19587',
"all_versions": True,
"size": 25,
"sort": "mostrecent",
"page": i})
if response.status_code == 200:
if result is None:
result = response.json()
else:
tmp = response.json()
result["hits"]["hits"].extend(tmp["hits"]["hits"])
n = len(result["hits"]["hits"])
expect = result["hits"]["total"]
if expect == n:
return result["hits"]["hits"]
elif expect < n:
raise LookupError("Have more hits than Zenodo reports in total")
i += 1
result.extend(response.json()["hits"]["hits"])
else:
raise LookupError("Unable to get zenodo records: %s" % response.json())
return result


def zenodo_metarecords():
Expand Down
18 changes: 12 additions & 6 deletions firedrake/solving_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,12 +282,18 @@ def reconstruct(self, problem=None, mat_type=None, pmat_type=None, **kwargs):
problem = problem or self._problem
mat_type = mat_type or self.mat_type
pmat_type = pmat_type or self.pmat_type
kwargs.setdefault("sub_mat_type", self.sub_mat_type)
kwargs.setdefault("sub_pmat_type", self.sub_pmat_type)
kwargs.setdefault("appctx", self.appctx)
kwargs.setdefault("options_prefix", self.options_prefix)
kwargs.setdefault("transfer_manager", self.transfer_manager)
kwargs.setdefault("pre_apply_bcs", self.pre_apply_bcs)

default_options = {
"sub_mat_type": self.sub_mat_type,
"sub_pmat_type": self.sub_pmat_type,
"appctx": self.appctx,
"options_prefix": self.options_prefix,
"transfer_manager": self.transfer_manager,
"pre_apply_bcs": self.pre_apply_bcs,
}
for k, v in default_options.items():
if kwargs.get(k) is None:
kwargs[k] = v
return _SNESContext(problem, mat_type, pmat_type, **kwargs)

@property
Expand Down
6 changes: 5 additions & 1 deletion scripts/check-config
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,13 @@ def check_min_python_version() -> None:
"requires-python = \">=(.*)\""
)
check_file_contains_pattern(
REPO_ROOT / "docs/source/install.rst",
REPO_ROOT / "docs" / "source" / "install.rst",
f"Python \\({min_python_version} or greater\\)"
)
check_file_contains_pattern(
REPO_ROOT / "scripts" / "firedrake-configure",
f"MINIMUM_PYTHON_VERSION = \"{min_python_version}\""
)


def check_petsc_version() -> None:
Expand Down
Loading
Loading