Class GooseFEM::MatrixPartitionedSolver#
-
template<class Solver = Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>>
class MatrixPartitionedSolver : public MatrixSolverBase<MatrixPartitionedSolver<Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>>>, public MatrixSolverPartitionedBase<MatrixPartitionedSolver<Eigen::SimplicialLDLT<Eigen::SparseMatrix<double>>>># Solve \( x_u = A_{uu}^{-1} (b_u - A_{up} * x_p) \) for
A
of the MatrixPartitioned() class.You can solve for multiple right-hand-sides using one factorisation.
For “nodevec” input
x
is used to read \( x_p \), while \( x_u \) is written. See MatrixPartitioned::Reaction() to get \( b_p \).Public Functions
-
template<class M>
inline array_type::tensor<double, 1> Solve_u(M &A, const array_type::tensor<double, 1> &b_u, const array_type::tensor<double, 1> &x_p)# Solve \( x = A^{-1} b \).
- Parameters
A – GooseFEM (sparse) matrix, see e.g. GooseFEM::MatrixPartitioned().
b_u – unknown dofval [nnu].
x_p – prescribed dofval [nnp]
- Returns
x_u unknown dofval [nnu].
-
template<class M>
inline void solve_u(M &A, const array_type::tensor<double, 1> &b_u, const array_type::tensor<double, 1> &x_p, array_type::tensor<double, 1> &x_u)# Same as Solve \( x = A^{-1} b \).
- Parameters
A – GooseFEM (sparse) matrix, see e.g. GooseFEM::MatrixPartitioned().
b_u – unknown dofval [nnu].
x_p – prescribed dofval [nnp]
x_u – (overwritten) unknown dofval [nnu].
-
template<class M>