pf_imk_t Derived Type

type, public, abstract, extends(pf_sweeper_t) :: pf_imk_t

Implicit Munthe-Kaas Runge-Kutta sweeper type, extends abstract sweeper


Inherits

type~~pf_imk_t~~InheritsGraph type~pf_imk_t pf_imk_t type~pf_sweeper_t pf_sweeper_t type~pf_imk_t->type~pf_sweeper_t type~pf_encap_t pf_encap_t type~pf_imk_t->type~pf_encap_t A

Contents

Source Code


Components

TypeVisibility AttributesNameInitial
integer, public :: npieces
logical, public :: use_LUq
class(pf_encap_t), public, allocatable:: A(:)
real(kind=pfdp), public, allocatable:: QtilE(:,:)
real(kind=pfdp), public, allocatable:: dtsdc(:)
real(kind=pfdp), public, allocatable:: tsdc(:)
real(kind=pfdp), public, allocatable:: QdiffE(:,:)

qmat-QtilE

real(kind=pfdp), public :: bernoullis(20)
real(kind=pfdp), public :: t0
real(kind=pfdp), public :: dt
integer, public :: qtype
integer, public :: nterms
logical, public :: Lax_pair
logical, public :: use_SDC
logical, public :: debug
logical, public :: mkrk
logical, public :: rk

Type-Bound Procedures

procedure(pf_destroy_p), public, deferred :: destroy

  • subroutine pf_destroy_p(this, Lev) Prototype

    Arguments

    Type IntentOptional AttributesName
    class(pf_sweeper_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: Lev

procedure, public :: sweep => imk_sweep

  • public subroutine imk_sweep(this, pf, level_index, t0, dt, nsweeps, flags)

    Perform nsweep sweeps on level and set qend appropriately.

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this

    Inputs

    type(pf_pfasst_t), intent(inout), target:: pf

    PFASST structure

    integer, intent(in) :: level_index

    which level to sweep on

    real(kind=pfdp), intent(in) :: t0

    Time at beginning of time step

    real(kind=pfdp), intent(in) :: dt

    time step size

    integer, intent(in) :: nsweeps

    number of sweeps to do

    integer, intent(in), optional :: flags

procedure, public :: initialize => imk_initialize

  • public subroutine imk_initialize(this, lev)

    Assign explicit approximate quadrature rule Make space for temporary variables

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev

procedure, public :: evaluate => imk_evaluate

  • public subroutine imk_evaluate(this, lev, t, m, flags, step)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev
    real(kind=pfdp), intent(in) :: t
    integer, intent(in) :: m
    integer, intent(in), optional :: flags
    integer, intent(in), optional :: step

procedure, public :: integrate => imk_integrate

  • public subroutine imk_integrate(this, lev, qSDC, fSDC, dt, fintSDC, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(in) :: lev
    class(pf_encap_t), intent(in) :: qSDC(:)
    class(pf_encap_t), intent(in) :: fSDC(:,:)
    real(kind=pfdp), intent(in) :: dt
    class(pf_encap_t), intent(inout) :: fintSDC(:)
    integer, intent(in), optional :: flags

procedure, public :: residual => imk_residual

  • public subroutine imk_residual(this, lev, dt, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev
    real(kind=pfdp), intent(in) :: dt
    integer, intent(in), optional :: flags

procedure, public :: spreadq0 => imk_spreadq0

  • public subroutine imk_spreadq0(this, lev, t0, flags, step)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev
    real(kind=pfdp), intent(in) :: t0
    integer, intent(in), optional :: flags
    integer, intent(in), optional :: step

procedure, public :: evaluate_all => imk_evaluate_all

  • public subroutine imk_evaluate_all(this, lev, t, flags, step)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev
    real(kind=pfdp), intent(in) :: t(:)
    integer, intent(in), optional :: flags
    integer, intent(in), optional :: step

procedure, public :: imk_destroy

  • public subroutine imk_destroy(this, lev)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: lev

procedure(pf_f_eval_p), public, deferred :: f_eval

  • subroutine pf_f_eval_p(this, y, t, level, f) Prototype

    Subroutine f_eval computes A(y,t)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: y
    real(kind=pfdp), intent(in) :: t
    integer(kind=c_int), intent(in) :: level
    class(pf_encap_t), intent(inout) :: f

procedure(pf_dexpinv_p), public, deferred :: dexpinv

  • subroutine pf_dexpinv_p(this, a, omega, f) Prototype

    Subroutine dexpinv computes Om'=F=dexpinv_Om(A)

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: a
    class(pf_encap_t), intent(inout) :: omega
    class(pf_encap_t), intent(inout) :: f

    The resultign-level

procedure(pf_propagate_p), public, deferred :: propagate

  • subroutine pf_propagate_p(this, q0, q) Prototype

    Subroutine propagate computes y_m=expm(Om_m)y_0(expm(Om_m))-1 or (expm(Om_m))y_0 or

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: q0
    class(pf_encap_t), intent(inout) :: q

procedure(pf_commutator_p), public, deferred :: commutator_p

  • subroutine pf_commutator_p(this, a, b, out, flags) Prototype

    Arguments

    Type IntentOptional AttributesName
    class(pf_imk_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: a
    class(pf_encap_t), intent(inout) :: b
    class(pf_encap_t), intent(inout) :: out
    integer, intent(in), optional :: flags

Source Code

  type, extends(pf_sweeper_t), abstract :: pf_imk_t
     class(pf_encap_t), allocatable :: A(:)
     real(pfdp), allocatable :: QtilE(:,:)
     real(pfdp), allocatable :: dtsdc(:)
     real(pfdp), allocatable :: tsdc(:)
     real(pfdp), allocatable :: QdiffE(:,:)  !!  qmat-QtilE
     real(pfdp) :: bernoullis(20), t0, dt
     integer ::  qtype, nterms
     logical ::  Lax_pair, use_SDC, debug, mkrk, rk
  contains
    procedure :: sweep        => imk_sweep
    procedure :: initialize   => imk_initialize
    procedure :: evaluate     => imk_evaluate
    procedure :: integrate    => imk_integrate
    procedure :: residual     => imk_residual
    procedure :: spreadq0     => imk_spreadq0
    procedure :: evaluate_all => imk_evaluate_all
    procedure :: imk_destroy
    procedure(pf_f_eval_p), deferred :: f_eval
    procedure(pf_dexpinv_p), deferred :: dexpinv
    procedure(pf_propagate_p), deferred :: propagate
    procedure(pf_commutator_p), deferred :: commutator_p
 end type pf_imk_t