oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM > Class Template Referenceabstract

#include <space_time_unsteady_heat_elements.h>

+ Inheritance diagram for oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >:

Public Types

typedef void(* SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)
 
typedef void(* SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)
 
- Public Types inherited from oomph::SpaceTimeUnsteadyHeatEquationsBase
typedef void(* SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)
 
typedef void(* SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)
 
typedef void(* SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)
 
- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 

Public Member Functions

 SpaceTimeUnsteadyHeatEquations ()
 
 SpaceTimeUnsteadyHeatEquations (const SpaceTimeUnsteadyHeatEquations &dummy)=delete
 Broken copy constructor. More...
 
void disable_ALE ()
 
void enable_ALE ()
 
void compute_norm (double &norm)
 Compute norm of FE solution. More...
 
void output (std::ostream &outfile)
 Output with default number of plot points. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 
void output (FILE *file_pt)
 C_style output with default number of plot points. More...
 
void output (FILE *file_pt, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
virtual void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 Get error and norm against exact solution. More...
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Get error and norm against exact solution. More...
 
void output_element_paraview (std::ofstream &outfile, const unsigned &nplot)
 
unsigned nscalar_paraview () const
 
void scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
 
void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
std::string scalar_name_paraview (const unsigned &i) const
 
SpaceTimeUnsteadyHeatSourceFctPtsource_fct_pt ()
 Access function: Pointer to source function. More...
 
SpaceTimeUnsteadyHeatSourceFctPt source_fct_pt () const
 Access function: Pointer to source function. Const version. More...
 
virtual void get_source_ust_heat (const double &t, const unsigned &ipt, const Vector< double > &x, double &source) const
 
const doublealpha () const
 Alpha parameter (thermal inertia) More...
 
double *& alpha_pt ()
 Pointer to Alpha parameter (thermal inertia) More...
 
const doublebeta () const
 Beta parameter (thermal conductivity) More...
 
double *& beta_pt ()
 Pointer to Beta parameter (thermal conductivity) More...
 
void get_flux (const Vector< double > &s, Vector< double > &flux) const
 Get flux: flux[i]=du/dx_i. More...
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Compute element residual Vector (wrapper) More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 Compute element residual Vector and element Jacobian matrix (wrapper) More...
 
double interpolated_u_ust_heat (const Vector< double > &s) const
 Return FE representation of function value u(s) at local coordinate s. More...
 
virtual unsigned u_index_ust_heat () const
 
double interpolated_u_ust_heat (const unsigned &t, const Vector< double > &s) const
 
double du_dt_ust_heat (const unsigned &n) const
 
double interpolated_du_dt_ust_heat (const Vector< double > &s) const
 
unsigned self_test ()
 Self-test: Return 0 for OK. More...
 
 SpaceTimeUnsteadyHeatEquations ()
 
 SpaceTimeUnsteadyHeatEquations (const SpaceTimeUnsteadyHeatEquations &dummy)=delete
 Broken copy constructor. More...
 
void disable_ALE ()
 
void enable_ALE ()
 
void compute_norm (double &norm)
 Compute norm of FE solution. More...
 
void output (std::ostream &outfile)
 Output with default number of plot points. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 
void output (FILE *file_pt)
 C_style output with default number of plot points. More...
 
void output (FILE *file_pt, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
virtual void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 Get error and norm against exact solution. More...
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Get error and norm against exact solution. More...
 
void output_element_paraview (std::ofstream &outfile, const unsigned &nplot)
 
unsigned nscalar_paraview () const
 
void scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
 
void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
std::string scalar_name_paraview (const unsigned &i) const
 
SpaceTimeUnsteadyHeatSourceFctPtsource_fct_pt ()
 Access function: Pointer to source function. More...
 
SpaceTimeUnsteadyHeatSourceFctPt source_fct_pt () const
 Access function: Pointer to source function. Const version. More...
 
virtual void get_source_ust_heat (const double &t, const unsigned &ipt, const Vector< double > &x, double &source) const
 
const doublealpha () const
 Alpha parameter (thermal inertia) More...
 
double *& alpha_pt ()
 Pointer to Alpha parameter (thermal inertia) More...
 
const doublebeta () const
 Beta parameter (thermal conductivity) More...
 
double *& beta_pt ()
 Pointer to Beta parameter (thermal conductivity) More...
 
void get_flux (const Vector< double > &s, Vector< double > &flux) const
 Get flux: flux[i]=du/dx_i. More...
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Compute element residual Vector (wrapper) More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 Compute element residual Vector and element Jacobian matrix (wrapper) More...
 
double interpolated_u_ust_heat (const Vector< double > &s) const
 Return FE representation of function value u(s) at local coordinate s. More...
 
virtual unsigned u_index_ust_heat () const
 
double interpolated_u_ust_heat (const unsigned &t, const Vector< double > &s) const
 
double du_dt_ust_heat (const unsigned &n) const
 
double interpolated_du_dt_ust_heat (const Vector< double > &s) const
 
unsigned self_test ()
 Self-test: Return 0 for OK. More...
 
virtual double dshape_and_dtest_eulerian_ust_heat (const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
 
virtual double dshape_and_dtest_eulerian_at_knot_ust_heat (const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
 
- 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 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 void output (const unsigned &t, std::ostream &outfile, const unsigned &n_plot) const
 
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, 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 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 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

virtual double dshape_and_dtest_eulerian_ust_heat (const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
 
virtual double dshape_and_dtest_eulerian_at_knot_ust_heat (const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
 
virtual void fill_in_generic_residual_contribution_ust_heat (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
virtual void fill_in_generic_residual_contribution_ust_heat (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
- 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)
 
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)
 
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)
 

Protected Attributes

SpaceTimeUnsteadyHeatSourceFctPt Source_fct_pt
 Pointer to source function: More...
 
bool ALE_is_disabled
 
doubleAlpha_pt
 Pointer to Alpha parameter (thermal inertia) More...
 
doubleBeta_pt
 Pointer to Beta parameter (thermal conductivity) More...
 
- 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 Private Attributes

static double Default_alpha_parameter
 Default value for Alpha parameter (thermal inertia) More...
 
static double Default_beta_parameter
 Default value for Beta parameter (thermal conductivity) More...
 

Additional Inherited Members

- 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
 
- 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
 

Detailed Description

template<unsigned SPATIAL_DIM>
class oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >

A class for all isoparametric elements that solve the SpaceTimeUnsteadyHeat equations.

\[ \frac{\partial^2 u}{\partial x_i^2}=\frac{\partial u}{\partial t}+f(t,x_j) \]

This contains the generic maths. Shape functions, geometric mapping etc. must get implemented in derived class. Note that this class assumes an isoparametric formulation, i.e. that the scalar unknown is interpolated using the same shape funcitons as the position.

Member Typedef Documentation

◆ SpaceTimeUnsteadyHeatSourceFctPt [1/2]

template<unsigned SPATIAL_DIM>
typedef void(* oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)

Function pointer to source function fct(t,x,f(x,t)) – x is a Vector! DRAIG: Why is this here? There is already one in the base class!

◆ SpaceTimeUnsteadyHeatSourceFctPt [2/2]

template<unsigned SPATIAL_DIM>
typedef void(* oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatSourceFctPt) (const double &time, const Vector< double > &x, double &u)

Function pointer to source function fct(t,x,f(x,t)) – x is a Vector! DRAIG: Why is this here? There is already one in the base class!

Constructor & Destructor Documentation

◆ SpaceTimeUnsteadyHeatEquations() [1/4]

template<unsigned SPATIAL_DIM>
oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations ( )
inline

Constructor: Initialises the Source_fct_pt to null and sets flag to use ALE formulation of the equations. Also, set Alpha (thermal inertia) and Beta (thermal conductivity) parameters to defaults (both one for natural scaling).

91  : Source_fct_pt(0), ALE_is_disabled(false)
92  {
93  // Set Alpha parameter to default (one for natural scaling)
95 
96  // Set Beta parameter to default (one for natural scaling)
98  } // End of SpaceTimeUnsteadyHeatEquations
double * Beta_pt
Pointer to Beta parameter (thermal conductivity)
Definition: space_time_unsteady_heat_elements.h:678
double * Alpha_pt
Pointer to Alpha parameter (thermal inertia)
Definition: space_time_unsteady_heat_elements.h:675
static double Default_beta_parameter
Default value for Beta parameter (thermal conductivity)
Definition: space_time_unsteady_heat_elements.h:687
SpaceTimeUnsteadyHeatSourceFctPt Source_fct_pt
Pointer to source function:
Definition: space_time_unsteady_heat_elements.h:667
bool ALE_is_disabled
Definition: space_time_unsteady_heat_elements.h:672
static double Default_alpha_parameter
Default value for Alpha parameter (thermal inertia)
Definition: space_time_unsteady_heat_elements.h:683

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_alpha_parameter, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_beta_parameter.

◆ SpaceTimeUnsteadyHeatEquations() [2/4]

template<unsigned SPATIAL_DIM>
oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations ( const SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM > &  dummy)
delete

Broken copy constructor.

◆ SpaceTimeUnsteadyHeatEquations() [3/4]

template<unsigned SPATIAL_DIM>
oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations ( )
inline

Constructor: Initialises the Source_fct_pt to null and sets flag to use ALE formulation of the equations. Also, set Alpha (thermal inertia) and Beta (thermal conductivity) parameters to defaults (both one for natural scaling).

90  : Source_fct_pt(0), ALE_is_disabled(false)
91  {
92  // Set Alpha parameter to default (one for natural scaling)
94 
95  // Set Beta parameter to default (one for natural scaling)
97  } // End of SpaceTimeUnsteadyHeatEquations

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_alpha_parameter, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_beta_parameter.

◆ SpaceTimeUnsteadyHeatEquations() [4/4]

template<unsigned SPATIAL_DIM>
oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations ( const SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM > &  dummy)
delete

Broken copy constructor.

Member Function Documentation

◆ alpha() [1/2]

template<unsigned SPATIAL_DIM>
const double& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::alpha ( ) const
inline

Alpha parameter (thermal inertia)

419  {
420  // Return the value of Alpha
421  return *Alpha_pt;
422  } // End of alpha

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt.

◆ alpha() [2/2]

template<unsigned SPATIAL_DIM>
const double& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::alpha ( ) const
inline

Alpha parameter (thermal inertia)

418  {
419  // Return the value of Alpha
420  return *Alpha_pt;
421  } // End of alpha

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt.

◆ alpha_pt() [1/2]

template<unsigned SPATIAL_DIM>
double*& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::alpha_pt ( )
inline

Pointer to Alpha parameter (thermal inertia)

427  {
428  // Return the pointer to Alpha
429  return Alpha_pt;
430  } // End of alpha_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt.

◆ alpha_pt() [2/2]

template<unsigned SPATIAL_DIM>
double*& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::alpha_pt ( )
inline

Pointer to Alpha parameter (thermal inertia)

426  {
427  // Return the pointer to Alpha
428  return Alpha_pt;
429  } // End of alpha_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Alpha_pt.

◆ beta() [1/2]

template<unsigned SPATIAL_DIM>
const double& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::beta ( ) const
inline

Beta parameter (thermal conductivity)

435  {
436  // Return the pointer to Beta
437  return *Beta_pt;
438  } // End of beta

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt.

◆ beta() [2/2]

template<unsigned SPATIAL_DIM>
const double& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::beta ( ) const
inline

Beta parameter (thermal conductivity)

434  {
435  // Return the pointer to Beta
436  return *Beta_pt;
437  } // End of beta

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt.

◆ beta_pt() [1/2]

template<unsigned SPATIAL_DIM>
double*& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::beta_pt ( )
inline

Pointer to Beta parameter (thermal conductivity)

443  {
444  // Return the pointer to Beta
445  return Beta_pt;
446  } // End of beta_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt.

◆ beta_pt() [2/2]

template<unsigned SPATIAL_DIM>
double*& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::beta_pt ( )
inline

Pointer to Beta parameter (thermal conductivity)

442  {
443  // Return the pointer to Beta
444  return Beta_pt;
445  } // End of beta_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Beta_pt.

◆ compute_error() [1/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
double error,
double norm 
)
virtual

Get error and norm against exact solution.

Validate against exact solution

Solution is provided via function pointer. Plot error at a given number of plot points.

Reimplemented from oomph::FiniteElement.

534  {
535  // Initialise error value
536  error = 0.0;
537 
538  // Initialise norm value
539  norm = 0.0;
540 
541  // Vector of local coordinates
542  Vector<double> s(SPATIAL_DIM + 1, 0.0);
543 
544  // Vector for spatial coordinates
545  Vector<double> spatial_coordinates(SPATIAL_DIM, 0.0);
546 
547  // Find out how many nodes there are in the element
548  unsigned n_node = nnode();
549 
550  // Initialise shape functions
551  Shape psi(n_node);
552 
553  // Set the value of n_intpt
554  unsigned n_intpt = integral_pt()->nweight();
555 
556  // Tecplot header info
557  outfile << "ZONE" << std::endl;
558 
559  // Exact solution vector (here it's simply a scalar)
560  Vector<double> exact_soln(1, 0.0);
561 
562  // Loop over the integration points
563  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
564  {
565  // Assign values of s
566  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
567  {
568  // Get the i-th local coordinate at the ipt-th integration point
569  s[i] = integral_pt()->knot(ipt, i);
570  }
571 
572  // Get the integral weight
573  double w = integral_pt()->weight(ipt);
574 
575  // Get jacobian of mapping
576  double J = J_eulerian(s);
577 
578  // Premultiply the weights and the Jacobian
579  double W = w * J;
580 
581  // Get FE function value
582  double u_fe = interpolated_u_ust_heat(s);
583 
584  // Loop over the spatial coordinates
585  for (unsigned i = 0; i < SPATIAL_DIM; i++)
586  {
587  // Assign the i-th spatial coordinate
588  spatial_coordinates[i] = interpolated_x(s, i);
589 
590  // Output the i-th coordinate at the point
591  outfile << spatial_coordinates[i] << " ";
592  }
593 
594  // Output the i-th coordinate at this point
595  outfile << interpolated_x(s, SPATIAL_DIM) << " ";
596 
597  // Get exact solution at this point
598  (*exact_soln_pt)(spatial_coordinates, exact_soln);
599 
600  // Output the error
601  outfile << exact_soln[0] << " " << exact_soln[0] - u_fe << std::endl;
602 
603  // Add to (exact) solution norm value
604  norm += exact_soln[0] * exact_soln[0] * W;
605 
606  // Update the error norm value
607  error += (exact_soln[0] - u_fe) * (exact_soln[0] - u_fe) * W;
608  } // for (unsigned ipt=0;ipt<n_intpt;ipt++)
609  } // End of compute_error
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
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
Definition: elements.cc:3962
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
virtual double J_eulerian(const Vector< double > &s) const
Definition: elements.cc:4103
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
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.
double interpolated_u_ust_heat(const Vector< double > &s) const
Return FE representation of function value u(s) at local coordinate s.
Definition: space_time_unsteady_heat_elements.h:507
RealScalar s
Definition: level1_cplx_impl.h:130
void exact_soln(const double &time, const Vector< double > &x, Vector< double > &soln)
Definition: unstructured_two_d_curved.cc:301
int error
Definition: calibrate.py:297
@ W
Definition: quadtree.h:63

References calibrate::error, ProblemParameters::exact_soln(), i, J, s, w, and oomph::QuadTreeNames::W.

◆ compute_error() [2/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_error ( std::ostream &  outfile,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt,
double error,
double norm 
)
virtual

Get error and norm against exact solution.

Reimplemented from oomph::FiniteElement.

◆ compute_error() [3/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_error ( std::ostream &  outfile,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
double error,
double norm 
)
virtual

Get error and norm against exact solution.

Validate against exact solution at time t.

Solution is provided via function pointer. Plot error at a given number of plot points.

Reimplemented from oomph::FiniteElement.

625  {
626  // Initialise error value
627  error = 0.0;
628 
629  // Initialise norm value
630  norm = 0.0;
631 
632  // Storage for the time value
633  double interpolated_t = 0.0;
634 
635  // Vector of local coordinates
636  Vector<double> s(SPATIAL_DIM + 1, 0.0);
637 
638  // Vector for spatial coordinates
639  Vector<double> spatial_coordinates(SPATIAL_DIM, 0.0);
640 
641  // Find out how many nodes there are in the element
642  unsigned n_node = nnode();
643 
644  // Initialise shape functions
645  Shape psi(n_node);
646 
647  // Set the value of n_intpt
648  unsigned n_intpt = integral_pt()->nweight();
649 
650  // Tecplot header info
651  outfile << "ZONE" << std::endl;
652 
653  // Exact solution vector (here it's simply a scalar)
654  Vector<double> exact_soln(1, 0.0);
655 
656  // Loop over the integration points
657  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
658  {
659  // Assign values of s
660  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
661  {
662  s[i] = integral_pt()->knot(ipt, i);
663  }
664 
665  // Get the integral weight
666  double w = integral_pt()->weight(ipt);
667 
668  // Get jacobian of mapping
669  double J = J_eulerian(s);
670 
671  // Premultiply the weights and the Jacobian
672  double W = w * J;
673 
674  // Get FE function value
675  double u_fe = interpolated_u_ust_heat(s);
676 
677  // Loop over the spatial coordinates
678  for (unsigned i = 0; i < SPATIAL_DIM; i++)
679  {
680  // Assign the i-th spatial coordinate
681  spatial_coordinates[i] = interpolated_x(s, i);
682 
683  // Output the i-th coordinate at the point
684  outfile << spatial_coordinates[i] << " ";
685  }
686 
687  // Get the time value
688  interpolated_t = interpolated_x(s, SPATIAL_DIM);
689 
690  // Output the time value at this point
691  outfile << interpolated_t << " ";
692 
693  // Get the exact solution at this point
694  (*exact_soln_pt)(interpolated_t, spatial_coordinates, exact_soln);
695 
696  // Output the error
697  outfile << exact_soln[0] << " " << exact_soln[0] - u_fe << std::endl;
698 
699  // Add to (exact) solution norm value
700  norm += exact_soln[0] * exact_soln[0] * W;
701 
702  // Update the error norm value
703  error += (exact_soln[0] - u_fe) * (exact_soln[0] - u_fe) * W;
704  } // for (unsigned ipt=0;ipt<n_intpt;ipt++)
705  } // End of compute_error

References calibrate::error.

◆ compute_error() [4/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_error ( std::ostream &  outfile,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt,
const double time,
double error,
double norm 
)
virtual

Get error and norm against exact solution.

Reimplemented from oomph::FiniteElement.

◆ compute_norm() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_norm ( double norm)
virtual

Compute norm of FE solution.

Reimplemented from oomph::GeneralisedElement.

243  {
244  // Initialise
245  norm = 0.0;
246 
247  // Vector of local coordinates
248  Vector<double> s(SPATIAL_DIM + 1, 0.0);
249 
250  // Vector for coordinates
251  Vector<double> x(SPATIAL_DIM + 1, 0.0);
252 
253  // Find out how many nodes there are in the element
254  unsigned n_node = nnode();
255 
256  // Allocate memory for the shape and test functions
257  Shape psi(n_node);
258 
259  // Set the value of n_intpt
260  unsigned n_intpt = integral_pt()->nweight();
261 
262  // Loop over the integration points
263  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
264  {
265  // Assign values of s
266  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
267  {
268  // Get the i-th local coordinate at the ipt-th integration point
269  s[i] = integral_pt()->knot(ipt, i);
270  }
271 
272  // Get the integral weight
273  double w = integral_pt()->weight(ipt);
274 
275  // Get Jacobian of mapping
276  double J = J_eulerian(s);
277 
278  // Pre-multiply the weights and the Jacobian
279  double W = w * J;
280 
281  // Get FE function value
282  double u = interpolated_u_ust_heat(s);
283 
284  // Update the norm value
285  norm += u * u * W;
286  } // for (unsigned ipt=0;ipt<n_intpt;ipt++)
287  } // End of compute_norm
list x
Definition: plotDoE.py:28

References i, J, s, w, oomph::QuadTreeNames::W, and plotDoE::x.

◆ compute_norm() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::compute_norm ( double norm)
virtual

Compute norm of FE solution.

Reimplemented from oomph::GeneralisedElement.

◆ disable_ALE() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::disable_ALE ( )
inlinevirtual

Disable ALE, i.e. assert the mesh is not moving – you do this at your own risk!

Reimplemented from oomph::FiniteElement.

108  {
109  // Set the flag to true
110  ALE_is_disabled = true;
111  } // End of disable_ALE

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::ALE_is_disabled.

◆ disable_ALE() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::disable_ALE ( )
inlinevirtual

Disable ALE, i.e. assert the mesh is not moving – you do this at your own risk!

Reimplemented from oomph::FiniteElement.

107  {
108  // Set the flag to true
109  ALE_is_disabled = true;
110  } // End of disable_ALE

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::ALE_is_disabled.

◆ dshape_and_dtest_eulerian_at_knot_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
virtual double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::dshape_and_dtest_eulerian_at_knot_ust_heat ( const unsigned ipt,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) 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::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ dshape_and_dtest_eulerian_at_knot_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
virtual double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::dshape_and_dtest_eulerian_at_knot_ust_heat ( const unsigned ipt,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
pure virtual

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

Implemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ dshape_and_dtest_eulerian_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
virtual double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::dshape_and_dtest_eulerian_ust_heat ( const Vector< double > &  s,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
protectedpure virtual

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

Implemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ dshape_and_dtest_eulerian_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
virtual double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::dshape_and_dtest_eulerian_ust_heat ( const Vector< double > &  s,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
pure virtual

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

Implemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ du_dt_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::du_dt_ust_heat ( const unsigned n) const
inline

Calculate du/dt at the n-th local node. Uses suitably interpolated value for hanging nodes.

587  {
588  // Storage for the local coordinates
589  Vector<double> s(SPATIAL_DIM + 1, 0.0);
590 
591  // Get the local coordinate at the n-th node
593 
594  // Return the interpolated du/dt value
596  } // End of du_dt_ust_heat
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
virtual void local_coordinate_of_node(const unsigned &j, Vector< double > &s) const
Definition: elements.h:1842
double interpolated_du_dt_ust_heat(const Vector< double > &s) const
Definition: space_time_unsteady_heat_elements.h:601

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::FiniteElement::local_coordinate_of_node(), n, and s.

◆ du_dt_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::du_dt_ust_heat ( const unsigned n) const
inline

Calculate du/dt at the n-th local node. Uses suitably interpolated value for hanging nodes.

586  {
587  // Storage for the local coordinates
588  Vector<double> s(SPATIAL_DIM + 1, 0.0);
589 
590  // Get the local coordinate at the n-th node
592 
593  // Return the interpolated du/dt value
595  } // End of du_dt_ust_heat

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), oomph::FiniteElement::local_coordinate_of_node(), n, and s.

◆ enable_ALE() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::enable_ALE ( )
inlinevirtual

(Re-)enable ALE, i.e. take possible mesh motion into account when evaluating the time-derivative. Note: By default, ALE is enabled, at the expense of possibly creating unnecessary work in problems where the mesh is, in fact, stationary.

Reimplemented from oomph::FiniteElement.

119  {
120  // Set the flag to false
121  ALE_is_disabled = false;
122  } // End of enable_ALE

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::ALE_is_disabled.

◆ enable_ALE() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::enable_ALE ( )
inlinevirtual

(Re-)enable ALE, i.e. take possible mesh motion into account when evaluating the time-derivative. Note: By default, ALE is enabled, at the expense of possibly creating unnecessary work in problems where the mesh is, in fact, stationary.

Reimplemented from oomph::FiniteElement.

118  {
119  // Set the flag to false
120  ALE_is_disabled = false;
121  } // End of enable_ALE

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::ALE_is_disabled.

◆ fill_in_contribution_to_jacobian() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_jacobian ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
inlinevirtual

Compute element residual Vector and element Jacobian matrix (wrapper)

Reimplemented from oomph::FiniteElement.

500  {
501  // Call the generic routine with the flag set to 1
502  fill_in_generic_residual_contribution_ust_heat(residuals, jacobian, 1);
503  } // End of fill_in_contribution_to_jacobian
virtual void fill_in_generic_residual_contribution_ust_heat(Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
Definition: space_time_unsteady_heat_elements.cc:65

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat().

◆ fill_in_contribution_to_jacobian() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_jacobian ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian 
)
inlinevirtual

Compute element residual Vector and element Jacobian matrix (wrapper)

Reimplemented from oomph::FiniteElement.

499  {
500  // Call the generic routine with the flag set to 1
501  fill_in_generic_residual_contribution_ust_heat(residuals, jacobian, 1);
502  } // End of fill_in_contribution_to_jacobian

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat().

◆ fill_in_contribution_to_residuals() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
inlinevirtual

Compute element residual Vector (wrapper)

Reimplemented from oomph::GeneralisedElement.

489  {
490  // Call the generic residuals function with flag set to 0
491  // using a dummy matrix argument
493  residuals, GeneralisedElement::Dummy_matrix, 0);
494  } // End of fill_in_contribution_to_residuals
static DenseMatrix< double > Dummy_matrix
Definition: elements.h:227

References oomph::GeneralisedElement::Dummy_matrix, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat().

◆ fill_in_contribution_to_residuals() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_residuals ( Vector< double > &  residuals)
inlinevirtual

Compute element residual Vector (wrapper)

Reimplemented from oomph::GeneralisedElement.

488  {
489  // Call the generic residuals function with flag set to 0
490  // using a dummy matrix argument
492  residuals, GeneralisedElement::Dummy_matrix, 0);
493  } // End of fill_in_contribution_to_residuals

References oomph::GeneralisedElement::Dummy_matrix, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat().

◆ fill_in_generic_residual_contribution_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
const unsigned flag 
)
protectedvirtual

Compute element residual Vector only (if flag=and/or element Jacobian matrix

Compute element residual vector and/or element Jacobian matrix

flag=0: compute only residual vector flag=1: compute both

Pure version without hanging nodes

Reimplemented in oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, and oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >.

69  {
70  // Find out how many nodes there are
71  unsigned n_node = nnode();
72 
73  // Find the index at which the variable is stored
74  unsigned u_nodal_index = u_index_ust_heat();
75 
76  // Set up memory for the shape functions
77  Shape psi(n_node);
78 
79  // Set up memory for the test functions
80  Shape test(n_node);
81 
82  // Allocate space for the derivatives of the shape functions
83  DShape dpsidx(n_node, SPATIAL_DIM + 1);
84 
85  // Allocate space for the derivatives of the test functions
86  DShape dtestdx(n_node, SPATIAL_DIM + 1);
87 
88  // Set the value of n_intpt
89  unsigned n_intpt = integral_pt()->nweight();
90 
91  // Storage for the local coordinates
92  Vector<double> s(SPATIAL_DIM + 1, 0.0);
93 
94  // Get the Alpha parameter
95  double alpha_local = alpha();
96 
97  // Get the Beta parameter
98  double beta_local = beta();
99 
100  // Integer to hold the local equation
101  int local_eqn = 0;
102 
103  // Integer to hold the local unknowns
104  int local_unknown = 0;
105 
106  // Loop over the integration points
107  for (unsigned ipt = 0; ipt < n_intpt; ipt++)
108  {
109  // Assign values of s
110  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
111  {
112  // Calculate the i-th local coordinate
113  s[i] = integral_pt()->knot(ipt, i);
114  }
115 
116  // Get the integral weight
117  double w = integral_pt()->weight(ipt);
118 
119  // Call the derivatives of the shape and test functions
121  ipt, psi, dpsidx, test, dtestdx);
122 
123  // Premultiply the weights and the Jacobian
124  double W = w * J;
125 
126  // Storage for the interpolated time value
127  double interpolated_t = 0.0;
128 
129  // Storage for the interpolated solution value
130  double interpolated_u = 0.0;
131 
132  // Storage for the interpolated time-derivative of the solution
133  double interpolated_dudt = 0.0;
134 
135  // Storage for the spatial coordinates
136  Vector<double> interpolated_x(SPATIAL_DIM, 0.0);
137 
138  // Storage for the spatial derivatives of the solution
139  Vector<double> interpolated_dudx(SPATIAL_DIM, 0.0);
140 
141  // Storage for the mesh velocity
142  Vector<double> mesh_velocity(SPATIAL_DIM, 0.0);
143 
144  //-------------------------------------------------
145  // Calculate derivatives and source function value:
146  //-------------------------------------------------
147  // Loop over the nodes
148  for (unsigned l = 0; l < n_node; l++)
149  {
150  // Get the nodal value at the l-th node
151  double u_value = raw_nodal_value(l, u_nodal_index);
152 
153  // Update the interpolated time value
154  interpolated_t += raw_nodal_position(l, SPATIAL_DIM) * psi(l);
155 
156  // Loop over the coordinate directions (both spatial AND time)
157  for (unsigned j = 0; j < SPATIAL_DIM; j++)
158  {
159  // Update the interpolated x value
160  interpolated_x[j] += raw_nodal_position(l, j) * psi(l);
161 
162  // Update the interpolated du/dx_j value
163  interpolated_dudx[j] += u_value * dpsidx(l, j);
164  }
165 
166  // Update the interpolated u value
167  interpolated_u += u_value * psi(l);
168 
169  // Update the interpolated du/dt value
170  interpolated_dudt += u_value * dpsidx(l, SPATIAL_DIM);
171  } // for (unsigned l=0;l<n_node;l++)
172 
173  // Initialise the source term value
174  double source = 0.0;
175 
176  // Get the interpolated source term value
177  get_source_ust_heat(interpolated_t, ipt, interpolated_x, source);
178 
179  //---------------------------------
180  // Assemble residuals and Jacobian:
181  //---------------------------------
182  // Loop over the nodes (or equivalently the test functions)
183  for (unsigned l = 0; l < n_node; l++)
184  {
185  // Get the local equation number
186  local_eqn = nodal_local_eqn(l, u_nodal_index);
187 
188  // If it's not a boundary condition
189  if (local_eqn >= 0)
190  {
191  // Add source term and time derivative
192  residuals[local_eqn] +=
193  (source + alpha_local * interpolated_dudt) * test(l) * W;
194 
195  // Loop over the coordinate directions
196  for (unsigned k = 0; k < SPATIAL_DIM; k++)
197  {
198  // Add in the contribution from the Laplace operator
199  residuals[local_eqn] +=
200  beta_local * interpolated_dudx[k] * dtestdx(l, k) * W;
201  }
202 
203  //------------------------
204  // Calculate the Jacobian:
205  //------------------------
206  // If we also need to construct the Jacobian
207  if (flag)
208  {
209  // Loop over the velocity shape functions again
210  for (unsigned l2 = 0; l2 < n_node; l2++)
211  {
212  // Get the local equation number
213  local_unknown = nodal_local_eqn(l2, u_nodal_index);
214 
215  // If we're at a non-zero degree of freedom add in the entry
216  if (local_unknown >= 0)
217  {
218  // Add in the time derivative contribution
219  jacobian(local_eqn, local_unknown) +=
220  (alpha_local * test(l) * dpsidx(l2, SPATIAL_DIM) * W);
221 
222  // Laplace operator
223  for (unsigned i = 0; i < SPATIAL_DIM; i++)
224  {
225  // Add the test function contribution to the Jacobian
226  jacobian(local_eqn, local_unknown) +=
227  (beta_local * dpsidx(l2, i) * dtestdx(l, i) * W);
228  }
229  } // if (local_unknown>=0)
230  } // for (unsigned l2=0;l2<n_node;l2++)
231  } // if (flag)
232  } // if (local_eqn>=0)
233  } // for (unsigned l=0;l<n_node;l++)
234  } // for (unsigned ipt=0;ipt<n_intpt;ipt++)
235  } // End of fill_in_generic_residual_contribution_ust_heat
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
double raw_nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2576
double raw_nodal_position(const unsigned &n, const unsigned &i) const
Definition: elements.cc:1686
const double & alpha() const
Alpha parameter (thermal inertia)
Definition: space_time_unsteady_heat_elements.h:418
virtual double dshape_and_dtest_eulerian_at_knot_ust_heat(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
const double & beta() const
Beta parameter (thermal conductivity)
Definition: space_time_unsteady_heat_elements.h:434
virtual unsigned u_index_ust_heat() const
Definition: space_time_unsteady_heat_elements.h:543
virtual void get_source_ust_heat(const double &t, const unsigned &ipt, const Vector< double > &x, double &source) const
Definition: space_time_unsteady_heat_elements.h:397
char char char int int * k
Definition: level2_impl.h:374
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
void source(const Vector< double > &x, Vector< double > &f)
Source function.
Definition: unstructured_two_d_circle.cc:46
Definition: indexed_view.cpp:20
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References alpha, beta, i, J, s, Eigen::test, w, and oomph::QuadTreeNames::W.

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_jacobian(), and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_contribution_to_residuals().

◆ fill_in_generic_residual_contribution_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
virtual void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::fill_in_generic_residual_contribution_ust_heat ( Vector< double > &  residuals,
DenseMatrix< double > &  jacobian,
const unsigned flag 
)
protectedvirtual

Compute element residual Vector only (if flag=and/or element Jacobian matrix

Reimplemented in oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >, and oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >.

◆ get_flux() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux ( const Vector< double > &  s,
Vector< double > &  flux 
) const
inline

Get flux: flux[i]=du/dx_i.

451  {
452  // Find out how many nodes there are in the element
453  unsigned n_node = nnode();
454 
455  // Find the index at which the variable is stored
456  unsigned u_nodal_index = u_index_ust_heat();
457 
458  // Set up memory for the shape and test functions
459  Shape psi(n_node);
460 
461  // Set up memory for the derivatives of the shape and test functions
462  DShape dpsidx(n_node, SPATIAL_DIM + 1);
463 
464  // Call the derivatives of the shape and test functions
465  dshape_eulerian(s, psi, dpsidx);
466 
467  // Loop over the entries of the flux vector
468  for (unsigned j = 0; j < SPATIAL_DIM; j++)
469  {
470  // Initialise j-th flux entry to zero
471  flux[j] = 0.0;
472  }
473 
474  // Loop over nodes
475  for (unsigned l = 0; l < n_node; l++)
476  {
477  // Loop over derivative directions
478  for (unsigned j = 0; j < SPATIAL_DIM; j++)
479  {
480  // Update the flux value
481  flux[j] += nodal_value(l, u_nodal_index) * dpsidx(l, j);
482  }
483  } // for (unsigned l=0;l<n_node;l++)
484  } // End of get_flux
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3298
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59

References oomph::FiniteElement::dshape_eulerian(), ProblemParameters::flux(), j, oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ get_flux() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux ( const Vector< double > &  s,
Vector< double > &  flux 
) const
inline

Get flux: flux[i]=du/dx_i.

450  {
451  // Find out how many nodes there are in the element
452  unsigned n_node = nnode();
453 
454  // Find the index at which the variable is stored
455  unsigned u_nodal_index = u_index_ust_heat();
456 
457  // Set up memory for the shape and test functions
458  Shape psi(n_node);
459 
460  // Set up memory for the derivatives of the shape and test functions
461  DShape dpsidx(n_node, SPATIAL_DIM + 1);
462 
463  // Call the derivatives of the shape and test functions
464  dshape_eulerian(s, psi, dpsidx);
465 
466  // Loop over the entries of the flux vector
467  for (unsigned j = 0; j < SPATIAL_DIM; j++)
468  {
469  // Initialise j-th flux entry to zero
470  flux[j] = 0.0;
471  }
472 
473  // Loop over nodes
474  for (unsigned l = 0; l < n_node; l++)
475  {
476  // Loop over derivative directions
477  for (unsigned j = 0; j < SPATIAL_DIM; j++)
478  {
479  // Update the flux value
480  flux[j] += nodal_value(l, u_nodal_index) * dpsidx(l, j);
481  }
482  } // for (unsigned l=0;l<n_node;l++)
483  } // End of get_flux

References oomph::FiniteElement::dshape_eulerian(), ProblemParameters::flux(), j, oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ get_source_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
virtual void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_source_ust_heat ( const double t,
const unsigned ipt,
const Vector< double > &  x,
double source 
) const
inlinevirtual

Get source term at continous time t and (Eulerian) position x. Virtual so it can be overloaded in derived multi-physics elements.

401  {
402  // If no source function has been set, return zero
403  if (Source_fct_pt == 0)
404  {
405  // Set the source term value to zero
406  source = 0.0;
407  }
408  // Otherwise return the appropriate value
409  else
410  {
411  // Get source strength
412  (*Source_fct_pt)(t, x, source);
413  }
414  } // End of get_source_ust_heat
t
Definition: plotPSD.py:36

References TestProblem::source(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt, plotPSD::t, and plotDoE::x.

◆ get_source_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
virtual void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_source_ust_heat ( const double t,
const unsigned ipt,
const Vector< double > &  x,
double source 
) const
inlinevirtual

Get source term at continous time t and (Eulerian) position x. Virtual so it can be overloaded in derived multi-physics elements.

400  {
401  // If no source function has been set, return zero
402  if (Source_fct_pt == 0)
403  {
404  // Set the source term value to zero
405  source = 0.0;
406  }
407  // Otherwise return the appropriate value
408  else
409  {
410  // Get source strength
411  (*Source_fct_pt)(t, x, source);
412  }
413  } // End of get_source_ust_heat

References TestProblem::source(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt, plotPSD::t, and plotDoE::x.

◆ interpolated_du_dt_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat ( const Vector< double > &  s) const
inline

Return FE representation of function value du/dt(s) at local coordinate s

602  {
603  // Find number of nodes
604  unsigned n_node = nnode();
605 
606  // Find the index at which the variable is stored
607  unsigned u_nodal_index = u_index_ust_heat();
608 
609  // Local shape function
610  Shape psi(n_node);
611 
612  // Allocate space for the derivatives of the shape functions
613  DShape dpsidx(n_node, SPATIAL_DIM + 1);
614 
615  // Compute the geometric shape functions and also first derivatives
616  // w.r.t. global coordinates at local coordinate s
617  dshape_eulerian(s, psi, dpsidx);
618 
619  // Initialise value of du/dt
620  double interpolated_dudt = 0.0;
621 
622  // Loop over the local nodes and sum
623  for (unsigned l = 0; l < n_node; l++)
624  {
625  // Update the interpolated du/dt value
626  interpolated_dudt +=
627  nodal_value(l, u_nodal_index) * dpsidx(l, SPATIAL_DIM);
628  }
629 
630  // Return the interpolated du/dt value
631  return interpolated_dudt;
632  } // End of interpolated_du_dt_ust_heat

References oomph::FiniteElement::dshape_eulerian(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::du_dt_ust_heat().

◆ interpolated_du_dt_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat ( const Vector< double > &  s) const
inline

Return FE representation of function value du/dt(s) at local coordinate s

601  {
602  // Find number of nodes
603  unsigned n_node = nnode();
604 
605  // Find the index at which the variable is stored
606  unsigned u_nodal_index = u_index_ust_heat();
607 
608  // Local shape function
609  Shape psi(n_node);
610 
611  // Allocate space for the derivatives of the shape functions
612  DShape dpsidx(n_node, SPATIAL_DIM + 1);
613 
614  // Compute the geometric shape functions and also first derivatives
615  // w.r.t. global coordinates at local coordinate s
616  dshape_eulerian(s, psi, dpsidx);
617 
618  // Initialise value of du/dt
619  double interpolated_dudt = 0.0;
620 
621  // Loop over the local nodes and sum
622  for (unsigned l = 0; l < n_node; l++)
623  {
624  // Update the interpolated du/dt value
625  interpolated_dudt +=
626  nodal_value(l, u_nodal_index) * dpsidx(l, SPATIAL_DIM);
627  }
628 
629  // Return the interpolated du/dt value
630  return interpolated_dudt;
631  } // End of interpolated_du_dt_ust_heat

References oomph::FiniteElement::dshape_eulerian(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ interpolated_u_ust_heat() [1/4]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat ( const unsigned t,
const Vector< double > &  s 
) const
inline

Return FE representation of function value u(s) at local coordinate s at previous time t (t=0: present) DRAIG: This needs to be broken; doesn't make sense in space-time elements!

556  {
557  // Find number of nodes
558  unsigned n_node = nnode();
559 
560  // Find the index at which the variable is stored
561  unsigned u_nodal_index = u_index_ust_heat();
562 
563  // Local shape function
564  Shape psi(n_node);
565 
566  // Find values of shape function
567  shape(s, psi);
568 
569  // Initialise value of u
570  double interpolated_u = 0.0;
571 
572  // Loop over the local nodes and sum
573  for (unsigned l = 0; l < n_node; l++)
574  {
575  // Update the interpolated u value
576  interpolated_u += nodal_value(t, l, u_nodal_index) * psi[l];
577  }
578 
579  // Return the interpolated u value
580  return interpolated_u;
581  } // End of interpolated_u_ust_heat
virtual void shape(const Vector< double > &s, Shape &psi) const =0

References oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, oomph::FiniteElement::shape(), plotPSD::t, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ interpolated_u_ust_heat() [2/4]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat ( const unsigned t,
const Vector< double > &  s 
) const
inline

Return FE representation of function value u(s) at local coordinate s at previous time t (t=0: present) DRAIG: This needs to be broken; doesn't make sense in space-time elements!

555  {
556  // Find number of nodes
557  unsigned n_node = nnode();
558 
559  // Find the index at which the variable is stored
560  unsigned u_nodal_index = u_index_ust_heat();
561 
562  // Local shape function
563  Shape psi(n_node);
564 
565  // Find values of shape function
566  shape(s, psi);
567 
568  // Initialise value of u
569  double interpolated_u = 0.0;
570 
571  // Loop over the local nodes and sum
572  for (unsigned l = 0; l < n_node; l++)
573  {
574  // Update the interpolated u value
575  interpolated_u += nodal_value(t, l, u_nodal_index) * psi[l];
576  }
577 
578  // Return the interpolated u value
579  return interpolated_u;
580  } // End of interpolated_u_ust_heat

References oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, oomph::FiniteElement::shape(), plotPSD::t, and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ interpolated_u_ust_heat() [3/4]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat ( const Vector< double > &  s) const
inline

Return FE representation of function value u(s) at local coordinate s.

508  {
509  // Find number of nodes
510  unsigned n_node = nnode();
511 
512  // Find the index at which the variable is stored
513  unsigned u_nodal_index = u_index_ust_heat();
514 
515  // Local shape function
516  Shape psi(n_node);
517 
518  // Find values of the shape functions at local coordinate s
519  shape(s, psi);
520 
521  // Initialise value of u
522  double interpolated_u = 0.0;
523 
524  // Loop over the local nodes and sum
525  for (unsigned l = 0; l < n_node; l++)
526  {
527  // Update the interpolated u value
528  interpolated_u += nodal_value(l, u_nodal_index) * psi[l];
529  }
530 
531  // Return the interpolated u value
532  return interpolated_u;
533  } // End of interpolated_u_ust_heat

References oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, oomph::FiniteElement::shape(), and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_paraview().

◆ interpolated_u_ust_heat() [4/4]

template<unsigned SPATIAL_DIM>
double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat ( const Vector< double > &  s) const
inline

Return FE representation of function value u(s) at local coordinate s.

507  {
508  // Find number of nodes
509  unsigned n_node = nnode();
510 
511  // Find the index at which the variable is stored
512  unsigned u_nodal_index = u_index_ust_heat();
513 
514  // Local shape function
515  Shape psi(n_node);
516 
517  // Find values of the shape functions at local coordinate s
518  shape(s, psi);
519 
520  // Initialise value of u
521  double interpolated_u = 0.0;
522 
523  // Loop over the local nodes and sum
524  for (unsigned l = 0; l < n_node; l++)
525  {
526  // Update the interpolated u value
527  interpolated_u += nodal_value(l, u_nodal_index) * psi[l];
528  }
529 
530  // Return the interpolated u value
531  return interpolated_u;
532  } // End of interpolated_u_ust_heat

References oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_value(), s, oomph::FiniteElement::shape(), and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat().

◆ nscalar_paraview() [1/2]

template<unsigned SPATIAL_DIM>
unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::nscalar_paraview ( ) const
inlinevirtual

Number of scalars/fields output by this element. Reimplements broken virtual function in base class.

Reimplemented from oomph::FiniteElement.

200  {
201  // Only one field to output
202  return 1;
203  } // End of nscalar_paraview

◆ nscalar_paraview() [2/2]

template<unsigned SPATIAL_DIM>
unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::nscalar_paraview ( ) const
inlinevirtual

Number of scalars/fields output by this element. Reimplements broken virtual function in base class.

Reimplemented from oomph::FiniteElement.

199  {
200  // Only one field to output
201  return 1;
202  } // End of nscalar_paraview

◆ output() [1/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( FILE *  file_pt)
inlinevirtual

C_style output with default number of plot points.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

147  {
148  // Number of plot points
149  unsigned nplot = 5;
150 
151  // Output the solution
152  output(file_pt, nplot);
153  } // End of output
void output(std::ostream &outfile)
Output with default number of plot points.
Definition: space_time_unsteady_heat_elements.h:130

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output().

◆ output() [2/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( FILE *  file_pt)
inlinevirtual

C_style output with default number of plot points.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

146  {
147  // Number of plot points
148  unsigned nplot = 5;
149 
150  // Output the solution
151  output(file_pt, nplot);
152  } // End of output

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output().

◆ output() [3/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( FILE *  file_pt,
const unsigned nplot 
)
virtual

C-style output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

C-style output function: x,t,u or x,y,t,u at nplot points in each coordinate direction

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

369  {
370  // Vector of local coordinates
371  Vector<double> s(SPATIAL_DIM + 1, 0.0);
372 
373  // Tecplot header info
374  fprintf(file_pt, "%s", tecplot_zone_string(nplot).c_str());
375 
376  // Get the number of plot points
377  unsigned num_plot_points = nplot_points(nplot);
378 
379  // Loop over plot points
380  for (unsigned iplot = 0; iplot < num_plot_points; iplot++)
381  {
382  // Get local coordinates of plot point
383  get_s_plot(iplot, nplot, s);
384 
385  // Loop over the coordinate directions
386  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
387  {
388  // Print the i-th coordinate value at local coordinate s
389  fprintf(file_pt, "%g ", interpolated_x(s, i));
390  }
391 
392  // Output the interpolated solution value at local coordinate s
393  fprintf(file_pt, "%g \n", interpolated_u_ust_heat(s));
394  } // for (unsigned iplot=0;iplot<num_plot_points;iplot++)
395 
396  // Write tecplot footer (e.g. FE connectivity lists)
397  write_tecplot_zone_footer(file_pt, nplot);
398  } // End of output
virtual std::string tecplot_zone_string(const unsigned &nplot) const
Definition: elements.h:3161
virtual void get_s_plot(const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
Definition: elements.h:3148
virtual unsigned nplot_points(const unsigned &nplot) const
Definition: elements.h:3186
virtual void write_tecplot_zone_footer(std::ostream &outfile, const unsigned &nplot) const
Definition: elements.h:3174

References i, and s.

◆ output() [4/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( FILE *  file_pt,
const unsigned nplot 
)
virtual

C-style output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ output() [5/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( std::ostream &  outfile)
inlinevirtual

Output with default number of plot points.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

131  {
132  // Number of plot points
133  unsigned nplot = 5;
134 
135  // Output the solution
136  output(outfile, nplot);
137  } // End of output

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output(), and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::output().

◆ output() [6/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( std::ostream &  outfile)
inlinevirtual

Output with default number of plot points.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

130  {
131  // Number of plot points
132  unsigned nplot = 5;
133 
134  // Output the solution
135  output(outfile, nplot);
136  } // End of output

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output().

◆ output() [7/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( std::ostream &  outfile,
const unsigned nplot 
)
virtual

Output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

Output function: x,t,u or x,y,t,u at nplot points in each coordinate direction

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

329  {
330  // Vector of local coordinates
331  Vector<double> s(SPATIAL_DIM + 1, 0.0);
332 
333  // Tecplot header info
334  outfile << tecplot_zone_string(nplot);
335 
336  // Get the number of plot points
337  unsigned num_plot_points = nplot_points(nplot);
338 
339  // Loop over plot points
340  for (unsigned iplot = 0; iplot < num_plot_points; iplot++)
341  {
342  // Get local coordinates of plot point
343  get_s_plot(iplot, nplot, s);
344 
345  // Loop over the coordinate directions
346  for (unsigned i = 0; i < SPATIAL_DIM + 1; i++)
347  {
348  // Output the interpolated coordinate
349  outfile << interpolated_x(s, i) << " ";
350  }
351 
352  // Calculate the interpolated solution value
353  outfile << interpolated_u_ust_heat(s) << std::endl;
354  } // for (unsigned iplot=0;iplot<num_plot_points;iplot++)
355 
356  // Write tecplot footer (e.g. FE connectivity lists)
357  write_tecplot_zone_footer(outfile, nplot);
358  } // End of output

References i, and s.

◆ output() [8/8]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output ( std::ostream &  outfile,
const unsigned nplot 
)
virtual

Output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ output_element_paraview() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_element_paraview ( std::ofstream &  file_out,
const unsigned nplot 
)

C-style output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

Output function: x,t,u or x,y,t,u at nplot points in each coordinate direction

716  {
717  // Change the scientific format so that E is used rather than e
718  file_out.setf(std::ios_base::uppercase);
719 
720  // Make variables to hold the number of nodes and elements
721  unsigned number_of_nodes = this->nplot_points_paraview(nplot);
722 
723  // Make variables to hold the number of elements
724  unsigned total_number_of_elements = this->nsub_elements_paraview(nplot);
725 
726  //------------------
727  // File Declaration:
728  //------------------
729  // Insert the necessary lines plus header of file, and
730  // number of nodes and elements
731  file_out << "<?xml version=\"1.0\"?>\n"
732  << "<VTKFile type=\"UnstructuredGrid\" version=\"0.1\" "
733  << "byte_order=\"LittleEndian\">\n"
734  << "<UnstructuredGrid>\n"
735  << "<Piece NumberOfPoints=\"" << number_of_nodes
736  << "\" NumberOfCells=\"" << total_number_of_elements << "\">\n";
737 
738  //------------
739  // Point Data:
740  //------------
741  // Check the number of degrees of freedom
742  unsigned ndof = this->nscalar_paraview();
743 
744  // Point data is going in here
745  file_out << "<PointData ";
746 
747  // Insert just the first scalar name, since paraview reads everything
748  // else after that as being of the same type. Get information from
749  // first element.
750  file_out << "Scalars=\"" << this->scalar_name_paraview(0) << "\">\n";
751 
752  // Loop over i scalar fields and j number of elements
753  for (unsigned i = 0; i < ndof; i++)
754  {
755  file_out << "<DataArray type=\"Float32\" "
756  << "Name=\"" << this->scalar_name_paraview(i) << "\" "
757  << "format=\"ascii\""
758  << ">\n";
759 
760  // Output the i-th scalar field with nplot plot points
761  this->scalar_value_paraview(file_out, i, nplot);
762 
763  // Close of the DataArray
764  file_out << "</DataArray>\n";
765  }
766 
767  // Close off the PointData set
768  file_out << "</PointData>\n";
769 
770  //------------------
771  // Geometric Points:
772  //------------------
773  // Always has to be 3 components for an unstructured grid
774  file_out << "<Points>\n"
775  << "<DataArray type=\"Float32\""
776  << " NumberOfComponents=\"" << 3 << "\" "
777  << "format=\"ascii\">\n";
778 
779  // Print the plot points
780  this->output_paraview(file_out, nplot);
781 
782  // Close off the geometric points set
783  file_out << "</DataArray>\n"
784  << "</Points>\n";
785 
786  //-------
787  // Cells:
788  //-------
789  file_out << "<Cells>\n"
790  << "<DataArray type=\"Int32\" Name=\""
791  << "connectivity\" format=\"ascii\">\n";
792 
793  // Make counter for keeping track of all the local elements,
794  // because Paraview requires global coordinates
795  unsigned counter = 0;
796 
797  // Write connectivity with the local elements
798  this->write_paraview_output_offset_information(file_out, nplot, counter);
799 
800  // Output header stuff
801  file_out << "</DataArray>\n"
802  << "<DataArray type=\"Int32\" "
803  << "Name=\"offsets\" format=\"ascii\">\n";
804 
805  // Make variable that holds the current offset number
806  unsigned offset_sum = 0;
807 
808  // Write the offset for the specific elements
809  this->write_paraview_offsets(file_out, nplot, offset_sum);
810 
811  // Add in header information
812  file_out << "</DataArray>\n"
813  << "<DataArray type=\"UInt8\" Name=\"types\">\n";
814 
815  // Get the type the element has
816  this->write_paraview_type(file_out, nplot);
817 
818  // Finish off the data set
819  file_out << "</DataArray>\n"
820  << "</Cells>\n";
821 
822  //--------------
823  // File Closure:
824  //--------------
825  file_out << "</Piece>\n"
826  << "</UnstructuredGrid>\n"
827  << "</VTKFile>";
828  } // End of output_element_paraview
virtual unsigned nplot_points_paraview(const unsigned &nplot) const
Definition: elements.h:2862
virtual void write_paraview_type(std::ofstream &file_out, const unsigned &nplot) const
Definition: elements.h:2964
virtual unsigned nsub_elements_paraview(const unsigned &nplot) const
Definition: elements.h:2876
void output_paraview(std::ofstream &file_out, const unsigned &nplot) const
Definition: elements.h:2889
virtual void write_paraview_offsets(std::ofstream &file_out, const unsigned &nplot, unsigned &offset_sum) const
Definition: elements.h:2976
virtual void write_paraview_output_offset_information(std::ofstream &file_out, const unsigned &nplot, unsigned &counter) const
Definition: elements.h:2952
unsigned ndof() const
Return the number of equations/dofs in the element.
Definition: elements.h:835
void scalar_value_paraview(std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
Definition: space_time_unsteady_heat_elements.h:208
unsigned nscalar_paraview() const
Definition: space_time_unsteady_heat_elements.h:199
std::string scalar_name_paraview(const unsigned &i) const
Definition: space_time_unsteady_heat_elements.h:356

References i.

◆ output_element_paraview() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_element_paraview ( std::ofstream &  outfile,
const unsigned nplot 
)

C-style output FE representation of soln: x,y,u or x,y,z,u at nplot^SPATIAL_DIM plot points

◆ output_fct() [1/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_fct ( std::ostream &  outfile,
const unsigned nplot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
)
virtual

Output exact soln: x,y,u_exact or x,y,z,u_exact at nplot^SPATIAL_DIM plot points (time-dependent version)

Output exact solution at a given number of plot points: x,t,u_exact or x,y,t,u_exact Solution is provided via function pointer.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

469  {
470  // Storage for the time value
471  double interpolated_t = 0.0;
472 
473  // Vector of local coordinates
474  Vector<double> s(SPATIAL_DIM + 1, 0.0);
475 
476  // Vector for spatial coordinates
477  Vector<double> spatial_coordinates(SPATIAL_DIM, 0.0);
478 
479  // Tecplot header info
480  outfile << tecplot_zone_string(nplot);
481 
482  // Exact solution vector (here it's simply a scalar)
483  Vector<double> exact_soln(1, 0.0);
484 
485  // Get the number of plot points
486  unsigned num_plot_points = nplot_points(nplot);
487 
488  // Loop over plot points
489  for (unsigned iplot = 0; iplot < num_plot_points; iplot++)
490  {
491  // Get local coordinates of plot point
492  get_s_plot(iplot, nplot, s);
493 
494  // Loop over the spatial coordinates
495  for (unsigned i = 0; i < SPATIAL_DIM; i++)
496  {
497  // Assign the i-th spatial coordinate
498  spatial_coordinates[i] = interpolated_x(s, i);
499 
500  // Output the i-th coordinate at the point
501  outfile << spatial_coordinates[i] << " ";
502  }
503 
504  // Get the time value
505  interpolated_t = interpolated_x(s, SPATIAL_DIM);
506 
507  // Output the time value at this point
508  outfile << interpolated_t << " ";
509 
510  // Get the exact solution at this point
511  (*exact_soln_pt)(interpolated_t, spatial_coordinates, exact_soln);
512 
513  // Output the exact solution at this point
514  outfile << exact_soln[0] << std::endl;
515  } // for (unsigned iplot=0;iplot<num_plot_points;iplot++)
516 
517  // Write tecplot footer (e.g. FE connectivity lists)
518  write_tecplot_zone_footer(outfile, nplot);
519  } // End of output_fct

References ProblemParameters::exact_soln(), i, and s.

◆ output_fct() [2/4]

template<unsigned SPATIAL_DIM>
virtual void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_fct ( std::ostream &  outfile,
const unsigned nplot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
)
virtual

Output exact soln: x,y,u_exact or x,y,z,u_exact at nplot^SPATIAL_DIM plot points (time-dependent version)

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ output_fct() [3/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_fct ( std::ostream &  outfile,
const unsigned nplot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
)
virtual

Output exact soln: x,y,u_exact or x,y,z,u_exact at nplot^SPATIAL_DIM plot points

Output exact solution at a given number of plot points: x,t,u_exact or x,y,t,u_exact Solution is provided via function pointer.

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >, and oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

411  {
412  // Vector of local coordinates
413  Vector<double> s(SPATIAL_DIM + 1, 0.0);
414 
415  // Vector for spatial coordinates
416  Vector<double> spatial_coordinates(SPATIAL_DIM, 0.0);
417 
418  // Tecplot header info
419  outfile << tecplot_zone_string(nplot);
420 
421  // Exact solution vector (here it's simply a scalar)
422  Vector<double> exact_soln(1, 0.0);
423 
424  // Get the number of plot points
425  unsigned num_plot_points = nplot_points(nplot);
426 
427  // Loop over plot points
428  for (unsigned iplot = 0; iplot < num_plot_points; iplot++)
429  {
430  // Get local coordinates of plot point
431  get_s_plot(iplot, nplot, s);
432 
433  // Loop over the spatial coordinates
434  for (unsigned i = 0; i < SPATIAL_DIM; i++)
435  {
436  // Assign the i-th spatial coordinate
437  spatial_coordinates[i] = interpolated_x(s, i);
438 
439  // Output the i-th coordinate at the point
440  outfile << spatial_coordinates[i] << " ";
441  }
442 
443  // Output the time value at this point
444  outfile << interpolated_x(s, SPATIAL_DIM) << " ";
445 
446  // Get the exact solution at this point
447  (*exact_soln_pt)(spatial_coordinates, exact_soln);
448 
449  // Output the exact solution at this point
450  outfile << exact_soln[0] << std::endl;
451  } // for (unsigned iplot=0;iplot<num_plot_points;iplot++)
452 
453  // Write tecplot footer (e.g. FE connectivity lists)
454  write_tecplot_zone_footer(outfile, nplot);
455  } // End of output_fct

References ProblemParameters::exact_soln(), i, and s.

Referenced by oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >::output_fct().

◆ output_fct() [4/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::output_fct ( std::ostream &  outfile,
const unsigned nplot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
)
virtual

Output exact soln: x,y,u_exact or x,y,z,u_exact at nplot^SPATIAL_DIM plot points

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::QUnsteadyHeatSpaceTimeElement< SPATIAL_DIM, NNODE_1D >.

◆ scalar_name_paraview() [1/2]

template<unsigned SPATIAL_DIM>
std::string oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_name_paraview ( const unsigned i) const
inlinevirtual

Name of the i-th scalar field. Default implementation returns V1 for the first one, V2 for the second etc.

Reimplemented from oomph::FiniteElement.

357  {
358  // If we're outputting the solution
359  if (i == 0)
360  {
361  // There's only one field to output
362  return "U";
363  }
364  // Never get here
365  else
366  {
367  std::stringstream error_stream;
368  error_stream << "These unsteady heat elements only store 1 field, \n"
369  << "but i is currently " << i << std::endl;
370  throw OomphLibError(
371  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
372 
373  // Dummy return
374  return " ";
375  }
376  } // End of scalar_name_paraview
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References i, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ scalar_name_paraview() [2/2]

template<unsigned SPATIAL_DIM>
std::string oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_name_paraview ( const unsigned i) const
inlinevirtual

Name of the i-th scalar field. Default implementation returns V1 for the first one, V2 for the second etc.

Reimplemented from oomph::FiniteElement.

356  {
357  // If we're outputting the solution
358  if (i == 0)
359  {
360  // There's only one field to output
361  return "U";
362  }
363  // Never get here
364  else
365  {
366  std::stringstream error_stream;
367  error_stream << "These unsteady heat elements only store 1 field, \n"
368  << "but i is currently " << i << std::endl;
369  throw OomphLibError(
370  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
371 
372  // Dummy return
373  return " ";
374  }
375  } // End of scalar_name_paraview

References i, OOMPH_CURRENT_FUNCTION, and OOMPH_EXCEPTION_LOCATION.

◆ scalar_value_fct_paraview() [1/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

302  {
303 #ifdef PARANOID
304  if (i != 0)
305  {
306  std::stringstream error_stream;
307  error_stream << "Space-time unsteady heat elements only store a single "
308  << "field so i must be 0 rather than " << i << std::endl;
309  throw OomphLibError(
310  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
311  }
312 #endif
313 
314  // Get the number of plot points
315  unsigned local_loop = this->nplot_points_paraview(nplot);
316 
317  // Loop over the plot points
318  for (unsigned j = 0; j < local_loop; j++)
319  {
320  // Storage for the local coordinates
321  Vector<double> s(SPATIAL_DIM + 1);
322 
323  // Storage for the time value
324  double interpolated_t = 0.0;
325 
326  // Storage for the global coordinates
327  Vector<double> spatial_coordinates(SPATIAL_DIM);
328 
329  // Get the local coordinate of the required plot point
330  this->get_s_plot(j, nplot, s);
331 
332  // Loop over the spatial coordinates
333  for (unsigned i = 0; i < SPATIAL_DIM; i++)
334  {
335  // Assign the i-th spatial coordinate
336  spatial_coordinates[i] = interpolated_x(s, i);
337  }
338 
339  // Get the time value
340  interpolated_t = interpolated_x(s, SPATIAL_DIM);
341 
342  // Exact solution vector (here it's simply a scalar)
343  Vector<double> exact_soln(1, 0.0);
344 
345  // Get the exact solution at this point
346  (*exact_soln_pt)(interpolated_t, spatial_coordinates, exact_soln);
347 
348  // Output the interpolated solution value
349  file_out << exact_soln[0] << std::endl;
350  } // for (unsigned j=0;j<local_loop;j++)
351  } // End of scalar_value_fct_paraview

References ProblemParameters::exact_soln(), oomph::FiniteElement::get_s_plot(), i, oomph::FiniteElement::interpolated_x(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ scalar_value_fct_paraview() [2/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
const double time,
FiniteElement::UnsteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

301  {
302 #ifdef PARANOID
303  if (i != 0)
304  {
305  std::stringstream error_stream;
306  error_stream << "Space-time unsteady heat elements only store a single "
307  << "field so i must be 0 rather than " << i << std::endl;
308  throw OomphLibError(
309  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
310  }
311 #endif
312 
313  // Get the number of plot points
314  unsigned local_loop = this->nplot_points_paraview(nplot);
315 
316  // Loop over the plot points
317  for (unsigned j = 0; j < local_loop; j++)
318  {
319  // Storage for the local coordinates
320  Vector<double> s(SPATIAL_DIM + 1);
321 
322  // Storage for the time value
323  double interpolated_t = 0.0;
324 
325  // Storage for the global coordinates
326  Vector<double> spatial_coordinates(SPATIAL_DIM);
327 
328  // Get the local coordinate of the required plot point
329  this->get_s_plot(j, nplot, s);
330 
331  // Loop over the spatial coordinates
332  for (unsigned i = 0; i < SPATIAL_DIM; i++)
333  {
334  // Assign the i-th spatial coordinate
335  spatial_coordinates[i] = interpolated_x(s, i);
336  }
337 
338  // Get the time value
339  interpolated_t = interpolated_x(s, SPATIAL_DIM);
340 
341  // Exact solution vector (here it's simply a scalar)
342  Vector<double> exact_soln(1, 0.0);
343 
344  // Get the exact solution at this point
345  (*exact_soln_pt)(interpolated_t, spatial_coordinates, exact_soln);
346 
347  // Output the interpolated solution value
348  file_out << exact_soln[0] << std::endl;
349  } // for (unsigned j=0;j<local_loop;j++)
350  } // End of scalar_value_fct_paraview

References ProblemParameters::exact_soln(), oomph::FiniteElement::get_s_plot(), i, oomph::FiniteElement::interpolated_x(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ scalar_value_fct_paraview() [3/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

248  {
249 #ifdef PARANOID
250  if (i != 0)
251  {
252  std::stringstream error_stream;
253  error_stream << "Space-time unsteady heat elements only store a single "
254  << "field so i must be 0 rather than " << i << std::endl;
255  throw OomphLibError(
256  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
257  }
258 #endif
259 
260  // Get the number of plot points
261  unsigned local_loop = this->nplot_points_paraview(nplot);
262 
263  // Loop over the plot points
264  for (unsigned j = 0; j < local_loop; j++)
265  {
266  // Storage for the local coordinates
267  Vector<double> s(SPATIAL_DIM + 1);
268 
269  // Storage for the global coordinates
270  Vector<double> spatial_coordinates(SPATIAL_DIM);
271 
272  // Get the local coordinate of the required plot point
273  this->get_s_plot(j, nplot, s);
274 
275  // Loop over the spatial coordinates
276  for (unsigned i = 0; i < SPATIAL_DIM; i++)
277  {
278  // Assign the i-th spatial coordinate
279  spatial_coordinates[i] = interpolated_x(s, i);
280  }
281 
282  // Exact solution vector (here it's simply a scalar)
283  Vector<double> exact_soln(1, 0.0);
284 
285  // Get the exact solution at this point
286  (*exact_soln_pt)(spatial_coordinates, exact_soln);
287 
288  // Output the interpolated solution value
289  file_out << exact_soln[0] << std::endl;
290  } // for (unsigned j=0;j<local_loop;j++)
291  } // End of scalar_value_fct_paraview

References ProblemParameters::exact_soln(), oomph::FiniteElement::get_s_plot(), i, oomph::FiniteElement::interpolated_x(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ scalar_value_fct_paraview() [4/4]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_fct_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot,
FiniteElement::SteadyExactSolutionFctPt  exact_soln_pt 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

247  {
248 #ifdef PARANOID
249  if (i != 0)
250  {
251  std::stringstream error_stream;
252  error_stream << "Space-time unsteady heat elements only store a single "
253  << "field so i must be 0 rather than " << i << std::endl;
254  throw OomphLibError(
255  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
256  }
257 #endif
258 
259  // Get the number of plot points
260  unsigned local_loop = this->nplot_points_paraview(nplot);
261 
262  // Loop over the plot points
263  for (unsigned j = 0; j < local_loop; j++)
264  {
265  // Storage for the local coordinates
266  Vector<double> s(SPATIAL_DIM + 1);
267 
268  // Storage for the global coordinates
269  Vector<double> spatial_coordinates(SPATIAL_DIM);
270 
271  // Get the local coordinate of the required plot point
272  this->get_s_plot(j, nplot, s);
273 
274  // Loop over the spatial coordinates
275  for (unsigned i = 0; i < SPATIAL_DIM; i++)
276  {
277  // Assign the i-th spatial coordinate
278  spatial_coordinates[i] = interpolated_x(s, i);
279  }
280 
281  // Exact solution vector (here it's simply a scalar)
282  Vector<double> exact_soln(1, 0.0);
283 
284  // Get the exact solution at this point
285  (*exact_soln_pt)(spatial_coordinates, exact_soln);
286 
287  // Output the interpolated solution value
288  file_out << exact_soln[0] << std::endl;
289  } // for (unsigned j=0;j<local_loop;j++)
290  } // End of scalar_value_fct_paraview

References ProblemParameters::exact_soln(), oomph::FiniteElement::get_s_plot(), i, oomph::FiniteElement::interpolated_x(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ scalar_value_paraview() [1/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

211  {
212 #ifdef PARANOID
213  if (i != 0)
214  {
215  std::stringstream error_stream;
216  error_stream << "Space-time unsteady heat elements only store a single "
217  << "field so i must be 0 rather than " << i << std::endl;
218  throw OomphLibError(
219  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
220  }
221 #endif
222 
223  // Get the number of plot points
224  unsigned local_loop = this->nplot_points_paraview(nplot);
225 
226  // Loop over the plot points
227  for (unsigned j = 0; j < local_loop; j++)
228  {
229  // Storage for the local coordinates
230  Vector<double> s(SPATIAL_DIM + 1);
231 
232  // Get the local coordinate of the required plot point
233  this->get_s_plot(j, nplot, s);
234 
235  // Output the interpolated solution value
236  file_out << this->interpolated_u_ust_heat(s) << std::endl;
237  }
238  } // End of scalar_value_paraview

References oomph::FiniteElement::get_s_plot(), i, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ scalar_value_paraview() [2/2]

template<unsigned SPATIAL_DIM>
void oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::scalar_value_paraview ( std::ofstream &  file_out,
const unsigned i,
const unsigned nplot 
) const
inlinevirtual

Write values of the i-th scalar field at the plot points. Needs to be implemented for each new specific element type.

Reimplemented from oomph::FiniteElement.

210  {
211 #ifdef PARANOID
212  if (i != 0)
213  {
214  std::stringstream error_stream;
215  error_stream << "Space-time unsteady heat elements only store a single "
216  << "field so i must be 0 rather than " << i << std::endl;
217  throw OomphLibError(
218  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
219  }
220 #endif
221 
222  // Get the number of plot points
223  unsigned local_loop = this->nplot_points_paraview(nplot);
224 
225  // Loop over the plot points
226  for (unsigned j = 0; j < local_loop; j++)
227  {
228  // Storage for the local coordinates
229  Vector<double> s(SPATIAL_DIM + 1);
230 
231  // Get the local coordinate of the required plot point
232  this->get_s_plot(j, nplot, s);
233 
234  // Output the interpolated solution value
235  file_out << this->interpolated_u_ust_heat(s) << std::endl;
236  }
237  } // End of scalar_value_paraview

References oomph::FiniteElement::get_s_plot(), i, oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat(), j, oomph::FiniteElement::nplot_points_paraview(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and s.

◆ self_test() [1/2]

template<unsigned SPATIAL_DIM>
unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::self_test
virtual

Self-test: Return 0 for OK.

Reimplemented from oomph::FiniteElement.

295  {
296  // Initialise the boolean variable
297  bool passed = true;
298 
299  // Check lower-level stuff
300  if (FiniteElement::self_test() != 0)
301  {
302  // If we get here then the lower-level self-tests did not pass
303  passed = false;
304  }
305 
306  // If the self-tests passed
307  if (passed)
308  {
309  // Return the value zero
310  return 0;
311  }
312  // If the self-tests didn't pass
313  else
314  {
315  // Return the value one
316  return 1;
317  }
318  } // End of self_test
virtual unsigned self_test()
Definition: elements.cc:4440

References oomph::FiniteElement::self_test().

◆ self_test() [2/2]

template<unsigned SPATIAL_DIM>
unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::self_test ( )
virtual

Self-test: Return 0 for OK.

Reimplemented from oomph::FiniteElement.

◆ source_fct_pt() [1/4]

template<unsigned SPATIAL_DIM>
SpaceTimeUnsteadyHeatSourceFctPt& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::source_fct_pt ( )
inlinevirtual

Access function: Pointer to source function.

Implements oomph::SpaceTimeUnsteadyHeatEquationsBase.

381  {
382  // Return the source function pointer
383  return Source_fct_pt;
384  } // End of source_fct_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt.

Referenced by oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::further_build().

◆ source_fct_pt() [2/4]

template<unsigned SPATIAL_DIM>
SpaceTimeUnsteadyHeatSourceFctPt& oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::source_fct_pt ( )
inlinevirtual

Access function: Pointer to source function.

Implements oomph::SpaceTimeUnsteadyHeatEquationsBase.

380  {
381  // Return the source function pointer
382  return Source_fct_pt;
383  } // End of source_fct_pt

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt.

◆ source_fct_pt() [3/4]

template<unsigned SPATIAL_DIM>
SpaceTimeUnsteadyHeatSourceFctPt oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::source_fct_pt ( ) const
inline

Access function: Pointer to source function. Const version.

389  {
390  // Return the source function pointer
391  return Source_fct_pt;
392  }

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt.

◆ source_fct_pt() [4/4]

template<unsigned SPATIAL_DIM>
SpaceTimeUnsteadyHeatSourceFctPt oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::source_fct_pt ( ) const
inline

Access function: Pointer to source function. Const version.

388  {
389  // Return the source function pointer
390  return Source_fct_pt;
391  }

References oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Source_fct_pt.

◆ u_index_ust_heat() [1/2]

template<unsigned SPATIAL_DIM>
virtual unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat ( ) const
inlinevirtual

Return the index at which the unknown value is stored. The default value, 0, is appropriate for single-physics problems, when there is only one variable, the value that satisfies the unsteady heat equation. In derived multi-physics elements, this function should be overloaded to reflect the chosen storage scheme. Note that these equations require that the unknown is always stored at the same index at each node.

544  {
545  // Return the default value
546  return 0;
547  } // End of u_index_ust_heat

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_flux(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_interpolated_values(), oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::get_Z2_flux(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_du_dt_ust_heat(), and oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::interpolated_u_ust_heat().

◆ u_index_ust_heat() [2/2]

template<unsigned SPATIAL_DIM>
virtual unsigned oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::u_index_ust_heat ( ) const
inlinevirtual

Return the index at which the unknown value is stored. The default value, 0, is appropriate for single-physics problems, when there is only one variable, the value that satisfies the unsteady heat equation. In derived multi-physics elements, this function should be overloaded to reflect the chosen storage scheme. Note that these equations require that the unknown is always stored at the same index at each node.

543  {
544  // Return the default value
545  return 0;
546  } // End of u_index_ust_heat

Member Data Documentation

◆ ALE_is_disabled

template<unsigned SPATIAL_DIM>
bool oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::ALE_is_disabled
protected

Boolean flag to indicate if ALE formulation is disabled when time-derivatives are computed. Only set to true if you're sure that the mesh is stationary.

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::disable_ALE(), oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::enable_ALE(), and oomph::RefineableSpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::further_build().

◆ Alpha_pt

◆ Beta_pt

◆ Default_alpha_parameter

template<unsigned SPATIAL_DIM>
static double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_alpha_parameter
staticprivate
Initial value:
=
1.0

Default value for Alpha parameter (thermal inertia)

Static default value for the Alpha parameter (thermal inertia): One for natural scaling

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations().

◆ Default_beta_parameter

template<unsigned SPATIAL_DIM>
static double oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::Default_beta_parameter
staticprivate
Initial value:
=
1.0

Default value for Beta parameter (thermal conductivity)

Static default value for the Beta parameter (thermal conductivity): One for natural scaling

Referenced by oomph::SpaceTimeUnsteadyHeatEquations< SPATIAL_DIM >::SpaceTimeUnsteadyHeatEquations().

◆ Source_fct_pt


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