@@ -74,8 +74,6 @@ module foodie_integrator_adams_moulton
7474 procedure , pass(self) :: has_fast_mode ! < Return .true. if the integrator class has *fast mode* integrate.
7575 procedure , pass(self) :: integrate ! < Integrate integrand field.
7676 procedure , pass(self) :: integrate_fast ! < Integrate integrand field, fast mode.
77- procedure , pass(self) :: integrate_ub ! < Integrate integrand field, unbuffered.
78- procedure , pass(self) :: integrate_ub_fast ! < Integrate integrand field, unbuffered, fast mode.
7977 procedure , pass(self) :: is_supported ! < Return .true. if the integrator class support the given scheme.
8078 procedure , pass(self) :: supported_schemes ! < Return the list of supported schemes.
8179 ! public methods
@@ -135,76 +133,50 @@ pure subroutine integr_assign_integr(lhs, rhs)
135133
136134 subroutine integrate (self , U , Dt , t )
137135 ! < Integrate field with Adams-Moulton class scheme.
138- ! <
139- ! < @note This method uses integrand previous-steps-buffer stored inside integrator.
140- class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
141- class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
142- real (R_P), intent (in ) :: Dt ! < Time step.
143- real (R_P), intent (in ) :: t ! < Time.
144-
145- call self% integrate_ub(U= U, previous= self% previous, Dt= Dt, t= t)
146- end subroutine integrate
147-
148- subroutine integrate_fast (self , U , Dt , t )
149- ! < Integrate field with Adams-Moulton class scheme, fast mode.
150- ! <
151- ! < @note This method uses integrand previous-steps-buffer stored inside integrator.
152- class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
153- class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
154- real (R_P), intent (in ) :: Dt ! < Time step.
155- real (R_P), intent (in ) :: t ! < Time.
156-
157- call self% integrate_ub_fast(U= U, previous= self% previous, Dt= Dt, t= t)
158- end subroutine integrate_fast
159-
160- subroutine integrate_ub (self , U , previous , Dt , t )
161- ! < Integrate field with Adams-Moulton class scheme.
162- class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
163- class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
164- class(integrand_object), intent (inout ) :: previous(1 :) ! < Integrand.
165- real (R_P), intent (in ) :: Dt ! < Time step.
166- real (R_P), intent (in ) :: t ! < Time.
167- class(integrand_object), allocatable :: delta ! < Delta RHS for fixed point iterations.
168- integer (I_P) :: s ! < Steps counter.
136+ class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
137+ class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
138+ real (R_P), intent (in ) :: Dt ! < Time step.
139+ real (R_P), intent (in ) :: t ! < Time.
140+ class(integrand_object), allocatable :: delta ! < Delta RHS for fixed point iterations.
141+ integer (I_P) :: s ! < Steps counter.
169142
170143 if ( self% steps> 0 ) then
171144 if (self% iterations > 0 ) then ! perform fixed point iterations
172145 allocate (delta, mold= U)
173- delta = previous(self% steps)
146+ delta = self % previous(self% steps)
174147 do s= 0 , self% steps - 1
175- delta = delta + (previous(s+1 )% t(t= self% t(s+1 )) * (Dt * self% b(s)))
148+ delta = delta + (self % previous(s+1 )% t(t= self% t(s+1 )) * (Dt * self% b(s)))
176149 enddo
177150 do s= 1 , self% iterations
178151 U = delta + (U% t(t= self% t(self% steps) + Dt) * (Dt * self% b(self% steps)))
179152 enddo
180153 else
181- U = previous(self% steps) + (U% t(t= self% t(self% steps) + Dt) * (Dt * self% b(self% steps)))
154+ U = self % previous(self% steps) + (U% t(t= self% t(self% steps) + Dt) * (Dt * self% b(self% steps)))
182155 do s= 0 , self% steps - 1
183- U = U + (previous(s+1 )% t(t= self% t(s+1 )) * (Dt * self% b(s)))
156+ U = U + (self % previous(s+1 )% t(t= self% t(s+1 )) * (Dt * self% b(s)))
184157 enddo
185158 endif
186- if (self% autoupdate) call self% update_previous(U= U, previous= previous, Dt= Dt, t= t, previous_t= self% t)
159+ if (self% autoupdate) call self% update_previous(U= U, previous= self % previous, Dt= Dt, t= t, previous_t= self% t)
187160 else
188161 U = U + (U% t(t= t) * (Dt * self% b(0 )))
189162 endif
190- end subroutine integrate_ub
163+ end subroutine integrate
191164
192- subroutine integrate_ub_fast (self , U , previous , Dt , t )
165+ subroutine integrate_fast (self , U , Dt , t )
193166 ! < Integrate field with Adams-Moulton class scheme, fast mode.
194- class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
195- class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
196- class(integrand_object), intent (inout ) :: previous(1 :) ! < Integrand.
197- real (R_P), intent (in ) :: Dt ! < Time step.
198- real (R_P), intent (in ) :: t ! < Time.
199- class(integrand_object), allocatable :: delta ! < Delta RHS for fixed point iterations.
200- integer (I_P) :: s ! < Steps counter.
167+ class(integrator_adams_moulton), intent (inout ) :: self ! < Integrator.
168+ class(integrand_object), intent (inout ) :: U ! < Field to be integrated.
169+ real (R_P), intent (in ) :: Dt ! < Time step.
170+ real (R_P), intent (in ) :: t ! < Time.
171+ class(integrand_object), allocatable :: delta ! < Delta RHS for fixed point iterations.
172+ integer (I_P) :: s ! < Steps counter.
201173
202174 if (self% steps> 0 ) then
203175 if (self% iterations > 0 ) then ! perform fixed point iterations
204176 allocate (delta, mold= U)
205- delta = previous(self% steps)
177+ delta = self % previous(self% steps)
206178 do s= 0 , self% steps - 1
207- self% buffer = previous(s+1 )
179+ self% buffer = self % previous(s+1 )
208180 call self% buffer% t_fast(t= self% t(s+1 ))
209181 call self% buffer% multiply_fast(lhs= self% buffer, rhs= Dt * self% b(s))
210182 call delta% add_fast(lhs= delta, rhs= self% buffer)
@@ -219,22 +191,22 @@ subroutine integrate_ub_fast(self, U, previous, Dt, t)
219191 self% buffer = U
220192 call self% buffer% t_fast(t= self% t(self% steps) + Dt)
221193 call self% buffer% multiply_fast(lhs= self% buffer, rhs= Dt * self% b(self% steps))
222- call U% add_fast(lhs= previous(self% steps), rhs= self% buffer)
194+ call U% add_fast(lhs= self % previous(self% steps), rhs= self% buffer)
223195 do s= 0 , self% steps - 1
224- self% buffer = previous(s+1 )
196+ self% buffer = self % previous(s+1 )
225197 call self% buffer% t_fast(t= self% t(s+1 ))
226198 call self% buffer% multiply_fast(lhs= self% buffer, rhs= Dt * self% b(s))
227199 call U% add_fast(lhs= U, rhs= self% buffer)
228200 enddo
229201 endif
230- if (self% autoupdate) call self% update_previous(U= U, previous= previous, Dt= Dt, t= t, previous_t= self% t)
202+ if (self% autoupdate) call self% update_previous(U= U, previous= self % previous, Dt= Dt, t= t, previous_t= self% t)
231203 else
232204 self% buffer = U
233205 call self% buffer% t_fast(t= t)
234206 call self% buffer% multiply_fast(lhs= self% buffer, rhs= Dt * self% b(0 ))
235207 call U% add_fast(lhs= U, rhs= self% buffer)
236208 endif
237- end subroutine integrate_ub_fast
209+ end subroutine integrate_fast
238210
239211 elemental function is_supported (self , scheme )
240212 ! < Return .true. if the integrator class support the given scheme.
0 commit comments