Skip to content

Commit 41246bb

Browse files
committed
@kwdef backwards compatibility
1 parent e80344c commit 41246bb

File tree

2 files changed

+43
-31
lines changed

2 files changed

+43
-31
lines changed

src/algorithms.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3922,6 +3922,7 @@ A 4th order explicit Runge-Kutta-Nyström method which can be applied directly t
39223922
In particular, this method allows the acceleration equation to depend on the velocity.
39233923
39243924
## References
3925+
39253926
```
39263927
@article{fine1987low,
39273928
title={Low order practical {R}unge-{K}utta-{N}ystr{\"o}m methods},

src/algorithms/explicit_rk.jl

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ end
3939

4040
@doc explicit_rk_docstring("The second order Heun's method. Uses embedded Euler method for adaptivity.",
4141
"Heun")
42-
@kwdef struct Heun{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
42+
Base.@kwdef struct Heun{StageLimiter, StepLimiter, Thread} <:
43+
OrdinaryDiffEqAdaptiveAlgorithm
4344
stage_limiter!::StageLimiter = trivial_limiter!
4445
step_limiter!::StepLimiter = trivial_limiter!
4546
thread::Thread = False()
@@ -51,7 +52,8 @@ end
5152

5253
@doc explicit_rk_docstring("The optimized second order midpoint method. Uses embedded Euler method for adaptivity.",
5354
"Ralston")
54-
@kwdef struct Ralston{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
55+
Base.@kwdef struct Ralston{StageLimiter, StepLimiter, Thread} <:
56+
OrdinaryDiffEqAdaptiveAlgorithm
5557
stage_limiter!::StageLimiter = trivial_limiter!
5658
step_limiter!::StepLimiter = trivial_limiter!
5759
thread::Thread = False()
@@ -63,7 +65,8 @@ end
6365

6466
@doc explicit_rk_docstring("The second order midpoint method. Uses embedded Euler method for adaptivity.",
6567
"Midpoint")
66-
@kwdef struct Midpoint{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
68+
Base.@kwdef struct Midpoint{StageLimiter, StepLimiter, Thread} <:
69+
OrdinaryDiffEqAdaptiveAlgorithm
6770
stage_limiter!::StageLimiter = trivial_limiter!
6871
step_limiter!::StepLimiter = trivial_limiter!
6972
thread::Thread = False()
@@ -86,7 +89,7 @@ Uses a defect control for adaptive stepping using maximum error over the whole i
8689
year={2005},
8790
publisher={Elsevier}
8891
}")
89-
@kwdef struct RK4{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
92+
Base.@kwdef struct RK4{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
9093
stage_limiter!::StageLimiter = trivial_limiter!
9194
step_limiter!::StepLimiter = trivial_limiter!
9295
thread::Thread = False()
@@ -97,7 +100,7 @@ function RK4(stage_limiter!, step_limiter! = trivial_limiter!)
97100
end
98101

99102
@doc explicit_rk_docstring("TBD", "RKM")
100-
@kwdef struct RKM{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
103+
Base.@kwdef struct RKM{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
101104
stage_limiter!::StageLimiter = trivial_limiter!
102105
step_limiter!::StepLimiter = trivial_limiter!
103106
thread::Thread = False()
@@ -109,7 +112,7 @@ end
109112

110113
@doc explicit_rk_docstring("5th order Explicit RK method.", "MSRK5",
111114
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
113116
stage_limiter!::StageLimiter = trivial_limiter!
114117
step_limiter!::StepLimiter = trivial_limiter!
115118
thread::Thread = False()
@@ -125,7 +128,7 @@ end
125128
(and is otherwise 4th order with less error for better estimates).
126129
""",
127130
extra_keyword_default = "w = 1")
128-
@kwdef struct Anas5{StageLimiter, StepLimiter, Thread, T} <: OrdinaryDiffEqAlgorithm
131+
Base.@kwdef struct Anas5{StageLimiter, StepLimiter, Thread, T} <: OrdinaryDiffEqAlgorithm
129132
stage_limiter!::StageLimiter = trivial_limiter!
130133
step_limiter!::StepLimiter = trivial_limiter!
131134
thread::Thread = False()
@@ -140,7 +143,7 @@ end
140143
references = "Tsitouras, Ch. \"Explicit Runge–Kutta methods for starting integration of
141144
Lane–Emden problem.\" Applied Mathematics and Computation 354 (2019): 353-364.
142145
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
144147
stage_limiter!::StageLimiter = trivial_limiter!
145148
step_limiter!::StepLimiter = trivial_limiter!
146149
thread::Thread = False()
@@ -162,8 +165,8 @@ end
162165
year={1992},
163166
publisher={SIAM}
164167
}")
165-
@kwdef struct OwrenZen3{StageLimiter, StepLimiter, Thread} <:
166-
OrdinaryDiffEqAdaptiveAlgorithm
168+
Base.@kwdef struct OwrenZen3{StageLimiter, StepLimiter, Thread} <:
169+
OrdinaryDiffEqAdaptiveAlgorithm
167170
stage_limiter!::StageLimiter = trivial_limiter!
168171
step_limiter!::StepLimiter = trivial_limiter!
169172
thread::Thread = False()
@@ -185,8 +188,8 @@ end
185188
year={1992},
186189
publisher={SIAM}
187190
}")
188-
@kwdef struct OwrenZen4{StageLimiter, StepLimiter, Thread} <:
189-
OrdinaryDiffEqAdaptiveAlgorithm
191+
Base.@kwdef struct OwrenZen4{StageLimiter, StepLimiter, Thread} <:
192+
OrdinaryDiffEqAdaptiveAlgorithm
190193
stage_limiter!::StageLimiter = trivial_limiter!
191194
step_limiter!::StepLimiter = trivial_limiter!
192195
thread::Thread = False()
@@ -208,8 +211,8 @@ end
208211
year={1992},
209212
publisher={SIAM}
210213
}")
211-
@kwdef struct OwrenZen5{StageLimiter, StepLimiter, Thread} <:
212-
OrdinaryDiffEqAdaptiveAlgorithm
214+
Base.@kwdef struct OwrenZen5{StageLimiter, StepLimiter, Thread} <:
215+
OrdinaryDiffEqAdaptiveAlgorithm
213216
stage_limiter!::StageLimiter = trivial_limiter!
214217
step_limiter!::StepLimiter = trivial_limiter!
215218
thread::Thread = False()
@@ -231,7 +234,7 @@ end
231234
year={1989},
232235
publisher={Elsevier}
233236
}")
234-
@kwdef struct BS3{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
237+
Base.@kwdef struct BS3{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
235238
stage_limiter!::StageLimiter = trivial_limiter!
236239
step_limiter!::StepLimiter = trivial_limiter!
237240
thread::Thread = False()
@@ -253,7 +256,7 @@ end
253256
year={1980},
254257
publisher={Elsevier}
255258
}")
256-
@kwdef struct DP5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
259+
Base.@kwdef struct DP5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
257260
stage_limiter!::StageLimiter = trivial_limiter!
258261
step_limiter!::StepLimiter = trivial_limiter!
259262
thread::Thread = False()
@@ -275,7 +278,8 @@ estimator of Tsitouras. Free 4th order interpolant.", "Tsit5",
275278
year={2011},
276279
publisher={Elsevier}
277280
}")
278-
@kwdef struct Tsit5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
281+
Base.@kwdef struct Tsit5{StageLimiter, StepLimiter, Thread} <:
282+
OrdinaryDiffEqAdaptiveAlgorithm
279283
stage_limiter!::StageLimiter = trivial_limiter!
280284
step_limiter!::StepLimiter = trivial_limiter!
281285
thread::Thread = False()
@@ -291,7 +295,7 @@ end
291295
references = "E. Hairer, S.P. Norsett, G. Wanner, (1993) Solving Ordinary Differential Equations I.
292296
Nonstiff Problems. 2nd Edition. Springer Series in Computational Mathematics,
293297
Springer-Verlag.")
294-
@kwdef struct DP8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
298+
Base.@kwdef struct DP8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
295299
stage_limiter!::StageLimiter = trivial_limiter!
296300
step_limiter!::StepLimiter = trivial_limiter!
297301
thread::Thread = False()
@@ -306,7 +310,8 @@ end
306310
references = "Tanaka M., Muramatsu S., Yamashita S., (1992), On the Optimization of Some Nine-Stage
307311
Seventh-order Runge-Kutta Method, Information Processing Society of Japan,
308312
33 (12), pp. 1512-1526.")
309-
@kwdef struct TanYam7{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
313+
Base.@kwdef struct TanYam7{StageLimiter, StepLimiter, Thread} <:
314+
OrdinaryDiffEqAdaptiveAlgorithm
310315
stage_limiter!::StageLimiter = trivial_limiter!
311316
step_limiter!::StepLimiter = trivial_limiter!
312317
thread::Thread = False()
@@ -317,7 +322,8 @@ function TanYam7(stage_limiter!, step_limiter! = trivial_limiter!)
317322
end
318323

319324
@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
321327
stage_limiter!::StageLimiter = trivial_limiter!
322328
step_limiter!::StepLimiter = trivial_limiter!
323329
thread::Thread = False()
@@ -367,7 +373,8 @@ struct Feagin14 <: OrdinaryDiffEqAdaptiveAlgorithm end
367373
when accurate this method results in zero numerical dissipation.
368374
""",
369375
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
371378
stage_limiter!::StageLimiter = trivial_limiter!
372379
step_limiter!::StepLimiter = trivial_limiter!
373380
thread::Thread = False()
@@ -384,8 +391,8 @@ end
384391
when accurate this method results in zero numerical dissipation.
385392
""",
386393
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
389396
stage_limiter!::StageLimiter = trivial_limiter!
390397
step_limiter!::StepLimiter = trivial_limiter!
391398
thread::Thread = False()
@@ -411,7 +418,7 @@ end
411418
extra_keyword_description = """- `lazy`: determines if the lazy interpolant is used.
412419
""",
413420
extra_keyword_default = "lazy = true")
414-
@kwdef struct BS5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
421+
Base.@kwdef struct BS5{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
415422
stage_limiter!::StageLimiter = trivial_limiter!
416423
step_limiter!::StepLimiter = trivial_limiter!
417424
thread::Thread = False()
@@ -437,7 +444,8 @@ end
437444
extra_keyword_description = """- `lazy`: determines if the lazy interpolant is used.
438445
""",
439446
extra_keyword_default = "lazy = true")
440-
@kwdef struct Vern6{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
447+
Base.@kwdef struct Vern6{StageLimiter, StepLimiter, Thread} <:
448+
OrdinaryDiffEqAdaptiveAlgorithm
441449
stage_limiter!::StageLimiter = trivial_limiter!
442450
step_limiter!::StepLimiter = trivial_limiter!
443451
thread::Thread = False()
@@ -464,7 +472,8 @@ end
464472
extra_keyword_description = """- `lazy`: determines if the lazy interpolant is used.
465473
""",
466474
extra_keyword_default = "lazy = true")
467-
@kwdef struct Vern7{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
475+
Base.@kwdef struct Vern7{StageLimiter, StepLimiter, Thread} <:
476+
OrdinaryDiffEqAdaptiveAlgorithm
468477
stage_limiter!::StageLimiter = trivial_limiter!
469478
step_limiter!::StepLimiter = trivial_limiter!
470479
thread::Thread = False()
@@ -491,7 +500,8 @@ end
491500
extra_keyword_description = """- `lazy`: determines if the lazy interpolant is used.
492501
""",
493502
extra_keyword_default = "lazy = true")
494-
@kwdef struct Vern8{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
503+
Base.@kwdef struct Vern8{StageLimiter, StepLimiter, Thread} <:
504+
OrdinaryDiffEqAdaptiveAlgorithm
495505
stage_limiter!::StageLimiter = trivial_limiter!
496506
step_limiter!::StepLimiter = trivial_limiter!
497507
thread::Thread = False()
@@ -517,7 +527,8 @@ end
517527
}",
518528
extra_keyword_description = """- `lazy`: determines if the lazy interpolant is used.
519529
""", extra_keyword_default = "lazy = true")
520-
@kwdef struct Vern9{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAdaptiveAlgorithm
530+
Base.@kwdef struct Vern9{StageLimiter, StepLimiter, Thread} <:
531+
OrdinaryDiffEqAdaptiveAlgorithm
521532
stage_limiter!::StageLimiter = trivial_limiter!
522533
step_limiter!::StepLimiter = trivial_limiter!
523534
thread::Thread = False()
@@ -537,7 +548,7 @@ struct Euler <: OrdinaryDiffEqAlgorithm end
537548
@doc explicit_rk_docstring("6-stage, fourth order low-stage, low-dissipation, low-dispersion scheme.
538549
Fixed timestep only.", "RK46NL",
539550
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
541552
stage_limiter!::StageLimiter = trivial_limiter!
542553
step_limiter!::StepLimiter = trivial_limiter!
543554
thread::Thread = False()
@@ -557,7 +568,7 @@ equations. Fixed timestep only.", "ORK256",
557568
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.
558569
""",
559570
extra_keyword_default = "williamson_condition = true")
560-
@kwdef struct ORK256{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
571+
Base.@kwdef struct ORK256{StageLimiter, StepLimiter, Thread} <: OrdinaryDiffEqAlgorithm
561572
stage_limiter!::StageLimiter = trivial_limiter!
562573
step_limiter!::StepLimiter = trivial_limiter!
563574
thread::Thread = False()
@@ -577,6 +588,6 @@ A 5 parallel, 2 processor explicit Runge-Kutta method of 5th order.
577588
These methods utilize multithreading on the f calls to parallelize the problem.
578589
This requires that simultaneous calls to f are thread-safe.
579590
"""
580-
@kwdef struct KuttaPRK2p5{TO} <: OrdinaryDiffEqAlgorithm
591+
Base.@kwdef struct KuttaPRK2p5{TO} <: OrdinaryDiffEqAlgorithm
581592
threading::TO = true
582593
end

0 commit comments

Comments
 (0)