43 PETScMatrix(
const PetscInt nrows,
const PetscInt ncols,
58 MatAssemblyBegin(
A_, asm_type);
59 MatAssemblyEnd(
A_, asm_type);
102 void set(
const PetscInt i,
const PetscInt j,
const PetscScalar value)
104 PetscCallAbort(PETSC_COMM_WORLD,
105 MatSetValue(
A_, i, j, value, INSERT_VALUES));
114 void add(
const PetscInt i,
const PetscInt j,
const PetscScalar value)
116 PetscCallAbort(PETSC_COMM_WORLD,
117 MatSetValue(
A_, i, j, value, ADD_VALUES));
136 template <
class T_DENSE_MATRIX>
138 const T_DENSE_MATRIX& sub_matrix)
144 std::vector<PetscInt> cols;
145 cols.reserve(indices.
columns.size());
146 for (
auto col : indices.
columns)
155 cols.push_back(std::abs(col));
159 add(indices.
rows, cols, sub_matrix);
170 template <
class T_DENSE_MATRIX>
171 void add(std::vector<PetscInt>
const& row_pos,
172 std::vector<PetscInt>
const& col_pos,
173 const T_DENSE_MATRIX& sub_mat);
204 void viewer(
const std::string& file_name,
205 const PetscViewerFormat vw_format = PETSC_VIEWER_ASCII_MATLAB);
212 PetscCallAbort(PETSC_COMM_WORLD, MatDestroy(&
A_));
246 void create(
const PetscInt d_nz,
const PetscInt o_nz);
249 const MatAssemblyType asm_type);
252template <
class T_DENSE_MATRIX>
254 std::vector<PetscInt>
const& col_pos,
255 const T_DENSE_MATRIX& sub_mat)
257 const PetscInt nrows =
static_cast<PetscInt
>(row_pos.size());
258 const PetscInt ncols =
static_cast<PetscInt
>(col_pos.size());
260 PetscCallAbort(PETSC_COMM_WORLD,
261 MatSetValues(
A_, nrows, &row_pos[0], ncols, &col_pos[0],
262 sub_mat.data(), ADD_VALUES));
272 PETScMatrix& mat,
const MatAssemblyType asm_type = MAT_FINAL_ASSEMBLY);
Wrapper class for PETSc matrix routines for matrix.
PetscInt n_loc_cols_
Number of the local columns.
Mat const & getRawMatrix() const
PetscInt getNumberOfLocalRows() const
Get the number of local rows.
friend bool finalizeMatrixAssembly(PETScMatrix &mat, const MatAssemblyType asm_type)
General interface for the matrix assembly.
PETScMatrix & operator=(PETScMatrix const &A)
Mat & getRawMatrix()
Get matrix reference.
PetscInt getNumberOfColumns() const
Get the number of columns.
void add(RowColumnIndices< PetscInt > const &indices, const T_DENSE_MATRIX &sub_matrix)
Add sub-matrix at positions given by global indices, in which negative index indicates ghost entry.
void setZero()
Set all entries to zero.
void create(const PetscInt d_nz, const PetscInt o_nz)
Create the matrix, configure memory allocation and set the related member data.
PetscInt getRangeEnd() const
Get the end global index of the rows in the same rank.
void set(const PetscInt i, const PetscInt j, const PetscScalar value)
Set a single entry with a value.
PetscInt end_rank_
Ending index in a rank.
PetscInt getRangeBegin() const
Get the start global index of the rows of the same rank.
void finalizeAssembly(const MatAssemblyType asm_type=MAT_FINAL_ASSEMBLY)
Perform MPI collection of assembled entries in buffer.
PetscInt n_loc_rows_
Number of the local rows.
PetscInt nrows_
Number of the global rows.
void setRowsColumnsZero(std::vector< PetscInt > const &row_pos)
Set the specified rows to zero except diagonal entries, i.e. , where This function must be called...
PetscInt ncols_
Number of the global columns.
void viewer(const std::string &file_name, const PetscViewerFormat vw_format=PETSC_VIEWER_ASCII_MATLAB)
void add(const PetscInt i, const PetscInt j, const PetscScalar value)
Add value to a single entry.
PetscInt getNumberOfRows() const
Get the number of rows.
PetscInt start_rank_
Starting index in a rank.
PetscInt getNumberOfLocalColumns() const
Get the number of local columns.
bool finalizeMatrixAssembly(MAT_T &)
This a struct data containing the configuration information to create a PETSc type matrix.
LineIndex const & columns