@@ -74,57 +74,65 @@ Supported backends include `SparseADJacobian`, `SparseADHessian`, and `SparseRev
7474* `S`: A sparse matrix of type `SparseMatrixCSC{Bool,Int}` indicating the sparsity pattern of the requested derivative.
7575"""
7676function get_sparsity_pattern(model:: ADModel , derivative:: Symbol )
77- get_sparsity_pattern(model, Val(derivative))
77+ get_sparsity_pattern(model, Val(derivative))
7878end
7979
8080function get_sparsity_pattern(model:: ADModel , :: Val{:jacobian} )
81- backend = model. adbackend. jacobian_backend
82- validate_sparse_backend(backend, SparseADJacobian, " Jacobian" )
83- m = model. meta. ncon
84- n = model. meta. nvar
85- colptr = backend. colptr
86- rowval = backend. rowval
87- nnzJ = length(rowval)
88- nzval = ones(Bool, nnzJ)
89- SparseMatrixCSC(m, n, colptr, rowval, nzval)
81+ backend = model. adbackend. jacobian_backend
82+ validate_sparse_backend(backend, SparseADJacobian, " Jacobian" )
83+ m = model. meta. ncon
84+ n = model. meta. nvar
85+ colptr = backend. colptr
86+ rowval = backend. rowval
87+ nnzJ = length(rowval)
88+ nzval = ones(Bool, nnzJ)
89+ SparseMatrixCSC(m, n, colptr, rowval, nzval)
9090end
9191
9292function get_sparsity_pattern(model:: ADModel , :: Val{:hessian} )
93- backend = model. adbackend. hessian_backend
94- validate_sparse_backend(backend, Union{SparseADHessian, SparseReverseADHessian}, " Hessian" )
95- n = model. meta. nvar
96- colptr = backend. colptr
97- rowval = backend. rowval
98- nnzH = length(rowval)
99- nzval = ones(Bool, nnzH)
100- SparseMatrixCSC(n, n, colptr, rowval, nzval)
93+ backend = model. adbackend. hessian_backend
94+ validate_sparse_backend(backend, Union{SparseADHessian, SparseReverseADHessian}, " Hessian" )
95+ n = model. meta. nvar
96+ colptr = backend. colptr
97+ rowval = backend. rowval
98+ nnzH = length(rowval)
99+ nzval = ones(Bool, nnzH)
100+ SparseMatrixCSC(n, n, colptr, rowval, nzval)
101101end
102102
103103function get_sparsity_pattern(model:: AbstractADNLSModel , :: Val{:jacobian_residual} )
104- backend = model. adbackend. jacobian_residual_backend
105- validate_sparse_backend(backend, SparseADJacobian, " Jacobian of the residual" )
106- m = model. nls_meta. nequ
107- n = model. meta. nvar
108- colptr = backend. colptr
109- rowval = backend. rowval
110- nnzJ = length(rowval)
111- nzval = ones(Bool, nnzJ)
112- SparseMatrixCSC(m, n, colptr, rowval, nzval)
104+ backend = model. adbackend. jacobian_residual_backend
105+ validate_sparse_backend(backend, SparseADJacobian, " Jacobian of the residual" )
106+ m = model. nls_meta. nequ
107+ n = model. meta. nvar
108+ colptr = backend. colptr
109+ rowval = backend. rowval
110+ nnzJ = length(rowval)
111+ nzval = ones(Bool, nnzJ)
112+ SparseMatrixCSC(m, n, colptr, rowval, nzval)
113113end
114114
115115function get_sparsity_pattern(model:: AbstractADNLSModel , :: Val{:hessian_residual} )
116- backend = model. adbackend. hessian_residual_backend
117- validate_sparse_backend(backend, Union{SparseADHessian, SparseReverseADHessian}, " Hessian of the residual" )
118- n = model. meta. nvar
119- colptr = backend. colptr
120- rowval = backend. rowval
121- nnzH = length(rowval)
122- nzval = ones(Bool, nnzH)
123- SparseMatrixCSC(n, n, colptr, rowval, nzval)
116+ backend = model. adbackend. hessian_residual_backend
117+ validate_sparse_backend(
118+ backend,
119+ Union{SparseADHessian, SparseReverseADHessian},
120+ " Hessian of the residual" ,
121+ )
122+ n = model. meta. nvar
123+ colptr = backend. colptr
124+ rowval = backend. rowval
125+ nnzH = length(rowval)
126+ nzval = ones(Bool, nnzH)
127+ SparseMatrixCSC(n, n, colptr, rowval, nzval)
124128end
125129
126- function validate_sparse_backend(backend:: B , expected_type, derivative_name:: String ) where {B <: ADBackend }
127- if ! (backend isa expected_type)
128- error(" The current backend $B doesn't compute a sparse $derivative_name ." )
129- end
130+ function validate_sparse_backend(
131+ backend:: B ,
132+ expected_type,
133+ derivative_name:: String ,
134+ ) where {B <: ADBackend }
135+ if ! (backend isa expected_type)
136+ error(" The current backend $B doesn't compute a sparse $derivative_name ." )
137+ end
130138end
0 commit comments