Time-integration methods based on multistep methods
multistep_storage_t: - takes care of storage and shift of data at previous timestep
karniadakis_t - Explicit part of time-stepping according to Karniadakis scheme - Implicit part not treated within this module but must be handled explicitly by yourself - Automatic order reduction for initial time-stepd - Generic implementation, i.e. independent of mesh, equilibria, variable, etc...
Returns ndim
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(multistep_storage_t), | intent(in) | :: | self |
Instance of the type |
Returns nstorage
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(multistep_storage_t), | intent(in) | :: | self |
Instance of the type |
Returns nfields
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(multistep_storage_t), | intent(in) | :: | self |
Instance of the type |
Initialises a Karniadakis scheme
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(multistep_storage_t), | intent(inout) | :: | self |
Instance of the type |
||
| integer, | intent(in) | :: | ndim |
Dimension of storage values |
||
| integer, | intent(in) | :: | nstorage |
Number of storage points |
||
| integer, | intent(in) | :: | nfields |
Number of fields to be stored |
||
| real(kind=GP), | intent(in), | optional, | dimension(ndim, nstorage, nfields) | :: | vstore_firsts |
Initial values for storage (default = 0) |
Shifts storage and vals_new will be placed at vsore(:,1,:)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(multistep_storage_t), | intent(inout) | :: | self |
Instance of the type |
||
| real(kind=GP), | intent(in), | dimension(self%ndim, self%nfields) | :: | vals_new |
New storage value |
Frees memory associated with multistep_storage
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(multistep_storage_t), | intent(inout) | :: | self |
Instance of the type |
Returns ncount
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Returns order that eventually approached (after initial time-steps)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Returns order used for last time-step
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Returns dtau
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Returns dtau_bdf
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Initialises a Karniadakis scheme
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(inout) | :: | self |
Instance of the type |
||
| integer, | intent(in) | :: | ndim |
Dimension of problem |
||
| integer, | intent(in) | :: | order |
Order of time-stepping scheme |
||
| real(kind=GP), | intent(in) | :: | dtau |
Time step size |
||
| real(kind=GP), | intent(in), | optional, | dimension(ndim, order-1) | :: | y_firsts |
Values for initial time steps in descending order |
| real(kind=GP), | intent(in), | optional, | dimension(ndim, order-1) | :: | dy_firsts |
Right hand side for initial time-steps in descending order |
Advances variable from t -> t+1
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(inout) | :: | self |
Instance of the type |
||
| real(kind=GP), | intent(in), | dimension(self%ndim) | :: | dy |
Right hand side of differential equation at time-step t |
|
| real(kind=GP), | intent(in), | dimension(self%ndim) | :: | y |
Variable at time point t, on output advanced to t+1 |
|
| real(kind=GP), | intent(out), | dimension(self%ndim) | :: | yn |
Variable advanced to time point t+1 |
|
| integer, | intent(in), | optional | :: | dbgout |
debug output level, default: 0 |
Displays basic information of karniadakis
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(karniadakis_t), | intent(in) | :: | self |
Instance of the type |
Frees memory associated with karniadakis
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(karniadakis_t), | intent(inout) | :: | self |
Instance of the type |
Datatype for storage
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=GP), | public, | allocatable, dimension(:,:,:) | :: | vstore |
Values of storage (ndim, nstorage, nfields) |
| final :: destructor_storage |
| procedure , public :: init_storage Interface | |
| procedure , public :: get_ndim Interface | |
| procedure , public :: get_nstorage Interface | |
| procedure , public :: get_nfields Interface | |
| procedure , public :: shift_storage Interface |
Datatype for karniadakis
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=GP), | public, | allocatable, dimension(:,:,:) | :: | vstore |
Values of storage (ndim, nstorage, nfields) |
| final :: destructor_karniadakis |
| procedure , public :: init_storage Interface | |
| procedure , public :: get_ndim Interface | |
| procedure , public :: get_nstorage Interface | |
| procedure , public :: get_nfields Interface | |
| procedure , public :: shift_storage Interface | |
| procedure , public :: init => init_karniadakis Interface | |
| procedure , public :: get_ncount Interface | |
| procedure , public :: get_order Interface | |
| procedure , public :: get_current_order Interface | |
| procedure , public :: get_dtau Interface | |
| procedure , public :: get_dtau_bdf Interface | |
| procedure , public :: advance Interface | |
| procedure , public :: display => display_karniadakis Interface |