Skip to content

Commit 94aa324

Browse files
separate gamma2
1 parent dd138f0 commit 94aa324

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/systems/solver_nlprob.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ function generate_ODENLStepData(sys::System, u0, p, mm = calculate_massmatrix(sy
1111
op[v] = getsym(sys, v)(state)
1212
end
1313
nlprob = NonlinearProblem(nlsys, op; build_initializeprob = false)
14-
set_gamma_c = setsym(nlsys, (ODE_GAMMA, ODE_C))
14+
set_gamma_c = setsym(nlsys, (ODE_GAMMA..., ODE_C))
1515
set_outer_tmp = setsym(nlsys, outer_tmp)
1616
set_inner_tmp = setsym(nlsys, inner_tmp)
1717
nlprobmap = getsym(nlsys, unknowns(sys))
1818

19-
return SciMLBase.ODENLStepData(nlprob, nothing, set_gamma_c, set_outer_tmp, set_inner_tmp, nlprobmap)
19+
return SciMLBase.ODENLStepData(nlprob, set_gamma_c, set_outer_tmp, set_inner_tmp, nlprobmap)
2020
end
2121

22-
const ODE_GAMMA = only(@parameters γₘₜₖ)
22+
const ODE_GAMMA = @parameters γ₁ₘₜₖ, γ₂ₘₜₖ
2323
const ODE_C = only(@parameters cₘₜₖ)
2424

2525
function get_outer_tmp(n::Int)
@@ -38,19 +38,19 @@ function inner_nlsystem(sys::System, mm)
3838
@assert length(eqs) == N
3939
@assert mm == I || size(mm) == (N, N)
4040
rhss = [eq.rhs for eq in eqs]
41-
gamma = ODE_GAMMA
41+
gamma1, gamma2 = ODE_GAMMA
4242
c = ODE_C
4343
outer_tmp = get_outer_tmp(N)
4444
inner_tmp = get_inner_tmp(N)
4545

46-
subrules = Dict([v => v + inner_tmp[i] for (i, v) in enumerate(dvs)])
46+
subrules = Dict([v => gamma2*v + inner_tmp[i] for (i, v) in enumerate(dvs)])
4747
subrules[t] = t + c
4848
new_rhss = map(Base.Fix2(fast_substitute, subrules), rhss)
49-
new_rhss = mm * dvs - gamma .* new_rhss .+ collect(outer_tmp)
49+
new_rhss = mm * dvs - gamma1 .* new_rhss .+ collect(outer_tmp)
5050
new_eqs = [0 ~ rhs for rhs in new_rhss]
5151

5252
new_dvs = unknowns(sys)
53-
new_ps = [parameters(sys); [gamma, c, inner_tmp, outer_tmp]]
53+
new_ps = [parameters(sys); [gamma1, gamma2, c, inner_tmp, outer_tmp]]
5454
nlsys = mtkcompile(System(new_eqs, new_dvs, new_ps; name = :nlsys); split = is_split(sys))
5555
return nlsys, outer_tmp, inner_tmp
5656
end

0 commit comments

Comments
 (0)