Skip to content

Block preconditioners

JHopeCollins edited this page Nov 20, 2023 · 1 revision

Shallow water equations

PatchPC

  • Vanka patches give resolution-independent iteration counts if the Courant number is fixed.

Shift preconditioning

  • The blocks with coefficients which resemble large and imaginary timesteps are the hardest to solve (at least with the PatchPC).
  • These blocks could be preconditioned with the same operator but with 'easier' coefficients (i.e. looking like more real or smaller timestep).

Hybridisation

  • CC: This may not decrease the iteration counts, but hopefully each iteration would be cheaper to solve.
  • The linear SWE are hybridisable, but the advection term isn't, so we'd need some approximation to use this for the nonlinear SWE.
    • Slate essentially removes any ('+') expression from the facet integral forms to carry out the hybridisation.
    • The DG forms in the continuity equation would need rewriting so that dropping ('+') expressions still results in a reasonable form.
    • This can be achieved by integrating by parts a second time so that the facet integrals are the difference of the upwind term and a consistent term.

Vertical slice

PatchPC

  • Vanka patches give resolution-independent iteration counts if the Courant number is fixed.
  • The number of iterations required increases quickly with the Courant number (faster than for the SWE), which leads to poor performance of the worst blocks. Why is this?
    • VS is just harder?
    • We aren't using multigrid with VS (because we're using periodic meshes)?
    • Some other reason?

Shift preconditioning

  • The blocks with coefficients which resemble large and imaginary timesteps are the hardest to solve (at least with the PatchPC).
  • These blocks could be preconditioned with the same operator but with 'easier' coefficients (i.e. looking like more real or smaller timestep).

Hybridisation

  • The vertical slice equations contain advection terms so these will need the same treatment as the SWE terms.
  • HybridizationPC is written for two fields (the velocity and the continuity variable, either density or depth), so for the vertical slice equations we'd first need to eliminate the temperature, then hybridise the resulting Schur complement.