|
Neko 1.99.2
A portable framework for high-order spectral element flow simulations
|
Device based coupled preconditioned conjugate gradient method. More...


Public Member Functions | |
| procedure, pass(this) | init (this, n, max_iter, m, rel_tol, abs_tol, monitor) |
| Initialise a device based PCG solver. | |
| procedure, pass(this) | free (this) |
| Deallocate a device based PCG solver. | |
| procedure, pass(this) | solve (this, ax, x, f, n, coef, blst, gs_h, niter) |
| procedure, pass(this) | solve_coupled (this, ax, x, y, z, fx, fy, fz, n, coef, blstx, blsty, blstz, gs_h, niter) |
| Standard PCG solve. | |
| procedure(ksp_init_intrf), deferred, pass(this) | init (this, n, max_iter, m, rel_tol, abs_tol, monitor) |
| Constructor. | |
| 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. | |
Definition at line 54 of file cg_cpld_device.f90.
| procedure, pass(this) cg_cpld_device::cg_cpld_device_t::free | ( | class(cg_cpld_device_t), intent(inout) | this | ) |
Definition at line 91 of file cg_cpld_device.f90.
|
pure virtualinherited |
Definition at line 102 of file krylov.f90.
| procedure, pass(this) cg_cpld_device::cg_cpld_device_t::init | ( | class(cg_cpld_device_t), intent(inout), target | this, |
| integer, intent(in) | n, | ||
| integer, intent(in) | max_iter, | ||
| class(pc_t), intent(in), optional, target | m, | ||
| real(kind=rp), intent(in), optional | rel_tol, | ||
| real(kind=rp), intent(in), optional | abs_tol, | ||
| logical, intent(in), optional | monitor | ||
| ) |
Definition at line 90 of file cg_cpld_device.f90.
|
pure virtualinherited |
Definition at line 82 of file krylov.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 100 of file krylov.f90.
Definition at line 86 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. 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 84 of file krylov.f90.
|
inherited |
Definition at line 98 of file krylov.f90.
|
inherited |
Definition at line 94 of file krylov.f90.
Definition at line 96 of file krylov.f90.
|
inherited |
| M | The preconditioner. |
Definition at line 88 of file krylov.f90.
| procedure, pass(this) cg_cpld_device::cg_cpld_device_t::solve | ( | class(cg_cpld_device_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 92 of file cg_cpld_device.f90.
|
pure virtualinherited |
Definition at line 90 of file krylov.f90.
| procedure, pass(this) cg_cpld_device::cg_cpld_device_t::solve_coupled | ( | class(cg_cpld_device_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 93 of file cg_cpld_device.f90.
|
pure virtualinherited |
Definition at line 92 of file krylov.f90.
Definition at line 76 of file krylov.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::gs_event = C_NULL_PTR |
Definition at line 88 of file cg_cpld_device.f90.
|
inherited |
Definition at line 78 of file krylov.f90.
|
inherited |
Definition at line 77 of file krylov.f90.
|
inherited |
Definition at line 79 of file krylov.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::p1 |
Definition at line 61 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::p1_d = C_NULL_PTR |
Definition at line 78 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::p2 |
Definition at line 62 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::p2_d = C_NULL_PTR |
Definition at line 79 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::p3 |
Definition at line 63 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::p3_d = C_NULL_PTR |
Definition at line 80 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::r1 |
Definition at line 58 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::r1_d = C_NULL_PTR |
Definition at line 74 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::r2 |
Definition at line 59 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::r2_d = C_NULL_PTR |
Definition at line 75 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::r3 |
Definition at line 60 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::r3_d = C_NULL_PTR |
Definition at line 76 of file cg_cpld_device.f90.
Definition at line 75 of file krylov.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::tmp |
Definition at line 67 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::tmp_d = C_NULL_PTR |
Definition at line 86 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::w1 |
Definition at line 55 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::w1_d = C_NULL_PTR |
Definition at line 70 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::w2 |
Definition at line 56 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::w2_d = C_NULL_PTR |
Definition at line 71 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::w3 |
Definition at line 57 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::w3_d = C_NULL_PTR |
Definition at line 72 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::z1 |
Definition at line 64 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::z1_d = C_NULL_PTR |
Definition at line 82 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::z2 |
Definition at line 65 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::z2_d = C_NULL_PTR |
Definition at line 83 of file cg_cpld_device.f90.
| real(kind=rp), dimension(:), allocatable cg_cpld_device::cg_cpld_device_t::z3 |
Definition at line 66 of file cg_cpld_device.f90.
| type(c_ptr) cg_cpld_device::cg_cpld_device_t::z3_d = C_NULL_PTR |
Definition at line 84 of file cg_cpld_device.f90.