39
39
40
40
@doc explicit_rk_docstring (" The second order Heun's method. Uses embedded Euler method for adaptivity." ,
41
41
" Heun" )
42
- @kwdef struct Heun{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
42
+ Base. @kwdef struct Heun{StageLimiter, StepLimiter, Thread} < :
43
+ OrdinaryDiffEqAdaptiveAlgorithm
43
44
stage_limiter!:: StageLimiter = trivial_limiter!
44
45
step_limiter!:: StepLimiter = trivial_limiter!
45
46
thread:: Thread = False ()
51
52
52
53
@doc explicit_rk_docstring (" The optimized second order midpoint method. Uses embedded Euler method for adaptivity." ,
53
54
" Ralston" )
54
- @kwdef struct Ralston{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
55
+ Base. @kwdef struct Ralston{StageLimiter, StepLimiter, Thread} < :
56
+ OrdinaryDiffEqAdaptiveAlgorithm
55
57
stage_limiter!:: StageLimiter = trivial_limiter!
56
58
step_limiter!:: StepLimiter = trivial_limiter!
57
59
thread:: Thread = False ()
63
65
64
66
@doc explicit_rk_docstring (" The second order midpoint method. Uses embedded Euler method for adaptivity." ,
65
67
" Midpoint" )
66
- @kwdef struct Midpoint{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
68
+ Base. @kwdef struct Midpoint{StageLimiter, StepLimiter, Thread} < :
69
+ OrdinaryDiffEqAdaptiveAlgorithm
67
70
stage_limiter!:: StageLimiter = trivial_limiter!
68
71
step_limiter!:: StepLimiter = trivial_limiter!
69
72
thread:: Thread = False ()
@@ -86,7 +89,7 @@ Uses a defect control for adaptive stepping using maximum error over the whole i
86
89
year={2005},
87
90
publisher={Elsevier}
88
91
}" )
89
- @kwdef struct RK4{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
92
+ Base . @kwdef struct RK4{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
90
93
stage_limiter!:: StageLimiter = trivial_limiter!
91
94
step_limiter!:: StepLimiter = trivial_limiter!
92
95
thread:: Thread = False ()
@@ -97,7 +100,7 @@ function RK4(stage_limiter!, step_limiter! = trivial_limiter!)
97
100
end
98
101
99
102
@doc explicit_rk_docstring (" TBD" , " RKM" )
100
- @kwdef struct RKM{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
103
+ Base . @kwdef struct RKM{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
101
104
stage_limiter!:: StageLimiter = trivial_limiter!
102
105
step_limiter!:: StepLimiter = trivial_limiter!
103
106
thread:: Thread = False ()
109
112
110
113
@doc explicit_rk_docstring (" 5th order Explicit RK method." , " MSRK5" ,
111
114
references = " Misha Stepanov - https://arxiv.org/pdf/2202.08443.pdf : Figure 3." )
112
- @kwdef struct MSRK5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
115
+ Base . @kwdef struct MSRK5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
113
116
stage_limiter!:: StageLimiter = trivial_limiter!
114
117
step_limiter!:: StepLimiter = trivial_limiter!
115
118
thread:: Thread = False ()
125
128
(and is otherwise 4th order with less error for better estimates).
126
129
""" ,
127
130
extra_keyword_default = " w = 1" )
128
- @kwdef struct Anas5{StageLimiter, StepLimiter, Thread, T} <: OrdinaryDiffEqAlgorithm
131
+ Base . @kwdef struct Anas5{StageLimiter, StepLimiter, Thread, T} <: OrdinaryDiffEqAlgorithm
129
132
stage_limiter!:: StageLimiter = trivial_limiter!
130
133
step_limiter!:: StepLimiter = trivial_limiter!
131
134
thread:: Thread = False ()
140
143
references = " Tsitouras, Ch. \" Explicit Runge–Kutta methods for starting integration of
141
144
Lane–Emden problem.\" Applied Mathematics and Computation 354 (2019): 353-364.
142
145
doi: https://doi.org/10.1016/j.amc.2019.02.047" )
143
- @kwdef struct RKO65{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
146
+ Base . @kwdef struct RKO65{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
144
147
stage_limiter!:: StageLimiter = trivial_limiter!
145
148
step_limiter!:: StepLimiter = trivial_limiter!
146
149
thread:: Thread = False ()
162
165
year={1992},
163
166
publisher={SIAM}
164
167
}" )
165
- @kwdef struct OwrenZen3{StageLimiter, StepLimiter, Thread} < :
166
- OrdinaryDiffEqAdaptiveAlgorithm
168
+ Base . @kwdef struct OwrenZen3{StageLimiter, StepLimiter, Thread} < :
169
+ OrdinaryDiffEqAdaptiveAlgorithm
167
170
stage_limiter!:: StageLimiter = trivial_limiter!
168
171
step_limiter!:: StepLimiter = trivial_limiter!
169
172
thread:: Thread = False ()
185
188
year={1992},
186
189
publisher={SIAM}
187
190
}" )
188
- @kwdef struct OwrenZen4{StageLimiter, StepLimiter, Thread} < :
189
- OrdinaryDiffEqAdaptiveAlgorithm
191
+ Base . @kwdef struct OwrenZen4{StageLimiter, StepLimiter, Thread} < :
192
+ OrdinaryDiffEqAdaptiveAlgorithm
190
193
stage_limiter!:: StageLimiter = trivial_limiter!
191
194
step_limiter!:: StepLimiter = trivial_limiter!
192
195
thread:: Thread = False ()
208
211
year={1992},
209
212
publisher={SIAM}
210
213
}" )
211
- @kwdef struct OwrenZen5{StageLimiter, StepLimiter, Thread} < :
212
- OrdinaryDiffEqAdaptiveAlgorithm
214
+ Base . @kwdef struct OwrenZen5{StageLimiter, StepLimiter, Thread} < :
215
+ OrdinaryDiffEqAdaptiveAlgorithm
213
216
stage_limiter!:: StageLimiter = trivial_limiter!
214
217
step_limiter!:: StepLimiter = trivial_limiter!
215
218
thread:: Thread = False ()
231
234
year={1989},
232
235
publisher={Elsevier}
233
236
}" )
234
- @kwdef struct BS3{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
237
+ Base . @kwdef struct BS3{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
235
238
stage_limiter!:: StageLimiter = trivial_limiter!
236
239
step_limiter!:: StepLimiter = trivial_limiter!
237
240
thread:: Thread = False ()
253
256
year={1980},
254
257
publisher={Elsevier}
255
258
}" )
256
- @kwdef struct DP5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
259
+ Base . @kwdef struct DP5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
257
260
stage_limiter!:: StageLimiter = trivial_limiter!
258
261
step_limiter!:: StepLimiter = trivial_limiter!
259
262
thread:: Thread = False ()
@@ -275,7 +278,8 @@ estimator of Tsitouras. Free 4th order interpolant.", "Tsit5",
275
278
year={2011},
276
279
publisher={Elsevier}
277
280
}" )
278
- @kwdef struct Tsit5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
281
+ Base. @kwdef struct Tsit5{StageLimiter, StepLimiter, Thread} < :
282
+ OrdinaryDiffEqAdaptiveAlgorithm
279
283
stage_limiter!:: StageLimiter = trivial_limiter!
280
284
step_limiter!:: StepLimiter = trivial_limiter!
281
285
thread:: Thread = False ()
291
295
references = " E. Hairer, S.P. Norsett, G. Wanner, (1993) Solving Ordinary Differential Equations I.
292
296
Nonstiff Problems. 2nd Edition. Springer Series in Computational Mathematics,
293
297
Springer-Verlag." )
294
- @kwdef struct DP8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
298
+ Base . @kwdef struct DP8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
295
299
stage_limiter!:: StageLimiter = trivial_limiter!
296
300
step_limiter!:: StepLimiter = trivial_limiter!
297
301
thread:: Thread = False ()
306
310
references = " Tanaka M., Muramatsu S., Yamashita S., (1992), On the Optimization of Some Nine-Stage
307
311
Seventh-order Runge-Kutta Method, Information Processing Society of Japan,
308
312
33 (12), pp. 1512-1526." )
309
- @kwdef struct TanYam7{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
313
+ Base. @kwdef struct TanYam7{StageLimiter, StepLimiter, Thread} < :
314
+ OrdinaryDiffEqAdaptiveAlgorithm
310
315
stage_limiter!:: StageLimiter = trivial_limiter!
311
316
step_limiter!:: StepLimiter = trivial_limiter!
312
317
thread:: Thread = False ()
@@ -317,7 +322,8 @@ function TanYam7(stage_limiter!, step_limiter! = trivial_limiter!)
317
322
end
318
323
319
324
@doc explicit_rk_docstring (" Tsitouras-Papakostas 8/7 Runge-Kutta method." , " TsitPap8" )
320
- @kwdef struct TsitPap8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
325
+ Base. @kwdef struct TsitPap8{StageLimiter, StepLimiter, Thread} < :
326
+ OrdinaryDiffEqAdaptiveAlgorithm
321
327
stage_limiter!:: StageLimiter = trivial_limiter!
322
328
step_limiter!:: StepLimiter = trivial_limiter!
323
329
thread:: Thread = False ()
@@ -367,7 +373,8 @@ struct Feagin14 <: OrdinaryDiffEqAdaptiveAlgorithm end
367
373
when accurate this method results in zero numerical dissipation.
368
374
""" ,
369
375
extra_keyword_default = " omega = 0.0" )
370
- @kwdef struct FRK65{StageLimiter, StepLimiter, Thread, T} <: OrdinaryDiffEqAdaptiveAlgorithm
376
+ Base. @kwdef struct FRK65{StageLimiter, StepLimiter, Thread, T} < :
377
+ OrdinaryDiffEqAdaptiveAlgorithm
371
378
stage_limiter!:: StageLimiter = trivial_limiter!
372
379
step_limiter!:: StepLimiter = trivial_limiter!
373
380
thread:: Thread = False ()
384
391
when accurate this method results in zero numerical dissipation.
385
392
""" ,
386
393
extra_keyword_default = " omega = 0.0" )
387
- @kwdef struct PFRK87{StageLimiter, StepLimiter, Thread, T} < :
388
- OrdinaryDiffEqAdaptiveAlgorithm
394
+ Base . @kwdef struct PFRK87{StageLimiter, StepLimiter, Thread, T} < :
395
+ OrdinaryDiffEqAdaptiveAlgorithm
389
396
stage_limiter!:: StageLimiter = trivial_limiter!
390
397
step_limiter!:: StepLimiter = trivial_limiter!
391
398
thread:: Thread = False ()
411
418
extra_keyword_description = """ - `lazy`: determines if the lazy interpolant is used.
412
419
""" ,
413
420
extra_keyword_default = " lazy = true" )
414
- @kwdef struct BS5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
421
+ Base . @kwdef struct BS5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
415
422
stage_limiter!:: StageLimiter = trivial_limiter!
416
423
step_limiter!:: StepLimiter = trivial_limiter!
417
424
thread:: Thread = False ()
437
444
extra_keyword_description = """ - `lazy`: determines if the lazy interpolant is used.
438
445
""" ,
439
446
extra_keyword_default = " lazy = true" )
440
- @kwdef struct Vern6{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
447
+ Base. @kwdef struct Vern6{StageLimiter, StepLimiter, Thread} < :
448
+ OrdinaryDiffEqAdaptiveAlgorithm
441
449
stage_limiter!:: StageLimiter = trivial_limiter!
442
450
step_limiter!:: StepLimiter = trivial_limiter!
443
451
thread:: Thread = False ()
464
472
extra_keyword_description = """ - `lazy`: determines if the lazy interpolant is used.
465
473
""" ,
466
474
extra_keyword_default = " lazy = true" )
467
- @kwdef struct Vern7{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
475
+ Base. @kwdef struct Vern7{StageLimiter, StepLimiter, Thread} < :
476
+ OrdinaryDiffEqAdaptiveAlgorithm
468
477
stage_limiter!:: StageLimiter = trivial_limiter!
469
478
step_limiter!:: StepLimiter = trivial_limiter!
470
479
thread:: Thread = False ()
491
500
extra_keyword_description = """ - `lazy`: determines if the lazy interpolant is used.
492
501
""" ,
493
502
extra_keyword_default = " lazy = true" )
494
- @kwdef struct Vern8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
503
+ Base. @kwdef struct Vern8{StageLimiter, StepLimiter, Thread} < :
504
+ OrdinaryDiffEqAdaptiveAlgorithm
495
505
stage_limiter!:: StageLimiter = trivial_limiter!
496
506
step_limiter!:: StepLimiter = trivial_limiter!
497
507
thread:: Thread = False ()
517
527
}" ,
518
528
extra_keyword_description = """ - `lazy`: determines if the lazy interpolant is used.
519
529
""" , extra_keyword_default = " lazy = true" )
520
- @kwdef struct Vern9{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
530
+ Base. @kwdef struct Vern9{StageLimiter, StepLimiter, Thread} < :
531
+ OrdinaryDiffEqAdaptiveAlgorithm
521
532
stage_limiter!:: StageLimiter = trivial_limiter!
522
533
step_limiter!:: StepLimiter = trivial_limiter!
523
534
thread:: Thread = False ()
@@ -537,7 +548,7 @@ struct Euler <: OrdinaryDiffEqAlgorithm end
537
548
@doc explicit_rk_docstring (" 6-stage, fourth order low-stage, low-dissipation, low-dispersion scheme.
538
549
Fixed timestep only." , " RK46NL" ,
539
550
references = " Julien Berland, Christophe Bogey, Christophe Bailly. Low-Dissipation and Low-Dispersion Fourth-Order Runge-Kutta Algorithm. Computers & Fluids, 35(10), pp 1459-1463, 2006. doi: https://doi.org/10.1016/j.compfluid.2005.04.003" )
540
- @kwdef struct RK46NL{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
551
+ Base . @kwdef struct RK46NL{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
541
552
stage_limiter!:: StageLimiter = trivial_limiter!
542
553
step_limiter!:: StepLimiter = trivial_limiter!
543
554
thread:: Thread = False ()
@@ -557,7 +568,7 @@ equations. Fixed timestep only.", "ORK256",
557
568
extra_keyword_description = """ - `williamson_condition`: allows for an optimization that allows fusing broadcast expressions with the function call `f`. However, it only works for `Array` types.
558
569
""" ,
559
570
extra_keyword_default = " williamson_condition = true" )
560
- @kwdef struct ORK256{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
571
+ Base . @kwdef struct ORK256{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
561
572
stage_limiter!:: StageLimiter = trivial_limiter!
562
573
step_limiter!:: StepLimiter = trivial_limiter!
563
574
thread:: Thread = False ()
@@ -577,6 +588,6 @@ A 5 parallel, 2 processor explicit Runge-Kutta method of 5th order.
577
588
These methods utilize multithreading on the f calls to parallelize the problem.
578
589
This requires that simultaneous calls to f are thread-safe.
579
590
"""
580
- @kwdef struct KuttaPRK2p5{TO} <: OrdinaryDiffEqAlgorithm
591
+ Base . @kwdef struct KuttaPRK2p5{TO} <: OrdinaryDiffEqAlgorithm
581
592
threading:: TO = true
582
593
end
0 commit comments