You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
KernelOperator no longer has the fields A0 and nzpos. The sparsity pattern is now built lazily and stored in op.pattern. Use the exported accessors instead:
op.A0 → sparsity_pattern(op)
op.nzpos → nonzero_positions(op)
With jacobian = :matrixfree, allocate_jacobian(op) returns a MatrixFreeJacobian instead of a sparse matrix.
New features
Matrix-free Jacobian: KernelOperator(…; jacobian = :matrixfree) and MatrixFreeJacobian (prepare!, mul!, rebind!). The product reuses per-task buffers, so it does not allocate in Krylov iterations.
MatrixFreeSolver: a Gridap LinearSolver built on Krylov.jl (GMRES, FGMRES, CG) with right preconditioning. Convergence is decided on the true residual, and the solve runs with one BLAS thread. It provides the hooks the Newton solver needs (convergence, iteration count, tolerance, preconditioner builds).
Preconditioner slots:
LaggedAssembled(solver; every): assembled Jacobian, refactorised every every Newton iterations.
BlockJacobi(): nodal block Jacobi.
eigenvalue_bounds: Ritz estimates of the extreme eigenvalues of the preconditioned operator.
KernelFunctional(f, U; reduce = :sum | :min | :max): compiled evaluation of scalar functionals, such as energy or the injectivity step.
Activity
JuliaRegistrator commentedon Nov 6, 2026
Registration pull request created: JuliaRegistries/General/175085
Tagging
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via: