////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// More...
#include <timesteppers.h>
Public Types | |
typedef double(* | InitialConditionFctPt) (const double &t) |
Typedef for function that returns the (scalar) initial value at a given value of the continuous time t. More... | |
typedef double(* | NodeInitialConditionFctPt) (const double &t, const Vector< double > &x) |
Typedef for function that returns the (scalar) initial value at a given value of the continuous time t and the spatial coordinate – appropriate for assignement of initial conditions for nodes. More... | |
Public Member Functions | |
Newmark () | |
Constructor: Pass pointer to global time. We set up a timestepping scheme with NSTEPS+2 doubles to represent the history and the highest deriv is 2. More... | |
Newmark (const Newmark &)=delete | |
Broken copy constructor. More... | |
void | operator= (const Newmark &)=delete |
Broken assignment operator. More... | |
unsigned | order () const |
The actual order (accuracy of the scheme) More... | |
void | assign_initial_values_impulsive (Data *const &data_pt) |
Initialise the time-history for the values, corresponding to an impulsive start. More... | |
void | assign_initial_positions_impulsive (Node *const &node_pt) |
Initialise the time-history for the values, corresponding to an impulsive start. More... | |
void | assign_initial_data_values (Data *const &data_pt, Vector< InitialConditionFctPt > initial_value_fct, Vector< InitialConditionFctPt > initial_veloc_fct, Vector< InitialConditionFctPt > initial_accel_fct) |
Initialise the time-history for the Data values, so that the Newmark representations for current veloc and acceleration are exact. More... | |
void | assign_initial_data_values (Node *const &node_pt, Vector< NodeInitialConditionFctPt > initial_value_fct, Vector< NodeInitialConditionFctPt > initial_veloc_fct, Vector< NodeInitialConditionFctPt > initial_accel_fct) |
Initialise the time-history for the nodal values, so that the Newmark representations for current veloc and acceleration are exact. More... | |
void | assign_initial_data_values_stage1 (const unsigned t_deriv, Data *const &data_pt) |
First step in a two-stage procedure to assign the history values for the Newmark scheme so that the veloc and accel that are computed by the scheme are correct at the current time. More... | |
void | assign_initial_data_values_stage2 (Data *const &data_pt) |
Second step in a two-stage procedure to assign the history values for the Newmark scheme so that the veloc and accel that are computed by the scheme are correct at the current time. More... | |
void | shift_time_values (Data *const &data_pt) |
This function updates the Data's time history so that we can advance to the next timestep. More... | |
void | shift_time_positions (Node *const &node_pt) |
This function updates a nodal time history so that we can advance to the next timestep. More... | |
void | set_weights () |
Set weights. 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... | |
Public Member Functions inherited from oomph::TimeStepper | |
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 &)=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 |
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 () |
Get the pointer to the explicit timestepper to use as a predictor in adaptivity if Predict_by_explicit_step is set. More... | |
void | set_predictor_pt (ExplicitTimeStepper *_pred_pt) |
Set the pointer to the explicit timestepper to use as a predictor in adaptivity if Predict_by_explicit_step is set. More... | |
void | update_predicted_time (const double &new_time) |
Set the time that the current predictions apply for, only needed for paranoid checks when doing Predict_by_explicit_step. More... | |
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 () |
Access function for the pointer to time (can't have a paranoid test for null pointers because this is used as a set function). More... | |
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) |
Compute the error in the position i at a node zero here – overwrite for specific scheme. More... | |
virtual double | temporal_error_in_value (Data *const &data_pt, const unsigned &i) |
Compute the error in the value i in a Data structure zero here – overwrite for specific scheme. More... | |
virtual void | actions_before_timestep (Problem *problem_pt) |
Interface for any actions that need to be performed before a time step. More... | |
virtual void | actions_after_timestep (Problem *problem_pt) |
Interface for any actions that need to be performed after a time step. More... | |
Protected Attributes | |
double | Beta1 |
First Newmark parameter (usually 0.5) More... | |
double | Beta2 |
Second Newmark parameter (usually 0.5) More... | |
Protected Attributes inherited from oomph::TimeStepper | |
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 |
Pointer to explicit time stepper to use as predictor if Predict_by_explicit_step is set. ??ds merge the two? predict by explicit if pointer is set? More... | |
double | Predicted_time |
Store the time that the predicted values currently stored are at, to compare for paranoid checks. More... | |
int | Predictor_storage_index |
The time-index in each Data object where predicted values are stored. -1 if not set. More... | |
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
Newmark scheme for second time deriv. Stored data represents
NSTEPS=1 gives normal Newmark.
Definition at line 911 of file timesteppers.h.
typedef double(* oomph::Newmark< NSTEPS >::InitialConditionFctPt) (const double &t) |
Typedef for function that returns the (scalar) initial value at a given value of the continuous time t.
Definition at line 955 of file timesteppers.h.
typedef double(* oomph::Newmark< NSTEPS >::NodeInitialConditionFctPt) (const double &t, const Vector< double > &x) |
Typedef for function that returns the (scalar) initial value at a given value of the continuous time t and the spatial coordinate – appropriate for assignement of initial conditions for nodes.
Definition at line 971 of file timesteppers.h.
|
inline |
Constructor: Pass pointer to global time. We set up a timestepping scheme with NSTEPS+2 doubles to represent the history and the highest deriv is 2.
Definition at line 917 of file timesteppers.h.
|
delete |
Broken copy constructor.
void oomph::Newmark< NSTEPS >::assign_initial_data_values | ( | Data *const & | data_pt, |
Vector< InitialConditionFctPt > | initial_value_fct, | ||
Vector< InitialConditionFctPt > | initial_veloc_fct, | ||
Vector< InitialConditionFctPt > | initial_accel_fct | ||
) |
Initialise the time-history for the Data values, so that the Newmark representations for current veloc and acceleration are exact.
Definition at line 569 of file timesteppers.cc.
References oomph::Data::nvalue(), oomph::Data::set_value(), oomph::DoubleMatrixBase::solve(), t, and oomph::OcTreeNames::U.
void oomph::Newmark< NSTEPS >::assign_initial_data_values | ( | Node *const & | node_pt, |
Vector< NodeInitialConditionFctPt > | initial_value_fct, | ||
Vector< NodeInitialConditionFctPt > | initial_veloc_fct, | ||
Vector< NodeInitialConditionFctPt > | initial_accel_fct | ||
) |
Initialise the time-history for the nodal values, so that the Newmark representations for current veloc and acceleration are exact.
Initialise the time-history for the Data values, so that the Newmark representations for current veloc and acceleration are exact.
Definition at line 688 of file timesteppers.cc.
References i, oomph::Node::ndim(), oomph::Data::nvalue(), oomph::Data::set_value(), oomph::DoubleMatrixBase::solve(), t, oomph::OcTreeNames::U, and oomph::Node::x().
void oomph::Newmark< NSTEPS >::assign_initial_data_values_stage1 | ( | const unsigned | t_deriv, |
Data *const & | data_pt | ||
) |
First step in a two-stage procedure to assign the history values for the Newmark scheme so that the veloc and accel that are computed by the scheme are correct at the current time.
Call this function for t_deriv=0,1,2,3. When calling with
Follow this by calls to
Definition at line 831 of file timesteppers.cc.
References oomph::Data::nvalue(), oomph::Data::set_value(), and oomph::Data::value().
void oomph::Newmark< NSTEPS >::assign_initial_data_values_stage2 | ( | Data *const & | data_pt | ) |
Second step in a two-stage procedure to assign the history values for the Newmark scheme so that the veloc and accel that are computed by the scheme are correct at the current time.
This assigns appropriate values for the "previous velocities and accelerations" so that their current values, which were defined in assign_initial_data_values_stage1(...), are represented exactly by the Newmark scheme.
Definition at line 889 of file timesteppers.cc.
References oomph::Data::nvalue(), oomph::Data::set_value(), oomph::DoubleMatrixBase::solve(), oomph::OcTreeNames::U, and oomph::Data::value().
|
virtual |
Initialise the time-history for the values, corresponding to an impulsive start.
Implements oomph::TimeStepper.
Definition at line 532 of file timesteppers.cc.
References i, oomph::Node::ndim(), oomph::Node::nposition_type(), oomph::Node::position_is_a_copy(), t, and oomph::Node::x_gen().
|
virtual |
Initialise the time-history for the values, corresponding to an impulsive start.
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
Initialise the time-history for the values, corresponding to an impulsive start.
Implements oomph::TimeStepper.
Definition at line 503 of file timesteppers.cc.
References oomph::Data::is_a_copy(), oomph::Data::nvalue(), oomph::Data::set_value(), t, and oomph::Data::value().
|
inlinevirtual |
Number of timestep increments that need to be stored by the scheme.
Implements oomph::TimeStepper.
Definition at line 1038 of file timesteppers.h.
|
inlinevirtual |
Number of previous values available.
Implements oomph::TimeStepper.
Definition at line 1032 of file timesteppers.h.
|
delete |
Broken assignment operator.
|
inlinevirtual |
The actual order (accuracy of the scheme)
Reimplemented from oomph::TimeStepper.
Definition at line 934 of file timesteppers.h.
References oomph::Global_string_for_annotation::string().
|
virtual |
Set weights.
Implements oomph::TimeStepper.
Reimplemented in oomph::NewmarkBDF< NSTEPS >, oomph::NewmarkBDF< NSTEPS >, oomph::NewmarkBDF< NSTEPS >, and oomph::NewmarkBDF< NSTEPS >.
Definition at line 1039 of file timesteppers.cc.
References t.
|
virtual |
This function updates a nodal time history so that we can advance to the next timestep.
Implements oomph::TimeStepper.
Reimplemented in oomph::NewmarkBDF< NSTEPS >.
Definition at line 983 of file timesteppers.cc.
References i, oomph::Node::ndim(), oomph::Node::nposition_type(), oomph::Node::position_is_a_copy(), t, and oomph::Node::x_gen().
|
virtual |
This function updates the Data's time history so that we can advance to the next timestep.
Implements oomph::TimeStepper.
Reimplemented in oomph::NewmarkBDF< NSTEPS >.
Definition at line 950 of file timesteppers.cc.
References oomph::Data::is_a_copy(), oomph::Data::nvalue(), oomph::Data::set_value(), t, and oomph::Data::value().
|
protected |
First Newmark parameter (usually 0.5)
Definition at line 1046 of file timesteppers.h.
|
protected |
Second Newmark parameter (usually 0.5)
Definition at line 1049 of file timesteppers.h.