pf_mod_misdcQ Module

Module of the the derived sweeper class for doing MISDC sweeps for an equation of the form The piece is treated explicitly and and implicitly Afer this sweeper is initialized (usually in main), the locgical flags can be changed if desired


Uses

  • module~~pf_mod_misdcq~~UsesGraph module~pf_mod_misdcq pf_mod_misdcQ module~pf_mod_utils pf_mod_utils module~pf_mod_misdcq->module~pf_mod_utils module~pf_mod_dtype pf_mod_dtype module~pf_mod_misdcq->module~pf_mod_dtype module~pf_mod_utils->module~pf_mod_dtype module~pf_mod_timer pf_mod_timer module~pf_mod_utils->module~pf_mod_timer iso_c_binding iso_c_binding module~pf_mod_dtype->iso_c_binding module~pf_mod_timer->module~pf_mod_dtype

Contents


Interfaces

interface

  • public subroutine pf_f_eval_p(this, y, t, level_index, f, piece)

    This is the interface for the routine to compute the RHS function values Evaluate f_piece(y), where piece is one or two Evaluate f_piece(y), where piece is one or two

    Arguments

    Type IntentOptional AttributesName
    class(pf_misdcQ_t), intent(inout) :: this
    class(pf_encap_t), intent(in) :: y

    Argument for evaluation

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

    Time at evaluation

    integer, intent(in) :: level_index

    Level index

    class(pf_encap_t), intent(inout) :: f

    RHS function value

    integer, intent(in) :: piece

    Which piece to evaluate

interface

  • public subroutine pf_f_comp_p(this, y, t, dtq, rhs, level_index, f, piece)

    Solve the equation where n is given by the argument piece

    Arguments

    Type IntentOptional AttributesName
    class(pf_misdcQ_t), intent(inout) :: this
    class(pf_encap_t), intent(inout) :: y

    Solution of implicit solve

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

    Time of solve

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

    dt*quadrature weight

    class(pf_encap_t), intent(in) :: rhs

    RHS for solve

    integer, intent(in) :: level_index

    Level index

    class(pf_encap_t), intent(inout) :: f

    f_n of solution y

    integer, intent(in) :: piece

    Which piece to evaluate


Derived Types

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

Multi-implicit SDC sweeper type, extends abstract sweeper

Components

TypeVisibility AttributesNameInitial
integer, public :: npieces
logical, public :: use_LUq
real(kind=pfdp), public, allocatable:: QdiffE(:,:)
real(kind=pfdp), public, allocatable:: QdiffI(:,:)
real(kind=pfdp), public, allocatable:: QtilE(:,:)
real(kind=pfdp), public, allocatable:: QtilI(:,:)
real(kind=pfdp), public, allocatable:: dtsdc(:)
class(pf_encap_t), public, allocatable:: I3(:)
class(pf_encap_t), public, allocatable:: rhs

Type-Bound Procedures

procedure(pf_f_eval_p), public :: f_eval
procedure(pf_f_comp_p), public :: f_comp
procedure, public :: sweep => misdcQ_sweep
procedure, public :: initialize => misdcQ_initialize
procedure, public :: integrate => misdcQ_integrate
procedure, public :: residual => misdcQ_residual
procedure, public :: spreadq0 => misdcQ_spreadq0
procedure, public :: evaluate_all => misdcQ_evaluate_all
procedure, public :: evaluate => misdcQ_evaluate
procedure, public :: destroy => misdcQ_destroy
procedure, public :: misdcQ_destroy

Subroutines

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

Assign level pointer

Read more…

Arguments

Type IntentOptional AttributesName
class(pf_misdcQ_t), intent(inout) :: this
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

public subroutine misdcQ_initialize(this, lev)

Array of substep sizes

Read more…

Arguments

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

public subroutine misdcQ_destroy(this, lev)

Arguments

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

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

Arguments

Type IntentOptional AttributesName
class(pf_misdcQ_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

public subroutine misdcQ_evaluate(this, lev, t, m, flags, step)

Subroutine to evaluate function value at node m

Arguments

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

Current level

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

Time at which to evaluate

integer, intent(in) :: m

Node at which to evaluate

integer, intent(in), optional :: flags
integer, intent(in), optional :: step

public subroutine misdcQ_evaluate_all(this, lev, t, flags, step)

Subroutine to evaluate the function values at all nodes

Arguments

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

Current level

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

Array of times at each node

integer, intent(in), optional :: flags
integer, intent(in), optional :: step

public subroutine misdcQ_residual(this, lev, dt, flags)

Subroutine to compute Residual

Arguments

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

Current level

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

Time step

integer, intent(in), optional :: flags

public subroutine misdcQ_spreadq0(this, lev, t0, flags, step)

Arguments

Type IntentOptional AttributesName
class(pf_misdcQ_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