7#ifndef MOFEM_CONSTRAIN_MATRIX_CTX_HPP
8 #define MOFEM_CONSTRAIN_MATRIX_CTX_HPP
105boost::shared_ptr<ConstrainMatrixCtx>
118boost::shared_ptr<ConstrainMatrixCtx>
146 const std::string &options_prefix =
"constraint_matrix_");
176 const boost::shared_ptr<ConstrainMatrixCtx> &ctx, Vec x);
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
SmartPetscObj< Mat > createCCTInverseKSP(Mat constrain_matrix, KSP ksp=nullptr, const std::string &options_prefix="constraint_matrix_")
SmartPetscObj< Mat > createProjectionMatrixP(const boost::shared_ptr< ConstrainMatrixCtx > &ctx, Vec x)
boost::shared_ptr< ConstrainMatrixCtx > createConstrainMatrixCtx(DM x_dm, DM y_dm, Mat constrain_matrix, Mat inverse_cct)
SmartPetscObj< Mat > createProjectionMatrixR(const boost::shared_ptr< ConstrainMatrixCtx > &ctx, Vec x)
SmartPetscObj< Mat > createProjectionMatrixCTCPlusQTKQ(const boost::shared_ptr< ConstrainMatrixCtx > &ctx, Vec x)
SmartPetscObj< Mat > createProjectionMatrixQ(const boost::shared_ptr< ConstrainMatrixCtx > &ctx, Vec x)
SmartPetscObj< Mat > createProjectionMatrixRT(const boost::shared_ptr< ConstrainMatrixCtx > &ctx, Vec x)
API for matrices that project onto, or lift from, a constraint space.
virtual MoFEMErrorCode applyR(Vec x, Vec f)=0
virtual MoFEMErrorCode recalculateCT()=0
virtual Mat getSystemMatrix() const =0
virtual MoFEMErrorCode applyCTC_QTKQ(Vec x, Vec f)=0
virtual ~ConstrainMatrixCtx()=default
virtual MoFEMErrorCode initializeQorP(Vec x)=0
virtual MoFEMErrorCode recalculateCTC()=0
virtual MoFEMErrorCode applyP(Vec x, Vec f)=0
virtual MoFEMErrorCode setSystemMatrix(Mat system_matrix)=0
virtual Mat getConstrainMatrix() const =0
virtual MoFEMErrorCode setConstrainMatrix(Mat constrain_matrix, Mat inverse_cct)=0
virtual MoFEMErrorCode applyRT(Vec x, Vec f)=0
virtual MoFEMErrorCode initializeQTKQ()=0
virtual MoFEMErrorCode applyQ(Vec x, Vec f)=0
virtual Mat getInverseCCT() const =0
intrusive_ptr for managing petsc objects