Parallel proconditioned Krylov slover for 2D Helmholtz equation
| Type | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|
| type(matrix) | :: | A |
An empty matrix type for calling idrs solver |
|||
| type(preconditioner) | :: | M1 |
a preconditioner type for calling idrs solver. Since the IDR(s) solver part is ported, its input and output parameters are somewhat different from other solvers. |
|||
| complex(kind=realdp), | allocatable, dimension(:,:) | :: | u |
arrays for the solution |
||
| complex(kind=realdp), | allocatable, dimension(:,:) | :: | u_ex |
arrays for exact solution |
||
| complex(kind=realdp), | allocatable, dimension(:,:) | :: | u_err |
arrays for the error of solution |
||
| complex(kind=realdp), | allocatable, dimension(:,:) | :: | b |
arrays for the right-hand side |
||
| real(kind=realdp), | allocatable, dimension(:,:) | :: | xx |
coordinates |
||
| real(kind=realdp), | allocatable, dimension(:,:) | :: | yy |
coordinates |
||
| real(kind=realdp), | allocatable | :: | resvec(:) |
Residual vector for idrs solver |
||
| real(kind=realdp) | :: | time_start |
time_start: variable for runtime measurement start |
|||
| real(kind=realdp) | :: | time_end |
time_end: variable for runtime measurement end |
|||
| real(kind=realdp) | :: | u_err_max |
u_err_max: local max|u_err|=max|u-u_ex| |
|||
| real(kind=realdp) | :: | Aerror |
Aerror: global max|u_err|=max|u-u_ex| |
|||
| real(kind=realdp) | :: | Rerror |
Rerror: relative residual ||b-Au||/||b|| |
|||
| real(kind=realdp) | :: | max_k_local |
max_k_local: local maximum wavenumber |
|||
| real(kind=realdp) | :: | max_k_global |
max_k_global: global maximum wavenumber |
|||
| integer | :: | iter |
number of iterations and loop indexs |
|||
| integer | :: | k |
number of iterations and loop indexs |
|||
| integer | :: | i |
number of iterations and loop indexs |
|||
| integer | :: | j |
number of iterations and loop indexs |
|||
| integer | :: | flag |
an output flag for idrs solvers |