Implicit midpoint rule base class for the two implementations. More...
#include <implicit_midpoint_rule.h>
Public Member Functions | |
IMRBase (const bool &adaptive=false) | |
Constructor with initialisation. More... | |
virtual | ~IMRBase () |
Destructor. More... | |
virtual void | set_weights ()=0 |
Setup weights for time derivative calculations. More... | |
virtual unsigned | nprev_values_for_value_at_evaluation_time () const =0 |
unsigned | order () const |
Actual order (accuracy) of the scheme. More... | |
unsigned | ndt () const |
Number of timestep increments that are required by the scheme. More... | |
unsigned | nprev_values () const |
??ds More... | |
void | shift_time_values (Data *const &data_pt) |
This function advances the Data's time history so that we can move on to the next timestep. More... | |
void | shift_time_positions (Node *const &node_pt) |
This function advances the time history of the positions at a node. More... | |
void | set_error_weights () |
Set the weights for the error computation. This is not used by midpoint rule. More... | |
void | set_predictor_weights () |
Set the weights for the predictor previous timestep. This is not used by midpint rule. More... | |
void | assign_initial_values_impulsive (Data *const &data_pt) |
not implemented (??ds TODO) More... | |
void | assign_initial_positions_impulsive (Node *const &node_pt) |
Initialiset the positions for the node corresponding to an impulsive start. More... | |
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... | |
double | temporal_error_in_position (Node *const &node_pt, const unsigned &i) |
void | calculate_predicted_values (Data *const &data_pt) |
double | temporal_error_in_value (Data *const &data_pt, const unsigned &i) |
![]() | |
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... | |
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... | |
virtual void | undo_make_steady () |
Reset the is_steady status of a specific TimeStepper to its default and re-assign 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 | actions_before_timestep (Problem *problem_pt) |
virtual void | actions_after_timestep (Problem *problem_pt) |
Additional Inherited Members | |
![]() | |
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... | |
Implicit midpoint rule base class for the two implementations.
Definition at line 48 of file implicit_midpoint_rule.h.
|
inline |
Constructor with initialisation.
Definition at line 53 of file implicit_midpoint_rule.h.
References oomph::TimeStepper::Adaptive_Flag, oomph::TimeStepper::Is_steady, oomph::TimeStepper::Predict_by_explicit_step, oomph::TimeStepper::Predictor_storage_index, oomph::DenseMatrix< T >::resize(), oomph::TimeStepper::Type, and oomph::TimeStepper::Weight.
|
inlinevirtual |
Destructor.
Definition at line 87 of file implicit_midpoint_rule.h.
References nprev_values_for_value_at_evaluation_time(), and set_weights().
|
inlinevirtual |
Initialiset the positions for the node corresponding to an impulsive start.
Implements oomph::TimeStepper.
Definition at line 128 of file implicit_midpoint_rule.h.
References oomph::Global_string_for_annotation::string().
|
inlinevirtual |
not implemented (??ds TODO)
Implements oomph::TimeStepper.
Definition at line 122 of file implicit_midpoint_rule.h.
References oomph::Global_string_for_annotation::string().
|
inlinevirtual |
Do the predictor step for the positions at a node (currently empty — overwrite for a specific scheme)
Reimplemented from oomph::TimeStepper.
Definition at line 136 of file implicit_midpoint_rule.h.
References oomph::Global_string_for_annotation::string().
|
virtual |
Dummy - just check that the values that problem::calculate_predicted_values() has been called right.
Reimplemented from oomph::TimeStepper.
Definition at line 116 of file implicit_midpoint_rule.cc.
References oomph::TimeStepper::adaptive_flag(), and oomph::TimeStepper::check_predicted_values_up_to_date().
Referenced by temporal_error_in_position().
|
inlinevirtual |
Number of timestep increments that are required by the scheme.
Implements oomph::TimeStepper.
Definition at line 100 of file implicit_midpoint_rule.h.
References nprev_values().
Referenced by shift_time_positions(), and shift_time_values().
|
inlinevirtual |
??ds
Implements oomph::TimeStepper.
Definition at line 103 of file implicit_midpoint_rule.h.
References shift_time_positions(), and shift_time_values().
Referenced by ndt().
|
pure virtual |
Number of history values to interpolate over to get the "current" value.
Reimplemented from oomph::TimeStepper.
Implemented in oomph::IMRByBDF, and oomph::IMR.
Referenced by ~IMRBase().
|
inlinevirtual |
Actual order (accuracy) of the scheme.
Reimplemented from oomph::TimeStepper.
Definition at line 97 of file implicit_midpoint_rule.h.
|
inlinevirtual |
Set the weights for the error computation. This is not used by midpoint rule.
Reimplemented from oomph::TimeStepper.
Definition at line 115 of file implicit_midpoint_rule.h.
|
inlinevirtual |
Set the weights for the predictor previous timestep. This is not used by midpint rule.
Reimplemented from oomph::TimeStepper.
Definition at line 119 of file implicit_midpoint_rule.h.
|
pure virtual |
Setup weights for time derivative calculations.
Implements oomph::TimeStepper.
Implemented in oomph::IMRByBDF, and oomph::IMR.
Referenced by oomph::IMRByBDF::actions_before_timestep(), and ~IMRBase().
|
virtual |
This function advances the time history of the positions at a node.
This function advances the time history of the positions at a node. ??ds Untested: I have no problems with moving nodes.
Implements oomph::TimeStepper.
Definition at line 62 of file implicit_midpoint_rule.cc.
References oomph::TimeStepper::adaptive_flag(), i, oomph::Node::ndim(), ndt(), oomph::Node::nposition_type(), oomph::TimeStepper::ntstorage(), oomph::Node::position_is_a_copy(), t, oomph::TimeStepper::Weight, and oomph::Node::x_gen().
Referenced by nprev_values().
|
virtual |
This function advances the Data's time history so that we can move on to the next timestep.
Implements oomph::TimeStepper.
Definition at line 44 of file implicit_midpoint_rule.cc.
References oomph::Data::is_a_copy(), ndt(), oomph::Data::nvalue(), oomph::Data::set_value(), t, and oomph::Data::value().
Referenced by nprev_values().
|
inlinevirtual |
Compute the error in the position i at a node zero here – overwrite for specific scheme.
Reimplemented from oomph::TimeStepper.
Definition at line 143 of file implicit_midpoint_rule.h.
References calculate_predicted_values(), i, oomph::Global_string_for_annotation::string(), and temporal_error_in_value().
|
virtual |
Compute the error in the value i in a Data structure zero here – overwrite for specific scheme.
Reimplemented from oomph::TimeStepper.
Definition at line 127 of file implicit_midpoint_rule.cc.
References oomph::TimeStepper::adaptive_flag(), oomph::TimeStepper::Predictor_storage_index, oomph::Global_string_for_annotation::string(), and oomph::Data::value().
Referenced by temporal_error_in_position().