firedrakeproject / asQ

A library for implementing ParaDIAG timestepping algorithms using Firedrake
MIT License
4 stars 1 forks source link

shift PC for block solves #126

Open colinjcotter opened 1 year ago

colinjcotter commented 1 year ago

a shift PC could help when lambda1/lambda2 has small real part.

To implement this, we provide another form Jp to use as the preconditioning operator.

In this form, we replace

lambda1 -> lambda2(max(real(lambda1/lambda2), e0) + 1j*imag(lambda1/lambda2))

where e0 is the real shift parameter. Then if the real part of lambda1/lambda2 is less than e0, it is shifted to e0.