pf_pfasst_t Derived Type

type, public :: pf_pfasst_t

The main PFASST data type which includes pretty much everything


Inherits

type~~pf_pfasst_t~~InheritsGraph type~pf_pfasst_t pf_pfasst_t type~pf_state_t pf_state_t type~pf_pfasst_t->type~pf_state_t state type~pf_comm_t pf_comm_t type~pf_pfasst_t->type~pf_comm_t comm type~pf_results_t pf_results_t type~pf_pfasst_t->type~pf_results_t results type~pf_level_t pf_level_t type~pf_pfasst_t->type~pf_level_t levels type~pf_hook_t pf_hook_t type~pf_pfasst_t->type~pf_hook_t hooks c_ptr c_ptr type~pf_comm_t->c_ptr pfs, pfpth type~pf_user_level_t pf_user_level_t type~pf_level_t->type~pf_user_level_t ulevel type~pf_sdcmats_t pf_sdcmats_t type~pf_level_t->type~pf_sdcmats_t sdcmats type~pf_encap_t pf_encap_t type~pf_level_t->type~pf_encap_t Q, pQ, R, I, Fflt, tauQ, pFflt, q0, qend, F, pF type~pf_sweeper_t pf_sweeper_t type~pf_user_level_t->type~pf_sweeper_t sweeper type~pf_factory_t pf_factory_t type~pf_user_level_t->type~pf_factory_t factory type~pf_stepper_t pf_stepper_t type~pf_user_level_t->type~pf_stepper_t stepper

Contents

Source Code


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


Source Code

  type :: pf_pfasst_t
     !>  Mandatory parameters (must be set on command line or input file)
     integer :: nlevels = -1             !! number of pfasst levels

     !>  Optional parameters
     integer :: niters  = 5             !! number of PFASST iterations to do
     integer :: qtype   = SDC_GAUSS_LOBATTO  !! type of nodes
     
     ! --  level dependent parameters
     integer :: nsweeps(PF_MAXLEVS) = 1       !!  number of sweeps at each levels
     integer :: nsweeps_pred(PF_MAXLEVS) =1   !!  number of sweeps during predictor
     integer :: nnodes(PF_MAXLEVS)=3          !! number of nodes

     ! --  tolerances
     real(pfdp) :: abs_res_tol = 0.d0   !!  absolute convergence tolerance
     real(pfdp) :: rel_res_tol = 0.d0   !!  relative convergence tolerance

     ! --  predictor options  (should be set before pfasst_run is called)
     logical :: PFASST_pred = .true.    !!  true if the PFASST type predictor is used
     logical :: pipeline_pred = .false. !!  true if coarse sweeps after burn in are pipelined  (if nsweeps_pred>1 on coarse level)
     integer :: nsweeps_burn =  1       !!  number of sdc sweeps to perform during coarse level burn in
     integer :: 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


     ! --  run options  (should be set before pfasst_run is called)
     logical :: Vcycle = .true.         !!  decides if Vcycles are done
     logical :: Finterp = .false.    !!  True if transfer functions operate on rhs
     logical :: use_LUq = .true.     !!  True if LU type implicit matrix is used 
     integer :: taui0 = -999999     !! iteration cutoff for tau inclusion

     !> RK and Parareal options
     logical :: use_rk_stepper = .false. !! decides if RK steps are used instead of the sweeps
     integer :: nsteps_rk(PF_MAXLEVS)=3  !! number of runge-kutta nodes
     logical :: RK_pred = .false.        !!  true if the coarse level is initialized with Runge-Kutta instead of PFASST

     ! -- misc
     logical :: debug = .false.         !!  If true, debug diagnostics are printed
     logical :: save_results = .false.  !!  If true, results are output
     logical    :: echo_timings  = .false.    !!  If true, timings are output

     integer :: rank    = -1            !! rank of current processor

     !> pf objects
     type(pf_state_t), allocatable :: state   !!  Describes where in the algorithm proc is
     type(pf_level_t), allocatable :: levels(:) !! Holds the levels
     type(pf_comm_t),  pointer :: comm    !! Points to communicator
     type(pf_results_t) :: results

     !> hooks variables
     type(pf_hook_t), allocatable :: hooks(:,:,:)  !!  Holds the hooks
     integer,  allocatable :: nhooks(:,:)   !!  Holds the number hooks

     !> timing variables
     integer :: timers(100)   = 0
     integer :: runtimes(100) = 0

     !> output directory
     character(512) :: outdir

  end type pf_pfasst_t