![]() |
|
#include <implicit_midpoint_rule.h>
Public Member Functions | |
IMRByBDF (const bool &adaptive=false) | |
Constructor with initialisation. More... | |
virtual | ~IMRByBDF () |
Destructor. More... | |
void | set_weights () |
Setup weights for time derivative calculations. More... | |
unsigned | nprev_values_for_value_at_evaluation_time () const |
void | actions_before_timestep (Problem *problem_pt) |
Half the timestep before starting solve. More... | |
void | actions_after_timestep (Problem *problem_pt) |
![]() | |
IMRBase (const bool &adaptive=false) | |
Constructor with initialisation. More... | |
virtual | ~IMRBase () |
Destructor. More... | |
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) |
void | shift_time_positions (Node *const &node_pt) |
void | set_error_weights () |
void | set_predictor_weights () |
void | assign_initial_values_impulsive (Data *const &data_pt) |
not implemented (??ds TODO) More... | |
void | assign_initial_positions_impulsive (Node *const &node_pt) |
void | calculate_predicted_positions (Node *const &node_pt) |
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) | |
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... | |
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 | Update_pinned |
Should we update pinned variables after the half-step? More... | |
Private Member Functions | |
IMRByBDF (const IMRByBDF &dummy) | |
Inaccessible copy constructor. More... | |
void | operator= (const IMRByBDF &dummy) |
Inaccessible assignment operator. 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 |
Implementation of implicit midpoint rule by taking half a step of bdf1 then applying an update to all dofs. This implementation should work with any existing problem for which the BDF methods work.
The exception is when multiple different time steppers are being used simultaneously for different parts of the problem. In this case the IMR class should be used.
|
inline |
Constructor with initialisation.
References Update_pinned.
|
inlineprivate |
|
virtual |
Take problem from t={n+1/2} to t=n+1 by algebraic update and restore time step.
Reimplemented from oomph::TimeStepper.
References abs(), oomph::Time::dt(), e(), oomph::Mesh::element_pt(), oomph::Problem::get_dofs(), oomph::Problem::global_data_pt(), i, oomph::GeneralisedElement::internal_data_pt(), j, oomph::Problem::mesh_pt(), oomph::Problem::ndof(), oomph::Mesh::nelement(), oomph::Problem::nglobal_data(), oomph::GeneralisedElement::ninternal_data(), oomph::Mesh::nnode(), oomph::Mesh::node_pt(), oomph::DistributableLinearAlgebraObject::nrow(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, oomph::post_midpoint_update(), oomph::Global_string_for_annotation::string(), oomph::Time::time(), oomph::Problem::time_pt(), oomph::StringConversion::to_string(), and Update_pinned.
|
virtual |
Half the timestep before starting solve.
Reimplemented from oomph::TimeStepper.
References oomph::Problem::dof(), oomph::Time::dt(), oomph::Problem::get_dofs(), i, oomph::Problem::ndof(), oomph::Problem::ntime_stepper(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, set_weights(), oomph::Global_string_for_annotation::string(), oomph::Time::time(), oomph::TimeStepper::time_pt(), and oomph::Problem::use_predictor_values_as_initial_guess().
|
inlinevirtual |
Number of history values to interpolate over to get the "current" value. Evaluation time is the end of the bdf1 "half-step", so only need one value as normal.
Implements oomph::IMRBase.
|
inlineprivate |
|
inlinevirtual |
Setup weights for time derivative calculations.
Implements oomph::IMRBase.
References oomph::Time::dt(), oomph::TimeStepper::Time_pt, and oomph::TimeStepper::Weight.
Referenced by actions_before_timestep().
bool oomph::IMRByBDF::Update_pinned |
Should we update pinned variables after the half-step?
Referenced by actions_after_timestep(), and IMRByBDF().