Neko 1.99.1
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
cheby::cheby_t Type Referenceabstract

Defines a Chebyshev preconditioner. More...

Inheritance diagram for cheby::cheby_t:
Collaboration diagram for cheby::cheby_t:

Public Member Functions

procedure, pass(thisinit (this, n, max_iter, m, rel_tol, abs_tol, monitor)
 Initialise a standard solver.
 
procedure, pass(thisfree (this)
 
procedure, pass(thissolve (this, ax, x, f, n, coef, blst, gs_h, niter)
 A chebyshev preconditioner.
 
procedure, pass(thissolve_coupled (this, ax, x, y, z, fx, fy, fz, n, coef, blstx, blsty, blstz, gs_h, niter)
 Standard Chebyshev coupled solve.
 
procedure(ksp_init_intrf), deferred, pass(thisinit (this, n, max_iter, m, rel_tol, abs_tol, monitor)
 Constructor.
 
procedure, pass(thisksp_init (this, max_iter, rel_tol, abs_tol, m, monitor)
 Base type constructor.
 
procedure, pass(thisksp_free (this)
 Base type destructor.
 
procedure, pass(thisset_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(thismonitor_start (this, name)
 Monitor start.
 
procedure, pass(thismonitor_stop (this)
 Monitor stop.
 
procedure, pass(thismonitor_iter (this, iter, rnorm)
 Monitor iteration.
 
procedure, pass(thisis_converged (this, iter, residual)
 Check for convergence.
 
procedure(ksp_t_free), deferred, pass free (this)
 Destructor.
 

Public Attributes

real(kind=rp), dimension(:), allocatable d
 
real(kind=rp), dimension(:), allocatable w
 
real(kind=rp), dimension(:), allocatable r
 
real(kind=rp) tha
 
real(kind=rp) dlt
 
integer power_its = 150
 
logical recompute_eigs = .true.
 
logical zero_initial_guess = .false.
 
type(schwarz_t), pointer schwarz => null()
 Schwarz decompostions.
 
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.
 

Detailed Description

Definition at line 52 of file cheby.f90.

Member Function/Subroutine Documentation

◆ free() [1/2]

procedure, pass(this) cheby::cheby_t::free ( class(cheby_t), intent(inout this)

Definition at line 63 of file cheby.f90.

◆ free() [2/2]

procedure(ksp_t_free), deferred, pass krylov::ksp_t::free ( class(ksp_t), intent(inout this)
pure virtualinherited

Definition at line 102 of file krylov.f90.

◆ init() [1/2]

procedure, pass(this) cheby::cheby_t::init ( class(cheby_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 62 of file cheby.f90.

◆ init() [2/2]

procedure(ksp_init_intrf), deferred, pass(this) krylov::ksp_t::init ( class(ksp_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 
)
pure virtualinherited

Definition at line 82 of file krylov.f90.

◆ is_converged()

procedure, pass(this) krylov::ksp_t::is_converged ( class(ksp_t), intent(in this,
integer, intent(in iter,
real(kind=rp), intent(in residual 
)
inherited

This function checks if the Krylov solver has converged. The solver is considered converged if the residual is less than the absolute tolerance.

Parameters
residualResidual
iterIteration number

Definition at line 100 of file krylov.f90.

◆ ksp_free()

procedure, pass(this) krylov::ksp_t::ksp_free ( class(ksp_t), intent(inout this)
inherited

Definition at line 86 of file krylov.f90.

◆ ksp_init()

procedure, pass(this) krylov::ksp_t::ksp_init ( class(ksp_t), intent(inout), target  this,
integer, intent(in max_iter,
real(kind=rp), intent(in), optional  rel_tol,
real(kind=rp), intent(in), optional  abs_tol,
class(pc_t), intent(in), optional, target  m,
logical, intent(in), optional  monitor 
)
inherited
Parameters
objectThe object to be allocated.
nSize of the vectors the solver operates on.
type_nameThe name of the solver type.
max_iterThe maximum number of iterations
abstolThe absolute tolerance, optional.
MThe preconditioner, optional.
monitorEnable/disable monitoring, optional. Constructor for the base type.
max_iterMaximum number of iterations.
rel_tolRelative tolarance for converence.
rel_tolAbsolute tolarance for converence.
MThe preconditioner.

Definition at line 84 of file krylov.f90.

◆ monitor_iter()

procedure, pass(this) krylov::ksp_t::monitor_iter ( class(ksp_t), intent(in this,
integer, intent(in iter,
real(kind=rp), intent(in rnorm 
)
inherited

Definition at line 98 of file krylov.f90.

◆ monitor_start()

procedure, pass(this) krylov::ksp_t::monitor_start ( class(ksp_t), intent(in this,
character(len=*)  name 
)
inherited

Definition at line 94 of file krylov.f90.

◆ monitor_stop()

procedure, pass(this) krylov::ksp_t::monitor_stop ( class(ksp_t), intent(in this)
inherited

Definition at line 96 of file krylov.f90.

◆ set_pc()

procedure, pass(this) krylov::ksp_t::set_pc ( class(ksp_t), intent(inout this,
class(pc_t), intent(in), target  m 
)
inherited
Parameters
MThe preconditioner.

Definition at line 88 of file krylov.f90.

◆ solve() [1/2]

procedure, pass(this) cheby::cheby_t::solve ( class(cheby_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 64 of file cheby.f90.

◆ solve() [2/2]

procedure(ksp_method), deferred, pass krylov::ksp_t::solve ( class(ksp_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 
)
pure virtualinherited

Definition at line 90 of file krylov.f90.

◆ solve_coupled() [1/2]

procedure, pass(this) cheby::cheby_t::solve_coupled ( class(cheby_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 65 of file cheby.f90.

◆ solve_coupled() [2/2]

procedure(ksp_method_coupled), deferred, pass krylov::ksp_t::solve_coupled ( class(ksp_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 
)
pure virtualinherited

Definition at line 92 of file krylov.f90.

Member Data Documentation

◆ abs_tol

real(kind=rp) krylov::ksp_t::abs_tol
inherited

Definition at line 76 of file krylov.f90.

◆ d

real(kind=rp), dimension(:), allocatable cheby::cheby_t::d

Definition at line 53 of file cheby.f90.

◆ dlt

real(kind=rp) cheby::cheby_t::dlt

Definition at line 56 of file cheby.f90.

◆ m

class(pc_t), pointer krylov::ksp_t::m => null()
inherited

Definition at line 74 of file krylov.f90.

◆ m_ident

class(pc_t), allocatable krylov::ksp_t::m_ident
inherited

Definition at line 78 of file krylov.f90.

◆ max_iter

integer krylov::ksp_t::max_iter
inherited

Definition at line 77 of file krylov.f90.

◆ monitor

logical krylov::ksp_t::monitor
inherited

Definition at line 79 of file krylov.f90.

◆ power_its

integer cheby::cheby_t::power_its = 150

Definition at line 57 of file cheby.f90.

◆ r

real(kind=rp), dimension(:), allocatable cheby::cheby_t::r

Definition at line 55 of file cheby.f90.

◆ recompute_eigs

logical cheby::cheby_t::recompute_eigs = .true.

Definition at line 58 of file cheby.f90.

◆ rel_tol

real(kind=rp) krylov::ksp_t::rel_tol
inherited

Definition at line 75 of file krylov.f90.

◆ schwarz

type(schwarz_t), pointer cheby::cheby_t::schwarz => null()

Definition at line 60 of file cheby.f90.

◆ tha

real(kind=rp) cheby::cheby_t::tha

Definition at line 56 of file cheby.f90.

◆ w

real(kind=rp), dimension(:), allocatable cheby::cheby_t::w

Definition at line 54 of file cheby.f90.

◆ zero_initial_guess

logical cheby::cheby_t::zero_initial_guess = .false.

Definition at line 59 of file cheby.f90.


The documentation for this type was generated from the following file: