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 )
33 state = ProblemState (; u = u0, p)
44 op = Dict ()
55 op[ODE_GAMMA[1 ]] = one (eltype (u0))
@@ -35,7 +35,7 @@ function get_inner_tmp(n::Int)
3535 only (@parameters inner_tmpₘₜₖ[1 : n])
3636end
3737
38- function inner_nlsystem (sys:: System , mm)
38+ function inner_nlsystem (sys:: System , mm, nlstep_compile :: Bool )
3939 dvs = unknowns (sys)
4040 eqs = full_equations (sys)
4141 t = get_iv (sys)
@@ -56,8 +56,12 @@ function inner_nlsystem(sys::System, mm)
5656
5757 new_dvs = unknowns (sys)
5858 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
6165 return nlsys, outer_tmp, inner_tmp
6266end
6367
0 commit comments