38 #ifndef _MONOLITHICGI_HPP 39 #define _MONOLITHICGI_HPP 41 #include <lifev/fsi/solver/FSIMonolithic.hpp> 42 #include <lifev/core/array/MatrixBlockMonolithicEpetra.hpp> 43 #include <lifev/core/array/VectorBlockMonolithicEpetra.hpp> 52 typedef FactorySingleton< Factory< FSIOperator, std::string > > FSIFactory_Type;
85 class FSIMonolithicGI :
public FSIMonolithic
89 typedef FSIMonolithic super_Type;
90 typedef Preconditioner prec_Type;
91 typedef std::shared_ptr< prec_Type > prec_type;
100 virtual ~FSIMonolithicGI() {}
110 void setup (
const GetPot& dataFile );
113 void setupFluidSolid (
UInt const fluxes );
124 void evalResidual ( vector_Type& res,
const vector_Type& sol,
const UInt iter );
132 void applyBoundaryConditions();
134 void updateSolution (
const vector_Type& solution )
136 super_Type::updateSolution ( solution );
141 vectorPtr_Type displacementToSave (
new vector_Type (M_mmFESpace->map() ) );
143 displacementToSave->subset (solution, offset);
150 M_ALETimeAdvance->shiftRight ( *displacementToSave );
157 void setALEVectorInStencil (
const vectorPtr_Type& fluidDisp,
159 const bool lastVector);
167 if ( M_epetraWorldComm->MyPID() == 0 )
169 std::cerr << std::endl <<
"Warning: FSIMonolithic::solution() is deprecated!" << std::endl
170 <<
" You should not access the solution inside FSIOperator or FSIMonolithic!" << std::endl;
173 return M_fluidTimeAdvance->singleElement (0);
177 const MapEpetra& mapWithoutMesh()
const 179 return *M_mapWithoutMesh;
183 const matrixPtr_Type matrixPtr()
const 185 return M_monolithicMatrix->matrix();
188 static bool S_register;
198 void setupBlockPrec();
208 void createOperator ( std::string& operType )
210 M_monolithicMatrix.reset ( MonolithicBlockMatrix::Factory_Type::instance().createObject ( operType ) );
211 M_monolithicMatrix.reset ( MonolithicBlockMatrix::Factory_Type::instance().createObject ( operType ) );
219 void shapeDerivatives ( FSIOperator::fluid_Type::matrixPtr_Type sdMatrix );
226 void assembleMeshBlock (
UInt iter );
234 std::shared_ptr<MapEpetra> M_mapWithoutMesh;
239 matrixPtr_Type M_meshBlock;
240 FSIOperator::fluid_Type::matrixPtr_Type M_shapeDerivativesBlock;
241 matrixPtr_Type M_solidDerBlock;
246 static FSIOperator* instantiate()
248 return new FSIMonolithicGI();
254 inline FSIMonolithic* createFSIMonolithicGI()
256 return new FSIMonolithicGI();
void assignFunction(bcBase_Type &base)
Assign the function to the base of the BCHandler.
const UInt nDimensions(NDIM)
#define LIFEV_DEPRECATED(func)
uint32_type UInt
generic unsigned integer (used mainly for addressing)