Choral
|
MULTISTEP SOLVERS FOR NON LINEAR ODEs More...
Functions/Subroutines | |
logical function, public | check_ode_method_nl_ms (method) |
is 'method' a multi-step non-linear ODE solver ? More... | |
subroutine, public | memsize_ode_nl_ms (n_Y, n_FY, method) |
required sizes to allocate memory More... | |
subroutine, public | set_solver_ode_nl_ms (slv, method) |
set the resolution solver More... | |
subroutine, public | create_ode_nl_ms_sol (sol, pb, method) |
create memory for the ode_solution structure 'sol' More... | |
subroutine, public | solve_ode_nl_ms (sol, pb, t0, T, dt, method, out, check_overflow) |
solve with constant time-step More... | |
elemental subroutine | phi_1 (z) |
phi_1 = ( exp(z) - 1 ) / z More... | |
elemental subroutine | phi_2 (z) |
phi_2 = (exp(z) - z - 1._RP)/z^2 More... | |
elemental subroutine | phi_3 (z) |
phi_3(z) = (exp(z) - z^2/2 - z - 1)/z^3 More... | |
elemental subroutine | phi_4 (z) |
phi_4(z) = (exp(z) - z^3/6 - z^2/2 - z - 1)/z^4 More... | |
subroutine | nl_ms_fbe (sol, dt, N, P) |
Lines 1 ..P = combined FORWARD/BacWard Euler Lines P+1..N = FORWARD Euler. More... | |
subroutine | nl_ms_erk1 (sol, dt, N, P) |
Lines 1 ..P = Rush-Larsen 1 Lines P+1..N = Forward Euler. More... | |
subroutine | nl_ms_rl2 (sol, dt, N, P) |
Lines 1 ..P = Rush-Larsen 2 Lines P+1..N = AB2. More... | |
subroutine | nl_ms_rl3 (sol, dt, N, P) |
Lines 1 ..P = Rush-Larsen 3 Lines P+1..N = AB3. More... | |
subroutine | nl_ms_rl4 (sol, dt, N, P) |
Lines 1 ..P = Rush-Larsen 4 Lines P+1..N = AB4. More... | |
subroutine | nl_ms_bdfsbdf2 (sol, dt, N, P) |
Lines 1 ..P = combined BDF2/SBDF2 Lines P+1..N = SBDF2. More... | |
subroutine | nl_ms_bdfsbdf3 (sol, dt, N, P) |
Lines 1 ..P = combined BDF3/SBDF3 Lines P+1..N = SBDF3. More... | |
subroutine | nl_ms_bdfsbdf4 (sol, dt, N, P) |
Lines 1 ..P = combined BDF4/SBDF4 Lines P+1..N = SBDF4. More... | |
subroutine | nl_ms_bdfsbdf5 (sol, dt, N, P) |
Lines 1 ..P = combined BDF5/SBDF5 Lines P+1..N = SBDF5. More... | |
subroutine | nl_ms_cnab2 (sol, dt, N, P) |
Lines 1 ..P = combined CN/AB2 Lines P+1..N = AB2. More... | |
subroutine | nl_ms_mcnab2 (sol, dt, N, P) |
Lines 1 ..P = combined Modified-CN/AB2 Lines P+1..N = AB2. More... | |
subroutine | nl_ms_eab2 (sol, dt, N, P) |
Lines 1 ..P = Exponential AB2 Lines P+1..N = AB2. More... | |
subroutine | nl_ms_eab3 (sol, dt, N, P) |
Lines 1 ..P = Exponential AB3 Lines P+1..N = AB3. More... | |
subroutine | nl_ms_eab4 (sol, dt, N, P) |
Lines 1 ..P = Exponential AB4 Lines P+1..N = AB4. More... | |
Variables | |
real(rp), parameter | c1_3 = 1._RP / 3._RP |
real(rp), parameter | c2_3 = 2._RP / 3._RP |
real(rp), parameter | c4_3 = 4._RP / 3._RP |
real(rp), parameter | c1_6 = 1._RP / 6._RP |
real(rp), parameter | c11_6 = 11._RP / 6._RP |
real(rp), parameter | c2_11 = 2._RP / 11._RP |
real(rp), parameter | c6_11 = 6._RP / 11._RP |
real(rp), parameter | c9_11 = 9._RP / 11._RP |
real(rp), parameter | c18_11 = 18._RP / 11._RP |
real(rp), parameter | c5_12 = 5._RP / 12._RP |
real(rp), parameter | c16_12 = 16._RP / 12._RP |
real(rp), parameter | c23_12 = 23._RP / 12._RP |
real(rp), parameter | c9_16 = 9._RP / 16._RP |
real(rp), parameter | c1_24 = 1._RP / 24._RP |
real(rp), parameter | c9_24 = 9._RP / 24._RP |
real(rp), parameter | c37_24 = 37._RP / 24._RP |
real(rp), parameter | c55_24 = 55._RP / 24._RP |
real(rp), parameter | c59_24 = 59._RP / 24._RP |
real(rp), parameter | c3_25 = 3._RP / 25._RP |
real(rp), parameter | c12_25 = 12._RP / 25._RP |
real(rp), parameter | c16_25 = 16._RP / 25._RP |
real(rp), parameter | c36_25 = 36._RP / 25._RP |
real(rp), parameter | c48_25 = 48._RP / 25._RP |
real(rp), parameter | c72_25 = 72._RP / 25._RP |
real(rp), parameter | c12_137 = 12._RP / 137._RP |
real(rp), parameter | c60_137 = 60._RP / 137._RP |
real(rp), parameter | c75_137 = 75._RP / 137._RP |
real(rp), parameter | c200_137 = 200._RP / 137._RP |
real(rp), parameter | c300_137 = 300._RP / 137._RP |
real(rp), parameter | c600_137 = 600._RP / 137._RP |
MULTISTEP SOLVERS FOR NON LINEAR ODEs
Multistep solvers for ODE_PB_NL, see ode_problem_mod detailed description.
logical function, public ode_nl_ms_mod::check_ode_method_nl_ms | ( | integer, intent(in) | method | ) |
is 'method' a multi-step non-linear ODE solver ?
Definition at line 73 of file ode_NL_ms_mod.f90.
subroutine, public ode_nl_ms_mod::create_ode_nl_ms_sol | ( | type(ode_solution), intent(inout) | sol, |
type(ode_problem), intent(in) | pb, | ||
integer, intent(in) | method | ||
) |
create memory for the ode_solution structure 'sol'
Definition at line 188 of file ode_NL_ms_mod.f90.
subroutine, public ode_nl_ms_mod::memsize_ode_nl_ms | ( | integer, intent(out) | n_Y, |
integer, intent(out) | n_FY, | ||
integer, intent(in) | method | ||
) |
required sizes to allocate memory
returns iY, iFY, iAYaux depending on the method
Definition at line 98 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined BDF2/SBDF2 Lines P+1..N = SBDF2.
Definition at line 658 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined BDF3/SBDF3 Lines P+1..N = SBDF3.
Definition at line 710 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined BDF4/SBDF4 Lines P+1..N = SBDF4.
Definition at line 768 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined BDF5/SBDF5 Lines P+1..N = SBDF5.
Definition at line 834 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined CN/AB2 Lines P+1..N = AB2.
Definition at line 908 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Exponential AB2 Lines P+1..N = AB2.
Definition at line 1017 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Exponential AB3 Lines P+1..N = AB3.
g_1 = b_{n-1} + (a_{n-1} - an) y_{n-1} g_2 = b_{n-2} + (a_{n-2} - an) y_{n-2}
gamma_2 = (3/2) bn - 2 g_1 + (1/2) g_2 gamma_3 = bn - 2 g_1 + g_2
w1 = a_n*y_n + b_n w2 = gamma_2 + an h w1 w3 = gamma_3 + an h w2
y_{n+1} = y_n + h [ w_1 + w2/2 + phi_3(a_n h) w3 ]
Definition at line 1093 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Exponential AB4 Lines P+1..N = AB4.
g_1 = b_{n-1} + (a_{n-1} - an) y_{n-1} g_2 = b_{n-2} + (a_{n-2} - an) y_{n-2} g_3 = b_{n-3} + (a_{n-3} - an) y_{n-3}
gamma_2 = (11/6) bn - 3 g_1 + (3/2) g_2 - (1/3) g_3 gamma_3 = 2 bn - 5 g_1 + 4 g_2 - g_3 gamma_4 = 9 bn - 3 g_1 + 3 g_2 - g_3
w1 = a_n*y_n + b_n w2 = gamma_2 + an h w1 w3 = gamma_3 + an h w2
y_{n+1} = y_n + h [ w_1 + w2/2 + phi_3(a_n h) w3 ]
Definition at line 1191 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Rush-Larsen 1 Lines P+1..N = Forward Euler.
Definition at line 431 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined FORWARD/BacWard Euler Lines P+1..N = FORWARD Euler.
Definition at line 398 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = combined Modified-CN/AB2 Lines P+1..N = AB2.
Definition at line 960 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Rush-Larsen 2 Lines P+1..N = AB2.
Definition at line 480 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Rush-Larsen 3 Lines P+1..N = AB3.
Definition at line 530 of file ode_NL_ms_mod.f90.
|
private |
Lines 1 ..P = Rush-Larsen 4 Lines P+1..N = AB4.
Definition at line 590 of file ode_NL_ms_mod.f90.
|
private |
phi_1 = ( exp(z) - 1 ) / z
Definition at line 322 of file ode_NL_ms_mod.f90.
|
private |
phi_2 = (exp(z) - z - 1._RP)/z^2
Definition at line 336 of file ode_NL_ms_mod.f90.
|
private |
phi_3(z) = (exp(z) - z^2/2 - z - 1)/z^3
Definition at line 356 of file ode_NL_ms_mod.f90.
|
private |
phi_4(z) = (exp(z) - z^3/6 - z^2/2 - z - 1)/z^4
Definition at line 376 of file ode_NL_ms_mod.f90.
subroutine, public ode_nl_ms_mod::set_solver_ode_nl_ms | ( | procedure(ode_nl_ms_solver), pointer | slv, |
integer, intent(in) | method | ||
) |
set the resolution solver
Definition at line 145 of file ode_NL_ms_mod.f90.
subroutine, public ode_nl_ms_mod::solve_ode_nl_ms | ( | type(ode_solution), intent(inout) | sol, |
type(ode_problem), intent(in) | pb, | ||
real(rp), intent(in) | t0, | ||
real(rp), intent(in) | T, | ||
real(rp), intent(in) | dt, | ||
integer, intent(in) | method, | ||
procedure(ode_output_proc) | out, | ||
logical, intent(in) | check_overflow | ||
) |
solve with constant time-step
Definition at line 210 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 36 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 62 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 56 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 44 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 57 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 41 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 49 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 31 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 35 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 65 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 45 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 38 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 32 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 66 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 58 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 51 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 55 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 59 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 33 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 52 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 53 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 43 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 67 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 63 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 39 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 60 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 64 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 40 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 47 of file ode_NL_ms_mod.f90.
|
private |
Definition at line 50 of file ode_NL_ms_mod.f90.