46 #include <lifev/core/LifeV.hpp> 47 #include <lifev/core/filter/GetPot.hpp> 48 #include <lifev/core/fem/DOF.hpp> 49 #include <lifev/core/array/MatrixElemental.hpp> 50 #include <lifev/core/fem/AssemblyElemental.hpp> 51 #include <lifev/core/fem/Assembly.hpp> 52 #include <lifev/core/fem/BCManage.hpp> 53 #include <lifev/core/fem/FESpace.hpp> 54 #include <lifev/core/util/Displayer.hpp> 55 #include <lifev/eta/fem/ETFESpace.hpp> 56 #include <lifev/eta/expression/Integrate.hpp> 82 typedef RegionMesh<LinearTetra> mesh_Type;
83 typedef MatrixEpetra<Real> matrix_Type;
84 typedef std::shared_ptr<matrix_Type> matrixPtr_Type;
85 typedef VectorEpetra vector_Type;
86 typedef std::shared_ptr<vector_Type> vectorPtr_Type;
87 typedef ETFESpace< mesh_Type, MapEpetra, 3, 3 > ETFESpaceAle_Type;
88 typedef std::shared_ptr<ETFESpaceAle_Type> ETFESpaceAlePtr_Type;
102 ALESolver ( FESpace<mesh_Type, MapEpetra>& mmFESpace, std::shared_ptr<Epetra_Comm> comm);
111 ALESolver ( FESpace<mesh_Type, MapEpetra>& mmFESpace,
112 std::shared_ptr<Epetra_Comm> comm,
118 virtual ~ALESolver() {};
129 void setUp (
const GetPot& dataFile );
135 void iterate (BCHandler& BCh);
138 bool isLeader()
const 140 return M_displayer.comm()->MyPID() == 0;
144 void rescaleMatrix (Real& dt)
149 matrixPtr_Type
const& matrix()
const 154 matrixPtr_Type
const& matrix_noBC()
const 159 void updateShapeDerivatives(Real& alpha,
161 const Real& viscosity,
162 const vector_Type& un,
163 const vector_Type& uk,
165 const vector_Type& w,
166 FESpace<mesh_Type, MapEpetra>& velocityFESpace,
167 FESpace<mesh_Type, MapEpetra>& pressureFESpace,
169 bool convectiveTermDerivative,
172 matrixPtr_Type
const& shapeDerivativesVelocity()
const 174 return M_matrShapeDerVel;
177 matrixPtr_Type
const& shapeDerivativesPressure()
const 179 return M_matrShapeDerPressure;
183 void addSystemMatrixTo (matrixPtr_Type matr)
const 193 void applyBoundaryConditions (vector_Type& rhs, BCHandler& BCh);
199 void applyBoundaryConditions (BCHandler& BCh);
201 void computeMatrix();
202 void updateDispDiff();
209 vector_Type
const& disp()
const 218 MapEpetra
const& getMap()
const 223 FESpace<mesh_Type, MapEpetra>
const& mFESpace()
const 228 const std::shared_ptr<Epetra_Comm>& comm()
const 230 return M_displayer.comm();
238 FESpace<mesh_Type, MapEpetra>& M_FESpace;
241 MapEpetra M_localMap;
244 matrixPtr_Type M_matrHE;
245 matrixPtr_Type M_matrHE_BC;
248 matrixPtr_Type M_matrShapeDerVel;
249 matrixPtr_Type M_matrShapeDerPressure;
252 Displayer M_displayer;
257 MatrixElemental M_elmat;
260 vectorPtr_Type M_disp;
263 vectorPtr_Type M_secondRHS;
270 bool M_linearElasticity;
273 ETFESpaceAlePtr_Type M_aleFESpace_ETA;