39 #define COMPOSEDNN_H 1
41 #include <lifev/fsi/solver/MonolithicBlockComposed.hpp> 56 class MonolithicBlockComposedNN:
public MonolithicBlockComposed
60 enum Block { solid1, fluid1, solid2, fluid2 };
61 typedef MonolithicBlockComposed super_Type;
62 typedef ComposedOperator<Ifpack_Preconditioner> composed_prec;
69 MonolithicBlockComposedNN (
const std::vector<Int>& flag,
const std::vector<Int>& order) :
70 super_Type ( flag, order ),
77 ~MonolithicBlockComposedNN() {}
92 void setDataFromGetPot (
const GetPot& data,
const std::string& section );
102 virtual int solveSystem (
const vector_Type& rhs, vector_Type& step, solverPtr_Type& linearSolver);
118 virtual void coupler ( mapPtr_Type& map,
119 const std::map<ID, ID>& locDofMap,
120 const vectorPtr_Type& numerationInterface,
121 const Real& timeStep,
122 const Real& coefficient,
123 const Real& rescaleFactor);
132 void applyBoundaryConditions (
const Real& time,
const UInt i);
139 void push_back_matrix (
const matrixPtr_Type& Mat,
const bool recompute );
146 void replace_matrix (
const matrixPtr_Type& oper,
UInt position );
150 return (
bool) M_blockPrecs.get() && M_blockPrecs->number();
158 static MonolithicBlock* createComposedNN()
160 const Int order[] = { MonolithicBlockComposedNN::fluid1, MonolithicBlockComposedNN::solid1, MonolithicBlockComposedNN::fluid2, MonolithicBlockComposedNN::solid2};
161 const Int couplingsNN[] = { 8, 4, 1, 2};
162 const std::vector<Int> couplingVectorNN (couplingsNN, couplingsNN + 4);
163 const std::vector<Int> orderVector (order, order + 4);
164 return new MonolithicBlockComposedNN ( couplingVectorNN, orderVector );
175 std::shared_ptr<ComposedOperator<ComposedOperator<Ifpack_Preconditioner> > > M_blockPrecs;
176 Teuchos::ParameterList M_list;
177 std::vector<std::shared_ptr<Ifpack_Preconditioner> > M_prec;
186 std::shared_ptr< composed_prec > M_firstCompPrec ;
187 std::shared_ptr< composed_prec > M_secondCompPrec;
189 std::vector<matrix_Type> M_matrixVector;
191 std::string M_precType;
192 #ifdef HAVE_IFPACK_DYNAMIC_FACTORY 193 Ifpack_DynamicFactory M_factory;
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
int32_type Int
Generic integer data.
double Real
Generic real data.
uint32_type UInt
generic unsigned integer (used mainly for addressing)