Skip to content

Commit 1812d6e

Browse files
committed
dehydrate tester
1 parent f806e9d commit 1812d6e

18 files changed

+213
-411
lines changed

src/lib/foodie_integrator_adams_bashforth.f90

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ module foodie_integrator_adams_bashforth
6868
contains
6969
! deferred methods
7070
procedure, pass(self) :: class_name !< Return the class name of schemes.
71-
procedure, pass(self) :: description !< Return pretty-printed object description.
7271
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
7372
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
7473
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -90,25 +89,6 @@ pure function class_name(self)
9089
class_name = trim(adjustl(class_name_))
9190
endfunction class_name
9291

93-
pure function description(self, prefix) result(desc)
94-
!< Return a pretty-formatted object description.
95-
class(integrator_adams_bashforth), intent(in) :: self !< Integrator.
96-
character(*), intent(in), optional :: prefix !< Prefixing string.
97-
character(len=:), allocatable :: desc !< Description.
98-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
99-
character(len=1), parameter :: NL=new_line('a') !< New line character.
100-
integer(I_P) :: s !< Counter.
101-
102-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
103-
desc = ''
104-
desc = desc//prefix_//'Adams-Bashforth multi-step schemes class'//NL
105-
desc = desc//prefix_//' Supported schemes:'//NL
106-
do s=lbound(supported_schemes_, dim=1), ubound(supported_schemes_, dim=1) - 1
107-
desc = desc//prefix_//' + '//supported_schemes_(s)//NL
108-
enddo
109-
desc = desc//prefix_//' + '//supported_schemes_(ubound(supported_schemes_, dim=1))
110-
endfunction description
111-
11292
elemental function has_fast_mode(self)
11393
!< Return .true. if the integrator class has *fast mode* integrate.
11494
class(integrator_adams_bashforth), intent(in) :: self !< Integrator.
@@ -207,6 +187,7 @@ subroutine initialize(self, scheme, autoupdate, U, stop_on_fail)
207187

208188
if (self%is_supported(scheme=scheme)) then
209189
call self%destroy
190+
self%description_ = trim(adjustl(scheme))
210191
select case(trim(adjustl(scheme)))
211192
case('adams_bashforth_1')
212193
self%steps = 1 ; allocate(self%b(1:self%steps)) ; self%b = 0.0_R_P

src/lib/foodie_integrator_adams_bashforth_moulton.f90

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ module foodie_integrator_adams_bashforth_moulton
121121
contains
122122
! deferred methods
123123
procedure, pass(self) :: class_name !< Return the class name of schemes.
124-
procedure, pass(self) :: description !< Return pretty-printed object description.
125124
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
126125
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
127126
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -144,25 +143,6 @@ pure function class_name(self)
144143
class_name = trim(adjustl(class_name_))
145144
endfunction class_name
146145

147-
pure function description(self, prefix) result(desc)
148-
!< Return a pretty-formatted object description.
149-
class(integrator_adams_bashforth_moulton), intent(in) :: self !< Integrator.
150-
character(*), intent(in), optional :: prefix !< Prefixing string.
151-
character(len=:), allocatable :: desc !< Description.
152-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
153-
character(len=1), parameter :: NL=new_line('a') !< New line character.
154-
integer(I_P) :: s !< Counter.
155-
156-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
157-
desc = ''
158-
desc = desc//prefix_//'Adams-Bashforth-Moulton multi-step (predictor-corrector) schemes class'//NL
159-
desc = desc//prefix_//' Supported schemes:'//NL
160-
do s=lbound(supported_schemes_, dim=1), ubound(supported_schemes_, dim=1) - 1
161-
desc = desc//prefix_//' + '//supported_schemes_(s)//NL
162-
enddo
163-
desc = desc//prefix_//' + '//supported_schemes_(ubound(supported_schemes_, dim=1))
164-
endfunction description
165-
166146
elemental function has_fast_mode(self)
167147
!< Return .true. if the integrator class has *fast mode* integrate.
168148
class(integrator_adams_bashforth_moulton), intent(in) :: self !< Integrator.
@@ -282,6 +262,7 @@ subroutine initialize(self, scheme, iterations, autoupdate, U, stop_on_fail)
282262

283263
if (self%is_supported(scheme=scheme)) then
284264
call self%destroy
265+
self%description_ = trim(adjustl(scheme))
285266
scheme_number_ = self%scheme_number(scheme=scheme)
286267
schemes_ab = self%predictor%supported_schemes()
287268
schemes_am = self%corrector%supported_schemes()

src/lib/foodie_integrator_adams_moulton.f90

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ module foodie_integrator_adams_moulton
6969
contains
7070
! deferred methods
7171
procedure, pass(self) :: class_name !< Return the class name of schemes.
72-
procedure, pass(self) :: description !< Return pretty-printed object description.
7372
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
7473
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
7574
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -91,25 +90,6 @@ pure function class_name(self)
9190
class_name = trim(adjustl(class_name_))
9291
endfunction class_name
9392

94-
pure function description(self, prefix) result(desc)
95-
!< Return a pretty-formatted object description.
96-
class(integrator_adams_moulton), intent(in) :: self !< Integrator.
97-
character(*), intent(in), optional :: prefix !< Prefixing string.
98-
character(len=:), allocatable :: desc !< Description.
99-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
100-
character(len=1), parameter :: NL=new_line('a') !< New line character.
101-
integer(I_P) :: s !< Counter.
102-
103-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
104-
desc = ''
105-
desc = desc//prefix_//'Adams-Moulton multi-step schemes class'//NL
106-
desc = desc//prefix_//' Supported schemes:'//NL
107-
do s=lbound(supported_schemes_, dim=1), ubound(supported_schemes_, dim=1) - 1
108-
desc = desc//prefix_//' + '//supported_schemes_(s)//NL
109-
enddo
110-
desc = desc//prefix_//' + '//supported_schemes_(ubound(supported_schemes_, dim=1))
111-
endfunction description
112-
11393
elemental function has_fast_mode(self)
11494
!< Return .true. if the integrator class has *fast mode* integrate.
11595
class(integrator_adams_moulton), intent(in) :: self !< Integrator.
@@ -252,7 +232,8 @@ subroutine initialize(self, scheme, iterations, autoupdate, U, stop_on_fail)
252232
logical, intent(in), optional :: stop_on_fail !< Stop execution if initialization fail.
253233

254234
if (self%is_supported(scheme=scheme)) then
255-
call self%destroy
235+
call self%destroy
236+
self%description_ = trim(adjustl(scheme))
256237
select case(trim(adjustl(scheme)))
257238
case('adams_moulton_0')
258239
self%steps = 0 ; allocate(self%b(0:self%steps)) ; self%b = 0.0_R_P

src/lib/foodie_integrator_backward_differentiation_formula.f90

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ module foodie_integrator_backward_differentiation_formula
6767
contains
6868
! deferred methods
6969
procedure, pass(self) :: class_name !< Return the class name of schemes.
70-
procedure, pass(self) :: description !< Return pretty-printed object description.
7170
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
7271
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
7372
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -89,25 +88,6 @@ pure function class_name(self)
8988
class_name = trim(adjustl(class_name_))
9089
endfunction class_name
9190

92-
pure function description(self, prefix) result(desc)
93-
!< Return a pretty-formatted object description.
94-
class(integrator_back_df), intent(in) :: self !< Integrator.
95-
character(*), intent(in), optional :: prefix !< Prefixing string.
96-
character(len=:), allocatable :: desc !< Description.
97-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
98-
character(len=1), parameter :: NL=new_line('a') !< New line character.
99-
integer(I_P) :: s !< Counter.
100-
101-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
102-
desc = ''
103-
desc = desc//prefix_//'Backward-Differentiation-Formula multi-step schemes class'//NL
104-
desc = desc//prefix_//' Supported schemes:'//NL
105-
do s=lbound(supported_schemes_, dim=1), ubound(supported_schemes_, dim=1) - 1
106-
desc = desc//prefix_//' + '//supported_schemes_(s)//NL
107-
enddo
108-
desc = desc//prefix_//' + '//supported_schemes_(ubound(supported_schemes_, dim=1))
109-
endfunction description
110-
11191
elemental function has_fast_mode(self)
11292
!< Return .true. if the integrator class has *fast mode* integrate.
11393
class(integrator_back_df), intent(in) :: self !< Integrator.
@@ -219,7 +199,8 @@ subroutine initialize(self, scheme, iterations, autoupdate, U, stop_on_fail)
219199
logical, intent(in), optional :: stop_on_fail !< Stop execution if initialization fail.
220200

221201
if (self%is_supported(scheme=scheme)) then
222-
call self%destroy
202+
call self%destroy
203+
self%description_ = trim(adjustl(scheme))
223204
select case(trim(adjustl(scheme)))
224205
case('back_df_1')
225206
self%steps = 1 ; allocate(self%a(1:self%steps)) ; self%a = 0.0_R_P

src/lib/foodie_integrator_euler_explicit.f90

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ module foodie_integrator_euler_explicit
3434
contains
3535
! deferred methods
3636
procedure, pass(self) :: class_name !< Return the class name of schemes.
37-
procedure, pass(self) :: description !< Return pretty-printed object description.
3837
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
3938
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
4039
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -55,17 +54,6 @@ pure function class_name(self)
5554
class_name = trim(adjustl(class_name_))
5655
endfunction class_name
5756

58-
pure function description(self, prefix) result(desc)
59-
!< Return a pretty-formatted object description.
60-
class(integrator_euler_explicit), intent(in) :: self !< Integrator.
61-
character(*), intent(in), optional :: prefix !< Prefixing string.
62-
character(len=:), allocatable :: desc !< Description.
63-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
64-
65-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
66-
desc = prefix_//'Euler, Explicit (1 step/stage) 1st order scheme'
67-
endfunction description
68-
6957
elemental function has_fast_mode(self)
7058
!< Return .true. if the integrator class has *fast mode* integrate.
7159
class(integrator_euler_explicit), intent(in) :: self !< Integrator.
@@ -142,22 +130,23 @@ elemental subroutine destroy(self)
142130
call self%destroy_multistage
143131
endsubroutine destroy
144132

145-
subroutine initialize(self, scheme, U, stop_on_fail)
146-
!< Create the actual RK integrator: initialize the Butcher' table coefficients.
147-
class(integrator_euler_explicit), intent(inout) :: self !< Integrator.
148-
character(*), intent(in) :: scheme !< Selected scheme.
149-
class(integrand_object), intent(in), optional :: U !< Integrand molding prototype.
150-
logical, intent(in), optional :: stop_on_fail !< Stop execution if initialization fail.
151-
152-
if (self%is_supported(scheme=scheme)) then
153-
call self%destroy
154-
self%stages = 0
155-
self%registers = self%stages
156-
if (present(U)) call self%allocate_integrand_members(U=U)
157-
else
158-
call self%trigger_error(error=ERROR_UNSUPPORTED_SCHEME, &
159-
error_message='"'//trim(adjustl(scheme))//'" unsupported scheme', &
160-
is_severe=stop_on_fail)
161-
endif
162-
endsubroutine initialize
133+
subroutine initialize(self, scheme, U, stop_on_fail)
134+
!< Create the actual RK integrator: initialize the Butcher' table coefficients.
135+
class(integrator_euler_explicit), intent(inout) :: self !< Integrator.
136+
character(*), intent(in) :: scheme !< Selected scheme.
137+
class(integrand_object), intent(in), optional :: U !< Integrand molding prototype.
138+
logical, intent(in), optional :: stop_on_fail !< Stop execution if initialization fail.
139+
140+
if (self%is_supported(scheme=scheme)) then
141+
call self%destroy
142+
self%description_ = trim(adjustl(scheme))
143+
self%stages = 0
144+
self%registers = self%stages
145+
if (present(U)) call self%allocate_integrand_members(U=U)
146+
else
147+
call self%trigger_error(error=ERROR_UNSUPPORTED_SCHEME, &
148+
error_message='"'//trim(adjustl(scheme))//'" unsupported scheme', &
149+
is_severe=stop_on_fail)
150+
endif
151+
endsubroutine initialize
163152
endmodule foodie_integrator_euler_explicit

src/lib/foodie_integrator_leapfrog.f90

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@ module foodie_integrator_leapfrog
6767
contains
6868
! deferred methods
6969
procedure, pass(self) :: class_name !< Return the class name of schemes.
70-
procedure, pass(self) :: description !< Return pretty-printed object description.
7170
procedure, pass(self) :: has_fast_mode !< Return .true. if the integrator class has *fast mode* integrate.
7271
procedure, pass(lhs) :: integr_assign_integr !< Operator `=`.
7372
procedure, pass(self) :: integrate !< Integrate integrand field.
@@ -91,17 +90,6 @@ pure function class_name(self)
9190
class_name = trim(adjustl(class_name_))
9291
endfunction class_name
9392

94-
pure function description(self, prefix) result(desc)
95-
!< Return a pretty-formatted object description.
96-
class(integrator_leapfrog), intent(in) :: self !< Integrator.
97-
character(*), intent(in), optional :: prefix !< Prefixing string.
98-
character(len=:), allocatable :: desc !< Description.
99-
character(len=:), allocatable :: prefix_ !< Prefixing string, local variable.
100-
101-
prefix_ = '' ; if (present(prefix)) prefix_ = prefix
102-
desc = desc//prefix_//'Explicit leapfrog multi-step 2nd order scheme'
103-
endfunction description
104-
10593
elemental function has_fast_mode(self)
10694
!< Return .true. if the integrator class has *fast mode* integrate.
10795
class(integrator_leapfrog), intent(in) :: self !< Integrator.
@@ -219,21 +207,22 @@ subroutine initialize(self, scheme, nu, alpha, autoupdate, U, stop_on_fail)
219207
logical, intent(in), optional :: stop_on_fail !< Stop execution if initialization fail.
220208

221209
if (self%is_supported(scheme=scheme)) then
222-
call self%destroy
223-
select case(trim(adjustl(scheme)))
224-
case('leapfrog_raw')
225-
self%nu = 0.01_R_P ; if (present(nu)) self%nu = nu
226-
self%alpha = 0.53_R_P ; if (present(alpha)) self%alpha = alpha
227-
self%is_filtered = .true.
228-
endselect
229-
self%autoupdate = .true. ; if (present(autoupdate)) self%autoupdate = autoupdate
230-
self%steps = 2
231-
self%registers = self%steps
232-
if (present(U)) call self%allocate_integrand_members(U=U)
210+
call self%destroy
211+
self%description_ = trim(adjustl(scheme))
212+
select case(trim(adjustl(scheme)))
213+
case('leapfrog_raw')
214+
self%nu = 0.01_R_P ; if (present(nu)) self%nu = nu
215+
self%alpha = 0.53_R_P ; if (present(alpha)) self%alpha = alpha
216+
self%is_filtered = .true.
217+
endselect
218+
self%autoupdate = .true. ; if (present(autoupdate)) self%autoupdate = autoupdate
219+
self%steps = 2
220+
self%registers = self%steps
221+
if (present(U)) call self%allocate_integrand_members(U=U)
233222
else
234-
call self%trigger_error(error=ERROR_UNSUPPORTED_SCHEME, &
235-
error_message='"'//trim(adjustl(scheme))//'" unsupported scheme', &
236-
is_severe=stop_on_fail)
223+
call self%trigger_error(error=ERROR_UNSUPPORTED_SCHEME, &
224+
error_message='"'//trim(adjustl(scheme))//'" unsupported scheme', &
225+
is_severe=stop_on_fail)
237226
endif
238227
endsubroutine initialize
239228

0 commit comments

Comments
 (0)