@@ -5,11 +5,33 @@ Symbolics.option_to_metadata_type(::Val{:connect}) = VariableConnectType
5
5
6
6
"""
7
7
$(SIGNATURES)
8
+
8
9
Takes a list of pairs of `variables=>values` and an ordered list of variables
9
10
and creates the array of values in the correct order with default values when
10
11
applicable.
11
12
"""
12
- function varmap_to_vars (varmap:: Dict , varlist; defaults= Dict ())
13
+ function varmap_to_vars (varmap, varlist; defaults= Dict ())
14
+ if varmap isa DiffEqBase. NullParameters || isempty (varmap)
15
+ varmap = Dict ()
16
+ end
17
+ T = typeof (varmap)
18
+ container_type = T <: Dict ? Array : T
19
+
20
+ if eltype (varmap) <: Pair
21
+ varmap isa Dict || (varmap = Dict (varmap))
22
+ rules = Dict (varmap)
23
+ vals = _varmap_to_vars (varmap, varlist; defaults= defaults)
24
+ end
25
+ if isempty (vals)
26
+ return nothing
27
+ elseif container_type <: Tuple
28
+ (vals... ,)
29
+ else
30
+ SymbolicUtils. Code. create_array (container_type, eltype (vals), Val (length (vals)), vals... )
31
+ end
32
+ end
33
+
34
+ function _varmap_to_vars (varmap:: Dict , varlist; defaults= Dict ())
13
35
varmap = merge (defaults, varmap) # prefers the `varmap`
14
36
varmap = Dict (Symbolics. diff2term (value (k))=> value (varmap[k]) for k in keys (varmap))
15
37
# resolve symbolic parameter expressions
@@ -27,22 +49,3 @@ function varmap_to_vars(varmap::Dict, varlist; defaults=Dict())
27
49
end
28
50
out
29
51
end
30
-
31
- function varmap_to_vars (varmap:: Union{AbstractArray,Tuple} ,varlist; kw... )
32
- if eltype (varmap) <: Pair
33
- out = varmap_to_vars (Dict (varmap), varlist; kw... )
34
- if varmap isa Tuple
35
- (out... , )
36
- else
37
- # Note that `varmap` might be longer than `varlist`
38
- construct_state (varmap, out)
39
- end
40
- else
41
- varmap
42
- end
43
- end
44
- varmap_to_vars (varmap:: DiffEqBase.NullParameters ,varlist; kw... ) = varmap
45
- varmap_to_vars (varmap:: Nothing ,varlist; kw... ) = varmap
46
-
47
- construct_state (x:: StaticArray , y) = StaticArrays. similar_type (x, eltype (y), StaticArrays. Size (size (y)... ))(y)
48
- construct_state (x:: Array , y) = y
0 commit comments