ug4
ug::SDIRK< TAlgebra > Class Template Reference

Singly Diagonal Implicit Runge Kutta Method. More...

#include <theta_time_step.h>

+ Inheritance diagram for ug::SDIRK< TAlgebra >:

Public Types

typedef TAlgebra algebra_type
 Type of algebra. More...
 
typedef IDomainDiscretization< TAlgebra > domain_discretization_type
 Domain Discretization type. More...
 
typedef algebra_type::matrix_type matrix_type
 Type of algebra matrix. More...
 
typedef algebra_type::vector_type vector_type
 Type of algebra vector. More...
 
- Public Types inherited from ug::MultiStepTimeDiscretization< TAlgebra >
typedef TAlgebra algebra_type
 Type of algebra. More...
 
typedef IDomainDiscretization< algebra_typedomain_discretization_type
 Domain Discretization type. More...
 
typedef CPUAlgebra::vector_type error_vector_type
 Type of algebra vector. More...
 
typedef algebra_type::matrix_type matrix_type
 Type of algebra matrix. More...
 
typedef algebra_type::vector_type vector_type
 Type of algebra vector. More...
 
- Public Types inherited from ug::ITimeDiscretization< TAlgebra >
typedef TAlgebra algebra_type
 Algebra type. More...
 
typedef IDomainDiscretization< TAlgebra > domain_discretization_type
 Domain Discretization type. More...
 
typedef algebra_type::vector_type vector_type
 Vector type. More...
 
- Public Types inherited from ug::IAssemble< TAlgebra >
typedef TAlgebra algebra_type
 Algebra type. More...
 
typedef TAlgebra::matrix_type matrix_type
 Type of algebra matrix. More...
 
typedef TAlgebra::vector_type vector_type
 Type of algebra vector. More...
 

Public Member Functions

void adjust_solution (vector_type &u, const GridLevel &gl)
 sets dirichlet values in solution vector More...
 
void assemble_defect (vector_type &d, const vector_type &u, const GridLevel &gl)
 assembles Defect More...
 
void assemble_jacobian (matrix_type &J, const vector_type &u, const GridLevel &gl)
 assembles Jacobian (or Approximation of Jacobian) More...
 
void assemble_linear (matrix_type &A, vector_type &b, const GridLevel &gl)
 Assembles Matrix and Right-Hand-Side for a linear problem. More...
 
void assemble_rhs (vector_type &b, const GridLevel &gl)
 Assembles Right-Hand-Side for a linear problem. More...
 
void assemble_rhs (vector_type &b, const vector_type &u, const GridLevel &gl)
 assembles rhs More...
 
virtual size_t num_stages () const
 returns number of stages More...
 
virtual void prepare_step (SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt)
 prepares the assembling of Defect/Jacobian for a time step More...
 
 SDIRK (SmartPtr< IDomainDiscretization< TAlgebra > > spDD)
 default constructor (implicit Euler) More...
 
 SDIRK (SmartPtr< IDomainDiscretization< TAlgebra > > spDD, int order)
 theta = 1.0 -> Implicit Euler, 0.0 -> Explicit Euler More...
 
void set_order (int order)
 sets the scheme More...
 
virtual void set_stage (size_t stage)
 sets the stage More...
 
virtual ~SDIRK ()
 
- Public Member Functions inherited from ug::MultiStepTimeDiscretization< TAlgebra >
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 ///. More...
 
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) More...
 
void invalidate_error ()
 
bool is_error_valid ()
 returns whether error indicators are valid More...
 
 MultiStepTimeDiscretization (SmartPtr< IDomainDiscretization< algebra_type > > spDD)
 constructor More...
 
virtual size_t num_prev_steps () const
 returns number of previous time steps needed More...
 
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 More...
 
virtual ~MultiStepTimeDiscretization ()
 
- Public Member Functions inherited from ug::ITimeDiscretization< TAlgebra >
virtual SmartPtr< IConstraint< TAlgebra > > constraint (size_t i)
 returns the i'th constraint More...
 
SmartPtr< IDomainDiscretization< TAlgebra > > domain_disc () const
 return underlying domain disc More...
 
 ITimeDiscretization (SmartPtr< IDomainDiscretization< TAlgebra > > spDD)
 create and set domain discretization More...
 
virtual size_t num_constraints () const
 returns the number of constraint More...
 
void prepare_step_elem (SmartPtr< VectorTimeSeries< vector_type > > prevSol, number dt)
 prepares the assembling of Defect/Jacobian for a time step More...
 
void finish_step_elem (SmartPtr< VectorTimeSeries< vector_type > > currSol)
 
- Public Member Functions inherited from ug::IAssemble< TAlgebra >
void adjust_solution (vector_type &u)
 
void assemble_defect (vector_type &d, const vector_type &u)
 
void assemble_jacobian (matrix_type &J, const vector_type &u)
 
void assemble_linear (matrix_type &A, vector_type &b)
 
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 More...
 
void assemble_rhs (vector_type &b)
 
virtual void assemble_rhs (vector_type &rhs, const vector_type &u)
 
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 More...
 
virtual ~IAssemble ()
 Virtual Destructor. More...
 

Protected Member Functions

virtual number update_scaling (std::vector< number > &vSM, std::vector< number > &vSA, number dt)
 
virtual number update_scaling (std::vector< number > &vSM, std::vector< number > &vSA, number dt, number currentTime, ConstSmartPtr< VectorTimeSeries< vector_type > > prevSol)
 Error estimator ///. More...
 

Protected Attributes

number m_lastTime
 
int m_order
 
size_t m_stage
 
number m_Time0
 
- Protected Attributes inherited from ug::MultiStepTimeDiscretization< TAlgebra >
number m_dt
 Time Step size. More...
 
number m_futureTime
 Future Time. More...
 
SmartPtr< VectorTimeSeries< vector_type > > m_pPrevSol
 Previous solutions. More...
 
size_t m_prevSteps
 number of previous steps needed. More...
 
std::vector< numberm_vScaleMass
 Scaling for mass part. More...
 
std::vector< numberm_vScaleStiff
 Scaling for stiffness part. More...
 
- Protected Attributes inherited from ug::ITimeDiscretization< TAlgebra >
SmartPtr< IDomainDiscretization< TAlgebra > > m_spDomDisc
 Domain Discretization. More...
 

Detailed Description

template<typename TAlgebra>
class ug::SDIRK< TAlgebra >

Singly Diagonal Implicit Runge Kutta Method.

Member Typedef Documentation

◆ algebra_type

template<typename TAlgebra >
typedef TAlgebra ug::SDIRK< TAlgebra >::algebra_type

Type of algebra.

◆ domain_discretization_type

template<typename TAlgebra >
typedef IDomainDiscretization<TAlgebra> ug::SDIRK< TAlgebra >::domain_discretization_type

Domain Discretization type.

◆ matrix_type

template<typename TAlgebra >
typedef algebra_type::matrix_type ug::SDIRK< TAlgebra >::matrix_type

Type of algebra matrix.

◆ vector_type

template<typename TAlgebra >
typedef algebra_type::vector_type ug::SDIRK< TAlgebra >::vector_type

Type of algebra vector.

Constructor & Destructor Documentation

◆ SDIRK() [1/2]

template<typename TAlgebra >
ug::SDIRK< TAlgebra >::SDIRK ( SmartPtr< IDomainDiscretization< TAlgebra > >  spDD)
inline

default constructor (implicit Euler)

References ug::MultiStepTimeDiscretization< TAlgebra >::m_prevSteps.

◆ SDIRK() [2/2]

template<typename TAlgebra >
ug::SDIRK< TAlgebra >::SDIRK ( SmartPtr< IDomainDiscretization< TAlgebra > >  spDD,
int  order 
)
inline

◆ ~SDIRK()

template<typename TAlgebra >
virtual ug::SDIRK< TAlgebra >::~SDIRK ( )
inlinevirtual

Member Function Documentation

◆ adjust_solution()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::adjust_solution ( vector_type u,
const GridLevel gl 
)
virtual

sets dirichlet values in solution vector

Sets dirichlet values of the NumericalSolution u when components are dirichlet

Parameters
[out]uNumerical Solution
[in]glGrid Level

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References PROFILE_BEGIN_GROUP, and UG_CATCH_THROW.

◆ assemble_defect()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::assemble_defect ( vector_type d,
const vector_type u,
const GridLevel gl 
)
virtual

assembles Defect

Assembles Defect at a given Solution u.

Parameters
[out]dDefect d(u) to be filled
[in]uCurrent iterate
[in]glGrid Level

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_CATCH_THROW.

◆ assemble_jacobian()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::assemble_jacobian ( matrix_type J,
const vector_type u,
const GridLevel gl 
)
virtual

assembles Jacobian (or Approximation of Jacobian)

Assembles Jacobian at a given iterate u.

Parameters
[out]JJacobian J(u) matrix to be filled
[in]uCurrent iterate
[in]glGrid Level

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_CATCH_THROW.

◆ assemble_linear()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::assemble_linear ( matrix_type A,
vector_type b,
const GridLevel gl 
)
virtual

Assembles Matrix and Right-Hand-Side for a linear problem.

Assembles matrix_type and Right-Hand-Side for a linear problem

Parameters
[out]AMass-/Stiffness- Matrix
[out]bRight-Hand-Side
[in]glGrid Level

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_THROW.

◆ assemble_rhs() [1/2]

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::assemble_rhs ( vector_type b,
const GridLevel gl 
)
virtual

Assembles Right-Hand-Side for a linear problem.

Assembles Right-Hand-Side for a linear problem

Parameters
[out]bRight-Hand-Side
[in]glGrid Level

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_THROW.

◆ assemble_rhs() [2/2]

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::assemble_rhs ( vector_type rhs,
const vector_type u,
const GridLevel gl 
)
virtual

assembles rhs

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_THROW.

◆ num_stages()

template<typename TAlgebra >
virtual size_t ug::SDIRK< TAlgebra >::num_stages ( ) const
inlinevirtual

returns number of stages

Implements ug::ITimeDiscretization< TAlgebra >.

References ug::SDIRK< TAlgebra >::m_order, and UG_THROW.

◆ prepare_step()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::prepare_step ( SmartPtr< VectorTimeSeries< vector_type > >  prevSol,
number  dt 
)
virtual

prepares the assembling of Defect/Jacobian for a time step

This function supplies the TimeDiscretization with previous time steps and step size before the assembling routines can be called.

Parameters
[in]prevSolthe solution at the previous time steps
[in]dtsize of time step

Reimplemented from ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_CATCH_THROW.

◆ set_order()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::set_order ( int  order)
inline

sets the scheme

References ug::SDIRK< TAlgebra >::m_order, and UG_THROW.

Referenced by ug::SDIRK< TAlgebra >::SDIRK().

◆ set_stage()

template<typename TAlgebra >
void ug::SDIRK< TAlgebra >::set_stage ( size_t  stage)
virtual

sets the stage

Implements ug::ITimeDiscretization< TAlgebra >.

◆ update_scaling() [1/2]

template<typename TAlgebra >
number ug::SDIRK< TAlgebra >::update_scaling ( std::vector< number > &  vSM,
std::vector< number > &  vSA,
number  dt 
)
protectedvirtual

References alpha, and UG_THROW.

◆ update_scaling() [2/2]

template<typename TAlgebra >
virtual number ug::SDIRK< TAlgebra >::update_scaling ( std::vector< number > &  vSM,
std::vector< number > &  vSA,
number  dt,
number  currentTime,
ConstSmartPtr< VectorTimeSeries< vector_type > >  prevSol 
)
inlineprotectedvirtual

Error estimator ///.

updates the scaling factors, returns the future time

Implements ug::MultiStepTimeDiscretization< TAlgebra >.

References UG_THROW.

Member Data Documentation

◆ m_lastTime

template<typename TAlgebra >
number ug::SDIRK< TAlgebra >::m_lastTime
protected

◆ m_order

template<typename TAlgebra >
int ug::SDIRK< TAlgebra >::m_order
protected

◆ m_stage

template<typename TAlgebra >
size_t ug::SDIRK< TAlgebra >::m_stage
protected

◆ m_Time0

template<typename TAlgebra >
number ug::SDIRK< TAlgebra >::m_Time0
protected

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