Skip to content

Commit 24dd7a0

Browse files
tmigotabelsiqueira
authored andcommitted
add jth-functions
1 parent 853e085 commit 24dd7a0

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

src/nlp.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,41 @@ function NLPModels.hprod!(
343343
return Hv
344344
end
345345

346+
function NLPModels.jth_hess_coord!(
347+
nlp::ADNLPModel,
348+
x::AbstractVector,
349+
j::Integer,
350+
vals::AbstractVector,
351+
)
352+
@lencheck nlp.meta.nnzh vals
353+
@lencheck nlp.meta.nvar x
354+
@rangecheck 1 nlp.meta.ncon j
355+
increment!(nlp, :neval_jhess)
356+
Hx = hessian(nlp.adbackend, x -> nlp.c(x)[j], x)
357+
k = 1
358+
for j = 1 : nlp.meta.nvar
359+
for i = j : nlp.meta.nvar
360+
vals[k] = Hx[i, j]
361+
k += 1
362+
end
363+
end
364+
return vals
365+
end
366+
367+
function NLPModels.jth_hprod!(
368+
nlp::ADNLPModel,
369+
x::AbstractVector,
370+
v::AbstractVector,
371+
j::Integer,
372+
Hv::AbstractVector,
373+
)
374+
@lencheck nlp.meta.nvar x v Hv
375+
@rangecheck 1 nlp.meta.ncon j
376+
increment!(nlp, :neval_jhprod)
377+
Hv .= Hvprod(nlp.adbackend, x -> nlp.c(x)[j], x, v)
378+
return Hv
379+
end
380+
346381
function NLPModels.ghjvprod!(
347382
nlp::ADNLPModel,
348383
x::AbstractVector,

src/nls.jl

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,41 @@ function NLPModels.hprod!(
472472
return Hv
473473
end
474474

475+
function NLPModels.jth_hess_coord!(
476+
nls::ADNLSModel,
477+
x::AbstractVector,
478+
j::Integer,
479+
vals::AbstractVector
480+
)
481+
@lencheck nls.meta.nnzh vals
482+
@lencheck nls.meta.nvar x
483+
@rangecheck 1 nls.meta.ncon j
484+
increment!(nls, :neval_jhess)
485+
Hx = hessian(nls.adbackend, x -> nls.c(x)[j], x)
486+
k = 1
487+
for j = 1 : nls.meta.nvar
488+
for i = j : nls.meta.nvar
489+
vals[k] = Hx[i, j]
490+
k += 1
491+
end
492+
end
493+
return vals
494+
end
495+
496+
function NLPModels.jth_hprod!(
497+
nls::ADNLSModel,
498+
x::AbstractVector,
499+
v::AbstractVector,
500+
j::Integer,
501+
Hv::AbstractVector
502+
)
503+
@lencheck nls.meta.nvar x v Hv
504+
@rangecheck 1 nls.meta.ncon j
505+
increment!(nls, :neval_jhprod)
506+
Hv .= Hvprod(nls.adbackend, x -> nls.c(x)[j], x, v)
507+
return Hv
508+
end
509+
475510
function NLPModels.ghjvprod!(
476511
nls::ADNLSModel,
477512
x::AbstractVector,

0 commit comments

Comments
 (0)