@@ -194,15 +194,25 @@ function jac_structure!(
194
194
) where {T}
195
195
@lencheck nlp. meta. nnzj rows cols
196
196
lin_ind = 1 : (nlp. meta. lin_nnzj)
197
- nlp. meta. nlin > 0 && jac_lin_structure! (nlp, view (rows, lin_ind), view (cols, lin_ind))
198
- for i in lin_ind
199
- rows[i] += count (x < nlp. meta. lin[rows[i]] for x in nlp. meta. nln)
197
+ if nlp. meta. nlin > 0
198
+ if nlp. meta. nnln == 0
199
+ jac_lin_structure! (nlp, rows, cols)
200
+ else
201
+ jac_lin_structure! (nlp, view (rows, lin_ind), view (cols, lin_ind))
202
+ for i in lin_ind
203
+ rows[i] += count (x < nlp. meta. lin[rows[i]] for x in nlp. meta. nln)
204
+ end
205
+ end
200
206
end
201
207
if nlp. meta. nnln > 0
202
- nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
203
- jac_nln_structure! (nlp, view (rows, nln_ind), view (cols, nln_ind))
204
- for i in nln_ind
205
- rows[i] += count (x < nlp. meta. nln[rows[i]] for x in nlp. meta. lin)
208
+ if nlp. meta. nlin == 0
209
+ jac_nln_structure! (nlp, rows, cols)
210
+ else
211
+ nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
212
+ jac_nln_structure! (nlp, view (rows, nln_ind), view (cols, nln_ind))
213
+ for i in nln_ind
214
+ rows[i] += count (x < nlp. meta. nln[rows[i]] for x in nlp. meta. lin)
215
+ end
206
216
end
207
217
end
208
218
return rows, cols
@@ -254,10 +264,22 @@ function jac_coord!(nlp::AbstractNLPModel, x::AbstractVector, vals::AbstractVect
254
264
@lencheck nlp. meta. nvar x
255
265
@lencheck nlp. meta. nnzj vals
256
266
increment! (nlp, :neval_jac )
257
- lin_ind = 1 : (nlp. meta. lin_nnzj)
258
- nlp. meta. nlin > 0 && jac_lin_coord! (nlp, x, view (vals, lin_ind))
259
- nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
260
- nlp. meta. nnln > 0 && jac_nln_coord! (nlp, x, view (vals, nln_ind))
267
+ if nlp. meta. nlin > 0
268
+ if nlp. meta. nnln == 0
269
+ jac_lin_coord! (nlp, x, vals)
270
+ else
271
+ lin_ind = 1 : (nlp. meta. lin_nnzj)
272
+ jac_lin_coord! (nlp, x, view (vals, lin_ind))
273
+ end
274
+ end
275
+ if nlp. meta. nnln > 0
276
+ if nlp. meta. nlin == 0
277
+ jac_nln_coord! (nlp, x, vals)
278
+ else
279
+ nln_ind = (nlp. meta. lin_nnzj + 1 ): (nlp. meta. lin_nnzj + nlp. meta. nln_nnzj)
280
+ jac_nln_coord! (nlp, x, view (vals, nln_ind))
281
+ end
282
+ end
261
283
return vals
262
284
end
263
285
@@ -505,9 +527,9 @@ function jtprod!(nlp::AbstractNLPModel, x::AbstractVector, v::AbstractVector, Jt
505
527
@lencheck nlp. meta. ncon v
506
528
increment! (nlp, :neval_jtprod )
507
529
if nlp. meta. nnln == 0
508
- jtprod_lin! (nlp, x, v, Jtv)
530
+ (nlp . meta . nlin > 0 ) && jtprod_lin! (nlp, x, v, Jtv)
509
531
elseif nlp. meta. nlin == 0
510
- jtprod_nln! (nlp, x, v, Jtv)
532
+ (nlp . meta . nnln > 0 ) && jtprod_nln! (nlp, x, v, Jtv)
511
533
elseif nlp. meta. nlin >= nlp. meta. nnln
512
534
jtprod_lin! (nlp, x, view (v, nlp. meta. lin), Jtv)
513
535
if nlp. meta. nnln > 0
0 commit comments