5 #include <Eigen/SparseCore> 7 #include <amdis/common/Index.hpp> 8 #include <amdis/linearalgebra/Constraints.hpp> 9 #include <amdis/linearalgebra/eigen/MatrixBackend.hpp> 10 #include <amdis/linearalgebra/eigen/VectorBackend.hpp> 14 template <
class T,
int O>
20 template <
class BitVector>
21 static void dirichletBC(Matrix& mat,
Vector& sol,
Vector& rhs, BitVector
const& nodes,
bool setDiagonal =
true)
23 clearDirichletRow(mat.
matrix(), nodes, setDiagonal);
32 template <
class BitVector,
class Associations>
33 static void periodicBC(Matrix& mat,
Vector& sol,
Vector& rhs, BitVector
const& left, Associations
const& left2right,
34 bool setDiagonal =
true)
40 template <
class BitVector>
41 static void clearDirichletRow(Eigen::SparseMatrix<T, Eigen::ColMajor>& mat, BitVector
const& nodes,
bool setDiagonal)
43 using Mat = Eigen::SparseMatrix<T, Eigen::ColMajor>;
44 for (
typename Mat::Index c = 0; c < mat.outerSize(); ++c) {
45 for (
typename Mat::InnerIterator it(mat, c); it; ++it) {
46 if (nodes[it.row()]) {
47 it.valueRef() = (setDiagonal && it.row() == it.col() ? T(1) : T(0));
54 template <
class BitVector>
55 static void clearDirichletRow(Eigen::SparseMatrix<T, Eigen::RowMajor>& mat, BitVector
const& nodes,
bool setDiagonal)
57 using Mat = Eigen::SparseMatrix<T, Eigen::RowMajor>;
58 for (
typename Mat::Index r = 0; r < mat.outerSize(); ++r) {
60 for (
typename Mat::InnerIterator it(mat, r); it; ++it) {
61 it.valueRef() = (setDiagonal && it.row() == it.col() ? T(1) : T(0));
void error_exit(std::string const &str, Args &&... args)
print a message and exit
Definition: Output.hpp:142
Contains all classes needed for solving linear and non linear equation systems.
Definition: AdaptBase.hpp:6
The basic container that stores a base vector and a corresponding basis.
Definition: VectorBackend.hpp:16
The basic container that stores a base matrix and a corresponding row/column feSpace.
Definition: MatrixBackend.hpp:19
typename BaseVector::Index size_type
The index/size - type.
Definition: VectorBackend.hpp:27
BaseMatrix & matrix()
Return a reference to the data-matrix matrix.
Definition: MatrixBackend.hpp:37
BaseVector const & vector() const
Return the data-vector vector_.
Definition: VectorBackend.hpp:42
Definition: Constraints.hpp:13