154 const std::vector<size_type> &row_lengths,
155 const bool is_symmetric)
162 const std::vector<PetscInt> int_row_lengths(row_lengths.begin(),
165 const PetscErrorCode ierr = MatCreateSeqAIJ(
166 PETSC_COMM_SELF,
m,
n, 0, int_row_lengths.data(), &
matrix);
181 const bool preset_nonzero_locations)
186 sparsity_pattern.n_rows());
188 sparsity_pattern.n_cols());
190 std::vector<size_type> row_lengths(sparsity_pattern.n_rows());
191 for (
size_type i = 0; i < sparsity_pattern.n_rows(); ++i)
192 row_lengths[i] = sparsity_pattern.row_length(i);
195 sparsity_pattern.n_cols(),
212 if (preset_nonzero_locations ==
true)
214 std::vector<PetscInt> row_entries;
215 std::vector<PetscScalar> row_values;
216 for (
size_type i = 0; i < sparsity_pattern.n_rows(); ++i)
218 row_entries.resize(row_lengths[i]);
219 row_values.resize(row_lengths[i]);
220 for (
size_type j = 0; j < row_lengths[i]; ++j)
223 static_cast<PetscInt
>(sparsity_pattern.column_number(i, j));
224 row_entries[j] = petsc_j;
227 const auto petsc_i =
static_cast<PetscInt
>(i);
228 const PetscErrorCode ierr = MatSetValues(
matrix,