Iterative 3D solver based on PIM library
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public, | dimension(13) | :: | ipar |
Integer parameters of PIM solver |
Initialisation of 3d solver
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(solver3d_PIM_t), | intent(inout) | :: | self |
PIM solver |
||
| integer, | intent(in) | :: | comm |
MPI communicator |
||
| character(len=*), | intent(in) | :: | krylov_method |
Krylov method to be used, available options are (see PIM manual): - CG - RGMRES - BICGSTAB - RBICGSTAB |
||
| 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 |
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_PIM_t), | intent(inout) | :: | self |
PIM solver |
||
| integer, | intent(in) | :: | comm |
Not used, only the communicator from the create_PIM routine is used |
||
| 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 see PIM manual table 2 |
||
| integer, | intent(out) | :: | info |
On succesful solve (info>0) the number of iterations/restarts, for negative numbers see PIM manual |
||
| real(kind=FP), | intent(out), | optional | :: | res_true |
True relative residuum after solve |