@@ -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 end subroutine 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 end subroutine 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