pf_mod_dtype Module

Module to define the main parameters, data types, and interfaces in pfasst


Uses

  • module~~pf_mod_dtype~~UsesGraph module~pf_mod_dtype pf_mod_dtype iso_c_binding iso_c_binding module~pf_mod_dtype->iso_c_binding

Used by

  • module~~pf_mod_dtype~~UsedByGraph module~pf_mod_dtype pf_mod_dtype module~pf_mod_imexq_oc pf_mod_imexQ_oc module~pf_mod_imexq_oc->module~pf_mod_dtype module~pf_mod_utils pf_mod_utils module~pf_mod_imexq_oc->module~pf_mod_utils module~pf_mod_misdcq pf_mod_misdcQ module~pf_mod_misdcq->module~pf_mod_dtype module~pf_mod_misdcq->module~pf_mod_utils module~pfasst pfasst module~pfasst->module~pf_mod_dtype module~pf_mod_pfasst pf_mod_pfasst module~pfasst->module~pf_mod_pfasst module~pf_mod_imexq pf_mod_imexQ module~pfasst->module~pf_mod_imexq module~pf_mod_results pf_mod_results module~pfasst->module~pf_mod_results module~pf_mod_comm_mpi pf_mod_comm_mpi module~pfasst->module~pf_mod_comm_mpi module~pf_mod_parallel pf_mod_parallel module~pfasst->module~pf_mod_parallel module~pf_mod_hooks pf_mod_hooks module~pfasst->module~pf_mod_hooks module~pf_mod_amisdc pf_mod_amisdc module~pf_mod_amisdc->module~pf_mod_dtype module~pf_mod_amisdc->module~pf_mod_utils module~pf_mod_restrict pf_mod_restrict module~pf_mod_restrict->module~pf_mod_dtype module~pf_mod_timer pf_mod_timer module~pf_mod_restrict->module~pf_mod_timer module~pf_mod_restrict->module~pf_mod_hooks module~pf_mod_pfasst->module~pf_mod_dtype module~pf_mod_pfasst->module~pf_mod_comm_mpi proc~imk_evaluate imk_evaluate proc~imk_evaluate->module~pf_mod_dtype module~pf_mod_rkstepper pf_mod_rkstepper module~pf_mod_rkstepper->module~pf_mod_dtype module~pf_mod_rkstepper->module~pf_mod_utils module~pf_mod_quadrature pf_mod_quadrature module~pf_mod_quadrature->module~pf_mod_dtype module~pf_mod_imk pf_mod_imk module~pf_mod_imk->module~pf_mod_dtype module~pf_mod_imk->module~pf_mod_utils proc~amisdc_evaluate amisdc_evaluate proc~amisdc_evaluate->module~pf_mod_dtype module~pf_mod_imex pf_mod_imex module~pf_mod_imex->module~pf_mod_dtype module~pf_mod_imex->module~pf_mod_utils proc~magpicard_evaluate magpicard_evaluate proc~magpicard_evaluate->module~pf_mod_dtype module~pf_mod_ndarray_oc pf_mod_ndarray_oc module~pf_mod_ndarray_oc->module~pf_mod_dtype module~pf_mod_utils->module~pf_mod_dtype module~pf_mod_utils->module~pf_mod_timer module~pf_mod_imexq->module~pf_mod_dtype module~pf_mod_imexq->module~pf_mod_utils module~pf_mod_results->module~pf_mod_dtype module~pf_mod_misdcq_oc pf_mod_misdcQ_oc module~pf_mod_misdcq_oc->module~pf_mod_dtype module~pf_mod_misdcq_oc->module~pf_mod_utils module~pf_mod_ndsysarray pf_mod_ndsysarray module~pf_mod_ndsysarray->module~pf_mod_dtype module~pf_mod_comm_mpi->module~pf_mod_dtype module~pf_mod_comm_mpi->module~pf_mod_timer module~pf_mod_zndsysarray pf_mod_zndsysarray module~pf_mod_zndsysarray->module~pf_mod_dtype module~pf_mod_timer->module~pf_mod_dtype module~pf_mod_verlet pf_mod_verlet module~pf_mod_verlet->module~pf_mod_dtype module~pf_mod_verlet->module~pf_mod_utils module~pf_mod_parallel->module~pf_mod_dtype module~pf_mod_parallel->module~pf_mod_restrict module~pf_mod_parallel->module~pf_mod_pfasst module~pf_mod_parallel->module~pf_mod_utils module~pf_mod_parallel->module~pf_mod_results module~pf_mod_parallel->module~pf_mod_timer module~pf_mod_interpolate pf_mod_interpolate module~pf_mod_parallel->module~pf_mod_interpolate module~pf_mod_parallel->module~pf_mod_hooks module~pf_mod_comm pf_mod_comm module~pf_mod_parallel->module~pf_mod_comm module~pf_mod_interpolate->module~pf_mod_dtype module~pf_mod_interpolate->module~pf_mod_restrict module~pf_mod_interpolate->module~pf_mod_utils module~pf_mod_interpolate->module~pf_mod_timer module~pf_mod_interpolate->module~pf_mod_hooks module~pf_mod_misdc pf_mod_misdc module~pf_mod_misdc->module~pf_mod_dtype module~pf_mod_misdc->module~pf_mod_utils proc~misdc_evaluate misdc_evaluate proc~misdc_evaluate->module~pf_mod_dtype module~pf_mod_parallel_oc pf_mod_parallel_oc module~pf_mod_parallel_oc->module~pf_mod_dtype module~pf_mod_parallel_oc->module~pf_mod_restrict module~pf_mod_parallel_oc->module~pf_mod_pfasst module~pf_mod_parallel_oc->module~pf_mod_utils module~pf_mod_parallel_oc->module~pf_mod_timer module~pf_mod_parallel_oc->module~pf_mod_interpolate module~pf_mod_parallel_oc->module~pf_mod_hooks module~pf_mod_parallel_oc->module~pf_mod_comm module~pf_mod_magnus_picard pf_mod_magnus_picard module~pf_mod_magnus_picard->module~pf_mod_dtype module~pf_mod_magnus_picard->module~pf_mod_utils module~pf_mod_ndarray pf_mod_ndarray module~pf_mod_ndarray->module~pf_mod_dtype module~pf_mod_hooks->module~pf_mod_dtype proc~sweep_decoupled_implicit_terms sweep_decoupled_implicit_terms proc~sweep_decoupled_implicit_terms->module~pf_mod_timer proc~sweep_coupled_implicit_terms sweep_coupled_implicit_terms proc~sweep_coupled_implicit_terms->module~pf_mod_timer proc~pf_level_destroy pf_level_destroy proc~pf_level_destroy->module~pf_mod_quadrature proc~ark_do_n_steps ark_do_n_steps proc~ark_do_n_steps->module~pf_mod_timer proc~ark_do_n_steps->module~pf_mod_hooks proc~verlet_sweep verlet_sweep proc~verlet_sweep->module~pf_mod_timer proc~verlet_sweep->module~pf_mod_hooks proc~mkrk_step mkrk_step proc~mkrk_step->module~pf_mod_timer proc~mkrk_step->module~pf_mod_hooks module~pf_mod_amisdcq pf_mod_amisdcQ module~pf_mod_amisdcq->module~pf_mod_amisdc proc~amisdc_sweep amisdc_sweep proc~amisdc_sweep->module~pf_mod_timer proc~misdc_sweep misdc_sweep proc~misdc_sweep->module~pf_mod_timer proc~pf_pfasst_create pf_pfasst_create proc~pf_pfasst_create->module~pf_mod_hooks proc~call_hooks call_hooks proc~call_hooks->module~pf_mod_timer proc~pf_level_setup pf_level_setup proc~pf_level_setup->module~pf_mod_quadrature proc~amisdcq_sweep amisdcQ_sweep proc~amisdcq_sweep->module~pf_mod_timer proc~imexq_initialize imexQ_initialize proc~imexq_initialize->module~pf_mod_quadrature proc~imexq_sweep imexQ_sweep proc~imexq_sweep->module~pf_mod_timer proc~imexq_sweep->module~pf_mod_hooks proc~pf_pfasst_setup pf_pfasst_setup proc~pf_pfasst_setup->module~pf_mod_utils proc~misdcq_oc_sweep misdcQ_oc_sweep proc~misdcq_oc_sweep->module~pf_mod_timer proc~misdcq_oc_sweep->module~pf_mod_hooks proc~imk_actually_sweep imk_actually_sweep proc~imk_actually_sweep->module~pf_mod_timer proc~imk_actually_sweep->module~pf_mod_hooks module~pf_mod_comm->module~pf_mod_pfasst proc~misdcq_sweep misdcQ_sweep proc~misdcq_sweep->module~pf_mod_timer proc~misdcq_sweep->module~pf_mod_hooks proc~magpicard_sweep magpicard_sweep proc~magpicard_sweep->module~pf_mod_timer proc~magpicard_sweep->module~pf_mod_hooks proc~imk_sweep imk_sweep proc~imk_sweep->module~pf_mod_timer proc~imk_sweep->module~pf_mod_hooks proc~rk_step rk_step proc~rk_step->module~pf_mod_timer proc~rk_step->module~pf_mod_hooks proc~imexq_oc_sweep imexQ_oc_sweep proc~imexq_oc_sweep->module~pf_mod_timer proc~imexq_oc_sweep->module~pf_mod_hooks proc~imex_sweep imex_sweep proc~imex_sweep->module~pf_mod_timer

Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: pfdp =selected_real_kind(15, 307)

static pfasst paramters Defines double precision type for all real and complex variables

integer, public, parameter:: pfqp =selected_real_kind(33, 4931)

Defines quad precision type for all real and complex variables

real(kind=pfdp), public, parameter:: ZERO =0.0_pfdp
real(kind=pfdp), public, parameter:: ONE =1.0_pfdp
real(kind=pfdp), public, parameter:: TWO =2.0_pfdp
real(kind=pfdp), public, parameter:: THREE =3.0_pfdp
real(kind=pfdp), public, parameter:: HALF =0.5_pfdp
integer, public, parameter:: PF_MAXLEVS =4
integer, public, parameter:: PF_MAX_HOOKS =32
integer, public, parameter:: SDC_GAUSS_LOBATTO =1

Quadrature node varieties

integer, public, parameter:: SDC_GAUSS_RADAU =2
integer, public, parameter:: SDC_CLENSHAW_CURTIS =3
integer, public, parameter:: SDC_UNIFORM =4
integer, public, parameter:: SDC_GAUSS_LEGENDRE =5
integer, public, parameter:: SDC_PROPER_NODES =2**8
integer, public, parameter:: SDC_COMPOSITE_NODES =2**9
integer, public, parameter:: SDC_NO_LEFT =2**10
integer, public, parameter:: PF_STATUS_ITERATING =1

States of operation

integer, public, parameter:: PF_STATUS_CONVERGED =2
integer, public, parameter:: PF_STATUS_PREDICTOR =3

Interfaces

interface

Interfaces for subroutines

  • public function pf_encap_norm_p(this, flags) result(norm)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(in) :: this
    integer, intent(in), optional :: flags

    Return Value real(kind=pfdp)

interface

Interfaces for subroutines

  • public subroutine pf_hook_p(pf, level, state)

    hooks subroutines

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    class(pf_level_t), intent(inout) :: level
    type(pf_state_t), intent(in) :: state

interface

Interfaces for subroutines

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

    SDC sweeper subroutines

    Arguments

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

interface

Interfaces for subroutines

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

    Arguments

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

interface

Interfaces for subroutines

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

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_initialize_p(this, lev)

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_destroy_sweeper_p(this)

    Arguments

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

interface

Interfaces for subroutines

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

    Arguments

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

    Time step size

    class(pf_encap_t), intent(inout) :: fintSDC(:)
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_residual_p(this, Lev, dt, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_sweeper_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: Lev
    real(kind=pfdp), intent(in) :: dt

    Time step size

    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_spreadq0_p(this, Lev, t0, flags, step)

    Arguments

    Type IntentOptional AttributesName
    class(pf_sweeper_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: Lev
    real(kind=pfdp), intent(in) :: t0

    Time at beginning of step; if flags == 2, time at end of step

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

interface

Interfaces for subroutines

  • public subroutine pf_destroy_p(this, Lev)

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_do_n_steps_p(this, pf, level_index, t0, big_dt, nsteps_rk)

    time stepper interfaces

    Arguments

    Type IntentOptional AttributesName
    class(pf_stepper_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) :: big_dt

    Time step size

    integer, intent(in) :: nsteps_rk

interface

Interfaces for subroutines

  • public subroutine pf_initialize_stepper_p(this, lev)

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_destroy_stepper_p(this, Lev)

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_transfer_p(this, levelF, levelG, qF, qG, t, flags)

    transfer interfaces used for restriction and interpolation

    Arguments

    Type IntentOptional AttributesName
    class(pf_user_level_t), intent(inout) :: this
    class(pf_level_t), intent(inout) :: levelF
    class(pf_level_t), intent(inout) :: levelG
    class(pf_encap_t), intent(inout) :: qF
    class(pf_encap_t), intent(inout) :: qG
    real(kind=pfdp), intent(in) :: t
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_create_single_p(this, x, level, shape)

    encapsulation interfaces

    Arguments

    Type IntentOptional AttributesName
    class(pf_factory_t), intent(inout) :: this
    class(pf_encap_t), intent(inout), allocatable:: x
    integer, intent(in) :: level
    integer, intent(in) :: shape(:)

interface

Interfaces for subroutines

  • public subroutine pf_encap_create_array_p(this, x, n, level, shape)

    Arguments

    Type IntentOptional AttributesName
    class(pf_factory_t), intent(inout) :: this
    class(pf_encap_t), intent(inout), allocatable:: x(:)
    integer, intent(in) :: n
    integer, intent(in) :: level
    integer, intent(in) :: shape(:)

interface

Interfaces for subroutines

  • public subroutine pf_encap_destroy_single_p(this, x, level, shape)

    Arguments

    Type IntentOptional AttributesName
    class(pf_factory_t), intent(inout) :: this
    class(pf_encap_t), intent(inout), allocatable:: x
    integer, intent(in) :: level
    integer, intent(in) :: shape(:)

interface

Interfaces for subroutines

  • public subroutine pf_encap_destroy_array_p(this, x, n, level, shape)

    Arguments

    Type IntentOptional AttributesName
    class(pf_factory_t), intent(inout) :: this
    class(pf_encap_t), intent(inout), allocatable:: x(:)
    integer, intent(in) :: n
    integer, intent(in) :: level
    integer, intent(in) :: shape(:)

interface

Interfaces for subroutines

  • public subroutine pf_encap_setval_p(this, val, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(inout) :: this
    real(kind=pfdp), intent(in) :: val
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_copy_p(this, src, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(inout) :: this
    class(pf_encap_t), intent(in) :: src
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_pack_p(this, z, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(in) :: this
    real(kind=pfdp), intent(out) :: z(:)
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_unpack_p(this, z, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(inout) :: this
    real(kind=pfdp), intent(in) :: z(:)
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_axpy_p(this, a, x, flags)

    Arguments

    Type IntentOptional AttributesName
    class(pf_encap_t), intent(inout) :: this
    real(kind=pfdp), intent(in) :: a
    class(pf_encap_t), intent(in) :: x
    integer, intent(in), optional :: flags

interface

Interfaces for subroutines

  • public subroutine pf_encap_eprint_p(this, flags)

    Arguments

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

interface

Interfaces for subroutines

  • public subroutine pf_post_p(pf, level, tag, ierror, direction)

    communicator interfaces

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(in) :: pf
    class(pf_level_t), intent(inout) :: level
    integer, intent(in) :: tag
    integer, intent(inout) :: ierror
    integer, intent(in), optional :: direction

interface

Interfaces for subroutines

  • public subroutine pf_recv_p(pf, level, tag, blocking, ierror, direction)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    class(pf_level_t), intent(inout) :: level
    integer, intent(in) :: tag
    logical, intent(in) :: blocking
    integer, intent(inout) :: ierror
    integer, intent(in), optional :: direction

interface

Interfaces for subroutines

  • public subroutine pf_recv_status_p(pf, tag, istatus, ierror, direction)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    integer, intent(in) :: tag
    integer, intent(inout) :: istatus
    integer, intent(inout) :: ierror
    integer, intent(in), optional :: direction

interface

Interfaces for subroutines

  • public subroutine pf_send_p(pf, level, tag, blocking, ierror, direction)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    class(pf_level_t), intent(inout) :: level
    integer, intent(in) :: tag
    logical, intent(in) :: blocking
    integer, intent(inout) :: ierror
    integer, intent(in), optional :: direction

interface

Interfaces for subroutines

  • public subroutine pf_send_status_p(pf, tag, istatus, ierror, direction)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    integer, intent(in) :: tag
    integer, intent(in) :: istatus
    integer, intent(inout) :: ierror
    integer, intent(in), optional :: direction

interface

Interfaces for subroutines

  • public subroutine pf_wait_p(pf, level, ierror)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(in) :: pf
    integer, intent(in) :: level
    integer, intent(inout) :: ierror

interface

Interfaces for subroutines

  • public subroutine pf_broadcast_p(pf, y, nvar, root, ierror)

    Arguments

    Type IntentOptional AttributesName
    type(pf_pfasst_t), intent(inout) :: pf
    real(kind=pfdp), intent(in) :: y(nvar)
    integer, intent(in) :: nvar
    integer, intent(in) :: root
    integer, intent(inout) :: ierror

interface

Interfaces for subroutines

  • public subroutine pf_results_p(this)

    Arguments

    Type IntentOptional AttributesName
    type(pf_results_t), intent(inout) :: this

Derived Types

type, public, bind(c) :: pf_state_t

The type that holds the state of the system

Components

TypeVisibility AttributesNameInitial
real(kind=pfdp), public :: t0

Time at beginning of this time step

real(kind=pfdp), public :: dt

Time step size

integer, public :: nsteps

total number of time steps

integer, public :: cycle

deprecated?

integer, public :: iter

current iteration number

integer, public :: step

current time step number assigned to processor

integer, public :: level

which level is currently being operated on

integer, public :: hook

which hook

integer, public :: proc

which processor

integer, public :: sweep

sweep number

integer, public :: status

status (iterating, converged etc)

integer, public :: pstatus

previous rank's status

integer, public :: itcnt

iteration counter

integer, public :: skippedy

skipped sweeps for state (for mixed integration)

integer, public :: mysteps

steps I did

type, public :: pf_hook_t

Abstract hook type: hooks call diagnostic routines from various places in code

Components

TypeVisibility AttributesNameInitial
procedure(pf_hook_p), public, pointer, nopass:: proc

type, public, abstract :: pf_sweeper_t

The abstract SDC sweeper type (must be extended)

Components

TypeVisibility AttributesNameInitial
integer, public :: npieces
logical, public :: use_LUq

Type-Bound Procedures

procedure(pf_sweep_p), public :: sweep
procedure(pf_initialize_p), public :: initialize
procedure(pf_evaluate_p), public :: evaluate
procedure(pf_integrate_p), public :: integrate
procedure(pf_evaluate_all_p), public :: evaluate_all
procedure(pf_residual_p), public :: residual
procedure(pf_spreadq0_p), public :: spreadq0
procedure(pf_destroy_p), public :: destroy

type, public, abstract :: pf_stepper_t

The abstract time stepper type (must be extended)

Components

TypeVisibility AttributesNameInitial
integer, public :: npieces
integer, public :: order

Type-Bound Procedures

procedure(pf_do_n_steps_p), public :: do_n_steps
procedure(pf_initialize_stepper_p), public :: initialize
procedure(pf_destroy_stepper_p), public :: destroy

type, public, abstract :: pf_encap_t

The abstract data type of the solution (must be extended)

Type-Bound Procedures

procedure(pf_encap_setval_p), public :: setval
procedure(pf_encap_copy_p), public :: copy
procedure(pf_encap_norm_p), public :: norm
procedure(pf_encap_pack_p), public :: pack
procedure(pf_encap_unpack_p), public :: unpack
procedure(pf_encap_axpy_p), public :: axpy
procedure(pf_encap_eprint_p), public :: eprint

type, public, abstract :: pf_factory_t

Abstract type for creation and destruction of objects

Type-Bound Procedures

procedure(pf_encap_create_single_p), public :: create_single
procedure(pf_encap_create_array_p), public :: create_array
procedure(pf_encap_destroy_single_p), public :: destroy_single
procedure(pf_encap_destroy_array_p), public :: destroy_array

type, public, abstract :: pf_user_level_t

The absract definition of level which is inherited to include problem dependent stuff

Components

TypeVisibility AttributesNameInitial
class(pf_factory_t), public, allocatable:: factory
class(pf_sweeper_t), public, allocatable:: sweeper
class(pf_stepper_t), public, allocatable:: stepper

Type-Bound Procedures

procedure(pf_transfer_p), public :: restrict
procedure(pf_transfer_p), public :: interpolate

type, public :: pf_sdcmats_t

The type to store quadrature matrices

Components

TypeVisibility AttributesNameInitial
real(kind=pfdp), public, allocatable:: qmat(:,:)
real(kind=pfdp), public, allocatable:: qmatFE(:,:)
real(kind=pfdp), public, allocatable:: qmatBE(:,:)
real(kind=pfdp), public, allocatable:: qmatLU(:,:)
real(kind=pfdp), public, allocatable:: s0mat(:,:)
real(kind=pfdp), public, allocatable:: qnodes(:)
integer, public :: nnodes
integer, public :: qtype

type, public :: pf_level_t

Data type of a PFASST level

Components

TypeVisibility AttributesNameInitial
integer, public :: index =-1

level number (1 is the coarsest)

integer, public :: nnodes =-1

number of sdc nodes

integer, public :: nsteps_rk =-1

number of rk steps to perform

integer, public :: nsweeps =-1

number of sdc sweeps to perform

integer, public :: nsweeps_pred =-1

number of coarse sdc sweeps to perform predictor in predictor

logical, public :: Finterp =.false.

interpolate functions instead of solutions

integer, public :: mpibuflen =-1

size of solution in pfdp units

real(kind=pfdp), public :: error

holds the user defined error

real(kind=pfdp), public :: residual

holds the user defined residual

real(kind=pfdp), public :: residual_rel

holds the user defined relative residual (scaled by solution magnitude)

class(pf_user_level_t), public, allocatable:: ulevel

user customized level info

real(kind=pfdp), public, allocatable:: send(:)

Simple data storage at each level send buffer recv buffer list of SDC nodes time restriction matrix time interpolation matrix

real(kind=pfdp), public, allocatable:: recv(:)

Simple data storage at each level send buffer recv buffer list of SDC nodes time restriction matrix time interpolation matrix

real(kind=pfdp), public, allocatable:: nodes(:)

Simple data storage at each level send buffer recv buffer list of SDC nodes time restriction matrix time interpolation matrix

real(kind=pfdp), public, allocatable:: rmat(:,:)

Simple data storage at each level send buffer recv buffer list of SDC nodes time restriction matrix time interpolation matrix

real(kind=pfdp), public, allocatable:: tmat(:,:)

Simple data storage at each level send buffer recv buffer list of SDC nodes time restriction matrix time interpolation matrix

integer, public, allocatable:: nflags(:)

sdc node flags

class(pf_encap_t), public, allocatable:: Q(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: pQ(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: R(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: I(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: Fflt(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: tauQ(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: pFflt(:)

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: q0

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, allocatable:: qend

Solution variable storage solution at sdc nodes unknowns at sdc nodes, previous sweep full residuals 0 to node integrals functions values at sdc nodes (flat) fas correction in Q form functions at sdc nodes, previous sweep (flat) initial condition solution at end time

class(pf_encap_t), public, pointer:: F(:,:)

Function storage functions values at sdc nodes functions at sdc nodes, previous sweep

class(pf_encap_t), public, pointer:: pF(:,:)

Function storage functions values at sdc nodes functions at sdc nodes, previous sweep

integer, public, allocatable:: shape(:)

user defined shape array

type(pf_sdcmats_t), public, allocatable:: sdcmats
logical, public :: allocated =.false.

type, public :: pf_comm_t

Data type to define the communicator

Components

TypeVisibility AttributesNameInitial
integer, public :: nproc =-1
integer, public :: comm =-1
integer, public, pointer:: recvreq(:)
integer, public, pointer:: sendreq(:)
integer, public :: statreq
type(c_ptr), public, pointer:: pfs(:)
type(c_ptr), public, pointer:: pfpth(:,:)
procedure(pf_post_p), public, pointer, nopass:: post

Procedure interfaces

procedure(pf_recv_p), public, pointer, nopass:: recv
procedure(pf_recv_status_p), public, pointer, nopass:: recv_status
procedure(pf_send_p), public, pointer, nopass:: send
procedure(pf_send_status_p), public, pointer, nopass:: send_status
procedure(pf_wait_p), public, pointer, nopass:: wait
procedure(pf_broadcast_p), public, pointer, nopass:: broadcast

type, public :: pf_results_t

Type for storing results for later output

Components

TypeVisibility AttributesNameInitial
real(kind=pfdp), public, allocatable:: errors(:,:,:)
real(kind=pfdp), public, allocatable:: residuals(:,:,:)
integer, public :: nsteps
integer, public :: niters
integer, public :: nprocs
integer, public :: nlevels
integer, public :: p_index
integer, public :: nblocks
character(len=20), public :: fname_r

output file name for residuals

character(len=18), public :: fname_e

output file name errors

procedure(pf_results_p), public, pointer, nopass:: dump
procedure(pf_results_p), public, pointer, nopass:: destroy

type, public :: pf_pfasst_t

The main PFASST data type which includes pretty much everything

Components

TypeVisibility AttributesNameInitial
integer, public :: nlevels =-1

Mandatory parameters (must be set on command line or input file) number of pfasst levels

integer, public :: niters =5

Optional parameters number of PFASST iterations to do

integer, public :: qtype =SDC_GAUSS_LOBATTO

type of nodes

integer, public :: nsweeps(PF_MAXLEVS) =1

number of sweeps at each levels

integer, public :: nsweeps_pred(PF_MAXLEVS) =1

number of sweeps during predictor

integer, public :: nnodes(PF_MAXLEVS) =3

number of nodes

real(kind=pfdp), public :: abs_res_tol =0.d0

absolute convergence tolerance

real(kind=pfdp), public :: rel_res_tol =0.d0

relative convergence tolerance

logical, public :: PFASST_pred =.true.

true if the PFASST type predictor is used

logical, public :: pipeline_pred =.false.

true if coarse sweeps after burn in are pipelined (if nsweeps_pred>1 on coarse level)

integer, public :: nsweeps_burn =1

number of sdc sweeps to perform during coarse level burn in

integer, public :: q0_style =0

q0 can take 3 values 0: Only the q0 at t=0 is valid (default) 1: The q0 at each processor is valid 2: q0 and all nodes at each processor is valid

logical, public :: Vcycle =.true.

decides if Vcycles are done

logical, public :: Finterp =.false.

True if transfer functions operate on rhs

logical, public :: use_LUq =.true.

True if LU type implicit matrix is used

integer, public :: taui0 =-999999

iteration cutoff for tau inclusion

logical, public :: use_rk_stepper =.false.

RK and Parareal options decides if RK steps are used instead of the sweeps

integer, public :: nsteps_rk(PF_MAXLEVS) =3

number of runge-kutta nodes

logical, public :: RK_pred =.false.

true if the coarse level is initialized with Runge-Kutta instead of PFASST

logical, public :: debug =.false.

If true, debug diagnostics are printed

logical, public :: save_results =.false.

If true, results are output

logical, public :: echo_timings =.false.

If true, timings are output

integer, public :: rank =-1

rank of current processor

type(pf_state_t), public, allocatable:: state

pf objects Describes where in the algorithm proc is

type(pf_level_t), public, allocatable:: levels(:)

Holds the levels

type(pf_comm_t), public, pointer:: comm

Points to communicator

type(pf_results_t), public :: results
type(pf_hook_t), public, allocatable:: hooks(:,:,:)

hooks variables Holds the hooks

integer, public, allocatable:: nhooks(:,:)

Holds the number hooks

integer, public :: timers(100) =0

timing variables

integer, public :: runtimes(100) =0
character(len=512), public :: outdir

output directory