![]() |
A Modular Arbitrary-Order Ocean-Atmosphere Model -- Stochastic implementation
|
Module with the MTV rk2 integration routines. More...
Functions/Subroutines | |
subroutine, public | init_integrator |
Subroutine to initialize the MTV rk2 integrator. More... | |
subroutine | init_noise |
Routine to initialize the noise vectors and buffers. More... | |
subroutine | init_g |
Routine to initialize the G term. More... | |
subroutine | compg (y) |
Routine to actualize the G term based on the state y of the MTV system. More... | |
subroutine, public | step (y, t, dt, dtn, res, tend) |
Routine to perform an integration step (Heun algorithm) of the MTV system. The incremented time is returned. More... | |
subroutine, public | full_step (y, t, dt, dtn, res) |
Routine to perform an integration step (Heun algorithm) of the full stochastic system. The incremented time is returned. More... | |
Variables | |
real(kind=8), dimension(:), allocatable | buf_y1 |
real(kind=8), dimension(:), allocatable | buf_f0 |
real(kind=8), dimension(:), allocatable | buf_f1 |
Integration buffers. More... | |
real(kind=8), dimension(:), allocatable | dw |
real(kind=8), dimension(:), allocatable | dwmult |
Standard gaussian noise buffers. More... | |
real(kind=8), dimension(:), allocatable | dwar |
real(kind=8), dimension(:), allocatable | dwau |
real(kind=8), dimension(:), allocatable | dwor |
real(kind=8), dimension(:), allocatable | dwou |
Standard gaussian noise buffers. More... | |
real(kind=8), dimension(:), allocatable | anoise |
real(kind=8), dimension(:), allocatable | noise |
Additive noise term. More... | |
real(kind=8), dimension(:), allocatable | noisemult |
Multiplicative noise term. More... | |
real(kind=8), dimension(:), allocatable | g |
G term of the MTV tendencies. More... | |
real(kind=8), dimension(:), allocatable | buf_g |
Buffer for the G term computation. More... | |
logical | mult |
Logical indicating if the sigma1 matrix must be computed for every state change. More... | |
logical | q1fill |
Logical indicating if the matrix Q1 is non-zero. More... | |
logical | compute_mult |
Logical indicating if the Gaussian noise for the multiplicative noise must be computed. More... | |
real(kind=8), parameter | sq2 = sqrt(2.D0) |
Hard coded square root of 2. More... | |
Module with the MTV rk2 integration routines.
|
private |
Routine to actualize the G term based on the state y of the MTV system.
y | State of the MTV system |
Definition at line 105 of file rk2_MTV_integrator.f90.
subroutine, public rk2_mtv_integrator::full_step | ( | real(kind=8), dimension(0:ndim), intent(in) | y, |
real(kind=8), intent(inout) | t, | ||
real(kind=8), intent(in) | dt, | ||
real(kind=8), intent(in) | dtn, | ||
real(kind=8), dimension(0:ndim), intent(out) | res | ||
) |
Routine to perform an integration step (Heun algorithm) of the full stochastic system. The incremented time is returned.
y | Initial point. |
t | Actual integration time |
dt | Integration timestep. |
dtn | Stochastoc integration timestep (normally square-root of dt). |
res | Final point after the step. |
Definition at line 170 of file rk2_MTV_integrator.f90.
|
private |
subroutine, public rk2_mtv_integrator::init_integrator | ( | ) |
Subroutine to initialize the MTV rk2 integrator.
Definition at line 50 of file rk2_MTV_integrator.f90.
|
private |
Routine to initialize the noise vectors and buffers.
Definition at line 69 of file rk2_MTV_integrator.f90.
subroutine, public rk2_mtv_integrator::step | ( | real(kind=8), dimension(0:ndim), intent(in) | y, |
real(kind=8), intent(inout) | t, | ||
real(kind=8), intent(in) | dt, | ||
real(kind=8), intent(in) | dtn, | ||
real(kind=8), dimension(0:ndim), intent(out) | res, | ||
real(kind=8), dimension(0:ndim), intent(out) | tend | ||
) |
Routine to perform an integration step (Heun algorithm) of the MTV system. The incremented time is returned.
y | Initial point. |
t | Actual integration time |
dt | Integration timestep. |
dtn | Stochastic integration timestep (normally square-root of dt). |
res | Final point after the step. |
tend | Partial or full tendencies used to perform the step (used for debugging). |
Definition at line 124 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 33 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 30 of file rk2_MTV_integrator.f90.
|
private |
Integration buffers.
Definition at line 30 of file rk2_MTV_integrator.f90.
|
private |
Buffer for the G term computation.
Definition at line 36 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 30 of file rk2_MTV_integrator.f90.
|
private |
Logical indicating if the Gaussian noise for the multiplicative noise must be computed.
Definition at line 40 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 31 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 32 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 32 of file rk2_MTV_integrator.f90.
|
private |
Standard gaussian noise buffers.
Definition at line 31 of file rk2_MTV_integrator.f90.
|
private |
Definition at line 32 of file rk2_MTV_integrator.f90.
|
private |
Standard gaussian noise buffers.
Definition at line 32 of file rk2_MTV_integrator.f90.
|
private |
G term of the MTV tendencies.
Definition at line 35 of file rk2_MTV_integrator.f90.
|
private |
Logical indicating if the sigma1 matrix must be computed for every state change.
Definition at line 38 of file rk2_MTV_integrator.f90.
|
private |
Additive noise term.
Definition at line 33 of file rk2_MTV_integrator.f90.
|
private |
Multiplicative noise term.
Definition at line 34 of file rk2_MTV_integrator.f90.
|
private |
Logical indicating if the matrix Q1 is non-zero.
Definition at line 39 of file rk2_MTV_integrator.f90.
|
private |
Hard coded square root of 2.
Definition at line 42 of file rk2_MTV_integrator.f90.