Skip to content

Commit 2755c24

Browse files
Generate oop constraint derivatives
1 parent eee42f0 commit 2755c24

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

src/systems/optimization/optimizationsystem.jl

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)