Hi,
Can you provide the equations you are solving?
Do you also modify the matrix for the pressure Poisson equation?
If so, there are LOTS of changes that need to be updated deeply inside the SEMG.
The default preconditioner for PnPn-2 has theses components:
- Multigrid SEMG (hsmg_solve), Typically, N=7 (lx1=8) -> N=3 -> N=1
- Schwatz smoother (hsmg_schwarz), where subdomains are approximately solved by FDM (hsmg_fdm).
Basically, it approximates the inverse of the elementwise mat-vec with tensor products.
For your case, this might be tricky if the operator is not separable.
- crs: Coarse grid (N=1) solve (hsmg_coarse_solve) via either XXT or HYPRE.
This turns out to be very easy since it uses Galerkin projection
and one only needs to update the forward operator in get_local_crs_galerkin.
Alternatively, I'd suggest trying uzprec first.
Then, I'd probably try two grid method: uzprec + crs or jacobi + crs.
It will be easier to avoid Schwatz smoother and replace it with Jacobi (+ Chebyshev) smoother.
You can follow hmh_gmres, replace fdm_h1 with jacobi or uzprec, followed by a your updated crs_solve_h1.
All of this assumes you still have symmetric positive definite matrix. If not, you might want to consider different approaches.
Hope this helps,
Yu-Hsiang
--