GeneralisedTimestepper used to store the arclength derivatives and pervious solutions required in continuation problems. The data is stored as auxilliary data in the (fake) TimeStepper so that spatial adaptivity will be handled automatically through our standard mechanisms. The adopted storage scheme is that the continuation derivatives will be stored at the first auxilliary value and the previous value will be the second auixilliary value. More...
#include <generalised_timesteppers.h>
Public Member Functions | |
ContinuationStorageScheme () | |
ContinuationStorageScheme (const ContinuationStorageScheme &) | |
Broken copy constructor. More... | |
void | modify_storage (GeneralisedTimeStepper *const &time_stepper_pt) |
Modify the scheme based on the underlying timestepper. More... | |
void | operator= (const ContinuationStorageScheme &) |
Broken assignment operator. More... | |
unsigned | order () const |
void | undo_make_steady () |
This is a steady scheme, so you can't do this. More... | |
void | assign_initial_values_impulsive (Data *const &data_pt) |
Broken initialisation the time-history for the Data values corresponding to an impulsive start. More... | |
void | assign_initial_positions_impulsive (Node *const &node_pt) |
Broken initialisation of the positions for the node corresponding to an impulsive start. More... | |
void | shift_time_values (Data *const &data_pt) |
Broken shifting of time values. More... | |
void | shift_time_positions (Node *const &node_pt) |
Broken shifting of time positions. More... | |
void | set_weights () |
Set the weights (Do nothing) More... | |
unsigned | nprev_values () const |
Number of previous values available. More... | |
unsigned | ndt () const |
Number of timestep increments that need to be stored by the scheme. More... | |
void | set_consistent_pinned_values (Data *const &data_pt) |
Set consistent values of the derivatives and current value when the data is pinned. This must be done by the "timestepper" because only it knows the local storage scheme. More... | |
void | set_consistent_pinned_positions (Node *const &node_pt) |
Set consistent values of the derivatives and current value when the Nodes position is pinned. This must be done by the "timestepper" because only it knows the local storage scheme. More... | |
unsigned | dof_derivative_offset () |
unsigned | dof_current_offset () |
![]() | |
unsigned | ndof_storage_entries () const |
Return the number of entries that correspond to dof storage. More... | |
![]() | |
TimeStepper (const unsigned &tstorage, const unsigned &max_deriv) | |
Constructor. Pass the amount of storage required by timestepper (present value + history values) and the order of highest time-derivative. More... | |
TimeStepper () | |
Broken empty constructor. More... | |
TimeStepper (const TimeStepper &) | |
Broken copy constructor. More... | |
void | operator= (const TimeStepper &) |
Broken assignment operator. More... | |
virtual | ~TimeStepper () |
virtual destructor More... | |
unsigned | highest_derivative () const |
Highest order derivative that the scheme can compute. More... | |
double & | time () |
Return current value of continous time. More... | |
double | time () const |
Return current value of continous time. More... | |
virtual unsigned | nprev_values_for_value_at_evaluation_time () const |
Number of previous values needed to calculate the value at the current time. i.e. how many previous values must we loop over to calculate the values at the evaluation time. For most methods this is 1, i.e. just use the value at t_{n+1}. See midpoint method for a counter-example. More... | |
void | make_steady () |
Function to make the time stepper temporarily steady. This is trivially achieved by setting all the weights to zero. More... | |
bool | is_steady () const |
Flag to indicate if a timestepper has been made steady (possibly temporarily to switch off time-dependence) More... | |
bool | predict_by_explicit_step () const |
Flag: is adaptivity done by taking a separate step using an ExplicitTimeStepper object? More... | |
ExplicitTimeStepper * | explicit_predictor_pt () |
void | set_predictor_pt (ExplicitTimeStepper *_pred_pt) |
void | update_predicted_time (const double &new_time) |
void | check_predicted_values_up_to_date () const |
Check that the predicted values are the ones we want. More... | |
unsigned | predictor_storage_index () const |
Return the time-index in each Data where predicted values are stored if the timestepper is adaptive. More... | |
void | enable_warning_in_assign_initial_data_values () |
Enable the output of warnings due to possible fct pointer vector size mismatch in assign_initial_data_values (Default) More... | |
void | disable_warning_in_assign_initial_data_values () |
Disable the output of warnings due to possible fct pointer vector size mismatch in assign_initial_data_values. More... | |
const DenseMatrix< double > * | weights_pt () const |
Get a (const) pointer to the weights. More... | |
std::string | type () const |
Return string that indicates the type of the timestepper (e.g. "BDF", "Newmark", etc.) More... | |
void | time_derivative (const unsigned &i, Data *const &data_pt, Vector< double > &deriv) |
Evaluate i-th derivative of all values in Data and return in Vector deriv[]. More... | |
double | time_derivative (const unsigned &i, Data *const &data_pt, const unsigned &j) |
Evaluate i-th derivative of j-th value in Data. More... | |
void | time_derivative (const unsigned &i, Node *const &node_pt, Vector< double > &deriv) |
Evaluate i-th derivative of all values in Node and return in Vector deriv[] (this can't be simply combined with time_derivative(.., Data, ...) because of differences with haning nodes). More... | |
double | time_derivative (const unsigned &i, Node *const &node_pt, const unsigned &j) |
Evaluate i-th derivative of j-th value in Node. Note the use of the node's value() function so that hanging nodes are taken into account (this is why the functions for Data and Node cannot be combined through simple polymorphism: value is not virtual). More... | |
Time *const & | time_pt () const |
Access function for the pointer to time (const version) More... | |
Time *& | time_pt () |
virtual double | weight (const unsigned &i, const unsigned &j) const |
Access function for j-th weight for the i-th derivative. More... | |
unsigned | ntstorage () const |
Return the number of doubles required to represent history (one for steady) More... | |
bool | adaptive_flag () const |
Function to indicate whether the scheme is adaptive (false by default) More... | |
virtual void | set_predictor_weights () |
Set the weights for the predictor previous timestep (currently empty – overwrite for specific scheme) More... | |
virtual void | calculate_predicted_values (Data *const &data_pt) |
Do the predictor step for data stored in a Data object (currently empty – overwrite for specific scheme) More... | |
virtual void | calculate_predicted_positions (Node *const &node_pt) |
Do the predictor step for the positions at a node (currently empty — overwrite for a specific scheme) More... | |
virtual void | set_error_weights () |
Set the weights for the error computation, (currently empty – overwrite for specific scheme) More... | |
virtual double | temporal_error_in_position (Node *const &node_pt, const unsigned &i) |
virtual double | temporal_error_in_value (Data *const &data_pt, const unsigned &i) |
virtual void | actions_before_timestep (Problem *problem_pt) |
virtual void | actions_after_timestep (Problem *problem_pt) |
Private Attributes | |
unsigned | Dof_derivative_offset |
unsigned | Dof_current_offset |
Additional Inherited Members | |
![]() | |
GeneralisedTimeStepper (const unsigned &n_tstorage, const unsigned &max_deriv, const unsigned &ndof_storage_entries=1) | |
GeneralisedTimeStepper () | |
Broken empty constructor. More... | |
GeneralisedTimeStepper (const GeneralisedTimeStepper &) | |
Broken copy constructor. More... | |
void | operator= (const GeneralisedTimeStepper &) |
Broken assignment operator. More... | |
![]() | |
unsigned | Ndof_storage_entries |
![]() | |
Time * | Time_pt |
Pointer to discrete time storage scheme. More... | |
DenseMatrix< double > | Weight |
Storage for the weights associated with the timestepper. More... | |
std::string | Type |
String that indicates the type of the timestepper (e.g. "BDF", "Newmark", etc.) More... | |
bool | Adaptive_Flag |
Boolean variable to indicate whether the timestepping scheme can be adaptive. More... | |
bool | Is_steady |
Bool to indicate if the timestepper is steady, i.e. its time-derivatives evaluate to zero. This status may be achieved temporarily by calling make_steady(). It can be reset to the appropriate default by the function undo_make_steady(). More... | |
bool | Shut_up_in_assign_initial_data_values |
Boolean to indicate if the timestepper will output warnings when setting possibly an incorrect number of initial data values from function pointers. More... | |
bool | Predict_by_explicit_step |
Flag: is adaptivity done by taking a separate step using an ExplicitTimeStepper object? More... | |
ExplicitTimeStepper * | Explicit_predictor_pt |
double | Predicted_time |
int | Predictor_storage_index |
The time-index in each Data object where predicted values are stored. -1 if not set. More... | |
GeneralisedTimestepper used to store the arclength derivatives and pervious solutions required in continuation problems. The data is stored as auxilliary data in the (fake) TimeStepper so that spatial adaptivity will be handled automatically through our standard mechanisms. The adopted storage scheme is that the continuation derivatives will be stored at the first auxilliary value and the previous value will be the second auixilliary value.
Definition at line 110 of file generalised_timesteppers.h.
|
inline |
Constructor for the case when we allow adaptive continuation It can evaulate up to second derivatives, but doesn't do anything the time-derivatives evaluate to zero.
Definition at line 123 of file generalised_timesteppers.h.
References oomph::TimeStepper::Is_steady, and oomph::TimeStepper::Type.
|
inline |
Broken copy constructor.
Definition at line 132 of file generalised_timesteppers.h.
References oomph::BrokenCopy::broken_copy().
|
inlinevirtual |
Broken initialisation of the positions for the node corresponding to an impulsive start.
Implements oomph::TimeStepper.
Definition at line 186 of file generalised_timesteppers.h.
|
inlinevirtual |
Broken initialisation the time-history for the Data values corresponding to an impulsive start.
Implements oomph::TimeStepper.
Definition at line 176 of file generalised_timesteppers.h.
|
inline |
Definition at line 325 of file generalised_timesteppers.h.
|
inline |
Definition at line 322 of file generalised_timesteppers.h.
|
inline |
Modify the scheme based on the underlying timestepper.
Definition at line 138 of file generalised_timesteppers.h.
References oomph::GeneralisedTimeStepper::Ndof_storage_entries, oomph::GeneralisedTimeStepper::ndof_storage_entries(), oomph::TimeStepper::ntstorage(), oomph::DenseMatrix< T >::resize(), and oomph::TimeStepper::Weight.
|
inlinevirtual |
Number of timestep increments that need to be stored by the scheme.
Implements oomph::TimeStepper.
Definition at line 219 of file generalised_timesteppers.h.
|
inlinevirtual |
Number of previous values available.
Implements oomph::TimeStepper.
Definition at line 216 of file generalised_timesteppers.h.
|
inline |
Broken assignment operator.
Definition at line 162 of file generalised_timesteppers.h.
References oomph::BrokenCopy::broken_assign().
|
inlinevirtual |
Return the actual order of the scheme. It's a steady scheme so it's zero, but that doesn't really make sense.
Reimplemented from oomph::TimeStepper.
Definition at line 169 of file generalised_timesteppers.h.
|
inline |
Set consistent values of the derivatives and current value when the Nodes position is pinned. This must be done by the "timestepper" because only it knows the local storage scheme.
Definition at line 266 of file generalised_timesteppers.h.
References i, oomph::GeneralisedTimeStepper::Ndof_storage_entries, oomph::Node::position_time_stepper_pt(), and t.
Referenced by oomph::Mesh::set_consistent_pinned_values_for_continuation().
|
inline |
Set consistent values of the derivatives and current value when the data is pinned. This must be done by the "timestepper" because only it knows the local storage scheme.
Definition at line 224 of file generalised_timesteppers.h.
References i, oomph::Data::is_a_copy(), oomph::Data::is_pinned(), oomph::GeneralisedTimeStepper::Ndof_storage_entries, oomph::Data::nvalue(), oomph::Data::set_value(), t, oomph::Data::time_stepper_pt(), and oomph::Data::value().
Referenced by oomph::SpineMesh::set_consistent_pinned_spine_values_for_continuation(), oomph::Mesh::set_consistent_pinned_values_for_continuation(), and oomph::Problem::set_consistent_pinned_values_for_continuation().
|
inlinevirtual |
Set the weights (Do nothing)
Implements oomph::TimeStepper.
Definition at line 213 of file generalised_timesteppers.h.
|
inlinevirtual |
Broken shifting of time positions.
Implements oomph::TimeStepper.
Definition at line 204 of file generalised_timesteppers.h.
|
inlinevirtual |
Broken shifting of time values.
Implements oomph::TimeStepper.
Definition at line 195 of file generalised_timesteppers.h.
|
inlinevirtual |
This is a steady scheme, so you can't do this.
Reimplemented from oomph::TimeStepper.
Definition at line 172 of file generalised_timesteppers.h.
References oomph::TimeStepper::Is_steady.
|
private |
Definition at line 116 of file generalised_timesteppers.h.
|
private |
Definition at line 113 of file generalised_timesteppers.h.