IMEX or additive or semi-implicit Runge-Kutta stepper type
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | npieces | ||||
| integer, | public | :: | order | ||||
| real(kind=pfdp), | public, | allocatable | :: | AmatI(:,:) | |||
| real(kind=pfdp), | public, | allocatable | :: | AmatE(:,:) | |||
| real(kind=pfdp), | public, | allocatable | :: | cvec(:) | |||
| real(kind=pfdp), | public, | allocatable | :: | bvecI(:) | |||
| real(kind=pfdp), | public, | allocatable | :: | bvecE(:) | |||
| real(kind=pfdp), | public, | allocatable | :: | QtilI(:,:) | |||
| logical, | public | :: | explicit | = | .true. | ||
| logical, | public | :: | implicit | = | .true. | ||
| integer, | public | :: | nstages |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(pf_ark_t), | intent(inout) | :: | this | |||
| class(pf_encap_t), | intent(in) | :: | y | |||
| real(kind=pfdp), | intent(in) | :: | t | |||
| integer, | intent(in) | :: | level_index | |||
| class(pf_encap_t), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | piece |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(pf_ark_t), | intent(inout) | :: | this | |||
| class(pf_encap_t), | intent(inout) | :: | y | |||
| real(kind=pfdp), | intent(in) | :: | t | |||
| real(kind=pfdp), | intent(in) | :: | dtq | |||
| class(pf_encap_t), | intent(in) | :: | rhs | |||
| integer, | intent(in) | :: | level_index | |||
| class(pf_encap_t), | intent(inout) | :: | f | |||
| integer, | intent(in) | :: | piece |
Perform N steps of ark on level level_index and set qend appropriately. Assign pointer to appropriate level
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(pf_ark_t), | intent(inout) | :: | this | |||
| type(pf_pfasst_t), | intent(inout), | target | :: | pf | ||
| integer, | intent(in) | :: | level_index | Level of the index to step on |
||
| real(kind=pfdp), | intent(in) | :: | t0 | Time at start of time interval |
||
| real(kind=pfdp), | intent(in) | :: | big_dt | Size of time interval to integrato on |
||
| integer, | intent(in) | :: | nsteps_rk | Number of steps to use |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(pf_ark_t), | intent(inout) | :: | this | |||
| class(pf_level_t), | intent(inout) | :: | lev |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(pf_ark_t), | intent(inout) | :: | this | |||
| class(pf_level_t), | intent(inout) | :: | lev |
type, extends(pf_stepper_t), abstract :: pf_ark_t
real(pfdp), allocatable :: AmatI(:,:)
real(pfdp), allocatable :: AmatE(:,:)
real(pfdp), allocatable :: cvec(:)
real(pfdp), allocatable :: bvecI(:)
real(pfdp), allocatable :: bvecE(:)
real(pfdp), allocatable :: QtilI(:,:)
logical :: explicit = .true.
logical :: implicit = .true.
integer :: nstages
contains
procedure(pf_f_eval_p), deferred :: f_eval
procedure(pf_f_comp_p), deferred :: f_comp
procedure :: do_n_steps => ark_do_n_steps
procedure :: initialize => ark_initialize
procedure :: destroy => ark_destroy
end type pf_ark_t