3 #ifndef LOCAL_STATIC_CONDENSATION_HPP
4 #define LOCAL_STATIC_CONDENSATION_HPP
28 const Eigen::MatrixXd & Perm,
43 std::tuple<Eigen::MatrixXd, Eigen::VectorXd, Eigen::MatrixXd, Eigen::VectorXd>
44 compute(
const std::pair<Eigen::MatrixXd, Eigen::VectorXd> & lsT)
47 Eigen::MatrixXd AT =
m_Perm * lsT.first *
m_Perm.transpose();
48 Eigen::VectorXd bT =
m_Perm * lsT.second;
50 Eigen::MatrixXd AT_gl, AT_sc;
51 Eigen::VectorXd bT_gl, bT_sc;
59 Eigen::VectorXd b1 = bT.head(
m_dim_gl);
60 Eigen::VectorXd b2 = bT.tail(
m_dim_sc);
63 Eigen::FullPivLU<Eigen::MatrixXd> A22pivlu(A22);
64 if( !A22pivlu.isInvertible() ) {
65 std::cout <<
"[LocalStaticCondensation] Found non invertible local matrix" << std::endl;
68 Eigen::MatrixXd A22inv_A21 = A22pivlu.solve(A21);
69 Eigen::VectorXd A22inv_b2 = A22pivlu.solve(b2);
70 AT_gl = A11 - A12 * A22inv_A21;
71 bT_gl = b1 - A12 * A22inv_b2;
78 AT_sc = Eigen::MatrixXd::Zero(0,0);
79 bT_sc = Eigen::VectorXd::Zero(0);
82 return std::make_tuple(AT_gl, bT_gl, AT_sc, bT_sc);
std::vector< size_t > m_globalDOFs_sc
Definition: local_static_condensation.hpp:103
std::vector< size_t > globalDOFs_gl()
Returns global DOFs that are not statically condensend.
Definition: local_static_condensation.hpp:86
std::tuple< Eigen::MatrixXd, Eigen::VectorXd, Eigen::MatrixXd, Eigen::VectorXd > compute(const std::pair< Eigen::MatrixXd, Eigen::VectorXd > &lsT)
Compute the local static condensation.
Definition: local_static_condensation.hpp:44
size_t dim_gl()
Returns the number of DOFs that are not statically condensed.
Definition: local_static_condensation.hpp:88
size_t m_dim_sc
Definition: local_static_condensation.hpp:105
size_t dim_sc()
Returns the number of DOFs that are statically condensed.
Definition: local_static_condensation.hpp:98
size_t m_dim_gl
Definition: local_static_condensation.hpp:104
std::vector< size_t > globalDOFs_sc()
Returns global DOFs that are statically condensend.
Definition: local_static_condensation.hpp:96
std::vector< size_t > globalDOFs_sys()
Definition: local_static_condensation.hpp:91
size_t dim_sys()
Definition: local_static_condensation.hpp:92
std::vector< size_t > m_globalDOFs_gl
Definition: local_static_condensation.hpp:102
LocalStaticCondensation(const Eigen::MatrixXd &Perm, const std::vector< size_t > &globalDOFs_gl, const std::vector< size_t > &globalDOFs_sc)
Constructor.
Definition: local_static_condensation.hpp:27
Eigen::MatrixXd m_Perm
Definition: local_static_condensation.hpp:98
Definition: ddr-klplate.hpp:27
Structure to store information for, and perform, local static condensation.
Definition: local_static_condensation.hpp:25