@@ -68,40 +68,6 @@ function _validate(terms::Vector, labels::Vector{String}; info::String = "")
68
68
allthere && allmatching
69
69
end
70
70
71
- function validate (eq:: ModelingToolkit.Equation ; info:: String = " " )
72
- labels = [" left-hand side" , " right-hand side" ]
73
- terms = [eq. lhs, eq. rhs]
74
- _validate (terms, labels, info = info)
75
- end
76
-
77
- function validate (eq:: ModelingToolkit.Equation , noiseterm; info:: String = " " )
78
- labels = [" left-hand side" , " right-hand side" , " noise term" ]
79
- terms = [eq. lhs, eq. rhs, noiseterm]
80
- _validate (terms, labels, info = info)
81
- end
82
-
83
- function validate (eq:: ModelingToolkit.Equation , noisevec:: Vector ; info:: String = " " )
84
- labels = vcat ([" left-hand side" , " right-hand side" ], " noise term #" .* string .(1 : length (noisevec)))
85
- terms = vcat ([eq. lhs, eq. rhs], noisevec)
86
- _validate (terms, labels, info = info)
87
- end
88
-
89
- function validate (eqs:: Vector{ModelingToolkit.Equation} ; info:: String = " " )
90
- all ([validate (eqs[idx], info = info* " in eq. #$idx " ) for idx in 1 : length (eqs)])
91
- end
92
-
93
- function validate (eqs:: Vector{ModelingToolkit.Equation} , noise:: Vector )
94
- all ([validate (eqs[idx], noise[idx], info = " in eq. #$idx " ) for idx in 1 : length (eqs)])
95
- end
96
-
97
- function validate (eqs:: Vector{ModelingToolkit.Equation} , noise:: Matrix )
98
- all ([validate (eqs[idx], noise[idx, :], info = " in eq. #$idx " ) for idx in 1 : length (eqs)])
99
- end
100
-
101
- function validate (terms:: Vector{<:SymbolicUtils.Symbolic} )
102
- _validate (terms,[" in term #$idx " for idx in 1 : length (terms)],info = " " )
103
- end
104
-
105
71
function validate (jump:: Union{ModelingToolkit.VariableRateJump, ModelingToolkit.ConstantRateJump} , t:: Symbolic ; info:: String = " " )
106
72
_validate ([jump. rate, 1 / t], [" rate" , " 1/t" ], info = info) && # Assuming the rate is per time units
107
73
validate (jump. affect!,info = info)
@@ -117,19 +83,21 @@ function validate(jump::ModelingToolkit.MassActionJump, t::Symbolic; info::Strin
117
83
allgood && _validate ([jump. scaled_rates, 1 / (t* base_unitful^ n)], [" scaled_rates" , " 1/(t*reactants^$n ))" ], info = info)
118
84
end
119
85
120
- function validate (jumps:: Vector{<:JumpType} , t:: Symbolic ; info:: String = " " )
121
- all ([validate (jumps[idx], t, info = info* " in jump #$idx " ) for idx in 1 : length (jumps)])
122
- end
123
-
124
86
function validate (jumps:: ArrayPartition{<:Union{Any, Vector{<:JumpType}}} , t:: Symbolic )
125
87
labels = [" in Mass Action Jumps, " , " in Constant Rate Jumps, " , " in Variable Rate Jumps, " ]
126
88
all ([validate (jumps. x[idx], t, info = labels[idx]) for idx in 1 : 3 ])
127
89
end
128
90
129
- validate (eqs:: Vector{<:ModelingToolkit.Reaction} ) = validate (oderatelaw .(eqs))
91
+ validate (eq:: ModelingToolkit.Reaction ; info:: String = " " ) = _validate ([oderatelaw (eq)],[" " ,], info = info)
92
+ validate (eq:: ModelingToolkit.Equation ; info:: String = " " ) = _validate ([eq. lhs, eq. rhs],[" left" , " right" ],info = info)
93
+ validate (eq:: ModelingToolkit.Equation , term:: Union{Symbolic,Unitful.Quantity,Num} ; info:: String = " " ) = _validate ([eq. lhs, eq. rhs, term],[" left" ," right" ," noise" ],info = info)
94
+ validate (eq:: ModelingToolkit.Equation , terms:: Vector ; info:: String = " " ) = _validate (vcat ([eq. lhs, eq. rhs], terms),vcat ([" left" , " right" ], " noise #" .* string .(1 : length (terms))), info = info)
130
95
131
96
" Returns true iff units of equations are valid."
132
- validate (eqs:: Vector{Any} ) = length (eqs) == 0
97
+ validate (eqs:: Vector ; info:: String = " " ) = all ([validate (eqs[idx], info = info* " in eq. #$idx " ) for idx in 1 : length (eqs)])
98
+ validate (eqs:: Vector , noise:: Vector ; info:: String = " " ) = all ([validate (eqs[idx], noise[idx], info = info* " in eq. #$idx " ) for idx in 1 : length (eqs)])
99
+ validate (eqs:: Vector , noise:: Matrix ; info:: String = " " ) = all ([validate (eqs[idx], noise[idx, :], info = info* " in eq. #$idx " ) for idx in 1 : length (eqs)])
100
+ validate (eqs:: Vector , term:: Symbolic ; info:: String = " " ) = all ([validate (eqs[idx], term, info = info* " in eq. #$idx " ) for idx in 1 : length (eqs)])
133
101
134
102
" Throws error if units of equations are invalid."
135
103
check_units (eqs... ) = validate (eqs... ) || throw (ArgumentError (" Some equations had invalid units. See warnings for details." ))
0 commit comments