![]() |
|
#include <trapezoid_rule.h>
Public Member Functions | |
TR (const bool &adaptive=false) | |
virtual | ~TR () |
Virtual destructor. More... | |
unsigned | order () const |
Return the actual order of the scheme. More... | |
void | set_weights () |
Set the weights. More... | |
void | set_error_weights () |
void | set_predictor_weights () |
Function to set the predictor weights. More... | |
unsigned | nprev_values () const |
Number of previous values available. More... | |
unsigned | derivative_index (const unsigned &t) const |
Location in data of derivatives. More... | |
unsigned | predicted_value_index () const |
Location of predicted value. More... | |
unsigned | ndt () const |
Number of timestep increments that need to be stored by the scheme. More... | |
void | assign_initial_values_impulsive (Data *const &data_pt) |
void | assign_initial_positions_impulsive (Node *const &node_pt) |
void | actions_after_timestep (Problem *problem_pt) |
void | actions_before_timestep (Problem *problem_pt) |
void | setup_initial_derivative (Problem *problem_pt) |
void | shift_time_values (Data *const &data_pt) |
void | shift_time_positions (Node *const &node_pt) |
void | calculate_predicted_positions (Node *const &node_pt) |
Function to calculate predicted positions at a node. More... | |
void | calculate_predicted_values (Data *const &data_pt) |
Function to calculate predicted data values in a Data object. More... | |
double | temporal_error_in_position (Node *const &node_pt, const unsigned &i) |
Compute the error in the position i at a node. More... | |
double | temporal_error_in_value (Data *const &data_pt, const unsigned &i) |
Compute the error in the value i in a Data structure. More... | |
![]() | |
TimeStepper (const unsigned &tstorage, const unsigned &max_deriv) | |
TimeStepper () | |
Broken empty constructor. More... | |
TimeStepper (const TimeStepper &)=delete | |
Broken copy constructor. More... | |
void | operator= (const TimeStepper &)=delete |
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 |
void | make_steady () |
bool | is_steady () const |
bool | predict_by_explicit_step () const |
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 |
void | enable_warning_in_assign_initial_data_values () |
void | disable_warning_in_assign_initial_data_values () |
const DenseMatrix< double > * | weights_pt () const |
Get a (const) pointer to the weights. More... | |
virtual void | undo_make_steady () |
std::string | type () const |
void | time_derivative (const unsigned &i, Data *const &data_pt, Vector< double > &deriv) |
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) |
double | time_derivative (const unsigned &i, Node *const &node_pt, const unsigned &j) |
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 |
bool | adaptive_flag () const |
Function to indicate whether the scheme is adaptive (false by default) More... | |
Public Attributes | |
bool | Initial_derivative_set |
bool | Shift_f |
Private Member Functions | |
TR (const TR &dummy)=delete | |
Broken copy constructor. More... | |
void | operator= (const TR &dummy)=delete |
Broken assignment operator. More... | |
Private Attributes | |
Vector< double > | Predictor_weight |
Private data for the predictor weights. More... | |
double | Error_weight |
Private data for the error weight. More... | |
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 |
bool | Adaptive_Flag |
bool | Is_steady |
bool | Shut_up_in_assign_initial_data_values |
bool | Predict_by_explicit_step |
ExplicitTimeStepper * | Explicit_predictor_pt |
double | Predicted_time |
int | Predictor_storage_index |
Trapezoid rule time stepping scheme.
This method requires a value of dy/dt at the initial time. The implementation of this calculation is exactly the same as is used for explicit time stepping.
The function setup_initial_derivative(Problem* problem_pt) should be called after the initial conditions have been set, but before beginning time stepping, to compute this initial value of dy/dt.
Warning: moving nodes not implemented (I have no test case).
|
inline |
Constructor, storage for two history derivatives (one for TR and one for the predictor step), one history value, present value and predicted value.
References Global_Physical_Variables::adaptive, oomph::TimeStepper::Adaptive_Flag, Error_weight, Initial_derivative_set, Predictor_weight, Shift_f, and oomph::TimeStepper::Weight.
|
privatedelete |
Broken copy constructor.
|
inlinevirtual |
Interface for any actions that need to be performed after a time step.
Reimplemented from oomph::TimeStepper.
References Shift_f.
|
inlinevirtual |
Interface for any actions that need to be performed before a time step.
Reimplemented from oomph::TimeStepper.
References Initial_derivative_set, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and oomph::Global_string_for_annotation::string().
|
inlinevirtual |
Initialise the time-history for the nodal positions corresponding to an impulsive start.
Implements oomph::TimeStepper.
References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inlinevirtual |
Initialise the time-history for the Data values, corresponding to an impulsive start.
Implements oomph::TimeStepper.
References OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.
|
inlinevirtual |
Function to calculate predicted positions at a node.
Reimplemented from oomph::TimeStepper.
References i, j, oomph::Node::ndim(), oomph::Node::position_is_a_copy(), predicted_value_index(), Predictor_weight, and oomph::Node::x().
|
inlinevirtual |
Function to calculate predicted data values in a Data object.
Reimplemented from oomph::TimeStepper.
References i, oomph::Data::is_a_copy(), j, oomph::Data::nvalue(), predicted_value_index(), Predictor_weight, oomph::Data::set_value(), and oomph::Data::value().
Location in data of derivatives.
References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::Global_string_for_annotation::string(), and plotPSD::t.
Referenced by predicted_value_index(), set_predictor_weights(), set_weights(), setup_initial_derivative(), and shift_time_values().
|
inlinevirtual |
Number of timestep increments that need to be stored by the scheme.
Implements oomph::TimeStepper.
|
inlinevirtual |
|
privatedelete |
Broken assignment operator.
|
inlinevirtual |
Return the actual order of the scheme.
Reimplemented from oomph::TimeStepper.
|
inline |
Location of predicted value.
References derivative_index().
Referenced by calculate_predicted_positions(), calculate_predicted_values(), temporal_error_in_position(), and temporal_error_in_value().
|
inlinevirtual |
Set the weights for the error computation, (currently empty – overwrite for specific scheme)
Reimplemented from oomph::TimeStepper.
References oomph::Time::dt(), Error_weight, and oomph::TimeStepper::Time_pt.
|
inlinevirtual |
Function to set the predictor weights.
Reimplemented from oomph::TimeStepper.
References derivative_index(), oomph::Time::dt(), Predictor_weight, and oomph::TimeStepper::Time_pt.
|
inlinevirtual |
Set the weights.
Implements oomph::TimeStepper.
References derivative_index(), oomph::Time::dt(), oomph::TimeStepper::Time_pt, and oomph::TimeStepper::Weight.
|
inline |
|
inlinevirtual |
This function advances the time history of the positions at a node.
Implements oomph::TimeStepper.
|
inlinevirtual |
This function updates the Data's time history so that we can advance to the next timestep.
Implements oomph::TimeStepper.
References derivative_index(), oomph::Time::dt(), oomph::Data::is_a_copy(), j, oomph::Data::nvalue(), oomph::Data::set_value(), Shift_f, oomph::TimeStepper::time_pt(), and oomph::Data::value().
|
inlinevirtual |
Compute the error in the position i at a node.
Reimplemented from oomph::TimeStepper.
References Error_weight, i, predicted_value_index(), and oomph::Node::x().
|
inlinevirtual |
Compute the error in the value i in a Data structure.
Reimplemented from oomph::TimeStepper.
References Error_weight, i, predicted_value_index(), and oomph::Data::value().
|
private |
Private data for the error weight.
Referenced by set_error_weights(), temporal_error_in_position(), temporal_error_in_value(), and TR().
bool oomph::TR::Initial_derivative_set |
Referenced by actions_before_timestep(), setup_initial_derivative(), and TR().
Private data for the predictor weights.
Referenced by calculate_predicted_positions(), calculate_predicted_values(), set_predictor_weights(), and TR().
bool oomph::TR::Shift_f |
Referenced by actions_after_timestep(), setup_initial_derivative(), shift_time_values(), and TR().