@@ -20,27 +20,6 @@ Abstract supertype for time steppers.
20
20
"""
21
21
abstract type AbstractTimeStepper end
22
22
23
- """
24
- TimeStepper(name::Symbol, args...; kwargs...)
25
-
26
- Returns a timestepper with name `name`, instantiated with `args...` and `kwargs...`.
27
-
28
- Example
29
- =======
30
-
31
- ```julia
32
- julia> stepper = TimeStepper(:QuasiAdamsBashforth2, CPU(), grid, tracernames)
33
- ```
34
- """
35
- function TimeStepper (name:: Symbol , args... ; kwargs... )
36
- fullname = Symbol (name, :TimeStepper )
37
- TS = getglobal (@__MODULE__ , fullname)
38
- return TS (args... ; kwargs... )
39
- end
40
-
41
- # Fallback
42
- TimeStepper (stepper:: AbstractTimeStepper , args... ; kwargs... ) = stepper
43
-
44
23
function update_state! end
45
24
function compute_tendencies! end
46
25
@@ -60,4 +39,31 @@ include("quasi_adams_bashforth_2.jl")
60
39
include (" runge_kutta_3.jl" )
61
40
include (" split_hydrostatic_runge_kutta_3.jl" )
62
41
42
+ """
43
+ TimeStepper(name::Symbol, args...; kwargs...)
44
+
45
+ Returns a timestepper with name `name`, instantiated with `args...` and `kwargs...`.
46
+
47
+ Example
48
+ =======
49
+
50
+ ```julia
51
+ julia> stepper = TimeStepper(:QuasiAdamsBashforth2, CPU(), grid, tracernames)
52
+ ```
53
+ """
54
+ TimeStepper (name:: Symbol , args... ; kwargs... ) = TimeStepper (Val (name), args... ; kwargs... )
55
+
56
+ # Fallback
57
+ TimeStepper (stepper:: AbstractTimeStepper , args... ; kwargs... ) = stepper
58
+
59
+ # individual contructors
60
+ TimeStepper (:: Val{:QuasiAdamsBashforth2} , args... ; kwargs... ) =
61
+ QuasiAdamsBashforth2TimeStepper (args... ; kwargs... )
62
+
63
+ TimeStepper (:: Val{:RungeKutta3} , args... ; kwargs... ) =
64
+ RungeKutta3TimeStepper (args... ; kwargs... )
65
+
66
+ TimeStepper (:: Val{:SplitRungeKutta3} , args... ; kwargs... ) =
67
+ SplitRungeKutta3TimeStepper (args... ; kwargs... )
68
+
63
69
end # module
0 commit comments