@@ -35,6 +35,12 @@ for f in (:connector, :mtkmodel)
3535 end
3636end
3737
38+ flatten_equations (eqs:: Vector{Equation} , eq:: Equation ) = vcat (eqs, [eq])
39+ flatten_equations (eq:: Vector{Equation} , eqs:: Vector{Equation} ) = vcat (eq, eqs)
40+ function flatten_equations (eqs:: Vector{Union{Equation, Vector{Equation}}} )
41+ foldl (flatten_equations, eqs; init = Equation[])
42+ end
43+
3844function _model_macro (mod, name, expr, isconnector)
3945 exprs = Expr (:block )
4046 dict = Dict {Symbol, Any} (
@@ -56,7 +62,7 @@ function _model_macro(mod, name, expr, isconnector)
5662 push! (exprs. args, :(variables = []))
5763 push! (exprs. args, :(parameters = []))
5864 push! (exprs. args, :(systems = ODESystem[]))
59- push! (exprs. args, :(equations = Equation[]))
65+ push! (exprs. args, :(equations = Union{ Equation, Vector{Equation}} []))
6066 push! (exprs. args, :(defaults = Dict {Num, Union{Number, Symbol, Function}} ()))
6167
6268 Base. remove_linenums! (expr)
@@ -106,7 +112,7 @@ function _model_macro(mod, name, expr, isconnector)
106112 @inline pop_structure_dict! .(
107113 Ref (dict), [:constants , :defaults , :kwargs , :structural_parameters ])
108114
109- sys = :($ ODESystem ($ Equation[ equations... ] , $ iv, variables, parameters;
115+ sys = :($ ODESystem ($ (flatten_equations)( equations) , $ iv, variables, parameters;
110116 name, systems, gui_metadata = $ gui_metadata, defaults))
111117
112118 if ext[] === nothing
0 commit comments