8#ifndef __PROJECTION_MATRIX_CTX_HPP__
9#define __PROJECTION_MATRIX_CTX_HPP__
55 string y_problem,
bool create_ksp =
true,
56 bool own_contrain_matrix =
false);
59 bool create_ksp =
true,
bool own_contrain_matrix =
false);
67 ierr = MatDestroy(&
C);
MoFEMErrorCode ConstrainMatrixMultOpCTC_QTKQ(Mat CTC_QTKQ, Vec x, Vec f)
Multiplication operator for RT = (CCT)^-TC.
MoFEMErrorCode ConstrainMatrixMultOpP(Mat P, Vec x, Vec f)
Multiplication operator for P = CT(CCT)^-1C.
MoFEMErrorCode ConstrainMatrixDestroyOpPorQ(Mat Q)
Destroy shell matrix Q.
MoFEMErrorCode ProjectionMatrixMultOpQ(Mat Q, Vec x, Vec f)
Multiplication operator for Q = I-CTC(CCT)^-1C.
MoFEMErrorCode ConstrainMatrixMultOpR(Mat R, Vec x, Vec f)
Multiplication operator for R = CT(CCT)^-1.
MoFEMErrorCode ConstrainMatrixDestroyOpQTKQ(Mat QTKQ)
Destroy shell matrix.
MoFEMErrorCode ConstrainMatrixMultOpRT(Mat RT, Vec x, Vec f)
Multiplication operator for RT = (CCT)^-TC.
static MoFEMErrorCodeGeneric< PetscErrorCode > ierr
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
implementation of Data Operators for Forces and Sources
structure for projection matrices
MoFEMErrorCode destroyQTKQ()
destroy sub-matrices used for shell matrix QTKQ
PetscLogEvent MOFEM_EVENT_projR
PetscLogEvent MOFEM_EVENT_projP
friend MoFEMErrorCode ConstrainMatrixMultOpR(Mat R, Vec x, Vec f)
Multiplication operator for R = CT(CCT)^-1.
friend MoFEMErrorCode ConstrainMatrixMultOpP(Mat P, Vec x, Vec f)
Multiplication operator for P = CT(CCT)^-1C.
PetscLogEvent MOFEM_EVENT_projCTC_QTKQ
friend MoFEMErrorCode ConstrainMatrixMultOpRT(Mat RT, Vec x, Vec f)
Multiplication operator for RT = (CCT)^-TC.
PetscLogEvent MOFEM_EVENT_projQ
friend MoFEMErrorCode ConstrainMatrixDestroyOpQTKQ()
ConstrainMatrixCtx(MoFEM::Interface &m_field, string x_problem, string y_problem, bool create_ksp=true, bool own_contrain_matrix=false)
MoFEM::Interface & mField
MoFEMErrorCode recalculateCTC()
re-calculate CTC matrix has been changed since initialization
PetscLogEvent MOFEM_EVENT_projInit
friend MoFEMErrorCode ConstrainMatrixMultOpCTC_QTKQ(Mat CTC_QTKQ, Vec x, Vec f)
Multiplication operator for RT = (CCT)^-TC.
MoFEMErrorCode destroyQorP()
destroy sub-matrices used for shell matrices P, Q, R, RT
MoFEMErrorCode initializeQTKQ()
initialize vectors and matrices for CTC+QTKQ shell matrices, scattering is set based on x_problem and...
PetscLogEvent MOFEM_EVENT_projRT
virtual ~ConstrainMatrixCtx()
friend MoFEMErrorCode ConstrainMatrixDestroyOpPorQ()
MoFEMErrorCode initializeQorP(Vec x)
initialize vectors and matrices for Q and P shell matrices, scattering is set based on x_problem and ...
MoFEMErrorCode recalculateCTandCCT()
re-calculate CT and CCT if C matrix has been changed since initialization
friend MoFEMErrorCode ProjectionMatrixMultOpQ(Mat Q, Vec x, Vec f)
Multiplication operator for Q = I-CTC(CCT)^-1C.
virtual MPI_Comm & get_comm() const =0
Deprecated interface functions.