145 real(kind=
rp),
intent(inout),
dimension(10) :: dt
146 real(kind=
rp),
dimension(4) :: adv_coeffs_old
147 real(kind=
rp),
dimension(4) :: diff_coeffs_old
151 ndiff => this%ndiff, &
152 adv_coeffs => this%advection_coeffs, &
153 adv_coeffs_d => this%advection_coeffs_d, &
154 diff_coeffs => this%diffusion_coeffs, &
155 diff_coeffs_d => this%diffusion_coeffs_d)
157 adv_coeffs_old = adv_coeffs%x
158 diff_coeffs_old = diff_coeffs%x
167 if ((ndiff .lt. this%diffusion_time_order) .or. &
168 (nadv .lt. this%advection_time_order) .or. &
169 (dt(1) .ne. dt(2)))
then
176 ndiff = min(ndiff, this%diffusion_time_order)
178 nadv = min(nadv, this%advection_time_order)
180 call this%bdf%compute_coeffs(diff_coeffs%x, dt, ndiff)
182 if (nadv .eq. 1)
then
184 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
185 else if (nadv .eq. 2)
then
186 if (ndiff .eq. 1)
then
188 call this%ab%compute_coeffs(adv_coeffs%x, dt, nadv)
191 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
193 else if (nadv .eq. 3)
then
194 if (ndiff .eq. 1)
then
196 call this%ab%compute_coeffs(adv_coeffs%x, dt, nadv)
197 else if (ndiff .eq. 2)
then
199 call this%ext%compute_modified_coeffs(adv_coeffs%x, dt)
202 call this%ext%compute_coeffs(adv_coeffs%x, dt, nadv)
207 if (maxval(abs(adv_coeffs%x - adv_coeffs_old)) .gt. 1e-10_rp)
then
211 if (maxval(abs(diff_coeffs%x - diff_coeffs_old)) .gt. 1e-10_rp)
then
Explicit extrapolation scheme for time integration.