Skip to content

DO NOT SQUASH Merge main into release#5025

Draft
connorjward wants to merge 165 commits intoreleasefrom
connorjward/merge-main
Draft

DO NOT SQUASH Merge main into release#5025
connorjward wants to merge 165 commits intoreleasefrom
connorjward/merge-main

Conversation

@connorjward
Copy link
Copy Markdown
Contributor

Unbelievably there were no merge conflicts.

Since we just released 2025.10.4 this is safe to do. We can't release 2026.4.0 until UFL and FIAT also have releases.

stefanozampini and others added 30 commits October 2, 2025 15:21
…from-petsc4py

Improved traceback from PETSc errors
…-into-main

DO NOT SQUASH merge release into main
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
Co-authored-by: Pablo Brubeck <brubeck@protonmail.com>
…4634)

the presence of the option, together with the sinvert for the bcs case can lead to confusion
Better to be consistent with whatever SLEPc believe is the proper default
* Adapt to UFL changing some methods to properties

See FEniCS/ufl#385.
* PMGPC: use native matrix-free (adjoint) interpolation
…#4693)

* ImplicitMatrixContext: create submatrix via MatCreateSubMatrixVirtual
* Cofunction: in-place assignment
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
Co-authored-by: Josh Hope-Collins <joshua.hope-collins13@imperial.ac.uk>
* Support mat_type="is"

* Support mat_type="nest", sub_mat_type="is"

* Propagate sub_mat_type and only set sub_mat_type on the diagonal blocks

* refine BDDC customization, use callables for gradient and divergence

* Simplify coordinates handling of bddcpc driver

* tabulate_exterior_derivative as MatIS

* FDMPC: Support other variants

* bddc: attach constants of the H(grad) space to discrete gradient

* add mat_type kawrg to local_to_global_map

* Test BDDC for H(curl) and H(div)

---------

Co-authored-by: Stefano Zampini <stefano.zampini@gmail.com>
connorjward and others added 29 commits March 12, 2026 11:45
Co-authored-by: David A. Ham <david.ham@imperial.ac.uk>
* Fixes for Real x extruded following firedrakeproject/fiat#237
* Don't special case Real so much
* Fix Real coefficients in interior facet integrals

After 1bd729a, TSFC no longer special-cases Real coefficients for
interior facet integrals, so it generates kernels that expect them
facet-doubled (shape 2*value_size). However assemble.py still passed
them as undoubled Globals with shape value_size, causing a loopy
out-of-bounds error when a Real coefficient appeared inside jump() or
a facet restriction.

This updates assemble.py to double the GlobalKernelArg dimension and
tile the Global data for Real coefficients on interior facet integrals,
matching what the TSFC kernel expects.

Closes #4991

* cleanup and actually test numerics

---------

Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
#4930)

* Netgen: curved meshes from Mesh constructor and refine_marked_elements

* Fix MeshHierarchy + Netgen OCC

* Sanitise refine_marked_elements, enable multiple refinements

* Ensure netgen parallel tests run with 2 processes
* 

Co-authored-by: Pablo Brubeck <brubeck@protonmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix assembly of Real coefficients for interior facet integrals

We have to read in the same data for both sides of the facet.

This PR means that PyOP2 generates code like:

```
for i < 2:
  for j < dim:
    t[i, j] = glob[j]
```

This hack will go away in pyop3.
* Tidy up Submesh

* Make everything a kwarg
* Use DMPlex.createBoxMesh to create our periodic meshes

This is necessary because the previous approach to generating periodic
meshes resulted in a DMPlex with a slightly invalid state that prevents
subsequent transformations (in particular extrusion).

We also avoid manually labelling the boundaries in favour of just renumbering
the existing 'Face Sets' label produced by the DMPlex.

* linting

* vom fix

* submesh fix

* More fixes, all of them?

* Apply suggestions from code review

Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>

* fixup

* Add warning for empty subdomains

* Apply suggestions from code review

Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>

* Try final PETSc fix

* Apply suggestion from @connorjward

* Remove breaking API change for this PR
* Prefer petsctools over pyop2.utils for certain utility methods
---------

Co-authored-by: Pablo Brubeck <brubeck@protonmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
#4891 introduced the use of tempfile.TemporaryDirectory with the
`delete` parameter. This was introduced in Python 3.12, and therefore
this commit breaks compatibility with Python 3.10 and 3.11.
pyproject.toml states that Python >= 3.10 is supported. Due to OS
constraints, we'll be stuck on Python 3.11 on our HPC systems for some
time.
* Added ngsPETSc test for all geometry type

Signed-off-by: uzerbianati <zerbinati@maths.ox.ac.uk>

* Pass the netgen mesh to geo

* test order of convergence

* add CSG3d test

* PETSc.IntType

---------

Signed-off-by: uzerbianati <zerbinati@maths.ox.ac.uk>
Co-authored-by: uzerbianati <zerbinati@maths.ox.ac.uk>
…5014)

Hybridisation PC was throwing warnings (hitting Gusto a lot) about
applying BCs to empty subdomain IDs. It was because the 'on boundary'
subdomain in a Gusto-like simulation is usually empty.
* delay creation of multifunction in order to avoid issues extending UFL in Irksome.

---------

Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
@connorjward connorjward force-pushed the connorjward/merge-main branch from 7c56e60 to ff83b6a Compare April 13, 2026 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.