Skip to content

Commit c50c848

Browse files
committed
restore adams bashforth moulton
1 parent ce846c6 commit c50c848

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

src/lib/foodie_integrator_adams_bashforth_moulton.f90

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,22 @@ subroutine integrate(self, U, Dt, t)
191191
class(integrand_object), intent(inout) :: U !< Field to be integrated.
192192
real(R_P), intent(in) :: Dt !< Time steps.
193193
real(R_P), intent(in) :: t !< Times.
194+
integer(I_P) :: s !< Step counter.
194195

195-
! self%predictor%t = self%t(1:self%steps)
196-
! self%predictor%Dt = self%Dt(1:self%steps)
197-
! self%corrector%t = self%t(1:self%steps)
198-
! self%corrector%Dt = self%Dt(1:self%steps)
199-
! call self%predictor%integrate_ub(U=U, previous=previous, Dt=Dt, t=t)
200-
! call self%corrector%integrate_ub(U=U, previous=previous(2:), Dt=Dt, t=t)
201-
! if (self%autoupdate) call self%update_previous(U=U, previous=previous(1:self%steps), Dt=Dt, t=t, previous_t=self%t(1:self%steps))
196+
do s=1, self%steps
197+
self%predictor%previous(s) = self%previous(s)
198+
enddo
199+
self%predictor%t(:) = self%t(1:self%steps)
200+
self%predictor%Dt(:) = self%Dt(1:self%steps)
201+
do s=1, self%steps - 1
202+
self%corrector%previous(s) = self%previous(s+1)
203+
enddo
204+
self%corrector%t(:) = self%t(2:self%steps)
205+
self%corrector%Dt(:) = self%Dt(2:self%steps)
206+
call self%predictor%integrate(U=U, Dt=Dt, t=t)
207+
call self%corrector%integrate(U=U, Dt=Dt, t=t)
208+
if (self%autoupdate) &
209+
call self%update_previous(U=U, previous=self%previous(1:self%steps), Dt=Dt, t=t, previous_t=self%t(1:self%steps))
202210
endsubroutine integrate
203211

204212
subroutine integrate_fast(self, U, Dt, t)
@@ -207,14 +215,22 @@ subroutine integrate_fast(self, U, Dt, t)
207215
class(integrand_object), intent(inout) :: U !< Field to be integrated.
208216
real(R_P), intent(in) :: Dt !< Time steps.
209217
real(R_P), intent(in) :: t !< Times.
218+
integer(I_P) :: s !< Step counter.
210219

211-
! self%predictor%t = self%t
212-
! self%predictor%Dt = self%Dt
213-
! self%corrector%t = self%t
214-
! self%corrector%Dt = self%Dt
215-
! call self%predictor%integrate_ub_fast(U=U, previous=previous, Dt=Dt, t=t)
216-
! call self%corrector%integrate_ub_fast(U=U, previous=previous(2:), Dt=Dt, t=t)
217-
! if (self%autoupdate) call self%update_previous(U=U, previous=previous(1:self%steps), Dt=Dt, t=t, previous_t=self%t(1:self%steps))
220+
do s=1, self%steps
221+
self%predictor%previous(s) = self%previous(s)
222+
enddo
223+
self%predictor%t(:) = self%t(1:self%steps)
224+
self%predictor%Dt(:) = self%Dt(1:self%steps)
225+
do s=1, self%steps - 1
226+
self%corrector%previous(s) = self%previous(s+1)
227+
enddo
228+
self%corrector%t(:) = self%t(2:self%steps)
229+
self%corrector%Dt(:) = self%Dt(2:self%steps)
230+
call self%predictor%integrate_fast(U=U, Dt=Dt, t=t)
231+
call self%corrector%integrate_fast(U=U, Dt=Dt, t=t)
232+
if (self%autoupdate) &
233+
call self%update_previous(U=U, previous=self%previous(1:self%steps), Dt=Dt, t=t, previous_t=self%t(1:self%steps))
218234
endsubroutine integrate_fast
219235

220236
elemental function is_supported(self, scheme)
@@ -271,8 +287,8 @@ subroutine initialize(self, scheme, iterations, autoupdate, U, stop_on_fail)
271287
schemes_am = self%corrector%supported_schemes()
272288
self%autoupdate = .true. ; if (present(autoupdate)) self%autoupdate = autoupdate
273289
self%iterations = 1 ; if (present(iterations)) self%iterations = iterations
274-
call self%predictor%initialize(scheme=schemes_ab(scheme_number_), autoupdate=.false.)
275-
call self%corrector%initialize(scheme=schemes_am(scheme_number_), iterations=self%iterations, autoupdate=.false.)
290+
call self%predictor%initialize(scheme=schemes_ab(scheme_number_), U=U, autoupdate=.false.)
291+
call self%corrector%initialize(scheme=schemes_am(scheme_number_), U=U, iterations=self%iterations, autoupdate=.false.)
276292
self%steps = self%predictor%steps_number()
277293
self%registers = self%steps + 1
278294
if (present(U)) call self%allocate_integrand_members(U=U)

0 commit comments

Comments
 (0)