deal.II version GIT relicensing-2287-g6548a49e0a 2024-12-20 18:30:00+00:00
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
FunctionTime< Number > Class Template Reference

#include <deal.II/base/function_time.h>

Inheritance diagram for FunctionTime< Number >:
Inheritance graph
[legend]

Public Types

using time_type = Number
 

Public Member Functions

 FunctionTime (const Number initial_time=Number(0.0))
 
virtual ~FunctionTime ()=default
 
Number get_time () const
 
virtual void set_time (const Number new_time)
 
virtual void advance_time (const Number delta_t)
 

Private Attributes

Number time
 

Detailed Description

template<typename Number = double>
class FunctionTime< Number >

Support for time dependent functions. The library was also designed for time dependent problems. For this purpose, the function objects also contain a field which stores the time, as well as functions manipulating them. Time independent problems should not access or even abuse them for other purposes, but since one normally does not create thousands of function objects, the gain in generality weighs out the fact that we need not store the time value for not time dependent problems. The second advantage is that the derived standard classes like ZeroFunction, ConstantFunction etc also work for time dependent problems.

Access to the time goes through the following functions:

The latter two functions are virtual, so that derived classes can perform computations which need only be done once for every new time. For example, if a time dependent function had a factor sin(t), then it may be a reasonable choice to calculate this factor in a derived version of set_time(), store it in a member variable and use that one rather than computing it every time value(), value_list or one of the other functions of class Function is called.

By default, the advance_time() function calls the set_time() function with the new time, so it is sufficient in most cases to overload only set_time() for computations as sketched out above.

The constructor of this class takes an initial value for the time variable, which defaults to zero. Because a default value is given, none of the derived classes needs to take an initial value for the time variable if not needed.

Template Parameters
NumberThe data type in which time values are to be stored. This will, in almost all cases, simply be the default double, but there are cases where one may want to store the time in a different (and always scalar) type. An example would be an interval type that can store a value as well as its uncertainty. Another example would be a type that allows for Automatic Differentiation (see, for example, the Sacado type used in step-33) and thereby can generate analytic (temporal) derivatives of a function.

Definition at line 71 of file function_time.h.

Member Typedef Documentation

◆ time_type

template<typename Number = double>
using FunctionTime< Number >::time_type = Number

The type this class is initialized with and that is used to represent time.

Definition at line 106 of file function_time.h.

Constructor & Destructor Documentation

◆ FunctionTime()

template<typename Number = double>
FunctionTime< Number >::FunctionTime ( const Number  initial_time = Number(0.0))

Constructor. May take an initial value for the time variable, which defaults to zero.

◆ ~FunctionTime()

template<typename Number = double>
virtual FunctionTime< Number >::~FunctionTime ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ get_time()

template<typename Number = double>
Number FunctionTime< Number >::get_time ( ) const

Return the value of the time variable.

◆ set_time()

template<typename Number = double>
virtual void FunctionTime< Number >::set_time ( const Number  new_time)
virtual

Set the time to new_time, overwriting the old value.

◆ advance_time()

template<typename Number = double>
virtual void FunctionTime< Number >::advance_time ( const Number  delta_t)
virtual

Advance the time by the given time step delta_t.

Member Data Documentation

◆ time

template<typename Number = double>
Number FunctionTime< Number >::time
private

Store the present time.

Definition at line 112 of file function_time.h.


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