Iterative 3D solver based on CERFACS library
Initialisation of 3d solver
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solver3d_CERFACS_t), | intent(inout) | :: | self |
CERFACS solver |
||
| integer, | intent(in) | :: | comm |
MPI communicator |
||
| character(len=*), | intent(in) | :: | krylov_method |
Krylov method to be used, available options are: - RGMRES |
||
| integer, | intent(in) | :: | ndim_loc |
Local dimension (on rank) of matrix |
||
| real(kind=FP), | intent(in) | :: | resmax |
Maximum allowed tolerance of solution x on normalised residual |
||
| 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 |
TODO |
|
| integer, | intent(in), | optional | :: | nrestart |
TODO |
|
| integer, | intent(in), | optional | :: | dbgout |
Debug output level |
Solves 3d problem
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solver3d_CERFACS_t), | intent(inout) | :: | self |
CERFACS solver |
||
| integer, | intent(in) | :: | comm |
TODO |
||
| 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 |
Residuum of preconditioned system |
||
| integer, | intent(out) | :: | info |
On succesful solve (info>0) the number of iterations |
||
| real(kind=FP), | intent(out), | optional | :: | res_true |
Residuum of unpreconditioned system |