Neko 0.9.99
A portable framework for high-order spectral element flow simulations
|
Standard preconditioned generalized minimal residual method (SX version) More...
Public Member Functions | |
procedure, pass(this) | init (this, n, max_iter, m, lgmres, rel_tol, abs_tol, monitor) |
Initialise a standard GMRES solver. | |
procedure, pass(this) | free (this) |
Deallocate a standard GMRES solver. | |
procedure, pass(this) | solve (this, ax, x, f, n, coef, blst, gs_h, niter) |
Standard PCG solve. | |
procedure, pass(this) | solve_coupled (this, ax, x, y, z, fx, fy, fz, n, coef, blstx, blsty, blstz, gs_h, niter) |
Standard GMRES coupled solve. | |
procedure, pass(this) | ksp_init (this, max_iter, rel_tol, abs_tol, m, monitor) |
Base type constructor. | |
procedure, pass(this) | ksp_free (this) |
Base type destructor. | |
procedure, pass(this) | set_pc (this, m) |
Set preconditioner. | |
procedure(ksp_method), deferred, pass | solve (this, ax, x, f, n, coef, blst, gs_h, niter) |
Solve the system. | |
procedure(ksp_method_coupled), deferred, pass | solve_coupled (this, ax, x, y, z, fx, fy, fz, n, coef, blstx, blsty, blstz, gs_h, niter) |
Solve the system (coupled version). | |
procedure, pass(this) | monitor_start (this, name) |
Monitor start. | |
procedure, pass(this) | monitor_stop (this) |
Monitor stop. | |
procedure, pass(this) | monitor_iter (this, iter, rnorm) |
Monitor iteration. | |
procedure, pass(this) | is_converged (this, iter, residual) |
Check for convergence. | |
procedure(ksp_t_free), deferred, pass | free (this) |
Destructor. | |
Public Attributes | |
integer | lgmres |
real(kind=rp), dimension(:), allocatable | w |
real(kind=rp), dimension(:), allocatable | c |
real(kind=rp), dimension(:), allocatable | r |
real(kind=rp), dimension(:,:), allocatable | z |
real(kind=rp), dimension(:,:), allocatable | h |
real(kind=rp), dimension(:), allocatable | ml |
real(kind=rp), dimension(:,:), allocatable | v |
real(kind=rp), dimension(:), allocatable | s |
real(kind=rp), dimension(:), allocatable | mu |
real(kind=rp), dimension(:), allocatable | gam |
real(kind=rp), dimension(:), allocatable | wk1 |
real(kind=rp) | rnorm |
class(pc_t), pointer | m => null() |
Preconditioner. | |
real(kind=rp) | rel_tol |
Relative tolerance. | |
real(kind=rp) | abs_tol |
Absolute tolerance. | |
integer | max_iter |
Maximum number of iterations. | |
class(pc_t), allocatable | m_ident |
Internal preconditioner (Identity) | |
logical | monitor |
Turn on/off monitoring. | |
Definition at line 49 of file gmres_sx.f90.
Definition at line 65 of file gmres_sx.f90.
|
pure virtualinherited |
Definition at line 95 of file krylov.f90.
procedure, pass(this) gmres_sx::sx_gmres_t::init | ( | class(sx_gmres_t), intent(inout) | this, |
integer, intent(in) | n, | ||
integer, intent(in) | max_iter, | ||
class(pc_t), intent(in), optional, target | m, | ||
integer, intent(in), optional | lgmres, | ||
real(kind=rp), intent(in), optional | rel_tol, | ||
real(kind=rp), intent(in), optional | abs_tol, | ||
logical, intent(in), optional | monitor | ||
) |
Definition at line 64 of file gmres_sx.f90.
|
inherited |
This function checks if the Krylov solver has converged. The solver is considered converged if the residual is less than the absolute tolerance.
residual | Residual |
iter | Iteration number |
Definition at line 93 of file krylov.f90.
Definition at line 79 of file krylov.f90.
|
inherited |
object | The object to be allocated. |
n | Size of the vectors the solver operates on. |
type_name | The name of the solver type. |
max_iter | The maximum number of iterations |
abstol | The absolute tolerance, optional. |
M | The preconditioner, optional. |
monitor | Enable/disable monitoring, optional. Destroy an iterative Krylov type_name Constructor for the base type. |
max_iter | Maximum number of iterations. |
rel_tol | Relative tolarance for converence. |
rel_tol | Absolute tolarance for converence. |
M | The preconditioner. |
Definition at line 77 of file krylov.f90.
|
inherited |
Definition at line 91 of file krylov.f90.
|
inherited |
Definition at line 87 of file krylov.f90.
Definition at line 89 of file krylov.f90.
|
inherited |
M | The preconditioner. |
Definition at line 81 of file krylov.f90.
procedure, pass(this) gmres_sx::sx_gmres_t::solve | ( | class(sx_gmres_t), intent(inout) | this, |
class(ax_t), intent(in) | ax, | ||
type(field_t), intent(inout) | x, | ||
real(kind=rp), dimension(n), intent(in) | f, | ||
integer, intent(in) | n, | ||
type(coef_t), intent(inout) | coef, | ||
type(bc_list_t), intent(inout) | blst, | ||
type(gs_t), intent(inout) | gs_h, | ||
integer, intent(in), optional | niter | ||
) |
Definition at line 66 of file gmres_sx.f90.
|
pure virtualinherited |
Definition at line 83 of file krylov.f90.
procedure, pass(this) gmres_sx::sx_gmres_t::solve_coupled | ( | class(sx_gmres_t), intent(inout) | this, |
class(ax_t), intent(in) | ax, | ||
type(field_t), intent(inout) | x, | ||
type(field_t), intent(inout) | y, | ||
type(field_t), intent(inout) | z, | ||
real(kind=rp), dimension(n), intent(in) | fx, | ||
real(kind=rp), dimension(n), intent(in) | fy, | ||
real(kind=rp), dimension(n), intent(in) | fz, | ||
integer, intent(in) | n, | ||
type(coef_t), intent(inout) | coef, | ||
type(bc_list_t), intent(inout) | blstx, | ||
type(bc_list_t), intent(inout) | blsty, | ||
type(bc_list_t), intent(inout) | blstz, | ||
type(gs_t), intent(inout) | gs_h, | ||
integer, intent(in), optional | niter | ||
) |
Definition at line 67 of file gmres_sx.f90.
|
pure virtualinherited |
Definition at line 85 of file krylov.f90.
Definition at line 71 of file krylov.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::c |
Definition at line 52 of file gmres_sx.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::gam |
Definition at line 60 of file gmres_sx.f90.
real(kind=rp), dimension(:,:), allocatable gmres_sx::sx_gmres_t::h |
Definition at line 55 of file gmres_sx.f90.
integer gmres_sx::sx_gmres_t::lgmres |
Definition at line 50 of file gmres_sx.f90.
|
inherited |
Definition at line 73 of file krylov.f90.
|
inherited |
Definition at line 72 of file krylov.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::ml |
Definition at line 56 of file gmres_sx.f90.
|
inherited |
Definition at line 74 of file krylov.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::mu |
Definition at line 59 of file gmres_sx.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::r |
Definition at line 53 of file gmres_sx.f90.
Definition at line 70 of file krylov.f90.
Definition at line 62 of file gmres_sx.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::s |
Definition at line 58 of file gmres_sx.f90.
real(kind=rp), dimension(:,:), allocatable gmres_sx::sx_gmres_t::v |
Definition at line 57 of file gmres_sx.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::w |
Definition at line 51 of file gmres_sx.f90.
real(kind=rp), dimension(:), allocatable gmres_sx::sx_gmres_t::wk1 |
Definition at line 61 of file gmres_sx.f90.
real(kind=rp), dimension(:,:), allocatable gmres_sx::sx_gmres_t::z |
Definition at line 54 of file gmres_sx.f90.