This module contains two total variation diminishing (TVD) high-order schemes for solving initial value problems. It is very important to use TVD schemes for time integration. Even with a TVD spacial discretization, if the time discretization is done by a non-TVD method, the result may be oscillatory. Source: ICASE 97-65 by Shu, 1997.
Initialize rktvd
object.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
procedure(integrand) | :: | fu |
subroutine with the derivative |
|||
integer, | intent(in) | :: | neq |
number of equations |
||
integer, | intent(in) | :: | order |
order of the method (1, 2 or 3) |
Runge-Kutta TVD ODE solver class.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | neq |
number of equations |
|||
integer, | public | :: | order |
order of the method |
|||
integer, | public | :: | fevals | = | 0 |
number of function evaluations |
|
integer, | public | :: | istate | = | 0 |
flag indicating the state of the integration: 1 first call for a problem, 2 subsequent call for a problem. |
|
character(len=:), | public, | allocatable | :: | msg |
error message |
private function rktvd_init (fu, neq, order) | Initialize |
procedure, public, pass(self) :: error_msg | |
procedure, public, pass(self) :: integrate => rktvd_integrate |
Multi-step TVD ODE solver class.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | neq |
number of equations |
|||
integer, | public | :: | order |
order of the method |
|||
integer, | public | :: | fevals | = | 0 |
number of function evaluations |
|
integer, | public | :: | istate | = | 0 |
flag indicating the state of the integration: 1 first call for a problem, 2 subsequent call for a problem. |
|
character(len=:), | public, | allocatable | :: | msg |
error message |
private function mstvd_init (fu, neq) | Initialize |
procedure, public, pass(self) :: error_msg | |
procedure, public, pass(self) :: integrate => mstvd_integrate |