pf_magpicard_t Derived Type

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

Magnus Picard sweeper type, extends abstract sweeper


Inherits

type~~pf_magpicard_t~~InheritsGraph type~pf_magpicard_t pf_magpicard_t type~pf_sweeper_t pf_sweeper_t type~pf_magpicard_t->type~pf_sweeper_t type~pf_encap_t pf_encap_t type~pf_magpicard_t->type~pf_encap_t omega, time_ev_op

Contents

Source Code


Components

TypeVisibility AttributesNameInitial
integer, public :: npieces
logical, public :: use_LUq
real(kind=pfdp), public, allocatable:: dtsdc(:)
integer, public :: magnus_order
integer, public :: qtype
real(kind=pfdp), public :: dt
real(kind=pfdp), public :: commutator_coefs(9,3,4)
complex(kind=pfdp), public, allocatable:: commutators(:,:,:)
class(pf_encap_t), public, allocatable:: omega(:)
class(pf_encap_t), public, allocatable:: time_ev_op(:)

Type-Bound Procedures

procedure, public :: sweep => magpicard_sweep

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

    this loop not OMP'd because the deferred procs are OMP'd

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_t), intent(inout) :: this
    type(pf_pfasst_t), intent(inout), target:: pf
    integer, intent(in) :: level_index
    real(kind=pfdp), intent(in) :: t0
    real(kind=pfdp), intent(in) :: dt
    integer, intent(in) :: nsweeps
    integer, intent(in), optional :: flags

procedure, public :: initialize => magpicard_initialize

procedure, public :: evaluate => magpicard_evaluate

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

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_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 => magpicard_integrate

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

    Compute SDC integral fintSDC = \int_{t_n}^{t_m} fSDC dt

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_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 => magpicard_residual

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

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_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 => magpicard_spreadq0

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

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_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 => magpicard_evaluate_all

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

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_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(pf_f_eval_p), public, deferred :: f_eval

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

    Arguments

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

procedure(pf_compute_single_commutators_p), public, deferred :: compute_single_commutators

  • subroutine pf_compute_single_commutators_p(this, f) Prototype

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: f(:,:)

procedure(pf_compute_omega_p), public, deferred :: compute_omega

  • subroutine pf_compute_omega_p(this, omega, integrals, f, nodes, qmat, dt, this_node, coefs) Prototype

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: omega
    class(pf_encap_t), intent(inout) :: integrals(:)
    class(pf_encap_t), intent(inout) :: f(:,:)
    real(kind=pfdp), intent(in) :: nodes(:)
    real(kind=pfdp), intent(in) :: qmat(:,:)
    real(kind=pfdp), intent(in) :: dt
    integer, intent(in) :: this_node
    real(kind=pfdp), intent(in) :: coefs(:,:)

procedure(pf_propagate_solution_p), public, deferred :: propagate_solution

  • subroutine pf_propagate_solution_p(this, sol_t0, sol_tn, omega, level) Prototype

    Arguments

    Type IntentOptional AttributesName
    class(pf_magpicard_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: sol_t0
    class(pf_encap_t), intent(inout) :: sol_tn
    class(pf_encap_t), intent(inout) :: omega
    integer, intent(in) :: level

procedure(pf_destroy_magpicard_p), public, deferred :: destroy

  • subroutine pf_destroy_magpicard_p(this, Lev) Prototype

    Arguments

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

procedure, public :: magpicard_destroy

Source Code

  type, extends(pf_sweeper_t), abstract :: pf_magpicard_t
     real(pfdp), allocatable :: dtsdc(:)
     integer :: magnus_order, qtype
     real(pfdp) :: dt, commutator_coefs(9,3,4)
     complex(pfdp), allocatable :: commutators(:,:,:)
     class(pf_encap_t), allocatable :: omega(:), time_ev_op(:)
   contains
     procedure :: sweep      => magpicard_sweep
     procedure :: initialize => magpicard_initialize
     procedure :: evaluate   => magpicard_evaluate
     procedure :: integrate  => magpicard_integrate
     procedure :: residual   => magpicard_residual
     procedure :: spreadq0   => magpicard_spreadq0
     procedure :: evaluate_all => magpicard_evaluate_all
     procedure(pf_f_eval_p), deferred :: f_eval
     procedure(pf_compute_single_commutators_p), deferred :: compute_single_commutators
     procedure(pf_compute_omega_p), deferred :: compute_omega
     procedure(pf_propagate_solution_p), deferred :: propagate_solution
     procedure(pf_destroy_magpicard_p), deferred :: destroy
     procedure :: magpicard_destroy
  end type pf_magpicard_t