27class PrecOpFaCSI :
public PreconditionerOperator<SC,LO,GO,NO> {
30 typedef Teuchos::RCP<Thyra::LinearOpBase<SC> > ThyraLinOpPtr_Type;
31 typedef Teuchos::Comm<int> Comm_Type;
32 typedef Teuchos::RCP<const Comm_Type> CommConstPtr_Type;
36 PrecOpFaCSI(CommConstPtr_Type comm,
bool fluidPrecMonolithic,
bool useFluidPreconditioner =
true,
bool useSolidPreconditioner =
true,
bool onlyDiagonal=
false);
38 void setGE(ThyraLinOpPtr_Type C1,
39 ThyraLinOpPtr_Type C1T,
40 ThyraLinOpPtr_Type C2,
41 ThyraLinOpPtr_Type sInv,
42 ThyraLinOpPtr_Type fInv,
43 ThyraLinOpPtr_Type fF,
44 ThyraLinOpPtr_Type fBT);
46 void setGI(ThyraLinOpPtr_Type C1,
47 ThyraLinOpPtr_Type C1T,
48 ThyraLinOpPtr_Type C2,
49 ThyraLinOpPtr_Type C4,
50 ThyraLinOpPtr_Type sInv,
51 ThyraLinOpPtr_Type fInv,
52 ThyraLinOpPtr_Type fF,
53 ThyraLinOpPtr_Type fBT,
54 ThyraLinOpPtr_Type gInv);
56 void setGIShape(ThyraLinOpPtr_Type C1,
57 ThyraLinOpPtr_Type C1T,
58 ThyraLinOpPtr_Type C2,
59 ThyraLinOpPtr_Type C4,
60 ThyraLinOpPtr_Type sInv,
61 ThyraLinOpPtr_Type fInv,
62 ThyraLinOpPtr_Type fF,
63 ThyraLinOpPtr_Type fBT,
64 ThyraLinOpPtr_Type gInv,
65 ThyraLinOpPtr_Type shape_v,
66 ThyraLinOpPtr_Type shape_p);
68 void setC1(ThyraLinOpPtr_Type C1);
69 void setC1T(ThyraLinOpPtr_Type C1T);
70 void setC2(ThyraLinOpPtr_Type C2);
71 void setC4(ThyraLinOpPtr_Type C4);
72 void setShapeDeriv(ThyraLinOpPtr_Type shape_v, ThyraLinOpPtr_Type shape_p);
73 void setStructInv(ThyraLinOpPtr_Type sInv);
74 void setFluidInv(ThyraLinOpPtr_Type fInv);
75 void setGeoInv(ThyraLinOpPtr_Type gInv);
76 void setFluidF(ThyraLinOpPtr_Type fF);
77 void setFluidBT(ThyraLinOpPtr_Type fBT);
82 const Thyra::EOpTransp M_trans,
83 const Thyra::MultiVectorBase<SC> &X,
84 const Teuchos::Ptr<Thyra::MultiVectorBase<SC> > &Y,
92 const Thyra::EOpTransp M_trans,
93 const Thyra::MultiVectorBase<SC> &X,
94 const Teuchos::Ptr<Thyra::MultiVectorBase<SC> > &Y,
105 void copyToMono(Teuchos::Array< Teuchos::RCP< Thyra::MultiVectorBase< SC > > > X_fluid)
const;
107 void copyFromMono(Teuchos::Array< Teuchos::RCP< Thyra::MultiVectorBase< SC > > > Y_fluid)
const;
109 ThyraLinOpPtr_Type C1_;
110 ThyraLinOpPtr_Type C1T_;
111 ThyraLinOpPtr_Type C2_;
112 ThyraLinOpPtr_Type C4_;
113 ThyraLinOpPtr_Type sInv_;
114 ThyraLinOpPtr_Type fInv_;
115 ThyraLinOpPtr_Type fF_;
116 ThyraLinOpPtr_Type fBT_;
117 ThyraLinOpPtr_Type gInv_;
118 ThyraLinOpPtr_Type shape_v_;
119 ThyraLinOpPtr_Type shape_p_;
120 mutable Teuchos::RCP<const Thyra::DefaultProductVectorSpace<SC> > productRangeFluid_;
121 bool fluidPrecMonolithic_;
122 mutable Teuchos::RCP< Thyra::MultiVectorBase<SC> > X_fmono_;
123 mutable Teuchos::RCP< Thyra::MultiVectorBase<SC> > Y_fmono_;
124 CommConstPtr_Type comm_;
125 bool useFluidPreconditioner_;
126 bool useSolidPreconditioner_;
128 mutable Teuchos::RCP< Thyra::MultiVectorBase<SC> > tmp_l_;
129 mutable Teuchos::RCP< Thyra::MultiVectorBase<SC> > Z_fv_;
virtual void applyImpl(const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase< SC > &X, const Teuchos::Ptr< Thyra::MultiVectorBase< SC > > &Y, const SC alpha, const SC beta) const
Definition PrecOpFaCSI_def.hpp:204