@@ -39,14 +39,14 @@ module ode_mod
39
39
40
40
! ======= Declarations =========
41
41
implicit none
42
- integer (c_int64_t), parameter :: neq = 1
43
- integer (c_int), parameter :: Nt = 10
44
- complex (c_double_complex), parameter :: lambda = (- 1d-2 , 10.d0 )
45
- real (c_double), parameter :: T0 = 0.d0
46
- real (c_double), parameter :: Tf = 10.d0
47
- real (c_double), parameter :: dtmax = 0.01d0
48
- real (c_double), parameter :: reltol = 1.d-6
49
- real (c_double), parameter :: abstol = 1.d-10
42
+ integer (c_int64_t), parameter :: neq = 1
43
+ integer (c_int), parameter :: Nt = 10
44
+ complex (c_double_complex), parameter :: lambda = (- 1d-2 , 10.d0 )
45
+ real (c_double), parameter :: T0 = 0.d0
46
+ real (c_double), parameter :: Tf = 10.d0
47
+ real (c_double), parameter :: dtmax = 0.01d0
48
+ real (c_double), parameter :: reltol = 1.d-6
49
+ real (c_double), parameter :: abstol = 1.d-10
50
50
51
51
contains
52
52
@@ -60,7 +60,7 @@ module ode_mod
60
60
! -1 = non-recoverable error
61
61
! ----------------------------------------------------------------
62
62
integer (c_int) function Rhs(tn, sunvec_y, sunvec_f, user_data) &
63
- result(ierr) bind(C,name= ' Rhs' )
63
+ result(ierr) bind(C, name= ' Rhs' )
64
64
65
65
! ======= Inclusions ===========
66
66
use , intrinsic :: iso_c_binding
@@ -147,13 +147,13 @@ program main
147
147
print * , " "
148
148
print * , " Analytical ODE test problem:"
149
149
print ' (2(a,f5.2),a)' , " lambda = (" , real (lambda), " , " , imag(lambda), " ) "
150
- print ' (2(a,es8.1))' , " reltol = " ,reltol," , abstol = " ,abstol
150
+ print ' (2(a,es8.1))' , " reltol = " , reltol, " , abstol = " , abstol
151
151
152
152
! initialize SUNDIALS solution vector
153
153
sunvec_y = > FN_VNew_Complex(neq, sunctx)
154
154
if (.not. associated (sunvec_y)) then
155
- print * , ' ERROR: sunvec = NULL'
156
- stop 1
155
+ print * , ' ERROR: sunvec = NULL'
156
+ stop 1
157
157
end if
158
158
y = > FN_VGetFVec(sunvec_y)
159
159
@@ -163,43 +163,43 @@ program main
163
163
! create ARKStep memory
164
164
arkode_mem = FARKStepCreate(c_funloc(Rhs), c_null_funptr, T0, sunvec_y, sunctx)
165
165
if (.not. c_associated(arkode_mem)) then
166
- print * ,' ERROR: arkode_mem = NULL'
167
- stop 1
166
+ print * , ' ERROR: arkode_mem = NULL'
167
+ stop 1
168
168
end if
169
169
170
170
! main time-stepping loop: calls FARKodeEvolve to perform the integration, then
171
171
! prints results. Stops when the final time has been reached
172
172
tcur(1 ) = T0
173
- dTout = (Tf- T0)/ Nt
174
- tout = T0+ dTout
173
+ dTout = (Tf - T0)/ Nt
174
+ tout = T0 + dTout
175
175
yerrI = 0.d0
176
176
yerr2 = 0.d0
177
177
print * , " "
178
178
print * , " t real(u) imag(u) error"
179
179
print * , " -------------------------------------------"
180
180
print ' (5x,f4.1,2(2x,es9.2),2x,es8.1)' , tcur(1 ), real (y% data (1 )), imag(y% data (1 )), 0.d0
181
- do iout = 1 ,Nt
181
+ do iout = 1 , Nt
182
182
183
- ! call integrator
184
- ierr = FARKodeEvolve(arkode_mem, tout, sunvec_y, tcur, ARK_NORMAL)
185
- if (ierr /= 0 ) then
186
- write (* ,* ) ' Error in FARKodeEvolve, ierr = ' , ierr, ' ; halting'
187
- stop 1
188
- endif
183
+ ! call integrator
184
+ ierr = FARKodeEvolve(arkode_mem, tout, sunvec_y, tcur, ARK_NORMAL)
185
+ if (ierr /= 0 ) then
186
+ write (* , * ) ' Error in FARKodeEvolve, ierr = ' , ierr, ' ; halting'
187
+ stop 1
188
+ end if
189
189
190
- ! compute/accumulate solution error
191
- yerr = abs ( y% data (1 ) - Sol(tcur(1 )) )
192
- yerrI = max (yerrI, yerr)
193
- yerr2 = yerr2 + yerr** 2
190
+ ! compute/accumulate solution error
191
+ yerr = abs (y% data (1 ) - Sol(tcur(1 )))
192
+ yerrI = max (yerrI, yerr)
193
+ yerr2 = yerr2 + yerr** 2
194
194
195
- ! print solution statistics
196
- print ' (5x,f4.1,2(2x,es9.2),2x,es8.1)' , tcur(1 ), real (y% data (1 )), imag(y% data (1 )), yerr
195
+ ! print solution statistics
196
+ print ' (5x,f4.1,2(2x,es9.2),2x,es8.1)' , tcur(1 ), real (y% data (1 )), imag(y% data (1 )), yerr
197
197
198
- ! update output time
199
- tout = min (tout + dTout, Tf)
198
+ ! update output time
199
+ tout = min (tout + dTout, Tf)
200
200
201
201
end do
202
- yerr2 = dsqrt( yerr2 / Nt )
202
+ yerr2 = dsqrt(yerr2/ Nt )
203
203
print * , " -------------------------------------------"
204
204
205
205
! diagnostics output
@@ -214,7 +214,6 @@ program main
214
214
215
215
end program main
216
216
217
-
218
217
! ----------------------------------------------------------------
219
218
! ARKStepStats
220
219
!
@@ -248,9 +247,9 @@ subroutine ARKStepStats(arkode_mem)
248
247
249
248
print * , ' '
250
249
print * , ' Final Solver Statistics:'
251
- print ' (4x,2(A,i4),A)' , ' Internal solver steps = ' ,nsteps(1 ),' , (attempted = ' ,nst_a(1 ),' )'
252
- print ' (4x,A,i5)' , ' Total RHS evals = ' ,nfe(1 )
253
- print ' (4x,A,i5)' , ' Total number of error test failures =' ,netfails(1 )
250
+ print ' (4x,2(A,i4),A)' , ' Internal solver steps = ' , nsteps(1 ), ' , (attempted = ' , nst_a(1 ), ' )'
251
+ print ' (4x,A,i5)' , ' Total RHS evals = ' , nfe(1 )
252
+ print ' (4x,A,i5)' , ' Total number of error test failures =' , netfails(1 )
254
253
255
254
return
256
255
0 commit comments