144 real(kind=
rp),
intent(inout),
dimension(10) :: dt
145 real(kind=
rp),
dimension(4) :: adv_coeffs_old
146 real(kind=
rp),
dimension(4) :: diff_coeffs_old
150 ndiff => this%ndiff, &
151 adv_coeffs => this%advection_coeffs, &
152 adv_coeffs_d => this%advection_coeffs_d, &
153 diff_coeffs => this%diffusion_coeffs, &
154 diff_coeffs_d => this%diffusion_coeffs_d)
156 adv_coeffs_old = adv_coeffs%x
157 diff_coeffs_old = diff_coeffs%x
161 ndiff = min(ndiff, this%diffusion_time_order)
163 nadv = min(nadv, this%advection_time_order)
165 call this%bdf%compute_coeffs(diff_coeffs%x, dt, ndiff)
167 if (nadv .eq. 1)
then
169 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
170 else if (nadv .eq. 2)
then
171 if (ndiff .eq. 1)
then
173 call this%ab%compute_coeffs(adv_coeffs%x, dt, nadv)
176 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
178 else if (nadv .eq. 3)
then
179 if (ndiff .eq. 1)
then
181 call this%ab%compute_coeffs(adv_coeffs%x, dt, nadv)
182 else if (ndiff .eq. 2)
then
184 call this%ext%compute_modified_coeffs(adv_coeffs%x, dt)
187 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
192 if (maxval(abs(adv_coeffs%x - adv_coeffs_old)) .gt. 1e-10_rp)
then
196 if (maxval(abs(diff_coeffs%x - diff_coeffs_old)) .gt. 1e-10_rp)
then
Explicit extrapolation scheme for time integration.