SpECTRE
v2024.12.16
|
A function that is integrated manually. More...
#include <IntegratedFunctionOfTime.hpp>
Public Member Functions | |
IntegratedFunctionOfTime (IntegratedFunctionOfTime &&) | |
IntegratedFunctionOfTime (const IntegratedFunctionOfTime &) | |
IntegratedFunctionOfTime & | operator= (IntegratedFunctionOfTime &&) |
IntegratedFunctionOfTime & | operator= (const IntegratedFunctionOfTime &) |
IntegratedFunctionOfTime (double t, std::array< double, 2 > initial_func_and_derivs, double expiration_time, bool rotation) | |
Constructs the function using the initial time, initial values, derivative and expiration time. If rotation is true, the function will be converted to a quaternion before it is output as used by the Rotation map. | |
WRAPPED_PUPable_decl_template (IntegratedFunctionOfTime) | |
IntegratedFunctionOfTime (CkMigrateMessage *) | |
auto | get_clone () const -> std::unique_ptr< FunctionOfTime > override |
std::array< DataVector, 1 > | func (double t) const override |
The DataVector can be of any size. More... | |
std::array< DataVector, 2 > | func_and_deriv (double t) const override |
The DataVector can be of any size. More... | |
std::array< DataVector, 3 > | func_and_2_derivs (double) const override |
The DataVector can be of any size. More... | |
void | update (double time_of_update, DataVector updated_value_and_derivative, double next_expiration_time) override |
Updates the function to the next global time step. The updated_value_and_derivative argument needs to be a DataVector of size 2, with the zeroth element holding the function's value and the first element holding its derivative. If rotation_ is set to true, this corresponds to the angle and the angular velocity for a rotation about the z-axis. More... | |
double | expiration_after (double time) const override |
The first expiration time after time . More... | |
std::array< double, 2 > | time_bounds () const override |
Returns the domain of validity of the function. For FunctionsOfTime that allow a small amount of time extrapolation, time_bounds tells you the bounds including the allowed extrapolation interval. More... | |
void | pup (PUP::er &p) override |
Public Member Functions inherited from domain::FunctionsOfTime::FunctionOfTime | |
FunctionOfTime (FunctionOfTime &&)=default | |
FunctionOfTime & | operator= (FunctionOfTime &&)=default |
FunctionOfTime (const FunctionOfTime &)=default | |
FunctionOfTime & | operator= (const FunctionOfTime &)=default |
virtual auto | get_clone () const -> std::unique_ptr< FunctionOfTime >=0 |
virtual std::array< double, 2 > | time_bounds () const =0 |
Returns the domain of validity of the function. For FunctionsOfTime that allow a small amount of time extrapolation, time_bounds tells you the bounds including the allowed extrapolation interval. More... | |
virtual double | expiration_after (double time) const =0 |
The first expiration time after time . More... | |
virtual void | update (double, DataVector, double) |
Updates the maximum derivative of the FunctionOfTime at a given time while also resetting the expiration. By default, a FunctionOfTime cannot be updated. More... | |
virtual std::array< DataVector, 1 > | func (double t) const =0 |
The DataVector can be of any size. More... | |
virtual std::array< DataVector, 2 > | func_and_deriv (double t) const =0 |
The DataVector can be of any size. More... | |
virtual std::array< DataVector, 3 > | func_and_2_derivs (double t) const =0 |
The DataVector can be of any size. More... | |
virtual std::vector< DataVector > | func_and_all_derivs (double t) const |
All derivatives a function of time has to offer (because it can be more than 2) More... | |
WRAPPED_PUPable_abstract (FunctionOfTime) | |
Friends | |
bool | operator== (const IntegratedFunctionOfTime &lhs, const IntegratedFunctionOfTime &rhs) |
A function that is integrated manually.
This function only works with global time steppers that have strictly positively increasing substeps. When evaluated at this global time step, it returns the function and first derivative at that time step. It therefore needs to be updated every time step with its current values.
|
overridevirtual |
The first expiration time after time
.
For non-updatable functions, this returns infinity. For updatable functions, the first expiration time after time
is found by determining the update immediately before time
. The expiration time of this update is what is returned. If time
happens to be an update itself, then the expiration of that update is returned.
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
The DataVector can be of any size.
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
The DataVector can be of any size.
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
The DataVector can be of any size.
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
Returns the domain of validity of the function. For FunctionsOfTime that allow a small amount of time extrapolation, time_bounds
tells you the bounds including the allowed extrapolation interval.
Implements domain::FunctionsOfTime::FunctionOfTime.
|
overridevirtual |
Updates the function to the next global time step. The updated_value_and_derivative
argument needs to be a DataVector of size 2, with the zeroth element holding the function's value and the first element holding its derivative. If rotation_
is set to true, this corresponds to the angle and the angular velocity for a rotation about the z-axis.
Reimplemented from domain::FunctionsOfTime::FunctionOfTime.