Abstract class for 3D solver
Initialisation of 3d solver
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solver3d_t), | intent(inout) | :: | self |
Instance of class |
||
| integer, | intent(in) | :: | comm |
MPI communicator |
||
| character(len=*), | intent(in) | :: | krylov_method |
Krylov method to be used |
||
| integer, | intent(in) | :: | ndim_loc |
Local dimension (on rank) of matrix |
||
| real(kind=FP), | intent(in) | :: | resmax |
Maximum allowed residual of solution |
||
| procedure(matvec_interface) | :: | matvec |
Routine performing matrix vector multiplication |
|||
| procedure(precond_interface), | optional | :: | precondl |
Routine performing left preconditioning |
||
| procedure(precond_interface), | optional | :: | precondr |
Routine performing right preconditioning |
||
| integer, | intent(in), | optional | :: | maxiter |
Maximum number of outer iterations (default=10) |
|
| integer, | intent(in), | optional | :: | nrestart |
Number of iterations before restart (default=10) |
|
| integer, | intent(in), | optional | :: | dbgout |
Debug output level |
Solves 3d problem
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solver3d_t), | intent(inout) | :: | self |
Instance of class |
||
| integer, | intent(in) | :: | comm |
MPI communicator |
||
| real(kind=FP), | intent(in), | dimension(self%ndim_loc) | :: | rhs |
Right hand side |
|
| real(kind=FP), | intent(inout), | dimension(self%ndim_loc) | :: | sol |
Solution on output, on input initial guess |
|
| real(kind=FP), | intent(out) | :: | res |
Relative pseudo-residuum after solve |
||
| integer, | intent(out) | :: | info |
Info parameter, successful solve if >= 0 |
||
| real(kind=FP), | intent(out), | optional | :: | res_true |
True relative residuum after solve |