147 real(kind=
rp),
intent(inout),
dimension(10) :: dt
148 real(kind=
rp),
dimension(4) :: adv_coeffs_old
149 real(kind=
rp),
dimension(4) :: diff_coeffs_old
153 ndiff => this%ndiff, &
154 adv_coeffs => this%advection_coeffs, &
155 adv_coeffs_d => this%advection_coeffs_d, &
156 diff_coeffs => this%diffusion_coeffs, &
157 diff_coeffs_d => this%diffusion_coeffs_d)
159 adv_coeffs_old = adv_coeffs
160 diff_coeffs_old = diff_coeffs
164 ndiff = min(ndiff, this%diffusion_time_order)
166 nadv = min(nadv, this%advection_time_order)
168 call this%bdf%compute_coeffs(diff_coeffs, dt, ndiff)
170 if (nadv .eq. 1)
then
172 call this%ext%compute_coeffs(adv_coeffs, dt, nadv)
173 else if (nadv .eq. 2)
then
174 if (ndiff .eq. 1)
then
176 call this%ab%compute_coeffs(adv_coeffs, dt, nadv)
179 call this%ext%compute_coeffs(adv_coeffs, dt, nadv)
181 else if (nadv .eq. 3)
then
182 if (ndiff .eq. 1)
then
184 call this%ab%compute_coeffs(adv_coeffs, dt, nadv)
185 else if (ndiff .eq. 2)
then
187 call this%ext%compute_modified_coeffs(adv_coeffs, dt)
190 call this%ext%compute_coeffs(adv_coeffs, dt, nadv)
195 if (c_associated(adv_coeffs_d))
then
196 if (maxval(abs(adv_coeffs - adv_coeffs_old)) .gt. 1e-10_rp)
then
202 if (c_associated(diff_coeffs_d))
then
203 if (maxval(abs(diff_coeffs - diff_coeffs_old)) .gt. 1e-10_rp)
then
Explicit extrapolation scheme for time integration.