@@ -131,7 +131,7 @@ function QuadraticModel(
131
131
lcon = lcon,
132
132
ucon = ucon,
133
133
nnzj = nnzj,
134
- lin_nnzj = length (Arows) ,
134
+ lin_nnzj = nnzj ,
135
135
nln_nnzj = 0 ,
136
136
nnzh = nnzh,
137
137
lin = 1 : ncon,
@@ -181,7 +181,7 @@ function QuadraticModel(
181
181
lcon = lcon,
182
182
ucon = ucon,
183
183
nnzj = nnzj,
184
- lin_nnzj = nnz (A) ,
184
+ lin_nnzj = nnzj ,
185
185
nln_nnzj = 0 ,
186
186
nnzh = nnzh,
187
187
lin = 1 : ncon,
@@ -364,21 +364,23 @@ NLPModels.hess_coord!(
364
364
obj_weight:: Real = one (eltype (x)),
365
365
) = hess_coord! (qp, x, vals, obj_weight = obj_weight)
366
366
367
- function NLPModels. jac_structure ! (
367
+ function NLPModels. jac_lin_structure ! (
368
368
qp:: QuadraticModel{T, S, M1, M2} ,
369
369
rows:: AbstractVector{<:Integer} ,
370
370
cols:: AbstractVector{<:Integer} ,
371
371
) where {T, S, M1, M2 <: SparseMatrixCOO }
372
+ @lencheck qp. meta. lin_nnzj rows cols
372
373
rows .= qp. data. A. rows
373
374
cols .= qp. data. A. cols
374
375
return rows, cols
375
376
end
376
377
377
- function NLPModels. jac_structure ! (
378
+ function NLPModels. jac_lin_structure ! (
378
379
qp:: QuadraticModel{T, S, M1, M2} ,
379
380
rows:: AbstractVector{<:Integer} ,
380
381
cols:: AbstractVector{<:Integer} ,
381
382
) where {T, S, M1, M2 <: SparseMatrixCSC }
383
+ @lencheck qp. meta. lin_nnzj rows cols
382
384
fill_structure! (qp. data. A, rows, cols)
383
385
return rows, cols
384
386
end
@@ -388,6 +390,7 @@ function NLPModels.jac_structure!(
388
390
rows:: AbstractVector{<:Integer} ,
389
391
cols:: AbstractVector{<:Integer} ,
390
392
) where {T, S, M1, M2 <: Matrix }
393
+ @lencheck qp. meta. lin_nnzj rows cols
391
394
count = 1
392
395
for j = 1 : (qp. meta. nvar)
393
396
for i = 1 : (qp. meta. ncon)
@@ -399,32 +402,38 @@ function NLPModels.jac_structure!(
399
402
return rows, cols
400
403
end
401
404
402
- function NLPModels. jac_coord ! (
405
+ function NLPModels. jac_lin_coord ! (
403
406
qp:: QuadraticModel{T, S, M1, M2} ,
404
407
x:: AbstractVector ,
405
408
vals:: AbstractVector ,
406
409
) where {T, S, M1, M2 <: SparseMatrixCOO }
407
- NLPModels. increment! (qp, :neval_jac )
410
+ @lencheck qp. meta. nvar x
411
+ @lencheck qp. meta. lin_nnzj vals
412
+ NLPModels. increment! (qp, :neval_jac_lin )
408
413
vals .= qp. data. A. vals
409
414
return vals
410
415
end
411
416
412
- function NLPModels. jac_coord ! (
417
+ function NLPModels. jac_lin_coord ! (
413
418
qp:: QuadraticModel{T, S, M1, M2} ,
414
419
x:: AbstractVector ,
415
420
vals:: AbstractVector ,
416
421
) where {T, S, M1, M2 <: SparseMatrixCSC }
417
- NLPModels. increment! (qp, :neval_jac )
422
+ @lencheck qp. meta. nvar x
423
+ @lencheck qp. meta. lin_nnzj vals
424
+ NLPModels. increment! (qp, :neval_jac_lin )
418
425
fill_coord! (qp. data. A, vals, one (T))
419
426
return vals
420
427
end
421
428
422
- function NLPModels. jac_coord ! (
429
+ function NLPModels. jac_lin_coord ! (
423
430
qp:: QuadraticModel{T, S, M1, M2} ,
424
431
x:: AbstractVector ,
425
432
vals:: AbstractVector ,
426
433
) where {T, S, M1, M2 <: Matrix }
427
- NLPModels. increment! (qp, :neval_jac )
434
+ @lencheck qp. meta. nvar x
435
+ @lencheck qp. meta. lin_nnzj vals
436
+ NLPModels. increment! (qp, :neval_jac_lin )
428
437
count = 1
429
438
for j = 1 : (qp. meta. nvar)
430
439
for i = 1 : (qp. meta. ncon)
@@ -435,8 +444,19 @@ function NLPModels.jac_coord!(
435
444
return vals
436
445
end
437
446
438
- function NLPModels. cons! (qp:: AbstractQuadraticModel , x:: AbstractVector , c:: AbstractVector )
439
- NLPModels. increment! (qp, :neval_cons )
447
+ function NLPModels. jac_lin (
448
+ qp:: QuadraticModel{T, S, M1, M2} ,
449
+ x:: AbstractVector ,
450
+ ) where {T, S, M1 <: AbstractLinearOperator , M2 <: AbstractLinearOperator }
451
+ @lencheck qp. meta. nvar x
452
+ increment! (qp, :neval_jac_lin )
453
+ return qp. data. A
454
+ end
455
+
456
+ function NLPModels. cons_lin! (qp:: AbstractQuadraticModel , x:: AbstractVector , c:: AbstractVector )
457
+ @lencheck qp. meta. nvar x
458
+ @lencheck qp. meta. nlin c
459
+ NLPModels. increment! (qp, :neval_cons_lin )
440
460
mul! (c, qp. data. A, x)
441
461
return c
442
462
end
@@ -465,13 +485,15 @@ NLPModels.hprod!(
465
485
obj_weight:: Real = one (eltype (x)),
466
486
) = hprod! (qp, x, v, Hv, obj_weight = obj_weight)
467
487
468
- function NLPModels. jprod ! (
488
+ function NLPModels. jprod_lin ! (
469
489
qp:: AbstractQuadraticModel ,
470
490
x:: AbstractVector ,
471
491
v:: AbstractVector ,
472
492
Av:: AbstractVector ,
473
493
)
474
- NLPModels. increment! (qp, :neval_jprod )
494
+ @lencheck qp. meta. nvar x v
495
+ @lencheck qp. meta. nlin Av
496
+ NLPModels. increment! (qp, :neval_jprod_lin )
475
497
mul! (Av, qp. data. A, v)
476
498
return Av
477
499
end
@@ -482,7 +504,9 @@ function NLPModels.jtprod!(
482
504
v:: AbstractVector ,
483
505
Atv:: AbstractVector ,
484
506
)
485
- NLPModels. increment! (qp, :neval_jtprod )
507
+ @lencheck qp. meta. nvar x Atv
508
+ @lencheck qp. meta. nlin v
509
+ NLPModels. increment! (qp, :neval_jtprod_lin )
486
510
mul! (Atv, transpose (qp. data. A), v)
487
511
return Atv
488
512
end
0 commit comments