|
ug4
|
theta time stepping scheme More...
#include <theta_time_step.h>
Inheritance diagram for ug::ThetaTimeStep< TAlgebra >:Public Types | |
| typedef TAlgebra | algebra_type |
| Type of algebra. | |
| typedef IDomainDiscretization< TAlgebra > | domain_discretization_type |
| Domain Discretization type. | |
| typedef algebra_type::matrix_type | matrix_type |
| Type of algebra matrix. | |
| typedef algebra_type::vector_type | vector_type |
| Type of algebra vector. | |
Public Types inherited from ug::MultiStepTimeDiscretization< TAlgebra > | |
| typedef TAlgebra | algebra_type |
| Type of algebra. | |
| typedef IDomainDiscretization< algebra_type > | domain_discretization_type |
| Domain Discretization type. | |
| typedef CPUAlgebra::vector_type | error_vector_type |
| Type of algebra vector. | |
| typedef algebra_type::matrix_type | matrix_type |
| Type of algebra matrix. | |
| typedef algebra_type::vector_type | vector_type |
| Type of algebra vector. | |
Public Types inherited from ug::ITimeDiscretization< TAlgebra > | |
| typedef TAlgebra | algebra_type |
| Algebra type. | |
| typedef IDomainDiscretization< TAlgebra > | domain_discretization_type |
| Domain Discretization type. | |
| typedef algebra_type::vector_type | vector_type |
| Vector type. | |
Public Types inherited from ug::IAssemble< TAlgebra > | |
| typedef TAlgebra | algebra_type |
| Algebra type. | |
| typedef TAlgebra::matrix_type | matrix_type |
| Type of algebra matrix. | |
| typedef TAlgebra::vector_type | vector_type |
| Type of algebra vector. | |
Public Member Functions | |
| virtual size_t | num_stages () const |
| returns number of stages | |
| void | set_scheme (const char *scheme) |
| sets the scheme | |
| virtual void | set_stage (size_t stage) |
| sets the stage | |
| void | set_theta (number theta) |
| sets the theta value | |
| ThetaTimeStep (SmartPtr< IDomainDiscretization< TAlgebra > > spDD) | |
| default constructor (implicit Euler) | |
| ThetaTimeStep (SmartPtr< IDomainDiscretization< TAlgebra > > spDD, const char *scheme) | |
| theta = 1.0 -> Implicit Euler, 0.0 -> Explicit Euler | |
| ThetaTimeStep (SmartPtr< IDomainDiscretization< TAlgebra > > spDD, number theta) | |
| theta = 1.0 -> Implicit Euler, 0.0 -> Explicit Euler | |
| virtual | ~ThetaTimeStep () |
Public Member Functions inherited from ug::MultiStepTimeDiscretization< TAlgebra > | |
| void | adjust_solution (vector_type &u, const GridLevel &gl) |
| void | assemble_defect (vector_type &d, const vector_type &u, const GridLevel &gl) |
| void | assemble_jacobian (matrix_type &J, const vector_type &u, const GridLevel &gl) |
| void | assemble_linear (matrix_type &A, vector_type &b, const GridLevel &gl) |
| void | assemble_rhs (vector_type &b, const GridLevel &gl) |
| void | assemble_rhs (vector_type &b, const vector_type &u, const GridLevel &gl) |
| void | calc_error (const vector_type &u) |
| void | calc_error (const vector_type &u, error_vector_type &u_vtk) |
| void | calc_error (const vector_type &u, error_vector_type *u_vtk) |
| Error estimator ///. | |
| virtual void | finish_step (SmartPtr< VectorTimeSeries< vector_type > > currSol) |
| virtual void | finish_step_elem (SmartPtr< VectorTimeSeries< vector_type > > currSol, const GridLevel &gl) |
| virtual number | future_time () const |
| returns the future time point (i.e. the one that will be computed) | |
| void | invalidate_error () |
| bool | is_error_valid () |
| returns whether error indicators are valid | |
| MultiStepTimeDiscretization (SmartPtr< IDomainDiscretization< algebra_type > > spDD) | |
| constructor | |
| virtual size_t | num_prev_steps () const |
| returns number of previous time steps needed | |
| virtual void | prepare_step (SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt) |
| prepares the assembling of Defect/Jacobian for a time step | |
| virtual void | prepare_step_elem (SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt, const GridLevel &gl) |
| prepares the assembling of Defect/Jacobian for a time step | |
| virtual | ~MultiStepTimeDiscretization () |
Public Member Functions inherited from ug::ITimeDiscretization< TAlgebra > | |
| virtual SmartPtr< IConstraint< TAlgebra > > | constraint (size_t i) |
| returns the i'th constraint | |
| SmartPtr< IDomainDiscretization< TAlgebra > > | domain_disc () const |
| return underlying domain disc | |
| ITimeDiscretization (SmartPtr< IDomainDiscretization< TAlgebra > > spDD) | |
| create and set domain discretization | |
| virtual size_t | num_constraints () const |
| returns the number of constraint | |
| void | prepare_step_elem (SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt) |
| prepares the assembling of Defect/Jacobian for a time step | |
| void | finish_step_elem (SmartPtr< VectorTimeSeries< vector_type > > currSol) |
Public Member Functions inherited from ug::IAssemble< TAlgebra > | |
| void | adjust_solution (vector_type &u) |
| virtual void | adjust_solution (vector_type &u, const GridLevel &gl)=0 |
| sets dirichlet values in solution vector | |
| void | assemble_defect (vector_type &d, const vector_type &u) |
| virtual void | assemble_defect (vector_type &d, const vector_type &u, const GridLevel &gl)=0 |
| assembles Defect | |
| void | assemble_jacobian (matrix_type &J, const vector_type &u) |
| virtual void | assemble_jacobian (matrix_type &J, const vector_type &u, const GridLevel &gl)=0 |
| assembles Jacobian (or Approximation of Jacobian) | |
| void | assemble_linear (matrix_type &A, vector_type &b) |
| virtual void | assemble_linear (matrix_type &A, vector_type &b, const GridLevel &gl)=0 |
| Assembles Matrix and Right-Hand-Side for a linear problem. | |
| void | assemble_mass_matrix (matrix_type &M, const vector_type &u) |
| virtual void | assemble_mass_matrix (matrix_type &M, const vector_type &u, const GridLevel &gl) |
| assembles mass matrix | |
| void | assemble_rhs (vector_type &b) |
| virtual void | assemble_rhs (vector_type &b, const GridLevel &gl)=0 |
| Assembles Right-Hand-Side for a linear problem. | |
| virtual void | assemble_rhs (vector_type &rhs, const vector_type &u) |
| virtual void | assemble_rhs (vector_type &rhs, const vector_type &u, const GridLevel &gl)=0 |
| assembles rhs | |
| void | assemble_stiffness_matrix (matrix_type &A, const vector_type &u) |
| virtual void | assemble_stiffness_matrix (matrix_type &A, const vector_type &u, const GridLevel &gl) |
| assembles stiffness matrix | |
| virtual | ~IAssemble () |
| Virtual Destructor. | |
Protected Member Functions | |
| virtual number | update_scaling (std::vector< number > &vSM, std::vector< number > &vSA, number dt, number currentTime, ConstSmartPtr< VectorTimeSeries< vector_type > > prevSol) |
| Error estimator ///. | |
Protected Attributes | |
| std::string | m_scheme |
| size_t | m_stage |
| number | m_theta |
Protected Attributes inherited from ug::MultiStepTimeDiscretization< TAlgebra > | |
| number | m_dt |
| Time Step size. | |
| number | m_futureTime |
| Future Time. | |
| SmartPtr< VectorTimeSeries< vector_type > > | m_pPrevSol |
| Previous solutions. | |
| size_t | m_prevSteps |
| number of previous steps needed. | |
| std::vector< number > | m_vScaleMass |
| Scaling for mass part. | |
| std::vector< number > | m_vScaleStiff |
| Scaling for stiffness part. | |
Protected Attributes inherited from ug::ITimeDiscretization< TAlgebra > | |
| SmartPtr< IDomainDiscretization< TAlgebra > > | m_spDomDisc |
| Domain Discretization. | |
theta time stepping scheme
This time stepping scheme discretizes equations of the form
\[ \partial_t u(t) = f(t) \]
as
\[ \frac{u(t^{k+1}) - u(t^k)}{\Delta t} = (1-\theta) \cdot f(t^{k+1}) + \theta \cdot f(t^k) \]
Thus, for \(\theta = 1 \) this is the Backward-Euler time stepping.
| typedef TAlgebra ug::ThetaTimeStep< TAlgebra >::algebra_type |
Type of algebra.
| typedef IDomainDiscretization<TAlgebra> ug::ThetaTimeStep< TAlgebra >::domain_discretization_type |
Domain Discretization type.
| typedef algebra_type::matrix_type ug::ThetaTimeStep< TAlgebra >::matrix_type |
Type of algebra matrix.
| typedef algebra_type::vector_type ug::ThetaTimeStep< TAlgebra >::vector_type |
Type of algebra vector.
|
inline |
default constructor (implicit Euler)
References ug::MultiStepTimeDiscretization< TAlgebra >::m_prevSteps, and ug::ThetaTimeStep< TAlgebra >::set_theta().
|
inline |
theta = 1.0 -> Implicit Euler, 0.0 -> Explicit Euler
References ug::MultiStepTimeDiscretization< TAlgebra >::m_prevSteps, and ug::ThetaTimeStep< TAlgebra >::set_theta().
|
inline |
theta = 1.0 -> Implicit Euler, 0.0 -> Explicit Euler
References ug::MultiStepTimeDiscretization< TAlgebra >::m_prevSteps, and ug::ThetaTimeStep< TAlgebra >::set_theta().
|
inlinevirtual |
|
inlinevirtual |
returns number of stages
Implements ug::ITimeDiscretization< TAlgebra >.
References ug::ThetaTimeStep< TAlgebra >::m_scheme, and UG_THROW.
|
inline |
sets the scheme
References ug::ThetaTimeStep< TAlgebra >::m_scheme.
|
inlinevirtual |
sets the stage
Implements ug::ITimeDiscretization< TAlgebra >.
References ug::ThetaTimeStep< TAlgebra >::m_stage.
|
inline |
sets the theta value
References ug::ThetaTimeStep< TAlgebra >::m_theta.
Referenced by ug::ThetaTimeStep< TAlgebra >::ThetaTimeStep(), ug::ThetaTimeStep< TAlgebra >::ThetaTimeStep(), and ug::ThetaTimeStep< TAlgebra >::ThetaTimeStep().
|
inlineprotectedvirtual |
Error estimator ///.
updates the scaling factors, returns the future time
Implements ug::MultiStepTimeDiscretization< TAlgebra >.
References ug::ThetaTimeStep< TAlgebra >::m_scheme, ug::ThetaTimeStep< TAlgebra >::m_stage, ug::ThetaTimeStep< TAlgebra >::m_theta, and UG_THROW.
|
protected |
|
protected |
|
protected |