oomph::PeriodicOrbitEquations Class Referenceabstract

#include <periodic_orbit_handler.h>

+ Inheritance diagram for oomph::PeriodicOrbitEquations:

Public Member Functions

 PeriodicOrbitEquations ()
 
 PeriodicOrbitEquations (const PeriodicOrbitEquations &dummy)=delete
 Broken copy constructor. More...
 
double *& omega_pt ()
 Broken assignment operator. More...
 
double omega ()
 Return the frequency. More...
 
void set_ntstorage (const unsigned &n_tstorage)
 Set the total number of time storage values. More...
 
Time *& time_pt ()
 Retun the pointer to the global time. More...
 
Time *const & time_pt () const
 Return the pointer to the global time (const version) More...
 
double time () const
 Return the global time, accessed via the time pointer. More...
 
void fill_in_contribution_to_integrated_residuals (PeriodicOrbitAssemblyHandlerBase *const &assembly_handler_pt, GeneralisedElement *const &elem_pt, Vector< double > &residuals)
 Add the element's contribution to its residual vector (wrapper) More...
 
void fill_in_contribution_to_integrated_jacobian (PeriodicOrbitAssemblyHandlerBase *const &assembly_handler_pt, GeneralisedElement *const &elem_pt, Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void orbit_output (GeneralisedElement *const &elem_pt, std::ostream &outfile, const unsigned &n_plot)
 
- Public Member Functions inherited from oomph::FiniteElement
void set_dimension (const unsigned &dim)
 
void set_nodal_dimension (const unsigned &nodal_dim)
 
void set_nnodal_position_type (const unsigned &nposition_type)
 Set the number of types required to interpolate the coordinate. More...
 
void set_n_node (const unsigned &n)
 
int nodal_local_eqn (const unsigned &n, const unsigned &i) const
 
double dJ_eulerian_at_knot (const unsigned &ipt, Shape &psi, DenseMatrix< double > &djacobian_dX) const
 
 FiniteElement ()
 Constructor. More...
 
virtual ~FiniteElement ()
 
 FiniteElement (const FiniteElement &)=delete
 Broken copy constructor. More...
 
virtual bool local_coord_is_valid (const Vector< double > &s)
 Broken assignment operator. More...
 
virtual void move_local_coord_back_into_element (Vector< double > &s) const
 
void get_centre_of_gravity_and_max_radius_in_terms_of_zeta (Vector< double > &cog, double &max_radius) const
 
virtual void local_coordinate_of_node (const unsigned &j, Vector< double > &s) const
 
virtual void local_fraction_of_node (const unsigned &j, Vector< double > &s_fraction)
 
virtual double local_one_d_fraction_of_node (const unsigned &n1d, const unsigned &i)
 
virtual void set_macro_elem_pt (MacroElement *macro_elem_pt)
 
MacroElementmacro_elem_pt ()
 Access function to pointer to macro element. More...
 
void get_x (const Vector< double > &s, Vector< double > &x) const
 
void get_x (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void get_x_from_macro_element (const Vector< double > &s, Vector< double > &x) const
 
virtual void get_x_from_macro_element (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void set_integration_scheme (Integral *const &integral_pt)
 Set the spatial integration scheme. More...
 
Integral *const & integral_pt () const
 Return the pointer to the integration scheme (const version) More...
 
virtual void shape (const Vector< double > &s, Shape &psi) const =0
 
virtual void shape_at_knot (const unsigned &ipt, Shape &psi) const
 
virtual void dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const
 
virtual void dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) const
 
virtual void d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual void d2shape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual double J_eulerian (const Vector< double > &s) const
 
virtual double J_eulerian_at_knot (const unsigned &ipt) const
 
void check_J_eulerian_at_knots (bool &passed) const
 
void check_jacobian (const double &jacobian) const
 
double dshape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsi, DenseMatrix< double > &djacobian_dX, RankFourTensor< double > &d_dpsidx_dX) const
 
double d2shape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual double d2shape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual void assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void describe_nodal_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
Node *& node_pt (const unsigned &n)
 Return a pointer to the local node n. More...
 
Node *const & node_pt (const unsigned &n) const
 Return a pointer to the local node n (const version) More...
 
unsigned nnode () const
 Return the number of nodes. More...
 
virtual unsigned nnode_1d () const
 
double raw_nodal_position (const unsigned &n, const unsigned &i) const
 
double raw_nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position (const unsigned &n, const unsigned &i) const
 
double nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double dnodal_position_dt (const unsigned &n, const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt at local node n. More...
 
double dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
virtual void disable_ALE ()
 
virtual void enable_ALE ()
 
virtual unsigned required_nvalue (const unsigned &n) const
 
unsigned nnodal_position_type () const
 
bool has_hanging_nodes () const
 
unsigned nodal_dimension () const
 Return the required Eulerian dimension of the nodes in this element. More...
 
virtual unsigned nvertex_node () const
 
virtual Nodevertex_node_pt (const unsigned &j) const
 
virtual Nodeconstruct_node (const unsigned &n)
 
virtual Nodeconstruct_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
virtual Nodeconstruct_boundary_node (const unsigned &n)
 
virtual Nodeconstruct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
int get_node_number (Node *const &node_pt) const
 
virtual Nodeget_node_at_local_coordinate (const Vector< double > &s) const
 
double raw_nodal_value (const unsigned &n, const unsigned &i) const
 
double raw_nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
unsigned dim () const
 
virtual ElementGeometry::ElementGeometry element_geometry () const
 Return the geometry type of the element (either Q or T usually). More...
 
virtual double interpolated_x (const Vector< double > &s, const unsigned &i) const
 Return FE interpolated coordinate x[i] at local coordinate s. More...
 
virtual double interpolated_x (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
virtual void interpolated_x (const Vector< double > &s, Vector< double > &x) const
 Return FE interpolated position x[] at local coordinate s as Vector. More...
 
virtual void interpolated_x (const unsigned &t, const Vector< double > &s, Vector< double > &x) const
 
virtual double interpolated_dxdt (const Vector< double > &s, const unsigned &i, const unsigned &t)
 
virtual void interpolated_dxdt (const Vector< double > &s, const unsigned &t, Vector< double > &dxdt)
 
unsigned ngeom_data () const
 
Datageom_data_pt (const unsigned &j)
 
void position (const Vector< double > &zeta, Vector< double > &r) const
 
void position (const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
 
void dposition_dt (const Vector< double > &zeta, const unsigned &t, Vector< double > &drdt)
 
virtual double zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const
 
void interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const
 
void locate_zeta (const Vector< double > &zeta, GeomObject *&geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
 
virtual void node_update ()
 
virtual void identify_field_data_for_interactions (std::set< std::pair< Data *, unsigned >> &paired_field_data)
 
virtual void identify_geometric_data (std::set< Data * > &geometric_data_pt)
 
virtual double s_min () const
 Min value of local coordinate. More...
 
virtual double s_max () const
 Max. value of local coordinate. More...
 
double size () const
 
virtual double compute_physical_size () const
 
virtual void point_output_data (const Vector< double > &s, Vector< double > &data)
 
void point_output (std::ostream &outfile, const Vector< double > &s)
 
virtual unsigned nplot_points_paraview (const unsigned &nplot) const
 
virtual unsigned nsub_elements_paraview (const unsigned &nplot) const
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_output_offset_information (std::ofstream &file_out, const unsigned &nplot, unsigned &counter) const
 
virtual void write_paraview_type (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_offsets (std::ofstream &file_out, const unsigned &nplot, unsigned &offset_sum) const
 
virtual unsigned nscalar_paraview () const
 
virtual void scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
virtual std::string scalar_name_paraview (const unsigned &i) const
 
virtual void output (std::ostream &outfile)
 
virtual void output (std::ostream &outfile, const unsigned &n_plot)
 
virtual void output (const unsigned &t, std::ostream &outfile, const unsigned &n_plot) const
 
virtual void output (FILE *file_pt)
 
virtual void output (FILE *file_pt, const unsigned &n_plot)
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 Output an exact solution over the element. More...
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 Output a time-dependent exact solution over the element. More...
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, const SolutionFunctorBase &exact_soln) const
 Output a time-dependent exact solution over the element. More...
 
virtual void get_s_plot (const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
 
virtual std::string tecplot_zone_string (const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (std::ostream &outfile, const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (FILE *file_pt, const unsigned &nplot) const
 
virtual unsigned nplot_points (const unsigned &nplot) const
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_abs_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error)
 
void integrate_fct (FiniteElement::SteadyExactSolutionFctPt integrand_fct_pt, Vector< double > &integral)
 Integrate Vector-valued function over element. More...
 
void integrate_fct (FiniteElement::UnsteadyExactSolutionFctPt integrand_fct_pt, const double &time, Vector< double > &integral)
 Integrate Vector-valued time-dep function over element. More...
 
virtual void build_face_element (const int &face_index, FaceElement *face_element_pt)
 
virtual unsigned self_test ()
 
virtual unsigned get_bulk_node_number (const int &face_index, const unsigned &i) const
 
virtual int face_outer_unit_normal_sign (const int &face_index) const
 Get the sign of the outer unit normal on the face given by face_index. More...
 
virtual unsigned nnode_on_face () const
 
void face_node_number_error_check (const unsigned &i) const
 Range check for face node numbers. More...
 
virtual CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt (const int &face_index) const
 
virtual BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt (const int &face_index) const
 
- Public Member Functions inherited from oomph::GeneralisedElement
 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 &current_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 &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_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 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
 
- Public Member Functions inherited from oomph::GeomObject
 GeomObject ()
 Default constructor. More...
 
 GeomObject (const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt)
 
 GeomObject (const GeomObject &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const GeomObject &)=delete
 Broken assignment operator. More...
 
virtual ~GeomObject ()
 (Empty) destructor More...
 
unsigned nlagrangian () const
 Access function to # of Lagrangian coordinates. More...
 
unsigned ndim () const
 Access function to # of Eulerian coordinates. More...
 
void set_nlagrangian_and_ndim (const unsigned &n_lagrangian, const unsigned &n_dim)
 Set # of Lagrangian and Eulerian coordinates. More...
 
TimeStepper *& time_stepper_pt ()
 
TimeSteppertime_stepper_pt () const
 
virtual void position (const double &t, const Vector< double > &zeta, Vector< double > &r) const
 
virtual void dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const
 
virtual void d2position (const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const
 
virtual void d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const
 

Protected Member Functions

void fill_in_generic_residual_contribution_orbit (PeriodicOrbitAssemblyHandlerBase *const &assembly_handler_pt, GeneralisedElement *const &elem_pt, Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 The routine that actually does all the work! More...
 
void set_timestepper_weights (const Shape &psi, const DShape &dpsidt)
 Set the timestepper weights. More...
 
virtual double dshape_and_dtest_eulerian_orbit (const Vector< double > &s, Shape &psi, DShape &dpsidt, Shape &test, DShape &dtestdt) const =0
 
virtual double dshape_and_dtest_eulerian_at_knot_orbit (const unsigned &ipt, Shape &psi, DShape &dpsidt, Shape &test, DShape &dtestdt) const =0
 
- Protected Member Functions inherited from oomph::FiniteElement
virtual void assemble_local_to_eulerian_jacobian (const DShape &dpsids, DenseMatrix< double > &jacobian) const
 
virtual void assemble_local_to_eulerian_jacobian2 (const DShape &d2psids, DenseMatrix< double > &jacobian2) const
 
virtual void assemble_eulerian_base_vectors (const DShape &dpsids, DenseMatrix< double > &interpolated_G) const
 
template<unsigned DIM>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double invert_jacobian_mapping (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual void dJ_eulerian_dnodal_coordinates (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<unsigned DIM>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
virtual void d_dshape_eulerian_dnodal_coordinates (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<unsigned DIM>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
virtual void transform_derivatives (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
void transform_derivatives_diagonal (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
virtual void transform_second_derivatives (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
virtual void fill_in_jacobian_from_nodal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_jacobian_from_nodal_by_fd (DenseMatrix< double > &jacobian)
 
virtual void update_before_nodal_fd ()
 
virtual void reset_after_nodal_fd ()
 
virtual void update_in_nodal_fd (const unsigned &i)
 
virtual void reset_in_nodal_fd (const unsigned &i)
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Zero-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 One-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Two-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
- Protected Member Functions inherited from oomph::GeneralisedElement
unsigned add_internal_data (Data *const &data_pt, const bool &fd=true)
 
bool internal_data_fd (const unsigned &i) const
 
void exclude_internal_data_fd (const unsigned &i)
 
void include_internal_data_fd (const unsigned &i)
 
void clear_global_eqn_numbers ()
 
void add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
 
virtual void assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_additional_local_eqn_numbers ()
 
int internal_local_eqn (const unsigned &i, const unsigned &j) const
 
int external_local_eqn (const unsigned &i, const unsigned &j)
 
virtual void fill_in_contribution_to_residuals (Vector< double > &residuals)
 
void fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
virtual void update_before_internal_fd ()
 
virtual void reset_after_internal_fd ()
 
virtual void update_in_internal_fd (const unsigned &i)
 
virtual void reset_in_internal_fd (const unsigned &i)
 
virtual void update_before_external_fd ()
 
virtual void reset_after_external_fd ()
 
virtual void update_in_external_fd (const unsigned &i)
 
virtual void reset_in_external_fd (const unsigned &i)
 
virtual void fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 

Private Attributes

unsigned Ntstorage
 
doubleOmega_pt
 
TimeTime_pt
 Pointer to global time. More...
 

Additional Inherited Members

- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 
- Static Public Attributes inherited from oomph::FiniteElement
static double Tolerance_for_singular_jacobian = 1.0e-16
 Tolerance below which the jacobian is considered singular. More...
 
static bool Accept_negative_jacobian = false
 
static bool Suppress_output_while_checking_for_inverted_elements
 
- Static Public Attributes inherited from oomph::GeneralisedElement
static bool Suppress_warning_about_repeated_internal_data
 
static bool Suppress_warning_about_repeated_external_data = true
 
static double Default_fd_jacobian_step = 1.0e-8
 
- Protected Attributes inherited from oomph::FiniteElement
MacroElementMacro_elem_pt
 Pointer to the element's macro element (NULL by default) More...
 
- Protected Attributes inherited from oomph::GeomObject
unsigned NLagrangian
 Number of Lagrangian (intrinsic) coordinates. More...
 
unsigned Ndim
 Number of Eulerian coordinates. More...
 
TimeStepperGeom_object_time_stepper_pt
 
- Static Protected Attributes inherited from oomph::FiniteElement
static const unsigned Default_Initial_Nvalue = 0
 Default value for the number of values at a node. More...
 
static const double Node_location_tolerance = 1.0e-14
 
static const unsigned N2deriv [] = {0, 1, 3, 6}
 
- Static Protected Attributes inherited from oomph::GeneralisedElement
static DenseMatrix< doubleDummy_matrix
 
static std::deque< double * > Dof_pt_deque
 

Constructor & Destructor Documentation

◆ PeriodicOrbitEquations() [1/2]

oomph::PeriodicOrbitEquations::PeriodicOrbitEquations ( )
inline
182 : Ntstorage(0), Omega_pt(0), Time_pt(0) {}
Time * Time_pt
Pointer to global time.
Definition: periodic_orbit_handler.h:178
double * Omega_pt
Definition: periodic_orbit_handler.h:175
unsigned Ntstorage
Definition: periodic_orbit_handler.h:172

◆ PeriodicOrbitEquations() [2/2]

oomph::PeriodicOrbitEquations::PeriodicOrbitEquations ( const PeriodicOrbitEquations dummy)
delete

Broken copy constructor.

Member Function Documentation

◆ dshape_and_dtest_eulerian_at_knot_orbit()

virtual double oomph::PeriodicOrbitEquations::dshape_and_dtest_eulerian_at_knot_orbit ( const unsigned ipt,
Shape psi,
DShape dpsidt,
Shape test,
DShape dtestdt 
) const
protectedpure virtual

Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of mapping

Implemented in oomph::SpectralPeriodicOrbitElement< NNODE_1D >.

Referenced by fill_in_generic_residual_contribution_orbit().

◆ dshape_and_dtest_eulerian_orbit()

virtual double oomph::PeriodicOrbitEquations::dshape_and_dtest_eulerian_orbit ( const Vector< double > &  s,
Shape psi,
DShape dpsidt,
Shape test,
DShape dtestdt 
) const
protectedpure virtual

Shape/test functions and derivs w.r.t. to global coords at local coord. s; return Jacobian of mapping

Implemented in oomph::SpectralPeriodicOrbitElement< NNODE_1D >.

◆ fill_in_contribution_to_integrated_jacobian()

void oomph::PeriodicOrbitEquations::fill_in_contribution_to_integrated_jacobian ( PeriodicOrbitAssemblyHandlerBase *const &  assembly_handler_pt,
GeneralisedElement *const &  elem_pt,
Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
inline

Add the element's contribution to its residual vector and element Jacobian matrix (wrapper)

262  {
263  // Call the generic routine with the flag set to 1
265  assembly_handler_pt, elem_pt, residuals, jacobian, 1);
266  }
void fill_in_generic_residual_contribution_orbit(PeriodicOrbitAssemblyHandlerBase *const &assembly_handler_pt, GeneralisedElement *const &elem_pt, Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
The routine that actually does all the work!
Definition: periodic_orbit_handler.cc:77

References fill_in_generic_residual_contribution_orbit().

◆ fill_in_contribution_to_integrated_residuals()

void oomph::PeriodicOrbitEquations::fill_in_contribution_to_integrated_residuals ( PeriodicOrbitAssemblyHandlerBase *const &  assembly_handler_pt,
GeneralisedElement *const &  elem_pt,
Vector< double > &  residuals 
)
inline

Add the element's contribution to its residual vector (wrapper)

244  {
245  // Call the generic residuals function with flag set to 0
246  // using a dummy matrix argument
248  assembly_handler_pt,
249  elem_pt,
250  residuals,
252  0);
253  }
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227

References oomph::GeneralisedElement::Dummy_matrix, and fill_in_generic_residual_contribution_orbit().

◆ fill_in_generic_residual_contribution_orbit()

void oomph::PeriodicOrbitEquations::fill_in_generic_residual_contribution_orbit ( PeriodicOrbitAssemblyHandlerBase *const &  assembly_handler_pt,
GeneralisedElement *const &  elem_pt,
Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
const unsigned flag 
)
protected

The routine that actually does all the work!

83  {
84  // A simple integration loop
85  // Find out how many nodes there are
86  const unsigned n_node = nnode();
87 
88  // Set up memory for the shape and test functions
89  Shape psi(n_node), test(n_node);
90  DShape dpsidt(n_node, 1), dtestdt(n_node, 1);
91 
92  // Set the value of n_intpt
93  const unsigned n_intpt = integral_pt()->nweight();
94 
95  // Integers to store the local equation and unknown numbers
96  int local_eqn = 0, local_unknown = 0;
97 
98  // Storage for the underlying element's residuals
99  const unsigned n_elem_dof = elem_pt->ndof();
100  Vector<double> el_residuals(n_elem_dof);
101  DenseMatrix<double> el_mass;
102  DenseMatrix<double> el_jacobian;
103 
104  if (flag)
105  {
106  el_mass.resize(n_elem_dof, n_elem_dof);
107  el_jacobian.resize(n_elem_dof, n_elem_dof);
108  }
109 
110  // Storage for the current value of the unkowns
111  Vector<double> u(n_elem_dof);
112  // and the derivatives
113  Vector<double> du_dt(n_elem_dof);
114  // And the previous derivative
115  Vector<double> du_dt_old(n_elem_dof);
116  // Storage for the inner product matrix
117  DenseMatrix<double> inner_product(n_elem_dof);
118  // Cast the element
119  PeriodicOrbitBaseElement* const base_el_pt =
120  dynamic_cast<PeriodicOrbitBaseElement*>(elem_pt);
121  // Get the inner product matrix
122  base_el_pt->get_inner_product_matrix(inner_product);
123 
124  // Storage for "all" unknowns
125  Vector<double> all_current_unknowns;
126  Vector<double> all_previous_unknowns;
127 
128  // Get the value of omega
129  const double inverse_timescale = this->omega();
130 
131  // Loop over the integration points
132  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
133  {
134  // Get the integral weight
135  double w = integral_pt()->weight(ipt);
136 
137  // Call the derivatives of the shape and test functions
139  ipt, psi, dpsidt, test, dtestdt);
140 
141  // Premultiply the weights and the Jacobian
142  double W = w * J;
143 
144  // Sort out the timestepper weights and the time in here
145  // Calculate the time
146  double interpolated_time = 0.0;
147  for (unsigned l = 0; l < n_node; l++)
148  {
149  interpolated_time += raw_nodal_position(l, 0) * psi(l);
150  }
151 
152 
153  // Need to multiply by period and the set global time
154  this->time_pt()->time() = interpolated_time / inverse_timescale;
155  // Set the weights of the timestepper
156  this->set_timestepper_weights(psi, dpsidt);
157 
158  // Get the residuals of the element or residuals and jacobian
159  if (flag)
160  {
161  elem_pt->get_jacobian_and_mass_matrix(
162  el_residuals, el_jacobian, el_mass);
163  }
164  else
165  {
166  elem_pt->get_residuals(el_residuals);
167  }
168 
169  // Get the current value of the unknown time derivatives
170  base_el_pt->get_non_external_ddofs_dt(du_dt);
171 
172  // Multiply the elemental residuals by the appropriate test functions
173  for (unsigned l = 0; l < n_node; l++)
174  {
175  // Get the local equation number
176  local_eqn = nodal_local_eqn(l, 0);
177  // If it's not a boundary condition (it will never be)
178  if (local_eqn >= 0)
179  {
180  // Work out the offset which is the GLOBAL time unknown
181  // multiplied by the number of elemental unknowns
182  unsigned offset = this->eqn_number(local_eqn) * n_elem_dof;
183  // Add to the appropriate residuals
184  for (unsigned i = 0; i < n_elem_dof; i++)
185  {
186  residuals[i + offset] += el_residuals[i] * psi(l) * W;
187  }
188 
189 
190  // Add the jacobian contributions
191  if (flag)
192  {
193  // The form of the equations is -M du/dt + R = 0
194 
195  // Now add the contribution to the jacobian
196  for (unsigned l2 = 0; l2 < n_node; l2++)
197  {
198  local_unknown = nodal_local_eqn(l2, 0);
199  if (local_unknown >= 0)
200  {
201  // Work out the second offset
202  unsigned offset2 = this->eqn_number(local_unknown) * n_elem_dof;
203  // Add to the appropriate jacobian terms
204  for (unsigned i = 0; i < n_elem_dof; i++)
205  {
206  for (unsigned j = 0; j < n_elem_dof; j++)
207  {
208  // Add in the Jacobian terms
209  jacobian(i + offset, j + offset2) +=
210  el_jacobian(i, j) * psi(l2) * psi(l) * W;
211 
212  // Add the time derivative terms,
213  jacobian(i + offset, j + offset2) -=
214  el_mass(i, j) * dpsidt(l2, 0) * inverse_timescale *
215  psi(l) * W;
216  }
217  }
218  }
219  }
220 
221 
222  // Add the variation of the period
223  for (unsigned i = 0; i < n_elem_dof; i++)
224  {
225  for (unsigned j = 0; j < n_elem_dof; j++)
226  {
227  jacobian(i + offset, Ntstorage * n_elem_dof) -=
228  el_mass(i, j) * (du_dt[j] / inverse_timescale) * psi(l) * W;
229  }
230  }
231  } // End of Jacobian flag
232  }
233  }
234 
235  // Sort out the phase condition
236 
237  // Get the current value of the unknowns
238  base_el_pt->get_non_external_dofs(u);
239 
240  // Now get the unknowns required by the assembly handler
241  // i.e. including all values throughout the period for backup
242  assembly_handler_pt->get_dofs_for_element(elem_pt, all_current_unknowns);
243  // Get the previous values as stored by the assembly handler
244  assembly_handler_pt->get_previous_dofs_for_element(elem_pt,
245  all_previous_unknowns);
246 
247  // Now set the elemental values to the previous values
248  assembly_handler_pt->set_dofs_for_element(elem_pt, all_previous_unknowns);
249  // Get the previous time derivatives
250  base_el_pt->get_non_external_ddofs_dt(du_dt_old);
251  // Reset the element's values to the current
252  assembly_handler_pt->set_dofs_for_element(elem_pt, all_current_unknowns);
253 
254 
255  // Assemble the inner product
256  double sum = 0.0;
257  for (unsigned i = 0; i < n_elem_dof; i++)
258  {
259  for (unsigned j = 0; j < n_elem_dof; j++)
260  {
261  sum += u[i] * inner_product(i, j) * du_dt_old[j];
262  }
263  }
264 
265  // Add to the residuals
266  residuals[Ntstorage * n_elem_dof] += sum * W;
267 
268  // Sort out the jacobian
269  if (flag)
270  {
271  // Loop over the unknown time points
272  for (unsigned l2 = 0; l2 < n_node; l2++)
273  {
274  // Get the local unknown
275  local_unknown = nodal_local_eqn(l2, 0);
276  if (local_unknown >= 0)
277  {
278  // Work out the offset
279  unsigned offset2 = this->eqn_number(local_unknown) * n_elem_dof;
280  // Now add in the appropriate jacobian terms
281  for (unsigned i2 = 0; i2 < n_elem_dof; i2++)
282  {
283  double sum2 = 0.0;
284  for (unsigned j = 0; j < n_elem_dof; j++)
285  {
286  sum2 += inner_product(i2, j) * du_dt_old[j];
287  }
288  jacobian(Ntstorage * n_elem_dof, i2 + offset2) +=
289  psi(l2) * sum2 * W;
290  }
291  }
292  }
293  } // End of jacobian calculation
294 
295  } // End of loop over time period integration points
296  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
RowVector3d w
Definition: Matrix_resize_int.cpp:3
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition: PlainObjectBase.h:294
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
double raw_nodal_position(const unsigned &n, const unsigned &i) const
Definition: elements.cc:1686
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
void set_timestepper_weights(const Shape &psi, const DShape &dpsidt)
Set the timestepper weights.
Definition: periodic_orbit_handler.h:284
virtual double dshape_and_dtest_eulerian_at_knot_orbit(const unsigned &ipt, Shape &psi, DShape &dpsidt, Shape &test, DShape &dtestdt) const =0
Time *& time_pt()
Retun the pointer to the global time.
Definition: periodic_orbit_handler.h:214
double omega()
Return the frequency.
Definition: periodic_orbit_handler.h:202
double & time()
Return the current value of the continuous time.
Definition: timesteppers.h:123
squared absolute sa ArrayBase::abs2 DOXCOMMA MatrixBase::cwiseAbs2 sa Eigen::abs2 DOXCOMMA Eigen::pow DOXCOMMA ArrayBase::square nearest sa Eigen::floor DOXCOMMA Eigen::ceil DOXCOMMA ArrayBase::round nearest integer not less than the given sa Eigen::floor DOXCOMMA ArrayBase::ceil not a number test
Definition: GlobalFunctions.h:109
@ W
Definition: quadtree.h:63
Definition: indexed_view.cpp:20
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References dshape_and_dtest_eulerian_at_knot_orbit(), oomph::GeneralisedElement::eqn_number(), oomph::PeriodicOrbitAssemblyHandlerBase::get_dofs_for_element(), oomph::PeriodicOrbitBaseElement::get_inner_product_matrix(), oomph::GeneralisedElement::get_jacobian_and_mass_matrix(), oomph::PeriodicOrbitBaseElement::get_non_external_ddofs_dt(), oomph::PeriodicOrbitBaseElement::get_non_external_dofs(), oomph::PeriodicOrbitAssemblyHandlerBase::get_previous_dofs_for_element(), oomph::GeneralisedElement::get_residuals(), i, oomph::FiniteElement::integral_pt(), J, j, oomph::GeneralisedElement::ndof(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_local_eqn(), Ntstorage, oomph::Integral::nweight(), omega(), oomph::FiniteElement::raw_nodal_position(), oomph::DenseMatrix< T >::resize(), oomph::PeriodicOrbitAssemblyHandlerBase::set_dofs_for_element(), set_timestepper_weights(), Eigen::test, oomph::Time::time(), time_pt(), w, oomph::QuadTreeNames::W, and oomph::Integral::weight().

Referenced by fill_in_contribution_to_integrated_jacobian(), and fill_in_contribution_to_integrated_residuals().

◆ omega()

double oomph::PeriodicOrbitEquations::omega ( )
inline

Return the frequency.

203  {
204  return *Omega_pt;
205  }

References Omega_pt.

Referenced by fill_in_generic_residual_contribution_orbit(), orbit_output(), and set_timestepper_weights().

◆ omega_pt()

double*& oomph::PeriodicOrbitEquations::omega_pt ( )
inline

Broken assignment operator.

Set the pointer to the frequency

197  {
198  return Omega_pt;
199  }

References Omega_pt.

Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh().

◆ orbit_output()

void oomph::PeriodicOrbitEquations::orbit_output ( GeneralisedElement *const &  elem_pt,
std::ostream &  outfile,
const unsigned n_plot 
)
33  {
34  // Find out how many nodes there are
35  const unsigned n_node = nnode();
36 
37  // Set up memory for the shape and test functions
38  Shape psi(n_node);
39  DShape dpsidt(n_node, 1);
40 
41  Vector<double> s(1);
42 
43  // Cast the element
44  PeriodicOrbitBaseElement* const base_el_pt =
45  dynamic_cast<PeriodicOrbitBaseElement*>(elem_pt);
46 
47  const double inverse_timescale = this->omega();
48 
49  // Loop over the plot point
50  for (unsigned i = 0; i < n_plot; i++)
51  {
52  // Get the coordinate
53  s[0] = -1.0 + 2.0 * i / ((double)(n_plot - 1));
54 
55  (void)dshape_eulerian(s, psi, dpsidt);
56 
57  // Sort out the timestepper weights and the time in here
58  // Calculate the time
59  double interpolated_time = 0.0;
60  for (unsigned l = 0; l < n_node; l++)
61  {
62  interpolated_time += raw_nodal_position(l, 0) * psi(l);
63  }
64 
65 
66  // Need to multiply by period and the set global time
67  this->time_pt()->time() = interpolated_time;
68 
69  // Set the weights of the timestepper
70  this->set_timestepper_weights(psi, dpsidt);
71 
72  base_el_pt->spacetime_output(
73  outfile, n_plot, interpolated_time / inverse_timescale);
74  }
75  }
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
RealScalar s
Definition: level1_cplx_impl.h:130

References oomph::FiniteElement::dshape_eulerian(), i, oomph::FiniteElement::nnode(), omega(), oomph::FiniteElement::raw_nodal_position(), s, set_timestepper_weights(), oomph::PeriodicOrbitBaseElement::spacetime_output(), oomph::Time::time(), and time_pt().

◆ set_ntstorage()

void oomph::PeriodicOrbitEquations::set_ntstorage ( const unsigned n_tstorage)
inline

Set the total number of time storage values.

209  {
210  Ntstorage = n_tstorage;
211  }

References Ntstorage.

Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh().

◆ set_timestepper_weights()

void oomph::PeriodicOrbitEquations::set_timestepper_weights ( const Shape psi,
const DShape dpsidt 
)
inlineprotected

Set the timestepper weights.

285  {
286  PeriodicOrbitTimeDiscretisation* cast_time_stepper_pt =
287  dynamic_cast<PeriodicOrbitTimeDiscretisation*>(time_stepper_pt());
288 
289 
290  // Zero the timestepper weights
291  unsigned n_time_dof = cast_time_stepper_pt->ntstorage();
292  for (unsigned i = 0; i < n_time_dof; i++)
293  {
294  cast_time_stepper_pt->Weight(0, i) = 0.0;
295  cast_time_stepper_pt->Weight(1, i) = 0.0;
296  }
297 
298  // Cache the frequency (timescale)
299  const double inverse_timescale = this->omega();
300  // Now set the weights
301  const unsigned n_node = this->nnode();
302 
303  // Global equation for the total number of time unknowns
304  // in the problem
305  int global_eqn;
306  for (unsigned l = 0; l < n_node; l++)
307  {
308  global_eqn = this->eqn_number(this->nodal_local_eqn(l, 0));
309  cast_time_stepper_pt->Weight(0, global_eqn) = psi(l);
310  cast_time_stepper_pt->Weight(1, global_eqn) =
311  dpsidt(l, 0) * inverse_timescale;
312  }
313  }
TimeStepper *& time_stepper_pt()
Definition: geom_objects.h:192

References oomph::GeneralisedElement::eqn_number(), i, oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_local_eqn(), oomph::TimeStepper::ntstorage(), omega(), oomph::GeomObject::time_stepper_pt(), and oomph::TimeStepper::Weight.

Referenced by fill_in_generic_residual_contribution_orbit(), and orbit_output().

◆ time()

double oomph::PeriodicOrbitEquations::time ( ) const
inline

Return the global time, accessed via the time pointer.

227  {
228  // If no Time_pt, return 0.0
229  if (Time_pt == 0)
230  {
231  return 0.0;
232  }
233  else
234  {
235  return Time_pt->time();
236  }
237  }

References oomph::Time::time(), and Time_pt.

◆ time_pt() [1/2]

Time*& oomph::PeriodicOrbitEquations::time_pt ( )
inline

Retun the pointer to the global time.

215  {
216  return Time_pt;
217  }

References Time_pt.

Referenced by oomph::PeriodicOrbitAssemblyHandler< NNODE_1D >::adapt_temporal_mesh(), fill_in_generic_residual_contribution_orbit(), and orbit_output().

◆ time_pt() [2/2]

Time* const& oomph::PeriodicOrbitEquations::time_pt ( ) const
inline

Return the pointer to the global time (const version)

221  {
222  return Time_pt;
223  }

References Time_pt.

Member Data Documentation

◆ Ntstorage

unsigned oomph::PeriodicOrbitEquations::Ntstorage
private

◆ Omega_pt

double* oomph::PeriodicOrbitEquations::Omega_pt
private

Referenced by omega(), and omega_pt().

◆ Time_pt

Time* oomph::PeriodicOrbitEquations::Time_pt
private

Pointer to global time.

Referenced by time(), and time_pt().


The documentation for this class was generated from the following files: