Skip to content

Commit 6288680

Browse files
variable ordering
1 parent 1bebe9c commit 6288680

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

src/systems/nonlinear/nonlinear_system.jl

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,15 @@ struct NonlinearSystem <: AbstractSystem
4141
ps = reduce(, map(_find_params(vs), rhss); init = vnil())
4242
new(eqs, vs, collect(ps))
4343
end
44+
45+
function NonlinearSystem(eqs, vs, ps)
46+
rhss = [eq.rhs for eq eqs]
47+
new(eqs, vs, [p.op for p in ps])
48+
end
4449
end
4550

51+
52+
4653
vnil() = Set{Variable}()
4754
_find_params(vs) = Base.Fix2(_find_params, vs)
4855
function _find_params(O, vs)
@@ -65,9 +72,9 @@ function calculate_jacobian(sys::NonlinearSystem)
6572
return jac
6673
end
6774

68-
function generate_jacobian(sys::NonlinearSystem)
75+
function generate_jacobian(sys::NonlinearSystem, vs = sys.vs, ps = sys.ps, expression = Val{true}; kwargs...)
6976
jac = calculate_jacobian(sys)
70-
return build_function(jac, clean.(sys.vs), sys.ps, (), NLSysToExpr(sys))
77+
return build_function(jac, clean.(vs), clean.(ps), (), NLSysToExpr(sys))
7178
end
7279

7380
struct NLSysToExpr
@@ -84,7 +91,7 @@ end
8491
(f::NLSysToExpr)(x) = convert(Expr, x)
8592

8693

87-
function generate_function(sys::NonlinearSystem, vs, ps, expression = Val{true}; kwargs...)
94+
function generate_function(sys::NonlinearSystem, vs = sys.vs, ps = sys.ps, expression = Val{true}; kwargs...)
8895
rhss = [eq.rhs for eq sys.eqs]
8996
vs′ = [clean(v) for v vs]
9097
ps′ = [clean(p) for p ps]

0 commit comments

Comments
 (0)