Module to define the main parameters, data types, and interfaces in pfasst
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(in) | :: | this | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
hooks subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout) | :: | pf | |||
class(pf_level_t), | intent(inout) | :: | level | |||
type(pf_state_t), | intent(in) | :: | state |
Interfaces for subroutines
SDC sweeper subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_sweeper_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_sweeper_t), | intent(inout) | :: | this |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_sweeper_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | Lev |
Interfaces for subroutines
time stepper interfaces
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_stepper_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_stepper_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | Lev |
Interfaces for subroutines
transfer interfaces used for restriction and interpolation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
encapsulation interfaces
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_factory_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout), | allocatable | :: | x | ||
integer, | intent(in) | :: | level | |||
integer, | intent(in) | :: | shape(:) |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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(:) |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_factory_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout), | allocatable | :: | x | ||
integer, | intent(in) | :: | level | |||
integer, | intent(in) | :: | shape(:) |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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(:) |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(inout) | :: | this | |||
real(kind=pfdp), | intent(in) | :: | val | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(in) | :: | src | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(in) | :: | this | |||
real(kind=pfdp), | intent(out) | :: | z(:) | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(inout) | :: | this | |||
real(kind=pfdp), | intent(in) | :: | z(:) | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_encap_t), | intent(inout) | :: | this | |||
integer, | intent(in), | optional | :: | flags |
Interfaces for subroutines
communicator interfaces
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout) | :: | pf | |||
integer, | intent(in) | :: | tag | |||
integer, | intent(inout) | :: | istatus | |||
integer, | intent(inout) | :: | ierror | |||
integer, | intent(in), | optional | :: | direction |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout) | :: | pf | |||
integer, | intent(in) | :: | tag | |||
integer, | intent(in) | :: | istatus | |||
integer, | intent(inout) | :: | ierror | |||
integer, | intent(in), | optional | :: | direction |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(in) | :: | pf | |||
integer, | intent(in) | :: | level | |||
integer, | intent(inout) | :: | ierror |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
Interfaces for subroutines
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_results_t), | intent(inout) | :: | this |
The type that holds the state of the system
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |
Abstract hook type: hooks call diagnostic routines from various places in code
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
procedure(pf_hook_p), | public, | pointer, nopass | :: | proc |
The abstract SDC sweeper type (must be extended)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | npieces | ||||
logical, | public | :: | use_LUq |
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 |
The abstract time stepper type (must be extended)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | npieces | ||||
integer, | public | :: | order |
procedure(pf_do_n_steps_p), public :: do_n_steps | |
procedure(pf_initialize_stepper_p), public :: initialize | |
procedure(pf_destroy_stepper_p), public :: destroy |
The abstract data type of the solution (must be extended)
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 |
Abstract type for creation and destruction of objects
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 |
The absract definition of level which is inherited to include problem dependent stuff
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
class(pf_factory_t), | public, | allocatable | :: | factory | |||
class(pf_sweeper_t), | public, | allocatable | :: | sweeper | |||
class(pf_stepper_t), | public, | allocatable | :: | stepper |
procedure(pf_transfer_p), public :: restrict | |
procedure(pf_transfer_p), public :: interpolate |
The type to store quadrature matrices
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |
Data type of a PFASST level
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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. |
Data type to define the communicator
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 for storing results for later output
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |
The main PFASST data type which includes pretty much everything
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
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 |