| 97 | } |
| 98 | |
| 99 | void PythonModel::compute_jacobian_sparsity(uno_int * row_indices, uno_int * column_indices, uno_int row_offset, |
| 100 | uno_int column_offset, uno_int solver_indexing, MatrixOrder /*matrix_format*/) const { |
| 101 | // copy the indices of the user sparsity patterns to the Uno vectors |
| 102 | for (size_t index: Range(static_cast<size_t>(this->user_model.number_jacobian_nonzeros))) { |
| 103 | row_indices[index] = this->user_model.jacobian_row_indices[index] + row_offset; |
| 104 | column_indices[index] = this->user_model.jacobian_column_indices[index] + column_offset; |
| 105 | } |
| 106 | // TODO matrix_format |
| 107 | |
| 108 | // handle the solver indexing |
| 109 | if (this->user_model.base_indexing != solver_indexing) { |
| 110 | const int indexing_difference = solver_indexing - this->user_model.base_indexing; |
| 111 | for (size_t index: Range(static_cast<size_t>(this->user_model.number_jacobian_nonzeros))) { |
| 112 | row_indices[index] += indexing_difference; |
| 113 | column_indices[index] += indexing_difference; |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | void PythonModel::compute_hessian_sparsity(uno_int *row_indices, uno_int *column_indices, uno_int solver_indexing) const { |
| 119 | // copy the indices of the user sparsity patterns to the Uno vectors |