@@ -108,8 +108,9 @@ function generate_rhs(
108108 p_start += 1
109109 end
110110
111+ u_arg = scalar ? - 1 : (implicit_dae ? 2 : 1 )
111112 res = build_function_wrapper (
112- sys, rhss, args... ; p_start, extra_assignments,
113+ sys, rhss, args... ; p_start, extra_assignments, u_arg,
113114 expression = Val{true }, expression_module = eval_module, kwargs...
114115 )
115116 nargs = length (args) - length (p) + 1
@@ -147,7 +148,7 @@ function generate_diffusion_function(
147148 eqs = vec (eqs)
148149 end
149150 p = reorder_parameters (sys, ps)
150- res = build_function_wrapper (sys, eqs, dvs, p... , get_iv (sys); kwargs... )
151+ res = build_function_wrapper (sys, eqs, dvs, p... , get_iv (sys); u_arg = 1 , kwargs... )
151152 if expression == Val{true }
152153 return res
153154 end
@@ -262,7 +263,7 @@ function generate_jacobian(
262263 nargs = 3
263264 end
264265 res = build_function_wrapper (
265- sys, jac, args... ; wrap_code, expression = Val{true },
266+ sys, jac, args... ; wrap_code, u_arg = 1 , expression = Val{true },
266267 expression_module = eval_module, checkbounds, kwargs...
267268 )
268269 return maybe_compile_function (
@@ -309,6 +310,7 @@ function generate_tgrad(
309310 dvs,
310311 p... ,
311312 get_iv (sys);
313+ u_arg = 1 ,
312314 expression = Val{true },
313315 expression_module = eval_module,
314316 kwargs...
@@ -392,7 +394,7 @@ function generate_W(
392394 p = reorder_parameters (sys, ps)
393395 res = build_function_wrapper (
394396 sys, W, dvs, p... , W_GAMMA, t; wrap_code,
395- p_end = 1 + length (p), checkbounds, kwargs...
397+ u_arg = 1 , p_end = 1 + length (p), checkbounds, kwargs...
396398 )
397399 return maybe_compile_function (
398400 expression, wrap_gfw, (2 , 4 , is_split (sys)), res; eval_expression, eval_module
@@ -432,7 +434,7 @@ function generate_dae_jacobian(
432434 p = reorder_parameters (sys, ps)
433435 res = build_function_wrapper (
434436 sys, jac, derivatives, dvs, p... , W_GAMMA, t;
435- p_start = 3 , p_end = 2 + length (p), kwargs...
437+ u_arg = 2 , p_start = 3 , p_end = 2 + length (p), kwargs...
436438 )
437439 return maybe_compile_function (
438440 expression, wrap_gfw, (3 , 5 , is_split (sys)), res; eval_expression, eval_module
@@ -694,8 +696,9 @@ function generate_cost(
694696 args = (dvs, ps... )
695697 nargs = 2
696698 end
699+ u_arg = is_time_dependent (sys) ? - 1 : 1
697700 res = build_function_wrapper (
698- sys, obj, args... ; expression = Val{true }, p_start, p_end, wrap_delays,
701+ sys, obj, args... ; expression = Val{true }, p_start, p_end, wrap_delays, u_arg,
699702 histfn = (p, t) -> BVP_SOLUTION (t), histfn_symbolic = BVP_SOLUTION, kwargs...
700703 )[1 ]
701704 if expression == Val{true }
@@ -788,7 +791,7 @@ function generate_cost_gradient(
788791 dvs = unknowns (sys)
789792 ps = reorder_parameters (sys)
790793 exprs = calculate_cost_gradient (sys; simplify)
791- res = build_function_wrapper (sys, exprs, dvs, ps... ; expression = Val{true }, kwargs... )
794+ res = build_function_wrapper (sys, exprs, dvs, ps... ; u_arg = 1 , expression = Val{true }, kwargs... )
792795 return maybe_compile_function (
793796 expression, wrap_gfw, (2 , 2 , is_split (sys)), res; eval_expression, eval_module
794797 )
@@ -847,7 +850,7 @@ function generate_cost_hessian(
847850 if sparse
848851 sparsity = similar (exprs, Float64)
849852 end
850- res = build_function_wrapper (sys, exprs, dvs, ps... ; expression = Val{true }, kwargs... )
853+ res = build_function_wrapper (sys, exprs, dvs, ps... ; u_arg = 1 , expression = Val{true }, kwargs... )
851854 fn = maybe_compile_function (
852855 expression, wrap_gfw, (2 , 2 , is_split (sys)), res; eval_expression, eval_module
853856 )
@@ -879,7 +882,7 @@ function generate_cons(
879882 cons = canonical_constraints (sys)
880883 dvs = unknowns (sys)
881884 ps = reorder_parameters (sys)
882- res = build_function_wrapper (sys, cons, dvs, ps... ; expression = Val{true }, kwargs... )
885+ res = build_function_wrapper (sys, cons, dvs, ps... ; u_arg = 1 , expression = Val{true }, kwargs... )
883886 return maybe_compile_function (
884887 expression, wrap_gfw, (2 , 2 , is_split (sys)), res; eval_expression, eval_module
885888 )
@@ -936,7 +939,7 @@ function generate_constraint_jacobian(
936939 sparsity = calculate_constraint_jacobian (
937940 sys; simplify, sparse, return_sparsity = true
938941 )
939- res = build_function_wrapper (sys, jac, dvs, ps... ; expression = Val{true }, kwargs... )
942+ res = build_function_wrapper (sys, jac, dvs, ps... ; u_arg = 1 , expression = Val{true }, kwargs... )
940943 fn = maybe_compile_function (
941944 expression, wrap_gfw, (2 , 2 , is_split (sys)), res; eval_expression, eval_module
942945 )
@@ -995,7 +998,7 @@ function generate_constraint_hessian(
995998 sparsity = calculate_constraint_hessian (
996999 sys; simplify, sparse, return_sparsity = true
9971000 )
998- res = build_function_wrapper (sys, hess, dvs, ps... ; expression = Val{true }, kwargs... )
1001+ res = build_function_wrapper (sys, hess, dvs, ps... ; u_arg = 1 , expression = Val{true }, kwargs... )
9991002 fn = maybe_compile_function (
10001003 expression, wrap_gfw, (2 , 2 , is_split (sys)), res; eval_expression, eval_module
10011004 )
@@ -1048,7 +1051,7 @@ function generate_control_jacobian(
10481051 ps = parameters (sys; initial_parameters = true )
10491052 jac = calculate_control_jacobian (sys; simplify = simplify, sparse = sparse)
10501053 p = reorder_parameters (sys, ps)
1051- res = build_function_wrapper (sys, jac, dvs, p... , get_iv (sys); kwargs... )
1054+ res = build_function_wrapper (sys, jac, dvs, p... , get_iv (sys); u_arg = 1 , kwargs... )
10521055 return maybe_compile_function (
10531056 expression, wrap_gfw, (2 , 3 , is_split (sys)), res; eval_expression, eval_module
10541057 )
@@ -1059,6 +1062,7 @@ function generate_rate_function(js::System, rate)
10591062 return build_function_wrapper (
10601063 js, rate, unknowns (js), p... ,
10611064 get_iv (js),
1065+ u_arg = 1 ,
10621066 expression = Val{true },
10631067 iip_config = (true , false ),
10641068 )[1 ]
0 commit comments