Open pbrubeck opened 1 year ago
This is the output of solver.snes.ksp.pc.view()
PC Object: () 1 MPI process
type: python
Python: firedrake.SCPC
Firedrake custom preconditioner SCPC
Solving linear system using static condensation.
KSP Object: (condensed_field_) 1 MPI process
type: gmres
restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement
happy breakdown tolerance 1e-30
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000.
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (condensed_field_) 1 MPI process
type: mg
type is MULTIPLICATIVE, levels=2 cycles=v
Cycles per PCApply=1
Not using Galerkin computed coarse grid matrices
Coarse grid solver -- level 0 -------------------------------
KSP Object: (condensed_field_mg_coarse_) 1 MPI process
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000.
left preconditioning
using NONE norm type for convergence test
PC Object: (condensed_field_mg_coarse_) 1 MPI process
type: none
linear system matrix = precond matrix:
Mat Object: 1 MPI process
type: seqaij
rows=2921, cols=2921
total: nonzeros=46601, allocated nonzeros=46601
total number of mallocs used during MatSetValues calls=0
using I-node routines: found 1677 nodes, limit used is 5
Down solver (pre-smoother) on level 1 -------------------------------
KSP Object: (condensed_field_mg_levels_1_) 1 MPI process
type: preonly
maximum iterations=2, nonzero initial guess
tolerances: relative=1e-05, absolute=1e-50, divergence=10000.
left preconditioning
using NONE norm type for convergence test
PC Object: (condensed_field_mg_levels_1_) 1 MPI process
type: none
linear system matrix = precond matrix:
Mat Object: (condensed_field_) 1 MPI process
type: seqaij
rows=2921, cols=2921
total: nonzeros=46601, allocated nonzeros=46601
total number of mallocs used during MatSetValues calls=0
using I-node routines: found 1677 nodes, limit used is 5
Up solver (post-smoother) same as down solver (pre-smoother)
linear system matrix = precond matrix:
Mat Object: (condensed_field_) 1 MPI process
type: seqaij
rows=2921, cols=2921
total: nonzeros=46601, allocated nonzeros=46601
total number of mallocs used during MatSetValues calls=0
using I-node routines: found 1677 nodes, limit used is 5
Locally reconstructing unknowns.
linear system matrix = precond matrix:
Mat Object: () 1 MPI process
type: python
rows=3721, cols=3721
Python: firedrake.matrix_free.operators.ImplicitMatrixContext
Firedrake matrix-free operator ImplicitMatrixContext
Seems like the coarse space has the same dimension as the fine space.
Could it be that the Jacobian does not get coarsened when it is a slate.Tensor
?
The following script attempts to use static condensation (SCPC) as the outer solver and geometric multigrid as the inner solver to solve a continuous Lagrange formuation of Poisson.
The code fails with this error message:
I suspect that the routines to construct interpolators are not set up, and the fine KSP receives a coarse RHS. Another possiblity is that the coarse matrix is discretized directly from the fine Jacobian, as it could be the case that coarsening is not implemented for SLATE Tensors.