|
| NewmarkBDF () |
|
| NewmarkBDF (const NewmarkBDF &)=delete |
| Broken copy constructor. More...
|
|
void | operator= (const NewmarkBDF &)=delete |
| Broken assignment operator. More...
|
|
void | set_weights () |
| Set weights. More...
|
|
void | shift_time_values (Data *const &data_pt) |
|
void | shift_time_positions (Node *const &node_pt) |
|
void | enable_degrade_first_derivatives_to_bdf1 () |
|
void | disable_degrade_first_derivatives_to_bdf1 () |
| Disable degradation to first order BDF. More...
|
|
void | set_weights () |
| Set weights. More...
|
|
void | set_weights () |
| Set weights. More...
|
|
void | set_weights () |
| Set weights. More...
|
|
| Newmark () |
|
| 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) |
|
void | assign_initial_positions_impulsive (Node *const &node_pt) |
|
void | assign_initial_data_values (Data *const &data_pt, Vector< InitialConditionFctPt > initial_value_fct, Vector< InitialConditionFctPt > initial_veloc_fct, Vector< InitialConditionFctPt > initial_accel_fct) |
|
void | assign_initial_data_values (Node *const &node_pt, Vector< NodeInitialConditionFctPt > initial_value_fct, Vector< NodeInitialConditionFctPt > initial_veloc_fct, Vector< NodeInitialConditionFctPt > initial_accel_fct) |
|
void | assign_initial_data_values_stage1 (const unsigned t_deriv, Data *const &data_pt) |
|
void | assign_initial_data_values_stage2 (Data *const &data_pt) |
|
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...
|
|
| 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...
|
|
virtual void | set_predictor_weights () |
|
virtual void | calculate_predicted_values (Data *const &data_pt) |
|
virtual void | calculate_predicted_positions (Node *const &node_pt) |
|
virtual void | set_error_weights () |
|
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) |
|
template<unsigned NSTEPS>
class oomph::NewmarkBDF< NSTEPS >
////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// Newmark scheme for second time deriv with first derivatives calculated using BDF. . Stored data represents
- t=0: value at at present time, Time_pt->time()
- t=1: value at previous time, Time_pt->time()-dt
- ...
- t=NSTEPS: value at previous time, Time_pt->time()-NSTEPS*dt
- t=NSTEPS+1: 1st time deriv (= "velocity") at previous time, Time_pt->time()-dt
- t=NSTEPS+2: 2nd time deriv (= "acceleration") at previous time, Time_pt->time()-dt
NSTEPS=1 gives normal Newmark.
template<unsigned NSTEPS>
This function updates a nodal time history so that we can advance to the next timestep.
Reimplemented from oomph::Newmark< NSTEPS >.
1131 unsigned n_dim = node_pt->ndim();
1133 unsigned n_position_type = node_pt->nposition_type();
1136 double veloc[n_position_type][n_dim];
1137 double accel[n_position_type][n_dim];
1140 unsigned n_tstorage = this->
ntstorage();
1143 for (
unsigned i = 0;
i < n_dim;
i++)
1145 for (
unsigned k = 0;
k < n_position_type;
k++)
1147 veloc[
k][
i] = accel[
k][
i] = 0.0;
1149 for (
unsigned t = 0;
t < n_tstorage;
t++)
1152 accel[
k][
i] += this->
weight(2,
t) * node_pt->x_gen(
t,
k,
i);
1158 for (
unsigned i = 0;
i < n_dim;
i++)
1161 if (node_pt->position_is_a_copy(
i) ==
false)
1164 for (
unsigned k = 0;
k < n_position_type;
k++)
1168 for (
unsigned t = NSTEPS;
t > 0;
t--)
1170 node_pt->x_gen(
t,
k,
i) = node_pt->x_gen(
t - 1,
k,
i);
1173 node_pt->x_gen(NSTEPS + 1,
k,
i) = veloc[
k][
i];
1174 node_pt->x_gen(NSTEPS + 2,
k,
i) = accel[
k][
i];
unsigned ntstorage() const
Definition: timesteppers.h:601
virtual double weight(const unsigned &i, const unsigned &j) const
Access function for j-th weight for the i-th derivative.
Definition: timesteppers.h:594
char char char int int * k
Definition: level2_impl.h:374
References i, k, oomph::Node::ndim(), oomph::Node::nposition_type(), oomph::Node::position_is_a_copy(), plotPSD::t, and oomph::Node::x_gen().
template<unsigned NSTEPS>
This function updates the Data's time history so that we can advance to the next timestep.
Reimplemented from oomph::Newmark< NSTEPS >.
1085 unsigned n_value = data_pt->nvalue();
1088 Vector<double> veloc(n_value, 0.0);
1089 Vector<double> accel(n_value, 0.0);
1092 unsigned n_tstorage = this->
ntstorage();
1095 for (
unsigned i = 0;
i < n_value;
i++)
1098 for (
unsigned t = 0;
t < n_tstorage;
t++)
1101 accel[
i] += this->
weight(2,
t) * data_pt->value(
t,
i);
1107 for (
unsigned j = 0;
j < n_value;
j++)
1111 if (data_pt->is_a_copy(
j) ==
false)
1113 for (
unsigned t = NSTEPS;
t > 0;
t--)
1115 data_pt->set_value(
t,
j, data_pt->value(
t - 1,
j));
1117 data_pt->set_value(NSTEPS + 1,
j, veloc[
j]);
1118 data_pt->set_value(NSTEPS + 2,
j, accel[
j]);
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2
References i, oomph::Data::is_a_copy(), j, oomph::Data::nvalue(), oomph::Data::set_value(), plotPSD::t, and oomph::Data::value().