Serveral GMRES-type Krylov solvers. Only applies to the (default) finest grid level
This is a routine to select which preconditioner is applied, Precond_x = P^(-1)x
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | x |
Full GMRES without precondition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |
Restart GMRES
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter_total |
Full GMRES with left preconditioned
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |
Full GMRES with right precondition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |
Preconditioned restart GMRES
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |
ARNOLDI precess
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP,m_iter+1) | :: | V | ||
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1,m_iter) | :: | H | ||
| integer, | intent(in) | :: | k |
Preconditioned ARNOLDI precess
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP,m_iter+1) | :: | V | ||
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1,m_iter) | :: | H | ||
| integer, | intent(in) | :: | k |
APPLY GIVENS ROTATION
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1,m_iter) | :: | H | ||
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1) | :: | cs | ||
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1) | :: | sn | ||
| integer, | intent(in) | :: | k |
Apply BACK SUBSTITUTION
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(m_iter+1,m_iter) | :: | H | ||
| complex(kind=realdp), | intent(inout), | dimension(m_iter+1) | :: | beta | ||
| integer, | intent(in) | :: | k |
Right preconditioned GCR
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |
Flexible GMRES with right precondition
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| complex(kind=realdp), | intent(in), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | b | ||
| complex(kind=realdp), | intent(inout), | dimension(1-LAP:nx+LAP,1-LAP:ny+LAP) | :: | u | ||
| real(kind=realdp), | intent(out) | :: | Rerror | |||
| integer, | intent(inout) | :: | iter |