68 #define COMPOSEDDN_H 1
70 #include <lifev/core/LifeV.hpp> 72 #include <lifev/core/algorithm/PreconditionerComposed.hpp> 74 #include <lifev/fsi/solver/MonolithicBlockComposed.hpp> 86 class MonolithicBlockComposedDN :
public MonolithicBlockComposed
89 typedef MonolithicBlockComposed super_Type;
91 MonolithicBlockComposedDN (
const std::vector<Int>& flag,
const std::vector<Int>& order) :
92 super_Type ( flag, order ),
105 void setDataFromGetPot (
const GetPot& dataFile,
106 const std::string& section );
116 int solveSystem (
const vector_Type& rhs, vector_Type& step, solverPtr_Type& linearSolver);
151 virtual void coupler (mapPtr_Type& map,
152 const std::map<ID, ID>& locDofMap,
153 const vectorPtr_Type& numerationInterface,
154 const Real& timeStep,
155 const Real& coefficient,
156 const Real& rescaleFactor);
164 virtual void push_back_precs ( matrixPtr_Type& Mat);
169 return M_blockPrecs->preconditionerCreated();
175 void setComm ( std::shared_ptr<Epetra_Comm> comm )
178 M_blockPrecs.reset (
new PreconditionerComposed (M_comm) );
181 const std::vector<std::shared_ptr<Preconditioner> >& blockPrecs()
const 183 return M_blockPrecs->composedPreconditionerPtr()->Operator();
190 static MonolithicBlock* createComposedDN()
192 const Int order[] = { MonolithicBlockComposed::solid, MonolithicBlockComposed::fluid};
193 const Int couplingsDN[] = { 0, 7};
194 const std::vector<Int> couplingVectorDN (couplingsDN, couplingsDN + 2);
195 const std::vector<Int> orderVector (order, order + 2);
196 return new MonolithicBlockComposedDN (couplingVectorDN, orderVector);
200 static MonolithicBlock* createComposedDN2()
202 const Int order[] = { MonolithicBlockComposed::fluid, MonolithicBlockComposed::solid};
203 const Int couplingsDN2[] = { 8, 6};
204 const std::vector<Int> couplingVectorDN2 (couplingsDN2, couplingsDN2 + 2);
205 const std::vector<Int> orderVector (order, order + 2);
206 return new MonolithicBlockComposedDN (couplingVectorDN2, orderVector);
209 static MonolithicBlock* createComposedDNGI()
238 const Int order[] = { MonolithicBlockComposed::solid, MonolithicBlockComposed::mesh, MonolithicBlockComposed::fluid };
239 const Int couplingsDNGI[] = { 0, 7, 16 };
240 const std::vector<Int> couplingVectorDNGI (couplingsDNGI, couplingsDNGI + 3);
241 const std::vector<Int> orderVector (order, order + 3);
242 return new MonolithicBlockComposedDN ( couplingVectorDNGI, orderVector );
246 static MonolithicBlock* createComposedDN2GI()
275 const Int order[] = { MonolithicBlockComposed::fluid, MonolithicBlockComposed::solid, MonolithicBlockComposed::mesh };
276 const Int couplingsDN2GI[] = { 8, 6, 16 };
277 const std::vector<Int> couplingVectorDN2GI (couplingsDN2GI, couplingsDN2GI + 3);
278 const std::vector<Int> orderVector (order, order + 3);
279 return new MonolithicBlockComposedDN ( couplingVectorDN2GI, orderVector );
292 virtual void replace_precs ( matrixPtr_Type& Mat, UInt position);
301 std::shared_ptr<PreconditionerComposed> M_blockPrecs;
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
double Real
Generic real data.