LifeV
|
timeAdvance_template - File containing a class to deal the time advancing scheme More...
#include <TimeAdvance.hpp>
Public Types | |
typedef feVectorType | feVector_Type |
typedef ScalarVector | container_Type |
typedef std::vector< feVector_Type > | feVectorContainer_Type |
typedef std::vector< feVector_Type * > | feVectorContainerPtr_Type |
typedef feVectorContainerPtr_Type::iterator | feVectorContainerPtrIterate_Type |
typedef std::vector< std::shared_ptr< feVector_Type > > | feVectorSharedPtrContainer_Type |
Constructor & Destructor | |
TimeAdvance () | |
Empty Constructor. More... | |
virtual | ~TimeAdvance () |
Destructor. More... | |
Methods | |
virtual void | shiftRight (const feVector_Type &solution)=0 |
Update the vectors of the previous time steps by shifting on the right. More... | |
timeAdvance_template - File containing a class to deal the time advancing scheme
This class define an abstract method to build temporal discretization schemes. In particular we consider problems of the first order and the second order in time; that after space and time discretization, and suitable linearisation of non linear operator, we obtain a linear system to solve at each time step (or each iteration ):
where is an opportune matrix, is the unknown vector and is the right hand side vector at the time . To determine we define the state vector that contained the informations about previous solutions.
First order problems:
where L is a generic nonlinear operator. We define U an approximation of u and the velocity vector an approximation of at the time step as
where is a suitable coefficient and is a linear combination of the previous solutions with coefficients , that will be specified in the following.
Then the time discrete version is
, that can be solved by any non-linear iterative solver (fixed point, Newton, ....). This class provides also a suitable extrapolation of , given by a linear combination of previous solutions and of order consistent with the time discretization formula.
In this part we want to extend the previous approach to second order problems in time.
Second order problems:
where is non linear operator.
We consider the following semidiscrete problem
where is the mass matrix, the forcing term and is the vector of unknowns.
We define the following quantities
where and are the velocity and the acceleration vectors, respectively.
At the time step , we consider the following approximations of and :
and
where and are linear combinations of the previous solutions with suitable coefficients and , respectively. If and depend on and we can linearise the problem using suitable extrapolations obtained by linear combinations of previous solutions with coefficients and respectively.
Definition at line 130 of file TimeAdvance.hpp.
typedef feVectorType feVector_Type |
Definition at line 137 of file TimeAdvance.hpp.
typedef ScalarVector container_Type |
Definition at line 140 of file TimeAdvance.hpp.
typedef std::vector<feVector_Type> feVectorContainer_Type |
Definition at line 143 of file TimeAdvance.hpp.
typedef std::vector<feVector_Type*> feVectorContainerPtr_Type |
Definition at line 146 of file TimeAdvance.hpp.
typedef feVectorContainerPtr_Type::iterator feVectorContainerPtrIterate_Type |
Definition at line 149 of file TimeAdvance.hpp.
typedef std::vector<std::shared_ptr<feVector_Type> > feVectorSharedPtrContainer_Type |
Definition at line 152 of file TimeAdvance.hpp.
TimeAdvance | ( | ) |
Empty Constructor.
Definition at line 513 of file TimeAdvance.hpp.
|
virtual |
Destructor.
Definition at line 524 of file TimeAdvance.hpp.
|
pure virtual |
Update the vectors of the previous time steps by shifting on the right.
Update the vectors of the previous time steps by shifting on the right the old values.
solution | is a (new) value of the state vector |
Implemented in TimeAdvanceBDF< feVectorType >, TimeAdvanceBDF< double >, TimeAdvanceBDF< VectorType >, TimeAdvanceBDF< vector_Type >, and TimeAdvanceNewmark< feVectorType >.