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