LifeV
TimeAdvance< feVectorType > Class Template Referenceabstract

timeAdvance_template - File containing a class to deal the time advancing scheme More...

#include <TimeAdvance.hpp>

+ Inheritance diagram for TimeAdvance< feVectorType >:

Public Types

typedef feVectorType feVector_Type
 
typedef ScalarVector container_Type
 
typedef std::vector< feVector_TypefeVectorContainer_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...
 

Detailed Description

template<typename feVectorType = VectorEpetra>
class LifeV::TimeAdvance< feVectorType >

timeAdvance_template - File containing a class to deal the time advancing scheme

Author
Matteo Pozzoli matte.nosp@m.o1.p.nosp@m.ozzol.nosp@m.i@ma.nosp@m.il.po.nosp@m.limi.nosp@m..it

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 ):

\[ K U^{n+1} =F^{n+1}\]

where $K$ is an opportune matrix, $ U^{n+1}$ is the unknown vector and $F^{n+1}$ is the right hand side vector at the time $t^{n+1}$ . To determine $F^{n+1}$ we define the state vector $X^{n+1}$ that contained the informations about previous solutions.

  1. First order problems:

    \[ M \frac{\partial u}{\partial t} + L( u) = f ,\]

    where L is a generic nonlinear operator. We define U an approximation of u and the velocity vector $V$ an approximation of $\dot{u}$ at the time step $n+1$ as

    \[ V^{n+1}=\frac{\alpha_0}{\Delta t} U^{n+1}- f_V^{n+1}, \]

    where $\alpha_0$ is a suitable coefficient and $f_V$ is a linear combination of the previous solutions $X^{n+1}$ with coefficients $\alpha_i$, that will be specified in the following.

    Then the time discrete version is

    \[ \frac{\alpha_0}{\Delta t}M U^{n+1} +A (U^{n+1})= f^{n+1}+ M f_V^{n+1} \]

    , that can be solved by any non-linear iterative solver (fixed point, Newton, ....). This class provides also a suitable extrapolation $ U^*$ of $U^{n+1}$, given by a linear combination of previous solutions and of order consistent with the time discretization formula.

  2. In this part we want to extend the previous approach to second order problems in time.

    Second order problems:

    \[ \ddot{ u} + L( \dot{u}, u) = f \]

    where $L$ is non linear operator.

    We consider the following semidiscrete problem

    \[ M \frac{d^2 U}{d t^2} + D ( U, \frac{d U}{d t} ) + A ( U ) = f \]

    where $M$ is the mass matrix, $f_V$ the forcing term and $U$ is the vector of unknowns.

    We define the following quantities

    \[ V :=\frac{d U}{d t }\qquad W := \frac{d^2 U} {d t^2}, \]

    where $V$ and $W$ are the velocity and the acceleration vectors, respectively.

    At the time step $n+1$, we consider the following approximations of $V$ and $W$:

    \[ V^{n+1}=\frac{\alpha_0}{\Delta t} U^{n+1}- f_V^{n+1}, \]

    and

    \[ W^{n+1}=\frac{\xi_0}{\Delta t^2} U^{n+1} - f_W^{n+1}, \]

    where $f_V^{n+1}$ and $f_W^{n+1}$ are linear combinations of the previous solutions with suitable coefficients $\alpha_i$ and $\xi_i$, respectively. If $A$ and $D$ depend on $U$ and $V$ we can linearise the problem using suitable extrapolations $U^*$ $V^*$ obtained by linear combinations of previous solutions with coefficients $\beta_i$ and $\beta_i^V$ respectively.

Definition at line 130 of file TimeAdvance.hpp.

Member Typedef Documentation

◆ feVector_Type

typedef feVectorType feVector_Type

Definition at line 137 of file TimeAdvance.hpp.

◆ container_Type

Definition at line 140 of file TimeAdvance.hpp.

◆ feVectorContainer_Type

typedef std::vector<feVector_Type> feVectorContainer_Type

Definition at line 143 of file TimeAdvance.hpp.

◆ feVectorContainerPtr_Type

Definition at line 146 of file TimeAdvance.hpp.

◆ feVectorContainerPtrIterate_Type

typedef feVectorContainerPtr_Type::iterator feVectorContainerPtrIterate_Type

Definition at line 149 of file TimeAdvance.hpp.

◆ feVectorSharedPtrContainer_Type

typedef std::vector<std::shared_ptr<feVector_Type> > feVectorSharedPtrContainer_Type

Definition at line 152 of file TimeAdvance.hpp.

Constructor & Destructor Documentation

◆ TimeAdvance()

Empty Constructor.

Definition at line 513 of file TimeAdvance.hpp.

◆ ~TimeAdvance()

~TimeAdvance ( )
virtual

Destructor.

Definition at line 524 of file TimeAdvance.hpp.

Member Function Documentation

◆ shiftRight()

virtual void shiftRight ( const feVector_Type solution)
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.

Parameters
solutionis a (new) value of the state vector

Implemented in TimeAdvanceBDF< feVectorType >, TimeAdvanceBDF< double >, TimeAdvanceBDF< VectorType >, TimeAdvanceBDF< vector_Type >, and TimeAdvanceNewmark< feVectorType >.


The documentation for this class was generated from the following file: