1
- function generate_ODENLStepData (sys:: System , u0, p, mm = calculate_massmatrix (sys))
2
- nlsys, outer_tmp, inner_tmp = inner_nlsystem (sys, mm)
1
+ function generate_ODENLStepData (sys:: System , u0, p, mm = calculate_massmatrix (sys), nlstep_compile :: Bool = true )
2
+ nlsys, outer_tmp, inner_tmp = inner_nlsystem (sys, mm, nlstep_compile )
3
3
state = ProblemState (; u = u0, p)
4
4
op = Dict ()
5
5
op[ODE_GAMMA[1 ]] = one (eltype (u0))
@@ -35,7 +35,7 @@ function get_inner_tmp(n::Int)
35
35
only (@parameters inner_tmpₘₜₖ[1 : n])
36
36
end
37
37
38
- function inner_nlsystem (sys:: System , mm)
38
+ function inner_nlsystem (sys:: System , mm, nlstep_compile :: Bool )
39
39
dvs = unknowns (sys)
40
40
eqs = full_equations (sys)
41
41
t = get_iv (sys)
@@ -56,8 +56,12 @@ function inner_nlsystem(sys::System, mm)
56
56
57
57
new_dvs = unknowns (sys)
58
58
new_ps = [parameters (sys); [gamma1, gamma2, gamma3, c, inner_tmp, outer_tmp]]
59
- nlsys = mtkcompile (
60
- System (new_eqs, new_dvs, new_ps; name = :nlsys ); split = is_split (sys))
59
+ nlsys = System (new_eqs, new_dvs, new_ps; name = :nlsys )
60
+ nlsys = if nlstep_compile
61
+ mtkcompile (nlsys; split = is_split (sys))
62
+ else
63
+ complete (nlsys; split = is_split (sys))
64
+ end
61
65
return nlsys, outer_tmp, inner_tmp
62
66
end
63
67
0 commit comments