OGS
PETScTools.cpp
Go to the documentation of this file.
1
17#include "PETScTools.h"
18
19namespace MathLib
20{
22 const std::vector<PetscInt>& vec_knownX_id,
23 const std::vector<PetscScalar>& vec_knownX_x)
24{
26
27#ifndef NDEBUG
28 if (std::any_of(vec_knownX_id.begin(), vec_knownX_id.end(),
29 [](PetscInt const i) { return i < 0; }))
30 {
32 "Found negative indices in the vector of Dirichlet boundary "
33 "conditions.");
34 }
35#endif // NDEBUG
36
37 A.setRowsColumnsZero(vec_knownX_id);
39
42 if (vec_knownX_id.size() > 0)
43 {
44 x.set(vec_knownX_id, vec_knownX_x);
45 b.set(vec_knownX_id, vec_knownX_x);
46 }
47
50}
51
52} // end of namespace MathLib
#define OGS_FATAL(...)
Definition Error.h:26
Declaration of a function related to PETSc solver interface to assign the Dirichlet boundary conditio...
Wrapper class for PETSc matrix routines for matrix.
Definition PETScMatrix.h:32
void finalizeAssembly(const MatAssemblyType asm_type=MAT_FINAL_ASSEMBLY)
Perform MPI collection of assembled entries in buffer.
Definition PETScMatrix.h:67
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...
Wrapper class for PETSc vector.
Definition PETScVector.h:40
void finalizeAssembly()
Perform MPI collection of assembled entries in buffer.
void set(const PetscInt i, const PetscScalar value)
void applyKnownSolution(EigenMatrix &A, EigenVector &b, EigenVector &, const std::vector< EigenMatrix::IndexType > &vec_knownX_id, const std::vector< double > &vec_knownX_x)