Module to do interpolation between pfasst levels
Subroutine to interpolate (in time and space) level_index-1 to level_index
Interpolation is done by interpolating increments.
The fine function values are re-evaluated after interpolation.
create workspaces
set time at coarse and fine nodes
interpolate coarse level correction in space only
interpolate corrections in time
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout), | target | :: | pf | main pfasst structure |
|
real(kind=pfdp), | intent(in) | :: | t0 | time at beginning of time interval |
||
real(kind=pfdp), | intent(in) | :: | dt | time step |
||
integer, | intent(in) | :: | level_index | defines which level to interpolate to |
||
logical, | intent(in) | :: | F_INTERP | Flag, if true, then do interp on f not sol |
||
integer, | intent(in), | optional | :: | flags |
Subroutine to update the fine initial condition from coarse increment by spatial interpolation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout) | :: | pf | main pfasst structure |
||
class(pf_level_t), | intent(inout) | :: | f_lev_ptr | fine level |
||
class(pf_level_t), | intent(inout) | :: | c_lev_ptr | coarse level |
||
integer, | intent(in), | optional | :: | flags |
Subroutine to update the fine terminal condition from coarse increment by spatial interpolation used for adjoint solver
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(pf_pfasst_t), | intent(inout) | :: | pf | main pfasst structure |
||
class(pf_level_t), | intent(inout) | :: | f_lev_ptr | fine level |
||
class(pf_level_t), | intent(inout) | :: | c_lev_ptr | coarse level |