Neko 1.99.7
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
phmg::phmg_t Type Referenceabstract
Inheritance diagram for phmg::phmg_t:
Collaboration diagram for phmg::phmg_t:

Public Member Functions

procedure, pass(thisinit (this, coef, bclst, phmg_params)
 
procedure, pass(thisinit_from_components (this, coef, bclst, smoother_itrs, cheby_acc, crs_tamg_lvls, crs_tamg_itrs, crs_tamg_cheby_degree, pcrs_sched, update_enabled)
 
procedure, pass(thisfree (this)
 
procedure, pass(thissolve (this, z, r, n)
 
procedure, pass(thisupdate (this)
 Bring the preconditioner back in sync after the mesh has changed.
 
procedure(pc_solve), deferred, pass solve (this, z, r, n)
 
procedure(pc_update), deferred, pass update (this)
 

Public Attributes

type(tamg_solver_tamg_solver
 
integer nlvls
 
type(phmg_hrchy_tphmg_hrchy
 
class(ax_t), allocatable ax
 
type(interpolator_t), dimension(:), allocatable intrp
 
type(interpolator_t), dimension(:), allocatable crd_intrp
 Coordinate interpolators.
 
type(mesh_t), pointer msh
 
integer last_metrics_version = -1
 Fine-level metrics_version at the last refresh, to detect a change.
 
logical update_enabled = .false.
 When .false., update() does nothing and coarse levels stay frozen at their initial geometry. When .true., update() interpolates the fine-level geometry to the coarse levels.
 
logical refresh_eigs = .true.
 Whether a refresh also re-estimates the Chebyshev eigenvalues.
 
integer refresh_eigs_frequency = 20
 Re-estimate eigenvalues only every N-th refresh.
 
logical eigs_warm_start = .true.
 Restart eigenvalue estimation from the previous eigenvector.
 
integer power_its_refresh = 20
 Power iterations used for warm-started re-estimations.
 
integer n_refresh = 0
 Refreshes done so far, for refresh_eigs_frequency.
 
character(len=:), allocatable cheby_acc
 Which accelerator the Chebyshev smoother uses.
 

Private Member Functions

procedure, pass(this), private mg_cycle (this)
 

Detailed Description

Definition at line 94 of file phmg.f90.

Member Function/Subroutine Documentation

◆ free()

procedure, pass(this) phmg::phmg_t::free ( class(phmg_t), intent(inout this)

Definition at line 125 of file phmg.f90.

◆ init()

procedure, pass(this) phmg::phmg_t::init ( class(phmg_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(bc_list_t), intent(inout), target  bclst,
type(json_file), intent(inout phmg_params 
)

Definition at line 122 of file phmg.f90.

◆ init_from_components()

procedure, pass(this) phmg::phmg_t::init_from_components ( class(phmg_t), intent(inout), target  this,
type(coef_t), intent(in), target  coef,
type(bc_list_t), intent(inout), target  bclst,
integer, intent(in smoother_itrs,
character(len=:), allocatable  cheby_acc,
integer, intent(in crs_tamg_lvls,
integer, intent(in crs_tamg_itrs,
integer, intent(in crs_tamg_cheby_degree,
integer, dimension(:), intent(in), allocatable  pcrs_sched,
logical, intent(in), optional  update_enabled 
)

Definition at line 123 of file phmg.f90.

◆ mg_cycle()

procedure, pass(this), private phmg::phmg_t::mg_cycle ( class(phmg_t), intent(inout this)
private

Definition at line 128 of file phmg.f90.

◆ solve() [1/2]

procedure(pc_solve), deferred, pass precon::pc_t::solve ( class(pc_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout z,
real(kind=rp), dimension(n), intent(inout r,
integer, intent(in n 
)
pure virtualinherited

Definition at line 42 of file precon.f90.

◆ solve() [2/2]

procedure, pass(this) phmg::phmg_t::solve ( class(phmg_t), intent(inout this,
real(kind=rp), dimension(n), intent(inout z,
real(kind=rp), dimension(n), intent(inout r,
integer, intent(in n 
)

Definition at line 126 of file phmg.f90.

◆ update() [1/2]

procedure(pc_update), deferred, pass precon::pc_t::update ( class(pc_t), intent(inout this)
pure virtualinherited

Definition at line 43 of file precon.f90.

◆ update() [2/2]

procedure, pass(this) phmg::phmg_t::update ( class(phmg_t), intent(inout this)

Definition at line 127 of file phmg.f90.

Member Data Documentation

◆ amg_solver

type(tamg_solver_t) phmg::phmg_t::amg_solver

Definition at line 95 of file phmg.f90.

◆ ax

class(ax_t), allocatable phmg::phmg_t::ax

Definition at line 98 of file phmg.f90.

◆ cheby_acc

character(len=:), allocatable phmg::phmg_t::cheby_acc

Definition at line 120 of file phmg.f90.

◆ crd_intrp

type(interpolator_t), dimension(:), allocatable phmg::phmg_t::crd_intrp

Definition at line 101 of file phmg.f90.

◆ eigs_warm_start

logical phmg::phmg_t::eigs_warm_start = .true.

Definition at line 114 of file phmg.f90.

◆ intrp

type(interpolator_t), dimension(:), allocatable phmg::phmg_t::intrp

Definition at line 99 of file phmg.f90.

◆ last_metrics_version

integer phmg::phmg_t::last_metrics_version = -1

Definition at line 104 of file phmg.f90.

◆ msh

type(mesh_t), pointer phmg::phmg_t::msh

Definition at line 102 of file phmg.f90.

◆ n_refresh

integer phmg::phmg_t::n_refresh = 0

Definition at line 118 of file phmg.f90.

◆ nlvls

integer phmg::phmg_t::nlvls

Definition at line 96 of file phmg.f90.

◆ phmg_hrchy

type(phmg_hrchy_t) phmg::phmg_t::phmg_hrchy

Definition at line 97 of file phmg.f90.

◆ power_its_refresh

integer phmg::phmg_t::power_its_refresh = 20

Definition at line 116 of file phmg.f90.

◆ refresh_eigs

logical phmg::phmg_t::refresh_eigs = .true.

Definition at line 110 of file phmg.f90.

◆ refresh_eigs_frequency

integer phmg::phmg_t::refresh_eigs_frequency = 20

Definition at line 112 of file phmg.f90.

◆ update_enabled

logical phmg::phmg_t::update_enabled = .false.

Definition at line 108 of file phmg.f90.


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