89 procedure,
nopass :: compute_modified_coeffs => &
100 real(kind=
rp),
intent(out) :: coeffs(4)
101 real(kind=
rp),
intent(in) :: dt(10)
102 integer,
intent(in) :: order
104 call rzero(coeffs, 4)
110 coeffs(2) = -dt(1) / dt(2)
111 coeffs(1) = 1.0_rp - coeffs(2)
113 coeffs(3) = dt(1) / (dt(2) + dt(3)) * (dt(1) + dt(2)) / dt(3)
114 coeffs(2) = - dt(1) / dt(2) * (1.0_rp + dt(2) / dt(3) + dt(1) / dt(3))
115 coeffs(1) = 1.0_rp - coeffs(2) - coeffs(3)
117 call neko_error(
"The order of the EXT time scheme must be 1 to 3.")
125 real(kind=
rp),
intent(out) :: coeffs(4)
126 real(kind=
rp),
intent(in) :: dt(10)
127 real(kind=
rp) dta, dtb, dtc, dtd, dte, dts
129 call rzero(coeffs, 4)
137 coeffs(3) = 2.0_rp / 3.0_rp * dtc * (1.0_rp / dtd + dte)
138 coeffs(2) = -dta - coeffs(3) * dtd
139 coeffs(1) = 1.0_rp - coeffs(2) - coeffs(3)
Interface for setting the scheme coefficients.
Explicit extrapolation scheme for time integration.
subroutine ext_time_scheme_compute_modified_coeffs(coeffs, dt)
Compute the modified scheme coefficients.
subroutine ext_time_scheme_compute_coeffs(coeffs, dt, order)
Compute the scheme coefficients.
subroutine, public rzero(a, n)
Zero a real vector.
integer, parameter, public rp
Global precision used in computations.
Base class for time integration schemes.
Explicit extrapolation scheme for time integration.
Base abstract class for time integration schemes.