2 #ifndef LOCAL_SYSTEM_HH_ 3 #define LOCAL_SYSTEM_HH_ 122 double mat_val,
double rhs_val);
200 static constexpr
double almost_zero = std::numeric_limits<double>::min();
206 #endif // LOCAL_SYSTEM_HH_
void set_solution_col(uint loc_col, double solution)
const arma::mat & get_matrix()
const arma::vec & get_rhs()
arma::Col< IntIdx > LocDofVec
void set_matrix(arma::mat matrix)
void compute_schur_complement(uint offset, LocalSystem &schur, bool negative=false) const
Computes Schur complement of the local system: S = C - B * invA * Bt Applicable for square matrices...
void set_sparsity(const arma::umat &sp)
Sets the sparsity pattern for the local system.
static constexpr double almost_zero
Prefered values on the diagonal after elimination.
LocDofVec elim_cols
Rows indices of rows to be eliminated.
arma::vec rhs
local system RHS
arma::vec solution_rows
Cols indices of cols to be eliminated.
void add_value(uint row, uint col, double mat_val, double rhs_val)
Adds a single entry into the local system.
ArmaMat< double, N, M > mat
arma::mat sparsity
sparsity pattern
void reset()
Resets the matrix, RHS, dofs to zero and clears solution settings.
void set_size(uint nrows, uint ncols)
arma::vec diag_rows
Values of the known solution (for col dofs).
LocalSystem()
Default constructor.
arma::mat matrix
local system matrix
void reconstruct_solution_schur(uint offset, const arma::vec &schur_solution, arma::vec &reconstructed_solution) const
Reconstructs the solution from the Schur complement solution: x = invA*b - invA * Bt * schur_solution...
void set_solution_row(uint loc_row, double solution, double diag=0.0)
void set_rhs(arma::vec rhs)
arma::vec solution_cols
Values of the known solution (for row dofs).
uint n_elim_rows
Number of rows/cols to be eliminated due to known solution.
void eliminate_solution()
void set_solution(uint loc_dof, double solution, double diag=0.0)
Set the position and value of known solution. E.g. Dirichlet boundary condition.