![]() |
|
#include <ode_element_for_imr.h>
Public Member Functions | |
IMRODEElement (TimeStepper *time_stepper_pt, SolutionFunctorBase *exact_solution_pt) | |
Constructor. More... | |
virtual | ~IMRODEElement () |
Virtual destructor. More... | |
Vector< double > | time_interpolate_u () const |
double | time_interpolate_time () const |
void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
void | fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
![]() | |
ODEElement () | |
Default constructor: null any pointers. More... | |
ODEElement (TimeStepper *time_stepper_pt, SolutionFunctorBase *exact_solution_pt) | |
void | build (TimeStepper *time_stepper_pt, SolutionFunctorBase *exact_solution_pt) |
Store pointers, create internal data. More... | |
virtual | ~ODEElement () |
unsigned | nvalue () const |
virtual void | fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mm) |
Vector< double > | exact_solution (const double &t) const |
Exact solution. More... | |
Vector< double > | derivative_function (const double &t, const Vector< double > &u) |
Exact solution. More... | |
![]() | |
GeneralisedElement () | |
Constructor: Initialise all pointers and all values to zero. More... | |
virtual | ~GeneralisedElement () |
Virtual destructor to clean up any memory allocated by the object. More... | |
GeneralisedElement (const GeneralisedElement &)=delete | |
Broken copy constructor. More... | |
void | operator= (const GeneralisedElement &)=delete |
Broken assignment operator. More... | |
Data *& | internal_data_pt (const unsigned &i) |
Return a pointer to i-th internal data object. More... | |
Data *const & | internal_data_pt (const unsigned &i) const |
Return a pointer to i-th internal data object (const version) More... | |
Data *& | external_data_pt (const unsigned &i) |
Return a pointer to i-th external data object. More... | |
Data *const & | external_data_pt (const unsigned &i) const |
Return a pointer to i-th external data object (const version) More... | |
unsigned long | eqn_number (const unsigned &ieqn_local) const |
int | local_eqn_number (const unsigned long &ieqn_global) const |
unsigned | add_external_data (Data *const &data_pt, const bool &fd=true) |
bool | external_data_fd (const unsigned &i) const |
void | exclude_external_data_fd (const unsigned &i) |
void | include_external_data_fd (const unsigned &i) |
void | flush_external_data () |
Flush all external data. More... | |
void | flush_external_data (Data *const &data_pt) |
Flush the object addressed by data_pt from the external data array. More... | |
unsigned | ninternal_data () const |
Return the number of internal data objects. More... | |
unsigned | nexternal_data () const |
Return the number of external data objects. More... | |
unsigned | ndof () const |
Return the number of equations/dofs in the element. More... | |
void | dof_vector (const unsigned &t, Vector< double > &dof) |
Return the vector of dof values at time level t. More... | |
void | dof_pt_vector (Vector< double * > &dof_pt) |
Return the vector of pointers to dof values. More... | |
void | set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data) |
void | assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt) |
void | describe_dofs (std::ostream &out, const std::string ¤t_string) const |
virtual void | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
void | add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt) |
virtual void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
virtual void | complete_setup_of_dependencies () |
virtual void | get_residuals (Vector< double > &residuals) |
virtual void | get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
virtual void | get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) |
virtual void | get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) |
virtual void | get_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) |
virtual void | get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
virtual void | get_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam) |
virtual void | get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) |
virtual void | get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product) |
virtual void | get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector) |
virtual unsigned | self_test () |
virtual void | compute_norm (Vector< double > &norm) |
virtual void | compute_norm (double &norm) |
virtual unsigned | ndof_types () const |
virtual void | get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const |
Private Member Functions | |
IMRODEElement (const IMRODEElement &dummy) | |
Broken copy constructor. More... | |
Class for ODE elements when using the implicit midpoint rule time integrator IMR. The residual and Jacobian functions are modified to interpolate in time. Note that the normal element can be used for the IMR implementation in the class IMRByBDF.
|
inline |
Constructor.
|
inlineprivate |
Broken copy constructor.
References oomph::BrokenCopy::broken_copy().
|
inlinevirtual |
Modified get jacobian: two differences from the normal verson here which are required when using the IMR implementation: 1) We have to interpolate in time to calculate the analytical contribution. 2) The interpolation in time within the residual calculation modifies the Jacobian (because the jacobian is the derivative w.r.t. the n+1-th values).
Reimplemented from oomph::ODEElement.
References oomph::ODEElement::Exact_solution_pt, fill_in_contribution_to_residuals(), oomph::GeneralisedElement::fill_in_jacobian_from_internal_by_fd(), oomph::SolutionFunctorBase::have_jacobian(), i, oomph::GeneralisedElement::internal_data_pt(), j, oomph::SolutionFunctorBase::jacobian(), n, oomph::ODEElement::nvalue(), plotPSD::t, time_interpolate_time(), time_interpolate_u(), oomph::Data::time_stepper_pt(), oomph::ODEElement::Use_fd_jacobian, and oomph::TimeStepper::weight().
|
inlinevirtual |
Modified get residuals: have to interpolate in time for IMR when using the IMR implementation so we can't use the normal ODE element implementation.
Reimplemented from oomph::ODEElement.
References oomph::ODEElement::derivative_function(), oomph::GeneralisedElement::internal_data_pt(), j, plotPSD::t, oomph::TimeStepper::time_derivative(), time_interpolate_time(), time_interpolate_u(), and oomph::Data::time_stepper_pt().
Referenced by fill_in_contribution_to_jacobian().
|
inline |
For IMR implemented using IMR we have to interpolate everything in time (to get the midpoint values). This function does that for the continuous time.
References oomph::GeneralisedElement::internal_data_pt(), j, oomph::TimeStepper::nprev_values_for_value_at_evaluation_time(), plotPSD::t, oomph::Time::time(), oomph::TimeStepper::time_pt(), oomph::Data::time_stepper_pt(), and oomph::TimeStepper::weight().
Referenced by fill_in_contribution_to_jacobian(), and fill_in_contribution_to_residuals().
For IMR implemented using IMR we have to interpolate everything in time (to get the midpoint values). This function does that for the u values.
References i, oomph::GeneralisedElement::internal_data_pt(), j, oomph::TimeStepper::nprev_values_for_value_at_evaluation_time(), oomph::ODEElement::nvalue(), oomph::Data::time_stepper_pt(), oomph::Data::value(), and oomph::TimeStepper::weight().
Referenced by fill_in_contribution_to_jacobian(), and fill_in_contribution_to_residuals().