@@ -364,14 +364,32 @@ function DiffEqBase.OptimizationProblem{iip}(sys::OptimizationSystem, u0map,
364364 linenumbers = linenumbers,
365365 expression = Val{false })
366366 if cons_j
367- _cons_j = generate_jacobian (cons_sys; expression = Val{false },
368- sparse = cons_sparse)[2 ]
367+ _cons_j = let (cons_jac_oop, cons_jac_iip) = generate_jacobian (cons_sys;
368+ checkbounds = checkbounds,
369+ linenumbers = linenumbers,
370+ parallel = parallel, expression = Val{false },
371+ sparse = cons_sparse)
372+
373+ _cons_j (u, p) = cons_jac_oop (u, p)
374+ _cons_j (J, u, p) = (cons_jac_iip (J, u, p); J)
375+ _cons_j (u, p:: MTKParameters ) = cons_jac_oop (u, p... )
376+ _cons_j (J, u, p:: MTKParameters ) = (cons_jac_iip (J, u, p... ); J)
377+ _cons_j
378+ end
369379 else
370380 _cons_j = nothing
371381 end
372382 if cons_h
373- _cons_h = generate_hessian (cons_sys; expression = Val{false },
374- sparse = cons_sparse)[2 ]
383+ _cons_h = let (cons_hess_oop, cons_hess_iip) = generate_hessian (cons_sys, checkbounds = checkbounds,
384+ linenumbers = linenumbers,
385+ sparse = cons_sparse, parallel = parallel,
386+ expression = Val{false })
387+ _cons_h (u, p) = cons_hess_oop (u, p)
388+ _cons_h (J, u, p) = (cons_hess_iip (J, u, p); J)
389+ _cons_h (u, p:: MTKParameters ) = cons_hess_oop (u, p... )
390+ _cons_h (J, u, p:: MTKParameters ) = (cons_hess_iip (J, u, p... ); J)
391+ _cons_h
392+ end
375393 else
376394 _cons_h = nothing
377395 end
0 commit comments