News & Updates#

v2.0.dev0 (In Development)#

  • Comprehensive documentation overhaul: expanded module, class, and method docstrings across all subpackages.

  • Configuration system refinements: improved validation, clearer error messages.

  • New optimality criteria and utility functions for OED.

  • Enhanced support for robust and sensor-placement OED problems.

  • Improved test coverage and test infrastructure.

FEniCS → FEniCSx Migration (dolfinx 0.10)#

The following PyOED components have been migrated from the legacy fenics-dolfin 2019 backend to FEniCSx (dolfinx 0.10):

  • pyoed.models.simulation_models.fenics_models.advection_diffusionAdvectionDiffusion2D and its factory function fully rewritten for dolfinx 0.10, including Gmsh-based mesh generation (generate_ad_mesh), XDMF I/O, and a PETSc KSP/LU linear solver.

  • pyoed.models.observation_operators.fenics_observation_operatorsDolfinPointWise rewritten using the dolfinx geometry pipeline (bb_tree / compute_colliding_cells / cmap.pull_back / basix tabulation) and PETSc matrix/vector operations.

  • pyoed.models.error_models.LaplacianDolfinLaplacianErrorModel and DolfinBiLaplacianErrorModel rewritten for dolfinx 0.10 / PETSc. The legacy FFC quadrature trick is replaced with a dense scipy Cholesky factorisation of the mass matrix for covariance-sqrt operations. The mean is now stored as a plain numpy array (compatible with the assimilation layer’s GaussianPosterior).

  • pyoed.models.simulation_models.fenics_models.subsurfSubsurf2D and create_Subsurf2D_model rewritten for dolfinx 0.10 / PETSc. Mesh construction uses dolfinx.mesh.create_unit_square; function spaces use dolfinx.fem.functionspace; boundary conditions use fem.dirichletbc + fem.locate_dofs_topological/geometrical; assembly uses dolfinx.fem.petsc.assemble_matrix/vector; solvers use PETSc KSP with LU.

  • pyoed.assimilation.goal_oriented.prediction_operators.fenics_prediction_operatorsDolfinLinearPredictionOperator updated for dolfinx 0.10 / PETSc: vector creation uses PETSc.Mat.createVecLeft(), adjoint application uses multTranspose, and generate_vector now returns numpy by default.

  • pyoed.models.error_models.GaussianDolfinGaussianErrorModel fully migrated from legacy dolfin to numpy/scipy (no PETSc or dolfinx assembly required at runtime). The original implementation used a Real finite-element space purely as a linear-algebra wrapper; the migrated version stores all covariance operators as scipy.sparse / numpy arrays and eliminates the dolfin runtime dependency entirely. The public API is preserved: Vh now accepts a dolfinx.fem.FunctionSpace or a plain int (DOF count); the mean is stored as a numpy array; all matvec operations operate on numpy arrays.

The environment.yml dependency file has been updated accordingly: fenics-dolfin=2019.1.0 is replaced by fenics-dolfinx=0.10 (plus petsc4py, mpi4py, and pip dependencies gmsh and meshio).

All production PyOED components have now been migrated to FEniCSx (dolfinx 0.10).