Skip to content
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6c382e0
Experiment not installing petsc4py
connorjward Mar 31, 2025
cd598cb
Install numpy so install works
connorjward Apr 1, 2025
443267b
fixups
connorjward Apr 1, 2025
7c481a4
Use petsctools package
connorjward Apr 1, 2025
7b8e539
Install numpy v2 manually since apt package is too old
connorjward Apr 2, 2025
028d9ed
fixup
connorjward Apr 2, 2025
d0eabd0
fixup
connorjward Apr 2, 2025
35d257f
add petsc4py back in as a build dep
connorjward Apr 3, 2025
79d4181
cleanup
connorjward Apr 3, 2025
8e5ae9f
fixup
connorjward Apr 3, 2025
2a8a59a
Constrain PETSc versions
connorjward Apr 3, 2025
abf3a87
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward Apr 3, 2025
bccd833
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward Apr 8, 2025
6c1f3e0
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward Apr 23, 2025
1ce81e4
Add version_spec check to setup.py
connorjward Apr 23, 2025
6310a21
fixup
connorjward Apr 23, 2025
d3bc641
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward May 22, 2025
99d929c
pyproject fixup
connorjward May 22, 2025
bb0e837
Cleanup
connorjward May 22, 2025
8d14dad
Cleanup setup.py
connorjward May 22, 2025
a4e24a0
Move OptionsManager to petsctools
connorjward May 22, 2025
282112b
Point to branch
connorjward May 22, 2025
54139bd
Linting and fixes
connorjward May 22, 2025
ccbb5f9
Fix docs and address warnings
connorjward May 28, 2025
3f1bb78
Use warnings.deprecated for OptionsManager
connorjward Jun 10, 2025
97c53d9
Use default petsctools branch
connorjward Jun 10, 2025
e2923a7
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward Jun 10, 2025
6dc70ea
Fully remove firedrake.petsc.OptionsManager
connorjward Jun 12, 2025
a1af99d
Merge remote-tracking branch 'origin/master' into connorjward/petsc-i…
connorjward Jun 12, 2025
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
1 change: 1 addition & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@
(r'py:.*', r'ufl\..*'),
(r'py:.*', r'PETSc\..*'),
(r'py:.*', r'progress\..*'),
(r'py:.*', r'petsctools\..*'),
# Ignore undocumented PyOP2
('py:class', 'pyop2.caching.Cached'),
# Ignore mission docs from Firedrake internal "private" code
Expand Down
2 changes: 1 addition & 1 deletion docs/source/optimising.rst
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Caveats

.. code-block:: python

from firedrake.petsc import OptionsManager
from petsctools import OptionsManager

# If the -log_view flag is passed you don't need to call
# PETSc.Log.begin because it is done automatically.
Expand Down
46 changes: 31 additions & 15 deletions firedrake/__init__.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,38 @@
import sys
from firedrake.configuration import setup_cache_dirs
# The range of PETSc versions supported by Firedrake. Note that unlike in
# firedrake-configure and pyproject.toml where we want to be strict about
# the specific version, here we are more permissive. This is to catch the
# case where users don't update their PETSc for a really long time or
# accidentally install a too-new release that isn't yet supported.
PETSC_SUPPORTED_VERSIONS = ">=3.23.0"


def init_petsc():
import os
import sys
import petsctools

# We conditionally pass '-options_left no' as in some circumstances (e.g.
# when running pytest) PETSc complains that command line options are not
# PETSc options.
if os.getenv("FIREDRAKE_DISABLE_OPTIONS_LEFT") == "1":
petsctools.init(sys.argv + ["-options_left", "no"], version_spec=PETSC_SUPPORTED_VERSIONS)
else:
petsctools.init(sys.argv, version_spec=PETSC_SUPPORTED_VERSIONS)


# Ensure petsc is initialised right away
init_petsc()

# Set up the cache directories before importing PyOP2.
from firedrake.configuration import setup_cache_dirs

setup_cache_dirs()

# Ensure petsc is initialised by us before anything else gets in there.
# We conditionally pass '-options_left no' as in some circumstances (e.g.
# when running pytest) PETSc complains that command line options are not
# PETSc options.
import os
import petsc4py
if os.getenv("FIREDRAKE_DISABLE_OPTIONS_LEFT") == "1":
petsc4py.init(sys.argv + ["-options_left", "no"])
else:
petsc4py.init(sys.argv)
del os, petsc4py

# Initialise PETSc events for both import and entire duration of program
import petsctools
from firedrake import petsc
_is_logging = "log_view" in petsc.OptionsManager.commandline_options
_is_logging = "log_view" in petsctools.OptionsManager.commandline_options
if _is_logging:
_main_event = petsc.PETSc.Log.Event("firedrake")
_main_event.begin()
Expand All @@ -29,6 +43,7 @@
import atexit
atexit.register(lambda: _main_event.end())
del atexit
del petsctools
del petsc

from ufl import *
Expand Down Expand Up @@ -85,6 +100,7 @@
# from firedrake._deprecation import output
# sys.modules["firedrake.output"] = output
from firedrake.output import *
import sys
sys.modules["firedrake.plot"] = plot
from firedrake.plot import *

Expand All @@ -104,7 +120,7 @@ def set_blas_num_threads():

"""
from ctypes import cdll
from firedrake.petsc import get_blas_library
from petsctools import get_blas_library

try:
blas_lib_path = get_blas_library()
Expand Down
3 changes: 2 additions & 1 deletion firedrake/checkpointing.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@
import finat.ufl
from pyop2 import op2
from pyop2.mpi import COMM_WORLD, internal_comm, MPI
from petsctools import OptionsManager
from firedrake.cython import hdf5interface as h5i
from firedrake.cython import dmcommon
from firedrake.petsc import PETSc, OptionsManager
from firedrake.petsc import PETSc
from firedrake.mesh import MeshTopology, ExtrudedMeshTopology, DEFAULT_MESH_NAME, make_mesh_from_coordinates, DistributedMeshOverlapType
from firedrake.functionspace import FunctionSpace
from firedrake import functionspaceimpl as impl
Expand Down
2 changes: 1 addition & 1 deletion firedrake/eigensolver.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
"""Specify and solve finite element eigenproblems."""
from petsctools import OptionsManager, flatten_parameters
from firedrake.assemble import assemble
from firedrake.bcs import extract_subdomain_ids, restricted_function_space
from firedrake.function import Function
from firedrake.ufl_expr import TrialFunction, TestFunction
from firedrake import utils
from firedrake.petsc import OptionsManager, flatten_parameters
from firedrake.exceptions import ConvergenceError
from ufl import replace, inner, dx
try:
Expand Down
5 changes: 2 additions & 3 deletions firedrake/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
MPI, COMM_WORLD, internal_comm, is_pyop2_comm, temp_internal_comm
)
from pyop2.utils import as_tuple
from petsctools import OptionsManager, get_external_packages

import firedrake.cython.dmcommon as dmcommon
import firedrake.cython.extrusion_numbering as extnum
Expand All @@ -31,9 +32,7 @@
from firedrake.utils import as_cstr, IntType, RealType
from firedrake.logging import info_red
from firedrake.parameters import parameters
from firedrake.petsc import (
PETSc, OptionsManager, get_external_packages, DEFAULT_PARTITIONER
)
from firedrake.petsc import PETSc, DEFAULT_PARTITIONER
from firedrake.adjoint_utils import MeshGeometryMixin
from pyadjoint import stop_annotating
import gem
Expand Down
Loading
Loading