oomph::QTaylorHoodSpaceTimeElement< DIM > Class Template Reference

#include <discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h>

+ Inheritance diagram for oomph::QTaylorHoodSpaceTimeElement< DIM >:

Public Member Functions

 QTaylorHoodSpaceTimeElement ()
 Constructor, no internal data points. More...
 
virtual unsigned required_nvalue (const unsigned &n) const
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 Pressure shape functions at local coordinate s. More...
 
void ptest_nst (const Vector< double > &s, Shape &psi) const
 Pressure test functions at local coordinate s. More...
 
void pshape_nst (const Vector< double > &s, Shape &psi, Shape &test) const
 Pressure shape and test functions at local coordinte s. More...
 
virtual int p_nodal_index_nst () const
 Set the value at which the pressure is stored in the nodes. More...
 
int p_local_eqn (const unsigned &n) const
 Return the local equation numbers for the pressure values. More...
 
double p_nst (const unsigned &n_p) const
 
double p_nst (const unsigned &t, const unsigned &n_p) const
 
unsigned npres_nst () const
 Return number of pressure values. More...
 
void fix_pressure (const unsigned &p_dof, const double &p_value)
 Pin p_dof-th pressure dof and set it to value specified by p_value. More...
 
void build_fp_press_adv_diff_robin_bc_element (const unsigned &face_index)
 
void identify_load_data (std::set< std::pair< Data *, unsigned >> &paired_load_data)
 
void identify_pressure_data (std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
 
void output (std::ostream &outfile)
 Redirect output to NavierStokesEquations output. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
unsigned ndof_types () const
 
void get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
 
 QTaylorHoodSpaceTimeElement ()
 Constructor, no internal data points. More...
 
 ~QTaylorHoodSpaceTimeElement ()
 
virtual unsigned required_nvalue (const unsigned &n) const
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 Pressure shape functions at local coordinate s. More...
 
void ptest_nst (const Vector< double > &s, Shape &psi) const
 Pressure test functions at local coordinate s. More...
 
void pshape_nst (const Vector< double > &s, Shape &psi, Shape &test) const
 Pressure shape and test functions at local coordinte s. More...
 
virtual int p_nodal_index_nst () const
 Set the value at which the pressure is stored in the nodes. More...
 
int p_local_eqn (const unsigned &n) const
 Return the local equation numbers for the pressure values. More...
 
double p_nst (const unsigned &n_p) const
 
double p_nst (const unsigned &t, const unsigned &n_p) const
 
unsigned npres_nst () const
 Return number of pressure values. More...
 
void fix_pressure (const unsigned &p_dof, const double &p_value)
 Pin p_dof-th pressure dof and set it to value specified by p_value. More...
 
void build_fp_press_adv_diff_robin_bc_element (const unsigned &face_index)
 
void identify_load_data (std::set< std::pair< Data *, unsigned >> &paired_load_data)
 
void identify_pressure_data (std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
 
void output (std::ostream &outfile)
 Redirect output to NavierStokesEquations output. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
 QTaylorHoodSpaceTimeElement ()
 Constructor, no internal data points. More...
 
virtual unsigned required_nvalue (const unsigned &n) const
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 Pressure shape functions at local coordinate s. More...
 
void pshape_nst (const Vector< double > &s, Shape &psi, Shape &test) const
 Pressure shape and test functions at local coordinte s. More...
 
virtual int p_nodal_index_nst () const
 Set the value at which the pressure is stored in the nodes. More...
 
int p_local_eqn (const unsigned &n) const
 Return the local equation numbers for the pressure values. More...
 
double p_nst (const unsigned &n_p) const
 
double p_nst (const unsigned &t, const unsigned &n_p) const
 
unsigned npres_nst () const
 Return number of pressure values. More...
 
void fix_pressure (const unsigned &p_dof, const double &p_value)
 Pin p_dof-th pressure dof and set it to value specified by p_value. More...
 
void build_fp_press_adv_diff_robin_bc_element (const unsigned &face_index)
 
void identify_load_data (std::set< std::pair< Data *, unsigned >> &paired_load_data)
 
void identify_pressure_data (std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
 
void output (std::ostream &outfile)
 Redirect output to NavierStokesEquations output. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt)
 Redirect output to NavierStokesEquations output. More...
 
void output (FILE *file_pt, const unsigned &nplot)
 Redirect output to NavierStokesEquations output. More...
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 2D (in space): Pressure shape functions More...
 
void ptest_nst (const Vector< double > &s, Shape &test) const
 2D (in space): Pressure shape functions More...
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 2D (in space): Pressure shape functions More...
 
void ptest_nst (const Vector< double > &s, Shape &test) const
 2D (in space): Pressure shape functions More...
 
void pshape_nst (const Vector< double > &s, Shape &psi) const
 
- Public Member Functions inherited from oomph::SpaceTimeNavierStokesEquations< DIM >
 SpaceTimeNavierStokesEquations ()
 
void store_strouhal_as_external_data (Data *strouhal_data_pt)
 Function that tells us whether the period is stored as external data. More...
 
const doublere () const
 Reynolds number. More...
 
double *& re_pt ()
 Pointer to Reynolds number. More...
 
bool is_strouhal_stored_as_external_data () const
 Are we storing the Strouhal number as external data? More...
 
const doublest () const
 Strouhal parameter (const. version) More...
 
doublest_pt () const
 Pointer to Strouhal parameter (const. version) More...
 
double *& st_pt ()
 Pointer to Strouhal number (can only assign to private member data) More...
 
double re_st () const
 Product of Reynolds and Strouhal number (=Womersley number) More...
 
const doubleviscosity_ratio () const
 
double *& viscosity_ratio_pt ()
 Pointer to Viscosity Ratio. More...
 
const doubledensity_ratio () const
 
double *& density_ratio_pt ()
 Pointer to Density ratio. More...
 
const doublere_invfr () const
 Global inverse Froude number. More...
 
double *& re_invfr_pt ()
 Pointer to global inverse Froude number. More...
 
const Vector< double > & g () const
 Vector of gravitational components. More...
 
Vector< double > *& g_pt ()
 Pointer to Vector of gravitational components. More...
 
NavierStokesBodyForceFctPtbody_force_fct_pt ()
 Access function for the body-force pointer. More...
 
NavierStokesBodyForceFctPt body_force_fct_pt () const
 Access function for the body-force pointer. Const version. More...
 
NavierStokesSourceFctPtsource_fct_pt ()
 Access function for the source-function pointer. More...
 
NavierStokesSourceFctPt source_fct_pt () const
 Access function for the source-function pointer. Const version. More...
 
NavierStokesPressureAdvDiffSourceFctPtsource_fct_for_pressure_adv_diff ()
 
NavierStokesPressureAdvDiffSourceFctPt source_fct_for_pressure_adv_diff () const
 
intpinned_fp_pressure_eqn ()
 
double u_nst (const unsigned &n, const unsigned &i) const
 
double u_nst (const unsigned &t, const unsigned &n, const unsigned &i) const
 
virtual unsigned u_index_nst (const unsigned &i) const
 
unsigned n_u_nst () const
 
double get_du_dt (const unsigned &n, const unsigned &i) const
 
double du_dt_nst (const unsigned &n, const unsigned &i) const
 
double interpolated_du_dt_nst (const Vector< double > &s, const unsigned &i) const
 
void disable_ALE ()
 
void enable_ALE ()
 
double pressure_integral () const
 Integral of pressure over element. More...
 
double dissipation () const
 Return integral of dissipation over element. More...
 
double dissipation (const Vector< double > &s) const
 Return dissipation at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
double kin_energy () const
 Get integral of kinetic energy over element. More...
 
double d_kin_energy_dt () const
 Get integral of time derivative of kinetic energy over element. More...
 
void strain_rate (const Vector< double > &s, DenseMatrix< double > &strain_rate) const
 Strain-rate tensor: 1/2 (du_i/dx_j+du_j/dx_i) More...
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction)
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction_p, Vector< double > &traction_visc_n, Vector< double > &traction_visc_t)
 
void get_load (const Vector< double > &s, const Vector< double > &N, Vector< double > &load)
 
void get_pressure_and_velocity_mass_matrix_diagonal (Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)
 
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, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
std::string scalar_name_paraview (const unsigned &i) const
 
void full_output (std::ostream &outfile)
 
void full_output (std::ostream &outfile, const unsigned &n_plot)
 
void output_veloc (std::ostream &outfile, const unsigned &nplot, const unsigned &t)
 
void output_vorticity (std::ostream &outfile, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_norm (Vector< double > &norm)
 Compute the vector norm of the FEM solution. More...
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Compute the element's residual Vector. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
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)
 
void fill_in_pressure_advection_diffusion_residuals (Vector< double > &residuals)
 
void fill_in_pressure_advection_diffusion_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void pin_all_non_pressure_dofs (std::map< Data *, std::vector< int >> &eqn_number_backup)
 Pin all non-pressure dofs and backup eqn numbers. More...
 
void output_pressure_advection_diffusion_robin_elements (std::ostream &outfile)
 
void delete_pressure_advection_diffusion_robin_elements ()
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
void interpolated_u_nst (const Vector< double > &s, Vector< double > &velocity) const
 Compute vector of FE interpolated velocity u at local coordinate s. More...
 
double interpolated_u_nst (const Vector< double > &s, const unsigned &i) const
 Return FE interpolated velocity u[i] at local coordinate s. More...
 
double interpolated_u_nst (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
virtual void dinterpolated_u_nst_ddata (const Vector< double > &s, const unsigned &i, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
 
virtual double interpolated_p_nst (const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s. More...
 
double interpolated_p_nst (const unsigned &t, const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s at time level t. More...
 
void point_output_data (const Vector< double > &s, Vector< double > &data)
 
 SpaceTimeNavierStokesEquations ()
 
void store_strouhal_as_external_data (Data *strouhal_data_pt)
 Function that tells us whether the period is stored as external data. More...
 
const doublere () const
 Reynolds number. More...
 
double *& re_pt ()
 Pointer to Reynolds number. More...
 
bool is_strouhal_stored_as_external_data () const
 Are we storing the Strouhal number as external data? More...
 
const doublest () const
 Strouhal parameter (const. version) More...
 
doublest_pt () const
 Pointer to Strouhal parameter (const. version) More...
 
double *& st_pt ()
 Pointer to Strouhal number (can only assign to private member data) More...
 
double re_st () const
 Product of Reynolds and Strouhal number (=Womersley number) More...
 
const doubleviscosity_ratio () const
 
double *& viscosity_ratio_pt ()
 Pointer to Viscosity Ratio. More...
 
const doubledensity_ratio () const
 
double *& density_ratio_pt ()
 Pointer to Density ratio. More...
 
const doublere_invfr () const
 Global inverse Froude number. More...
 
double *& re_invfr_pt ()
 Pointer to global inverse Froude number. More...
 
const Vector< double > & g () const
 Vector of gravitational components. More...
 
Vector< double > *& g_pt ()
 Pointer to Vector of gravitational components. More...
 
NavierStokesBodyForceFctPtbody_force_fct_pt ()
 Access function for the body-force pointer. More...
 
NavierStokesBodyForceFctPt body_force_fct_pt () const
 Access function for the body-force pointer. Const version. More...
 
NavierStokesSourceFctPtsource_fct_pt ()
 Access function for the source-function pointer. More...
 
NavierStokesSourceFctPt source_fct_pt () const
 Access function for the source-function pointer. Const version. More...
 
NavierStokesPressureAdvDiffSourceFctPtsource_fct_for_pressure_adv_diff ()
 
NavierStokesPressureAdvDiffSourceFctPt source_fct_for_pressure_adv_diff () const
 
intpinned_fp_pressure_eqn ()
 
double u_nst (const unsigned &n, const unsigned &i) const
 
double u_nst (const unsigned &t, const unsigned &n, const unsigned &i) const
 
virtual unsigned u_index_nst (const unsigned &i) const
 
unsigned n_u_nst () const
 
double get_du_dt (const unsigned &n, const unsigned &i) const
 
double du_dt_nst (const unsigned &n, const unsigned &i) const
 
double interpolated_du_dt_nst (const Vector< double > &s, const unsigned &i) const
 
void disable_ALE ()
 
void enable_ALE ()
 
double pressure_integral () const
 Integral of pressure over element. More...
 
double dissipation () const
 Return integral of dissipation over element. More...
 
double dissipation (const Vector< double > &s) const
 Return dissipation at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
double kin_energy () const
 Get integral of kinetic energy over element. More...
 
double d_kin_energy_dt () const
 Get integral of time derivative of kinetic energy over element. More...
 
void strain_rate (const Vector< double > &s, DenseMatrix< double > &strain_rate) const
 Strain-rate tensor: 1/2 (du_i/dx_j+du_j/dx_i) More...
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction)
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction_p, Vector< double > &traction_visc_n, Vector< double > &traction_visc_t)
 
void get_load (const Vector< double > &s, const Vector< double > &N, Vector< double > &load)
 
void get_pressure_and_velocity_mass_matrix_diagonal (Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)
 
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, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
std::string scalar_name_paraview (const unsigned &i) const
 
void full_output (std::ostream &outfile)
 
void full_output (std::ostream &outfile, const unsigned &n_plot)
 
void output_veloc (std::ostream &outfile, const unsigned &nplot, const unsigned &t)
 
void output_vorticity (std::ostream &outfile, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_norm (Vector< double > &norm)
 Compute the vector norm of the FEM solution. More...
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Compute the element's residual Vector. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
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)
 
void fill_in_pressure_advection_diffusion_residuals (Vector< double > &residuals)
 
void fill_in_pressure_advection_diffusion_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void pin_all_non_pressure_dofs (std::map< Data *, std::vector< int >> &eqn_number_backup)
 Pin all non-pressure dofs and backup eqn numbers. More...
 
void output_pressure_advection_diffusion_robin_elements (std::ostream &outfile)
 
void delete_pressure_advection_diffusion_robin_elements ()
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
void interpolated_u_nst (const Vector< double > &s, Vector< double > &velocity) const
 Compute vector of FE interpolated velocity u at local coordinate s. More...
 
double interpolated_u_nst (const Vector< double > &s, const unsigned &i) const
 Return FE interpolated velocity u[i] at local coordinate s. More...
 
double interpolated_u_nst (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
virtual void dinterpolated_u_nst_ddata (const Vector< double > &s, const unsigned &i, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
 
virtual double interpolated_p_nst (const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s. More...
 
double interpolated_p_nst (const unsigned &t, const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s at time level t. More...
 
void point_output_data (const Vector< double > &s, Vector< double > &data)
 
 SpaceTimeNavierStokesEquations ()
 
void store_strouhal_as_external_data (Data *strouhal_data_pt)
 Function that tells us whether the period is stored as external data. More...
 
bool is_reynolds_strouhal_stored_as_external_data () const
 Are we storing the Strouhal number as external data? More...
 
const doublere () const
 Reynolds number. More...
 
double *& re_pt ()
 Pointer to Reynolds number. More...
 
const doublere_st () const
 ReSt parameter (const. version) More...
 
doublere_st_pt () const
 Pointer to Strouhal parameter (const. version) More...
 
double *& re_st_pt ()
 Pointer to ReSt number (can only assign to private member data) More...
 
const doubleviscosity_ratio () const
 
double *& viscosity_ratio_pt ()
 Pointer to Viscosity Ratio. More...
 
const doubledensity_ratio () const
 
double *& density_ratio_pt ()
 Pointer to Density ratio. More...
 
const doublere_invfr () const
 Global inverse Froude number. More...
 
double *& re_invfr_pt ()
 Pointer to global inverse Froude number. More...
 
const Vector< double > & g () const
 Vector of gravitational components. More...
 
Vector< double > *& g_pt ()
 Pointer to Vector of gravitational components. More...
 
NavierStokesBodyForceFctPtbody_force_fct_pt ()
 Access function for the body-force pointer. More...
 
NavierStokesBodyForceFctPt body_force_fct_pt () const
 Access function for the body-force pointer. Const version. More...
 
NavierStokesSourceFctPtsource_fct_pt ()
 Access function for the source-function pointer. More...
 
NavierStokesSourceFctPt source_fct_pt () const
 Access function for the source-function pointer. Const version. More...
 
NavierStokesPressureAdvDiffSourceFctPtsource_fct_for_pressure_adv_diff ()
 
NavierStokesPressureAdvDiffSourceFctPt source_fct_for_pressure_adv_diff () const
 
intpinned_fp_pressure_eqn ()
 
double u_nst (const unsigned &n, const unsigned &i) const
 
double u_nst (const unsigned &t, const unsigned &n, const unsigned &i) const
 
virtual unsigned u_index_nst (const unsigned &i) const
 
unsigned n_u_nst () const
 
double get_du_dt (const unsigned &n, const unsigned &i) const
 
double du_dt_nst (const unsigned &n, const unsigned &i) const
 
double interpolated_du_dt_nst (const Vector< double > &s, const unsigned &i) const
 
void disable_ALE ()
 
void enable_ALE ()
 
double pressure_integral () const
 Integral of pressure over element. More...
 
double dissipation () const
 Return integral of dissipation over element. More...
 
double dissipation (const Vector< double > &s) const
 Return dissipation at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 Compute the vorticity vector at local coordinate s. More...
 
double kin_energy () const
 Get integral of kinetic energy over element. More...
 
double d_kin_energy_dt () const
 Get integral of time derivative of kinetic energy over element. More...
 
void strain_rate (const Vector< double > &s, DenseMatrix< double > &strain_rate) const
 Strain-rate tensor: 1/2 (du_i/dx_j+du_j/dx_i) More...
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction)
 
void get_traction (const Vector< double > &s, const Vector< double > &N, Vector< double > &traction_p, Vector< double > &traction_visc_n, Vector< double > &traction_visc_t)
 
void get_load (const Vector< double > &s, const Vector< double > &N, Vector< double > &load)
 
void get_pressure_and_velocity_mass_matrix_diagonal (Vector< double > &press_mass_diag, Vector< double > &veloc_mass_diag, const unsigned &which_one=0)
 
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, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
std::string scalar_name_paraview (const unsigned &i) const
 
void full_output (std::ostream &outfile)
 
void full_output (std::ostream &outfile, const unsigned &n_plot)
 
void output_veloc (std::ostream &outfile, const unsigned &nplot, const unsigned &t)
 
void output_vorticity (std::ostream &outfile, const unsigned &nplot)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 
void output_fct (std::ostream &outfile, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_norm (Vector< double > &norm)
 Compute the vector norm of the FEM solution. More...
 
void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
void fill_in_contribution_to_residuals (Vector< double > &residuals)
 Compute the element's residual Vector. More...
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
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)
 
void fill_in_pressure_advection_diffusion_residuals (Vector< double > &residuals)
 
void fill_in_pressure_advection_diffusion_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void pin_all_non_pressure_dofs (std::map< Data *, std::vector< int >> &eqn_number_backup)
 Pin all non-pressure dofs and backup eqn numbers. More...
 
void output_pressure_advection_diffusion_robin_elements (std::ostream &outfile)
 
void delete_pressure_advection_diffusion_robin_elements ()
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
void interpolated_u_nst (const Vector< double > &s, Vector< double > &velocity) const
 Compute vector of FE interpolated velocity u at local coordinate s. More...
 
double interpolated_u_nst (const Vector< double > &s, const unsigned &i) const
 Return FE interpolated velocity u[i] at local coordinate s. More...
 
double interpolated_u_nst (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
virtual void dinterpolated_u_nst_ddata (const Vector< double > &s, const unsigned &i, Vector< double > &du_ddata, Vector< unsigned > &global_eqn_number)
 
virtual double interpolated_p_nst (const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s. More...
 
double interpolated_p_nst (const unsigned &t, const Vector< double > &s) const
 Return FE interpolated pressure at local coordinate s at time level t. More...
 
void point_output_data (const Vector< double > &s, Vector< double > &data)
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 
void get_vorticity (const Vector< double > &s, Vector< double > &vorticity) const
 
void get_vorticity (const Vector< double > &s, double &vorticity) const
 
- Public Member Functions inherited from oomph::FSIFluidElement
 FSIFluidElement ()
 Constructor. More...
 
 FSIFluidElement (const FSIFluidElement &)=delete
 Broken copy constructor. More...
 
void operator= (const FSIFluidElement &)=delete
 Broken assignment operator. More...
 
- 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
 
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
 
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 scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) 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, 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_abs_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error)
 
void integrate_fct (FiniteElement::SteadyExactSolutionFctPt integrand_fct_pt, Vector< double > &integral)
 Integrate Vector-valued function over element. More...
 
void integrate_fct (FiniteElement::UnsteadyExactSolutionFctPt integrand_fct_pt, const double &time, Vector< double > &integral)
 Integrate Vector-valued time-dep function over element. More...
 
virtual void build_face_element (const int &face_index, FaceElement *face_element_pt)
 
virtual unsigned self_test ()
 
virtual unsigned get_bulk_node_number (const int &face_index, const unsigned &i) const
 
virtual int face_outer_unit_normal_sign (const int &face_index) const
 Get the sign of the outer unit normal on the face given by face_index. More...
 
virtual unsigned nnode_on_face () const
 
void face_node_number_error_check (const unsigned &i) const
 Range check for face node numbers. More...
 
virtual CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt (const int &face_index) const
 
virtual BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt (const int &face_index) const
 
- Public Member Functions inherited from oomph::GeneralisedElement
 GeneralisedElement ()
 Constructor: Initialise all pointers and all values to zero. More...
 
virtual ~GeneralisedElement ()
 Virtual destructor to clean up any memory allocated by the object. More...
 
 GeneralisedElement (const GeneralisedElement &)=delete
 Broken copy constructor. More...
 
void operator= (const GeneralisedElement &)=delete
 Broken assignment operator. More...
 
Data *& internal_data_pt (const unsigned &i)
 Return a pointer to i-th internal data object. More...
 
Data *const & internal_data_pt (const unsigned &i) const
 Return a pointer to i-th internal data object (const version) More...
 
Data *& external_data_pt (const unsigned &i)
 Return a pointer to i-th external data object. More...
 
Data *const & external_data_pt (const unsigned &i) const
 Return a pointer to i-th external data object (const version) More...
 
unsigned long eqn_number (const unsigned &ieqn_local) const
 
int local_eqn_number (const unsigned long &ieqn_global) const
 
unsigned add_external_data (Data *const &data_pt, const bool &fd=true)
 
bool external_data_fd (const unsigned &i) const
 
void exclude_external_data_fd (const unsigned &i)
 
void include_external_data_fd (const unsigned &i)
 
void flush_external_data ()
 Flush all external data. More...
 
void flush_external_data (Data *const &data_pt)
 Flush the object addressed by data_pt from the external data array. More...
 
unsigned ninternal_data () const
 Return the number of internal data objects. More...
 
unsigned nexternal_data () const
 Return the number of external data objects. More...
 
unsigned ndof () const
 Return the number of equations/dofs in the element. More...
 
void dof_vector (const unsigned &t, Vector< double > &dof)
 Return the vector of dof values at time level t. More...
 
void dof_pt_vector (Vector< double * > &dof_pt)
 Return the vector of pointers to dof values. More...
 
void set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt)
 
void describe_dofs (std::ostream &out, const std::string &current_string) const
 
void add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 
virtual void assign_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void complete_setup_of_dependencies ()
 
virtual void get_residuals (Vector< double > &residuals)
 
virtual void get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void get_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 
virtual void compute_norm (double &norm)
 
- 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
 
- Public Member Functions inherited from oomph::TemplateFreeSpaceTimeNavierStokesEquationsBase
 TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Constructor (empty) More...
 
virtual ~TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Virtual destructor (empty) More...
 
 TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Constructor (empty) More...
 
virtual ~TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Virtual destructor (empty) More...
 
 TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Constructor (empty) More...
 
virtual ~TemplateFreeSpaceTimeNavierStokesEquationsBase ()
 Virtual destructor (empty) More...
 
- Public Member Functions inherited from oomph::NavierStokesElementWithDiagonalMassMatrices
 NavierStokesElementWithDiagonalMassMatrices ()
 Empty constructor. More...
 
virtual ~NavierStokesElementWithDiagonalMassMatrices ()
 Virtual destructor. More...
 
 NavierStokesElementWithDiagonalMassMatrices (const NavierStokesElementWithDiagonalMassMatrices &)=delete
 Broken copy constructor. More...
 
void operator= (const NavierStokesElementWithDiagonalMassMatrices &)=delete
 Broken assignment operator. More...
 

Protected Member Functions

double dshape_and_dtest_eulerian_nst (const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
double dpshape_eulerian (const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
 
double dptest_eulerian (const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
double dshape_and_dtest_eulerian_nst (const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
double dpshape_eulerian (const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
 
double dptest_eulerian (const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
double dshape_and_dtest_eulerian_nst (const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
const unsigned Pconv [12]
 
double dpshape_eulerian (const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
 
double dptest_eulerian (const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
const unsigned Pconv [8]
 
double dpshape_eulerian (const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
 
double dptest_eulerian (const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
const unsigned Pconv [8]
 
double dpshape_and_dptest_eulerian_nst (const Vector< double > &s, Shape &ppsi, DShape &dppsidx, Shape &ptest, DShape &dptestdx) const
 
double dshape_and_dtest_eulerian_at_knot_nst (const unsigned &ipt, Shape &psi, DShape &dpsidx, RankFourTensor< double > &d_dpsidx_dX, Shape &test, DShape &dtestdx, RankFourTensor< double > &d_dtestdx_dX, DenseMatrix< double > &djacobian_dX) const
 
- Protected Member Functions inherited from oomph::SpaceTimeNavierStokesEquations< DIM >
virtual void get_body_force_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
 
virtual void get_body_force_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, DenseMatrix< double > &d_body_force_dx)
 
virtual double get_source_nst (const double &time, const unsigned &ipt, const Vector< double > &x)
 Calculate the source fct at a given time and Eulerian position. More...
 
virtual void get_source_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &x, Vector< double > &gradient)
 
virtual void fill_in_generic_residual_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &flag)
 
virtual void fill_in_generic_pressure_advection_diffusion_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
virtual void fill_in_generic_dresidual_contribution_nst (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam, const unsigned &flag)
 
void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_body_force_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
 
virtual void get_body_force_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, DenseMatrix< double > &d_body_force_dx)
 
virtual double get_source_nst (const double &time, const unsigned &ipt, const Vector< double > &x)
 Calculate the source fct at a given time and Eulerian position. More...
 
virtual void get_source_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &x, Vector< double > &gradient)
 
virtual void fill_in_generic_residual_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &flag)
 
virtual void fill_in_generic_pressure_advection_diffusion_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
virtual void fill_in_generic_dresidual_contribution_nst (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam, const unsigned &flag)
 
void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_body_force_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, Vector< double > &result)
 
virtual void get_body_force_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &s, const Vector< double > &x, DenseMatrix< double > &d_body_force_dx)
 
virtual double get_source_nst (const double &time, const unsigned &ipt, const Vector< double > &x)
 Calculate the source fct at a given time and Eulerian position. More...
 
virtual void get_source_gradient_nst (const double &time, const unsigned &ipt, const Vector< double > &x, Vector< double > &gradient)
 
virtual void fill_in_generic_residual_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix, const unsigned &flag)
 
virtual void fill_in_generic_pressure_advection_diffusion_contribution_nst (Vector< double > &residuals, DenseMatrix< double > &jacobian, const unsigned &flag)
 
virtual void fill_in_generic_dresidual_contribution_nst (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam, const unsigned &flag)
 
void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
- 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_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)
 

Static Protected Attributes

static const unsigned Pconv []
 
- 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
 

Private Member Functions

const unsigned Initial_Nvalue [27]
 
const unsigned Initial_Nvalue [27]
 
const unsigned Initial_Nvalue [27]
 

Static Private Attributes

static const unsigned Initial_Nvalue []
 Static array of ints to hold number of variables at node. More...
 

Additional Inherited Members

- Public Types inherited from oomph::SpaceTimeNavierStokesEquations< DIM >
typedef void(* NavierStokesBodyForceFctPt) (const double &time, const Vector< double > &x, Vector< double > &body_force)
 
typedef double(* NavierStokesSourceFctPt) (const double &time, const Vector< double > &x)
 Function pointer to source function fct(t,x) (x is a Vector!) More...
 
typedef double(* NavierStokesPressureAdvDiffSourceFctPt) (const Vector< double > &x)
 
typedef void(* NavierStokesBodyForceFctPt) (const double &time, const Vector< double > &x, Vector< double > &body_force)
 
typedef double(* NavierStokesSourceFctPt) (const double &time, const Vector< double > &x)
 Function pointer to source function fct(t,x) (x is a Vector!) More...
 
typedef double(* NavierStokesPressureAdvDiffSourceFctPt) (const Vector< double > &x)
 
typedef void(* NavierStokesBodyForceFctPt) (const double &time, const Vector< double > &x, Vector< double > &body_force)
 
typedef double(* NavierStokesSourceFctPt) (const double &time, const Vector< double > &x)
 Function pointer to source function fct(t,x) (x is a Vector!) More...
 
typedef double(* NavierStokesPressureAdvDiffSourceFctPt) (const Vector< double > &x)
 
- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 
- Static Public Attributes inherited from oomph::SpaceTimeNavierStokesEquations< DIM >
static Vector< doubleGamma
 Navier-Stokes equations static data. More...
 
- Static Public Attributes inherited from oomph::FiniteElement
static double Tolerance_for_singular_jacobian = 1.0e-16
 Tolerance below which the jacobian is considered singular. More...
 
static bool Accept_negative_jacobian = false
 
static bool Suppress_output_while_checking_for_inverted_elements
 
- Static Public Attributes inherited from oomph::GeneralisedElement
static bool Suppress_warning_about_repeated_internal_data
 
static bool Suppress_warning_about_repeated_external_data = true
 
static double Default_fd_jacobian_step = 1.0e-8
 
- Protected Attributes inherited from oomph::SpaceTimeNavierStokesEquations< DIM >
doubleViscosity_Ratio_pt
 
doubleDensity_Ratio_pt
 
doubleRe_pt
 Pointer to global Reynolds number. More...
 
doubleSt_pt
 Pointer to global Reynolds number x Strouhal number (=Womersley) More...
 
bool Strouhal_is_stored_as_external_data
 
doubleReInvFr_pt
 
Vector< double > * G_pt
 Pointer to global gravity Vector. More...
 
NavierStokesBodyForceFctPt Body_force_fct_pt
 Pointer to body force function. More...
 
NavierStokesSourceFctPt Source_fct_pt
 Pointer to volumetric source function. More...
 
NavierStokesPressureAdvDiffSourceFctPt Press_adv_diff_source_fct_pt
 
bool ALE_is_disabled
 
Vector< FpPressureAdvDiffRobinBCSpaceTimeElementBase * > Pressure_advection_diffusion_robin_element_pt
 
int Pinned_fp_pressure_eqn
 
doubleReSt_pt
 Pointer to global Reynolds number x Strouhal number (= Womersley) More...
 
bool ReynoldsStrouhal_is_stored_as_external_data
 
- 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
 

Detailed Description

template<unsigned DIM>
class oomph::QTaylorHoodSpaceTimeElement< DIM >

/////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// Taylor-Hood elements are Navier-Stokes elements with quadratic interpolation for velocities and positions and continuous linear pressure interpolation. They can be used within oomph-lib's block-preconditioning framework.

Constructor & Destructor Documentation

◆ QTaylorHoodSpaceTimeElement() [1/3]

Constructor, no internal data points.

2193  : QElement<DIM + 1, 3>(), SpaceTimeNavierStokesEquations<DIM>()
2194  {
2195  }

◆ QTaylorHoodSpaceTimeElement() [2/3]

Constructor, no internal data points.

2193  : QElement<DIM + 1, 3>(), SpaceTimeNavierStokesEquations<DIM>()
2194  {
2195  }

◆ ~QTaylorHoodSpaceTimeElement()

template<unsigned DIM>
oomph::QTaylorHoodSpaceTimeElement< DIM >::~QTaylorHoodSpaceTimeElement ( )
inline
2199  {
2200  // Delete the integral pointer
2201  delete this->integral_pt();
2202  } // End of ~QTaylorHoodSpaceTimeElement
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963

References oomph::FiniteElement::integral_pt().

◆ QTaylorHoodSpaceTimeElement() [3/3]

Constructor, no internal data points.

2149  : QElement<DIM + 1, 3>(), SpaceTimeNavierStokesEquations<DIM>()
2150  {
2151  }

Member Function Documentation

◆ build_fp_press_adv_diff_robin_bc_element() [1/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::build_fp_press_adv_diff_robin_bc_element ( const unsigned face_index)
inlinevirtual

Build FaceElements that apply the Robin boundary condition to the pressure advection diffusion problem required by Fp preconditioner

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

2279  {
2280  // Create a new Robic BC element and add it to the storage
2282  new FpPressureAdvDiffRobinBCSpaceTimeElement<
2283  QTaylorHoodSpaceTimeElement<DIM>>(this, face_index));
2284  } // End of build_fp_press_adv_diff_robin_bc_element
Vector< FpPressureAdvDiffRobinBCSpaceTimeElementBase * > Pressure_advection_diffusion_robin_element_pt
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:548

References oomph::SpaceTimeNavierStokesEquations< DIM >::Pressure_advection_diffusion_robin_element_pt.

◆ build_fp_press_adv_diff_robin_bc_element() [2/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::build_fp_press_adv_diff_robin_bc_element ( const unsigned face_index)
inlinevirtual

Build FaceElements that apply the Robin boundary condition to the pressure advection diffusion problem required by Fp preconditioner

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

2286  {
2287  // Create a new Robic BC element and add it to the storage
2289  new FpPressureAdvDiffRobinBCSpaceTimeElement<
2290  QTaylorHoodSpaceTimeElement<DIM>>(this, face_index));
2291  } // End of build_fp_press_adv_diff_robin_bc_element

References oomph::SpaceTimeNavierStokesEquations< DIM >::Pressure_advection_diffusion_robin_element_pt.

◆ build_fp_press_adv_diff_robin_bc_element() [3/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::build_fp_press_adv_diff_robin_bc_element ( const unsigned face_index)
inlinevirtual

Build FaceElements that apply the Robin boundary condition to the pressure advection diffusion problem required by Fp preconditioner

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2231  {
2232  // Create a new Robic BC element and add it to the storage
2234  new FpPressureAdvDiffRobinBCSpaceTimeElement<
2235  QTaylorHoodSpaceTimeElement<DIM>>(this, face_index));
2236  } // End of build_fp_press_adv_diff_robin_bc_element

References oomph::SpaceTimeNavierStokesEquations< DIM >::Pressure_advection_diffusion_robin_element_pt.

◆ dpshape_and_dptest_eulerian_nst() [1/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

Pressure shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dpshape_and_dptest_eulerian_nst() [2/6]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2717  {
2718  // Call the test functions and derivatives
2719  dptest_eulerian(s, ptest, dptestdx);
2720 
2721  // Call the shape functions and derivatives and the Jacobian of the mapping
2722  return this->dpshape_eulerian(s, ppsi, dppsidx);
2723  } // End of dpshape_and_dptest_eulerian_nst
double dptest_eulerian(const Vector< double > &s, Shape &ptest, DShape &dptestdx) const
double dpshape_eulerian(const Vector< double > &s, Shape &ppsi, DShape &dppsidx) const
RealScalar s
Definition: level1_cplx_impl.h:130

References s.

◆ dpshape_and_dptest_eulerian_nst() [3/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

Pressure shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dpshape_and_dptest_eulerian_nst() [4/6]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2734  {
2735  // Call the test functions and derivatives
2736  dptest_eulerian(s, ptest, dptestdx);
2737 
2738  // Call the shape functions and derivatives and the Jacobian of the mapping
2739  return this->dpshape_eulerian(s, ppsi, dppsidx);
2740  } // End of dpshape_and_dptest_eulerian_nst

References s.

◆ dpshape_and_dptest_eulerian_nst() [5/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

Pressure shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dpshape_and_dptest_eulerian_nst() [6/6]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dpshape_and_dptest_eulerian_nst ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2380  {
2381  // Local storage for the shape function (x-direction)
2382  double psi1[2];
2383 
2384  // Local storage for the shape function (y-direction)
2385  double psi2[2];
2386 
2387  // Local storage for the shape function (z-direction)
2388  double psi3[2];
2389 
2390  // Local storage for the shape function derivatives (x-direction)
2391  double dpsi1[2];
2392 
2393  // Local storage for the test function derivatives (y-direction)
2394  double dpsi2[2];
2395 
2396  // Local storage for the test function derivatives (z-direction)
2397  double dpsi3[2];
2398 
2399  // Call the OneDimensional Shape functions
2400  OneDimLagrange::shape<2>(s[0], psi1);
2401 
2402  // Call the OneDimensional Shape functions
2403  OneDimLagrange::shape<2>(s[1], psi2);
2404 
2405  // Call the OneDimensional Shape functions
2406  OneDimLagrange::shape<2>(s[2], psi3);
2407 
2408  // Call the OneDimensional Shape functions
2409  OneDimLagrange::dshape<2>(s[0], dpsi1);
2410 
2411  // Call the OneDimensional Shape functions
2412  OneDimLagrange::dshape<2>(s[1], dpsi2);
2413 
2414  // Call the OneDimensional Shape functions
2415  OneDimLagrange::dshape<2>(s[2], dpsi3);
2416 
2417  //--------------------------------------------------------------------
2418  // Now let's loop over the nodal points in the element with s1 being
2419  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2420  // "z" coordinate:
2421  //--------------------------------------------------------------------
2422  // Loop over the points in the z-direction
2423  for (unsigned i = 0; i < 2; i++)
2424  {
2425  // Loop over the points in the y-direction
2426  for (unsigned j = 0; j < 2; j++)
2427  {
2428  // Loop over the points in the x-direction
2429  for (unsigned k = 0; k < 2; k++)
2430  {
2431  // Multiply the three 1D functions together to get the 3D function
2432  ppsi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2433 
2434  // Multiply the appropriate shape and shape function derivatives
2435  // together
2436  dppsidx(4 * i + 2 * j + k, 0) = psi3[i] * psi2[j] * dpsi1[k];
2437 
2438  // Multiply the appropriate shape and shape function derivatives
2439  // together
2440  dppsidx(4 * i + 2 * j + k, 1) = psi3[i] * dpsi2[j] * psi1[k];
2441 
2442  // Multiply the appropriate shape and shape function derivatives
2443  // together
2444  dppsidx(4 * i + 2 * j + k, 2) = dpsi3[i] * psi2[j] * psi1[k];
2445  }
2446  } // for (unsigned j=0;j<2;j++)
2447  } // for (unsigned i=0;i<2;i++)
2448 
2449  // Allocate space for the shape functions
2450  Shape psi(27);
2451 
2452  // Allocate space for the local shape function derivatives
2453  DShape dpsi(27, 3);
2454 
2455  // Get the values of the shape functions and their local derivatives
2456  dshape_local(s, psi, dpsi);
2457 
2458  // Allocate memory for the inverse 3x3 jacobian
2459  DenseMatrix<double> inverse_jacobian(3);
2460 
2461  // Now calculate the inverse jacobian
2462  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2463 
2464  // Now set the values of the derivatives to be derivatives w.r.t. to
2465  // the Eulerian coordinates
2466  transform_derivatives(inverse_jacobian, dppsidx);
2467 
2468  // The test functions are equal to the shape functions
2469  ptest = ppsi;
2470 
2471  // The test function derivatives are equal to the shape function derivatives
2472  dptestdx = dppsidx;
2473 
2474  // Return the determinant of the jacobian
2475  return det;
2476  } // End of dpshape_and_dptest_eulerian_nst
int i
Definition: BiCGSTAB_step_by_step.cpp:9
virtual double local_to_eulerian_mapping(const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
Definition: elements.h:1508
virtual void transform_derivatives(const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
Definition: elements.cc:2833
virtual void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Definition: elements.h:1981
char char char int int * k
Definition: level2_impl.h:374
void dshape< 2 >(const double &s, double *DPsi)
Derivatives of 1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:616
void shape< 2 >(const double &s, double *Psi)
1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:608
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References oomph::OneDimLagrange::dshape< 2 >(), i, j, k, s, and oomph::OneDimLagrange::shape< 2 >().

◆ dpshape_eulerian() [1/4]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dpshape_eulerian ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx 
) const
inlineprotectedvirtual

Pressure shape functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dpshape_eulerian() [2/4]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dpshape_eulerian ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2511  {
2512  // Local storage for the shape function (x-direction)
2513  double psi1[2];
2514 
2515  // Local storage for the shape function (y-direction)
2516  double psi2[2];
2517 
2518  // Local storage for the shape function (t-direction)
2519  double psi3[3];
2520 
2521  // Local storage for the shape function derivatives (x-direction)
2522  double dpsi1[2];
2523 
2524  // Local storage for the test function derivatives (y-direction)
2525  double dpsi2[2];
2526 
2527  // Local storage for the test function derivatives (t-direction)
2528  double dpsi3[3];
2529 
2530  // Call the OneDimensional Shape functions
2531  OneDimLagrange::shape<2>(s[0], psi1);
2532 
2533  // Call the OneDimensional Shape functions
2534  OneDimLagrange::shape<2>(s[1], psi2);
2535 
2536  // Call the OneDimensional Shape functions
2537  OneDimLagrange::shape<3>(s[2], psi3);
2538 
2539  // Call the OneDimensional Shape functions
2540  OneDimLagrange::dshape<2>(s[0], dpsi1);
2541 
2542  // Call the OneDimensional Shape functions
2543  OneDimLagrange::dshape<2>(s[1], dpsi2);
2544 
2545  // Call the OneDimensional Shape functions
2546  OneDimLagrange::dshape<3>(s[2], dpsi3);
2547 
2548  //--------------------------------------------------------------------
2549  // Now let's loop over the nodal points in the element with s1 being
2550  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2551  // "z" coordinate:
2552  //--------------------------------------------------------------------
2553  // Loop over the points in the t-direction
2554  for (unsigned i = 0; i < 3; i++)
2555  {
2556  // Loop over the points in the y-direction
2557  for (unsigned j = 0; j < 2; j++)
2558  {
2559  // Loop over the points in the x-direction
2560  for (unsigned k = 0; k < 2; k++)
2561  {
2562  // Multiply the three 1D functions together to get the 3D function
2563  ppsi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2564 
2565  // Multiply the appropriate shape and shape function derivatives
2566  // together
2567  dppsidx(4 * i + 2 * j + k, 0) = psi3[i] * psi2[j] * dpsi1[k];
2568 
2569  // Multiply the appropriate shape and shape function derivatives
2570  // together
2571  dppsidx(4 * i + 2 * j + k, 1) = psi3[i] * dpsi2[j] * psi1[k];
2572 
2573  // Multiply the appropriate shape and shape function derivatives
2574  // together
2575  dppsidx(4 * i + 2 * j + k, 2) = dpsi3[i] * psi2[j] * psi1[k];
2576  }
2577  } // for (unsigned j=0;j<2;j++)
2578  } // for (unsigned i=0;i<3;i++)
2579 
2580  // Allocate space for the geometrical shape functions
2581  Shape psi(27);
2582 
2583  // Allocate space for the geometrical shape function derivatives
2584  DShape dpsi(27, 3);
2585 
2586  // Get the values of the shape functions and their derivatives
2587  dshape_local(s, psi, dpsi);
2588 
2589  // Allocate memory for the 3x3 inverse jacobian
2590  DenseMatrix<double> inverse_jacobian(3);
2591 
2592  // Now calculate the inverse jacobian
2593  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2594 
2595  // Now set the values of the derivatives to be derivatives w.r.t. to
2596  // the Eulerian coordinates
2597  transform_derivatives(inverse_jacobian, dppsidx);
2598 
2599  // Return the determinant of the jacobian
2600  return det;
2601  } // End of dpshape_eulerian
void dshape< 3 >(const double &s, double *DPsi)
Definition: shape.h:645
void shape< 3 >(const double &s, double *Psi)
1D shape functions specialised to quadratic order (3 Nodes)
Definition: shape.h:635

References oomph::OneDimLagrange::dshape< 2 >(), oomph::OneDimLagrange::dshape< 3 >(), i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), and oomph::OneDimLagrange::shape< 3 >().

◆ dpshape_eulerian() [3/4]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dpshape_eulerian ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx 
) const
inlineprotectedvirtual

Pressure shape functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dpshape_eulerian() [4/4]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dpshape_eulerian ( const Vector< double > &  s,
Shape ppsi,
DShape dppsidx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2526  {
2527  // Local storage for the shape function (x-direction)
2528  double psi1[2];
2529 
2530  // Local storage for the shape function (y-direction)
2531  double psi2[2];
2532 
2533  // Local storage for the shape function (z-direction)
2534  double psi3[2];
2535 
2536  // Local storage for the shape function derivatives (x-direction)
2537  double dpsi1[2];
2538 
2539  // Local storage for the test function derivatives (y-direction)
2540  double dpsi2[2];
2541 
2542  // Local storage for the test function derivatives (z-direction)
2543  double dpsi3[2];
2544 
2545  // Call the OneDimensional Shape functions
2546  OneDimLagrange::shape<2>(s[0], psi1);
2547 
2548  // Call the OneDimensional Shape functions
2549  OneDimLagrange::shape<2>(s[1], psi2);
2550 
2551  // Call the OneDimensional Shape functions
2552  OneDimLagrange::shape<2>(s[2], psi3);
2553 
2554  // Call the OneDimensional Shape functions
2555  OneDimLagrange::dshape<2>(s[0], dpsi1);
2556 
2557  // Call the OneDimensional Shape functions
2558  OneDimLagrange::dshape<2>(s[1], dpsi2);
2559 
2560  // Call the OneDimensional Shape functions
2561  OneDimLagrange::dshape<2>(s[2], dpsi3);
2562 
2563  //--------------------------------------------------------------------
2564  // Now let's loop over the nodal points in the element with s1 being
2565  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2566  // "z" coordinate:
2567  //--------------------------------------------------------------------
2568  // Loop over the points in the z-direction
2569  for (unsigned i = 0; i < 2; i++)
2570  {
2571  // Loop over the points in the y-direction
2572  for (unsigned j = 0; j < 2; j++)
2573  {
2574  // Loop over the points in the x-direction
2575  for (unsigned k = 0; k < 2; k++)
2576  {
2577  // Multiply the three 1D functions together to get the 3D function
2578  ppsi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2579 
2580  // Multiply the appropriate shape and shape function derivatives
2581  // together
2582  dppsidx(4 * i + 2 * j + k, 0) = psi3[i] * psi2[j] * dpsi1[k];
2583 
2584  // Multiply the appropriate shape and shape function derivatives
2585  // together
2586  dppsidx(4 * i + 2 * j + k, 1) = psi3[i] * dpsi2[j] * psi1[k];
2587 
2588  // Multiply the appropriate shape and shape function derivatives
2589  // together
2590  dppsidx(4 * i + 2 * j + k, 2) = dpsi3[i] * psi2[j] * psi1[k];
2591  }
2592  } // for (unsigned j=0;j<2;j++)
2593  } // for (unsigned i=0;i<2;i++)
2594 
2595  // Allocate space for the geometrical shape functions
2596  Shape psi(27);
2597 
2598  // Allocate space for the geometrical shape function derivatives
2599  DShape dpsi(27, 3);
2600 
2601  // Get the values of the shape functions and their derivatives
2602  dshape_local(s, psi, dpsi);
2603 
2604  // Allocate memory for the 3x3 inverse jacobian
2605  DenseMatrix<double> inverse_jacobian(3);
2606 
2607  // Now calculate the inverse jacobian
2608  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2609 
2610  // Now set the values of the derivatives to be derivatives w.r.t. to
2611  // the Eulerian coordinates
2612  transform_derivatives(inverse_jacobian, dppsidx);
2613 
2614  // Return the determinant of the jacobian
2615  return det;
2616  } // End of dpshape_eulerian

References oomph::OneDimLagrange::dshape< 2 >(), i, j, k, s, and oomph::OneDimLagrange::shape< 2 >().

◆ dptest_eulerian() [1/4]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dptest_eulerian ( const Vector< double > &  s,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

Pressure test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dptest_eulerian() [2/4]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dptest_eulerian ( const Vector< double > &  s,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2612  {
2613  // Local storage for the shape function (x-direction)
2614  double test1[2];
2615 
2616  // Local storage for the shape function (y-direction)
2617  double test2[2];
2618 
2619  // Local storage for the shape function (t-direction)
2620  double test3[3];
2621 
2622  // Local storage for the shape function derivatives (x-direction)
2623  double dtest1[2];
2624 
2625  // Local storage for the test function derivatives (y-direction)
2626  double dtest2[2];
2627 
2628  // Local storage for the test function derivatives (t-direction)
2629  double dtest3[3];
2630 
2631  // Call the OneDimensional Shape functions
2633 
2634  // Call the OneDimensional Shape functions
2636 
2637  // Call the OneDimensional Shape functions
2639 
2640  // Call the OneDimensional Shape functions
2641  OneDimLagrange::dshape<2>(s[0], dtest1);
2642 
2643  // Call the OneDimensional Shape functions
2644  OneDimLagrange::dshape<2>(s[1], dtest2);
2645 
2646  // Call the OneDimensional Shape functions
2648 
2649  //--------------------------------------------------------------------
2650  // Now let's loop over the nodal points in the element with s1 being
2651  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2652  // "z" coordinate:
2653  //--------------------------------------------------------------------
2654  // Loop over the points in the t-direction
2655  for (unsigned i = 0; i < 3; i++)
2656  {
2657  // Loop over the points in the y-direction
2658  for (unsigned j = 0; j < 2; j++)
2659  {
2660  // Loop over the points in the x-direction
2661  for (unsigned k = 0; k < 2; k++)
2662  {
2663  // Multiply the three 1D functions together to get the 3D function
2664  ptest[4 * i + 2 * j + k] = test3[i] * test2[j] * test1[k];
2665 
2666  // Multiply the appropriate shape and shape function derivatives
2667  // together
2668  dptestdx(4 * i + 2 * j + k, 0) = test3[i] * test2[j] * dtest1[k];
2669 
2670  // Multiply the appropriate shape and shape function derivatives
2671  // together
2672  dptestdx(4 * i + 2 * j + k, 1) = test3[i] * dtest2[j] * test1[k];
2673 
2674  // Multiply the appropriate shape and shape function derivatives
2675  // together
2676  dptestdx(4 * i + 2 * j + k, 2) = dtest3[i] * test2[j] * test1[k];
2677  }
2678  } // for (unsigned j=0;j<2;j++)
2679  } // for (unsigned i=0;i<3;i++)
2680 
2681  // Allocate space for the geometrical shape functions
2682  Shape psi(27);
2683 
2684  // Allocate space for the geometrical shape function derivatives
2685  DShape dpsi(27, 3);
2686 
2687  // Get the values of the shape functions and their derivatives
2688  dshape_local(s, psi, dpsi);
2689 
2690  // Allocate memory for the 3x3 inverse jacobian
2691  DenseMatrix<double> inverse_jacobian(3);
2692 
2693  // Now calculate the inverse jacobian
2694  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2695 
2696  // Now set the values of the derivatives to be derivatives w.r.t. to
2697  // the Eulerian coordinates
2698  transform_derivatives(inverse_jacobian, dptestdx);
2699 
2700  // Return the determinant of the jacobian
2701  return det;
2702  } // End of dptest_eulerian
void test2()
Definition: QuaternionUnitTest.cpp:65
void test1()
Definition: QuaternionUnitTest.cpp:9
void dshape< 3 >(const double &s, double *DPsi)
Definition: shape.h:820
void shape< 3 >(const double &s, double *Psi)
1D shape functions specialised to quadratic order (3 Nodes)
Definition: shape.h:810

References oomph::OneDimLagrange::dshape< 2 >(), oomph::OneDimLagrange::dshape< 3 >(), i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), oomph::OneDimLagrange::shape< 3 >(), test1(), and test2().

◆ dptest_eulerian() [3/4]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dptest_eulerian ( const Vector< double > &  s,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

Pressure test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry). Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dptest_eulerian() [4/4]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dptest_eulerian ( const Vector< double > &  s,
Shape ptest,
DShape dptestdx 
) const
inlineprotectedvirtual

2D (in space): Pressure shape and test functions and derivs w.r.t. to Eulerian coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2627  {
2628  // Local storage for the shape function (x-direction)
2629  double test1[2];
2630 
2631  // Local storage for the shape function (y-direction)
2632  double test2[2];
2633 
2634  // Local storage for the shape function (z-direction)
2635  double test3[2];
2636 
2637  // Local storage for the shape function derivatives (x-direction)
2638  double dtest1[2];
2639 
2640  // Local storage for the test function derivatives (y-direction)
2641  double dtest2[2];
2642 
2643  // Local storage for the test function derivatives (z-direction)
2644  double dtest3[2];
2645 
2646  // Call the OneDimensional Shape functions
2648 
2649  // Call the OneDimensional Shape functions
2651 
2652  // Call the OneDimensional Shape functions
2653  // OneDimLagrange::shape<2>(s[2],test3);
2655 
2656  // Call the OneDimensional Shape functions
2657  OneDimLagrange::dshape<2>(s[0], dtest1);
2658 
2659  // Call the OneDimensional Shape functions
2660  OneDimLagrange::dshape<2>(s[1], dtest2);
2661 
2662  // Call the OneDimensional Shape functions
2663  // OneDimLagrange::dshape<2>(s[2],dtest3);
2665 
2666  //--------------------------------------------------------------------
2667  // Now let's loop over the nodal points in the element with s1 being
2668  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2669  // "z" coordinate:
2670  //--------------------------------------------------------------------
2671  // Loop over the points in the z-direction
2672  for (unsigned i = 0; i < 2; i++)
2673  {
2674  // Loop over the points in the y-direction
2675  for (unsigned j = 0; j < 2; j++)
2676  {
2677  // Loop over the points in the x-direction
2678  for (unsigned k = 0; k < 2; k++)
2679  {
2680  // Multiply the three 1D functions together to get the 3D function
2681  ptest[4 * i + 2 * j + k] = test3[i] * test2[j] * test1[k];
2682 
2683  // Multiply the appropriate shape and shape function derivatives
2684  // together
2685  dptestdx(4 * i + 2 * j + k, 0) = test3[i] * test2[j] * dtest1[k];
2686 
2687  // Multiply the appropriate shape and shape function derivatives
2688  // together
2689  dptestdx(4 * i + 2 * j + k, 1) = test3[i] * dtest2[j] * test1[k];
2690 
2691  // Multiply the appropriate shape and shape function derivatives
2692  // together
2693  dptestdx(4 * i + 2 * j + k, 2) = dtest3[i] * test2[j] * test1[k];
2694  }
2695  } // for (unsigned j=0;j<2;j++)
2696  } // for (unsigned i=0;i<2;i++)
2697 
2698  // Allocate space for the geometrical shape functions
2699  Shape psi(27);
2700 
2701  // Allocate space for the geometrical shape function derivatives
2702  DShape dpsi(27, 3);
2703 
2704  // Get the values of the shape functions and their derivatives
2705  dshape_local(s, psi, dpsi);
2706 
2707  // Allocate memory for the 3x3 inverse jacobian
2708  DenseMatrix<double> inverse_jacobian(3);
2709 
2710  // Now calculate the inverse jacobian
2711  const double det = local_to_eulerian_mapping(dpsi, inverse_jacobian);
2712 
2713  // Now set the values of the derivatives to be derivatives w.r.t. to
2714  // the Eulerian coordinates
2715  transform_derivatives(inverse_jacobian, dptestdx);
2716 
2717  // Return the determinant of the jacobian
2718  return det;
2719  } // End of dptest_eulerian
void dshape< 2 >(const double &s, double *DPsi)
Derivatives of 1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:791
void shape< 2 >(const double &s, double *Psi)
1D shape functions specialised to linear order (2 Nodes)
Definition: shape.h:783

References oomph::OneDimLagrange::dshape< 2 >(), i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), test1(), and test2().

◆ dshape_and_dtest_eulerian_at_knot_nst() [1/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of mapping (J). Also compute derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_at_knot_nst() [2/9]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

2D (in space): Define the shape functions (psi) and test functions (test) and their derivatives w.r.t. global coordinates (dpsidx and dtestdx) and return Jacobian of mapping (J). Additionally compute the derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Galerkin: Test functions = shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2746  {
2747  // Call the geometrical shape functions and derivatives
2748  const double J = this->dshape_eulerian_at_knot(
2749  ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
2750 
2751  // DRAIG: Delete!
2752  throw OomphLibError("Hasn't been implemented properly yet!",
2755 
2756  // Loop over the test functions and derivatives
2757  for (unsigned i = 0; i < 27; i++)
2758  {
2759  // The test functions are the same as the shape functions
2760  test[i] = psi[i];
2761 
2762  // Loop over the spatial derivatives
2763  for (unsigned k = 0; k < 3; k++)
2764  {
2765  // Set the test function derivatives to the shape function derivatives
2766  dtestdx(i, k) = dpsidx(i, k);
2767 
2768  // Loop over the dimensions
2769  for (unsigned p = 0; p < 3; p++)
2770  {
2771  // Loop over test functions
2772  for (unsigned q = 0; q < 27; q++)
2773  {
2774  // Set the test function derivatives to the shape function
2775  // derivatives
2776  d_dtestdx_dX(p, q, i, k) = d_dpsidx_dX(p, q, i, k);
2777  }
2778  } // for (unsigned p=0;p<3;p++)
2779  } // for (unsigned k=0;k<3;k++)
2780  } // for (unsigned i=0;i<27;i++)
2781 
2782  // Return the jacobian
2783  return J;
2784  } // End of dshape_and_dtest_eulerian_at_knot_nst
JacobiRotation< float > J
Definition: Jacobi_makeJacobi.cpp:3
float * p
Definition: Tutorial_Map_using.cpp:9
virtual double dshape_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidx) const
Definition: elements.cc:3325
EIGEN_DEVICE_FUNC const Scalar & q
Definition: SpecialFunctionsImpl.h:2019
Definition: indexed_view.cpp:20
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References i, J, k, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, and Eigen::numext::q.

◆ dshape_and_dtest_eulerian_at_knot_nst() [3/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of mapping (J). Also compute derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_at_knot_nst() [4/9]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

2D (in space): Define the shape functions (psi) and test functions (test) and their derivatives w.r.t. global coordinates (dpsidx and dtestdx) and return Jacobian of mapping (J). Additionally compute the derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Galerkin: Test functions = shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2763  {
2764  // Call the geometrical shape functions and derivatives
2765  const double J = this->dshape_eulerian_at_knot(
2766  ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
2767 
2768  // DRAIG: Delete!
2769  throw OomphLibError("Hasn't been implemented properly yet!",
2772 
2773  // Loop over the test functions and derivatives
2774  for (unsigned i = 0; i < 27; i++)
2775  {
2776  // The test functions are the same as the shape functions
2777  test[i] = psi[i];
2778 
2779  // Loop over the spatial derivatives
2780  for (unsigned k = 0; k < 3; k++)
2781  {
2782  // Set the test function derivatives to the shape function derivatives
2783  dtestdx(i, k) = dpsidx(i, k);
2784 
2785  // Loop over the dimensions
2786  for (unsigned p = 0; p < 3; p++)
2787  {
2788  // Loop over test functions
2789  for (unsigned q = 0; q < 27; q++)
2790  {
2791  // Set the test function derivatives to the shape function
2792  // derivatives
2793  d_dtestdx_dX(p, q, i, k) = d_dpsidx_dX(p, q, i, k);
2794  }
2795  } // for (unsigned p=0;p<3;p++)
2796  } // for (unsigned k=0;k<3;k++)
2797  } // for (unsigned i=0;i<27;i++)
2798 
2799  // Return the jacobian
2800  return J;
2801  } // End of dshape_and_dtest_eulerian_at_knot_nst

References i, J, k, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, p, and Eigen::numext::q.

◆ dshape_and_dtest_eulerian_at_knot_nst() [5/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of mapping (J). Also compute derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_at_knot_nst() [6/9]

double oomph::QTaylorHoodSpaceTimeElement< 2 >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
RankFourTensor< double > &  d_dpsidx_dX,
Shape test,
DShape dtestdx,
RankFourTensor< double > &  d_dtestdx_dX,
DenseMatrix< double > &  djacobian_dX 
) const
inlineprotectedvirtual

2D (in space): Define the shape functions (psi) and test functions (test) and their derivatives w.r.t. global coordinates (dpsidx and dtestdx) and return Jacobian of mapping (J). Additionally compute the derivatives of dpsidx, dtestdx and J w.r.t. nodal coordinates.

Galerkin: Test functions = shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2498  {
2499  // Call the geometrical shape functions and derivatives
2500  const double J = this->dshape_eulerian_at_knot(
2501  ipt, psi, dpsidx, djacobian_dX, d_dpsidx_dX);
2502 
2503  // Loop over the test functions and derivatives
2504  for (unsigned i = 0; i < 27; i++)
2505  {
2506  // The test functions are the same as the shape functions
2507  test[i] = psi[i];
2508 
2509  // Loop over the spatial derivatives
2510  for (unsigned k = 0; k < 3; k++)
2511  {
2512  // Set the test function derivatives to the shape function derivatives
2513  dtestdx(i, k) = dpsidx(i, k);
2514 
2515  // Loop over the dimensions
2516  for (unsigned p = 0; p < 3; p++)
2517  {
2518  // Loop over test functions
2519  for (unsigned q = 0; q < 27; q++)
2520  {
2521  // Set the test function derivatives to the shape function
2522  // derivatives
2523  d_dtestdx_dX(p, q, i, k) = d_dpsidx_dX(p, q, i, k);
2524  }
2525  } // for (unsigned p=0;p<3;p++)
2526  } // for (unsigned k=0;k<3;k++)
2527  } // for (unsigned i=0;i<27;i++)
2528 
2529  // Return the jacobian
2530  return J;
2531  } // End of dshape_and_dtest_eulerian_at_knot_nst

References i, J, k, p, and Eigen::numext::q.

◆ dshape_and_dtest_eulerian_at_knot_nst() [7/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Derivatives of the shape functions and test functions w.r.t to global (Eulerian) coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2484  {
2485  // Calculate the element dimension
2486  const unsigned el_dim = DIM + 1;
2487 
2488  // Storage for the local coordinates of the integration point
2489  Vector<double> s(el_dim, 0.0);
2490 
2491  // Set the local coordinate
2492  for (unsigned i = 0; i < el_dim; i++)
2493  {
2494  // Calculate the i-th local coordinate at the ipt-th knot point
2495  s[i] = this->integral_pt()->knot(ipt, i);
2496  }
2497 
2498  // Return the Jacobian of the geometrical shape functions and derivatives
2499  return dshape_and_dtest_eulerian_nst(s, psi, dpsidx, test, dtestdx);
2500  } // End of dshape_and_dtest_eulerian_at_knot_nst
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.
double dshape_and_dtest_eulerian_nst(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2369
#define DIM
Definition: linearised_navier_stokes_elements.h:44
unsigned el_dim
dimension
Definition: overloaded_cartesian_element_body.h:30

References DIM, el_dim, i, and s.

◆ dshape_and_dtest_eulerian_at_knot_nst() [8/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_at_knot_nst() [9/9]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_at_knot_nst ( const unsigned ipt,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_nst() [1/3]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_nst ( const Vector< double > &  s,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Derivatives of the shape functions and test functions w.r.t to global (Eulerian) coordinates. Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2375  {
2376  //--------------------------
2377  // Call the shape functions:
2378  //--------------------------
2379  // Find the element dimension
2380  const unsigned el_dim = this->dim();
2381 
2382  // Get the values of the shape functions and their local derivatives,
2383  // temporarily stored in dpsi
2384  this->dshape_local(s, psi, dpsidx);
2385 
2386  // Allocate memory for the inverse jacobian
2387  DenseMatrix<double> inverse_jacobian(el_dim);
2388 
2389  // Now calculate the inverse jacobian
2390  const double det =
2391  this->local_to_eulerian_mapping(dpsidx, inverse_jacobian);
2392 
2393  // Now set the values of the derivatives to be dpsidx
2394  this->transform_derivatives(inverse_jacobian, dpsidx);
2395 
2396  //-------------------------
2397  // Call the test functions:
2398  //-------------------------
2399  // Make sure we're using 3D elements
2400  if (el_dim != 3)
2401  {
2402  // Create an output stream
2403  std::ostringstream error_message_stream;
2404 
2405  // Create an error message
2406  error_message_stream << "Need 3D space-time elements for this to work!"
2407  << std::endl;
2408 
2409  // Throw the error message
2410  throw OomphLibError(error_message_stream.str(),
2413  }
2414 
2415  //--------start_of_dshape_local--------------------------------------
2416  // Local storage
2417  double test_values[3][3];
2418  double dtest_values[3][3];
2419 
2420  // Index of the total shape function
2421  unsigned index = 0;
2422 
2423  // Call the 1D shape functions and derivatives
2424  OneDimLagrange::shape<3>(s[0], test_values[0]);
2425  OneDimLagrange::shape<3>(s[1], test_values[1]);
2426  OneDimLagrange::dshape<3>(s[0], dtest_values[0]);
2427  OneDimLagrange::dshape<3>(s[1], dtest_values[1]);
2428 
2429  // Set the time discretisation
2430  OneDimDiscontinuousGalerkin::shape<3>(s[2], test_values[2]);
2431  OneDimDiscontinuousGalerkin::dshape<3>(s[2], dtest_values[2]);
2432 
2433  // Loop over the nodes in the third local coordinate direction
2434  for (unsigned k = 0; k < 3; k++)
2435  {
2436  // Loop over the nodes in the second local coordinate direction
2437  for (unsigned j = 0; j < 3; j++)
2438  {
2439  // Loop over the nodes in the first local coordinate direction
2440  for (unsigned i = 0; i < 3; i++)
2441  {
2442  // Calculate dtest/ds_0
2443  dtestdx(index, 0) =
2444  dtest_values[0][i] * test_values[1][j] * test_values[2][k];
2445 
2446  // Calculate dtest/ds_1
2447  dtestdx(index, 1) =
2448  test_values[0][i] * dtest_values[1][j] * test_values[2][k];
2449 
2450  // Calculate dtest/ds_2
2451  dtestdx(index, 2) =
2452  test_values[0][i] * test_values[1][j] * dtest_values[2][k];
2453 
2454  // Calculate the index-th entry of test
2455  test[index] =
2456  test_values[0][i] * test_values[1][j] * test_values[2][k];
2457 
2458  // Increment the index
2459  index++;
2460  }
2461  } // for (unsigned j=0;j<3;j++)
2462  } // for (unsigned k=0;k<3;k++)
2463  //--------end_of_dshape_local----------------------------------------
2464 
2465  // Transform derivatives from dtest/ds to dtest/dx
2466  this->transform_derivatives(inverse_jacobian, dtestdx);
2467 
2468  // Return the determinant value
2469  return det;
2470  } // End of dshape_and_dtest_eulerian_nst
unsigned dim() const
Definition: elements.h:2611

References oomph::OneDimLagrange::dshape< 3 >(), oomph::OneDimDiscontinuousGalerkin::dshape< 3 >(), el_dim, i, j, k, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, s, oomph::OneDimLagrange::shape< 3 >(), and oomph::OneDimDiscontinuousGalerkin::shape< 3 >().

◆ dshape_and_dtest_eulerian_nst() [2/3]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_nst ( const Vector< double > &  s,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ dshape_and_dtest_eulerian_nst() [3/3]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::dshape_and_dtest_eulerian_nst ( const Vector< double > &  s,
Shape psi,
DShape dpsidx,
Shape test,
DShape dtestdx 
) const
inlineprotectedvirtual

Velocity shape and test functions and their derivs w.r.t. to global coords at local coordinate s (taken from geometry) Return Jacobian of mapping between local and global coordinates.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ fix_pressure() [1/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure ( const unsigned p_dof,
const double p_value 
)
inlinevirtual

Pin p_dof-th pressure dof and set it to value specified by p_value.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2265  {
2266  // Pin the pressure dof
2267  this->node_pt(Pconv[p_dof])->pin(this->p_nodal_index_nst());
2268 
2269  // Now set its value
2270  this->node_pt(Pconv[p_dof])
2271  ->set_value(this->p_nodal_index_nst(), p_value);
2272  } // End of fix_pressure
void pin(const unsigned &i)
Pin the i-th stored variable.
Definition: nodes.h:385
void set_value(const unsigned &i, const double &value_)
Definition: nodes.h:271
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
virtual int p_nodal_index_nst() const
Set the value at which the pressure is stored in the nodes.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2221
static const unsigned Pconv[]
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2128

References oomph::FiniteElement::node_pt(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), oomph::Data::pin(), and oomph::Data::set_value().

◆ fix_pressure() [2/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure ( const unsigned p_dof,
const double p_value 
)
inlinevirtual

Pin p_dof-th pressure dof and set it to value specified by p_value.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2272  {
2273  // Pin the pressure dof
2274  this->node_pt(Pconv[p_dof])->pin(this->p_nodal_index_nst());
2275 
2276  // Now set its value
2277  this->node_pt(Pconv[p_dof])
2278  ->set_value(this->p_nodal_index_nst(), p_value);
2279  } // End of fix_pressure

References oomph::FiniteElement::node_pt(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), oomph::Data::pin(), and oomph::Data::set_value().

◆ fix_pressure() [3/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::fix_pressure ( const unsigned p_dof,
const double p_value 
)
inlinevirtual

Pin p_dof-th pressure dof and set it to value specified by p_value.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2217  {
2218  // Pin the pressure dof
2219  this->node_pt(Pconv[p_dof])->pin(this->p_nodal_index_nst());
2220 
2221  // Now set its value
2222  this->node_pt(Pconv[p_dof])
2223  ->set_value(this->p_nodal_index_nst(), p_value);
2224  } // End of fix_pressure

References oomph::FiniteElement::node_pt(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), oomph::Data::pin(), and oomph::Data::set_value().

◆ get_dof_numbers_for_unknowns()

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::get_dof_numbers_for_unknowns ( std::list< std::pair< unsigned long, unsigned >> &  dof_lookup_list) const
virtual

Create a list of pairs for all unknowns in this element, so that the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "DOF type" that this unknown is associated with. (Function can obviously only be called if the equation numbering scheme has been set up.) Velocity=0; Pressure=1

Create a list of pairs for all unknowns in this element, so the first entry in each pair contains the global equation number of the unknown, while the second one contains the number of the "DOF type" that this unknown is associated with. (Function can obviously only be called if the equation numbering scheme has been set up.)

Reimplemented from oomph::GeneralisedElement.

3070  {
3071  // Get the number of nodes in this element
3072  unsigned n_node = this->nnode();
3073 
3074  // Temporary pair (used to store dof lookup prior to being added to list)
3075  std::pair<unsigned, unsigned> dof_lookup;
3076 
3077  // Loop over the nodes
3078  for (unsigned n = 0; n < n_node; n++)
3079  {
3080  // Find the number of values at this node
3081  unsigned n_value = this->required_nvalue(n);
3082 
3083  // Loop over these values
3084  for (unsigned i_value = 0; i_value < n_value; i_value++)
3085  {
3086  // Determine the local eqn number associated with this value
3087  int local_eqn_number = this->nodal_local_eqn(n, i_value);
3088 
3089  // Ignore pinned values - far away degrees of freedom resulting
3090  // from hanging nodes can be ignored since these are be dealt
3091  // with by the element containing their master nodes
3092  if (local_eqn_number >= 0)
3093  {
3094  // Store dof lookup in temporary pair; the global equation number
3095  // is the first entry in pair
3096  dof_lookup.first = this->eqn_number(local_eqn_number);
3097 
3098  // Set dof numbers; dof number is the second entry in pair
3099  // DRAIG: Uncomment whichever one you want to use. Setting
3100  // all dof numbers to 0 means you don't distinguish between
3101  // velocity and pressure component; just aggregate everything.
3102  // In contrast, setting the dof number to i_value means the
3103  // dofs associated with the first velocity component, second
3104  // velocity component and the pressure are all separated
3105  // dof_lookup.second=i_value;
3106  dof_lookup.second = 0;
3107 
3108  // Add to list
3109  dof_lookup_list.push_front(dof_lookup);
3110  }
3111  } // for (unsigned v=0;v<nv;v++)
3112  } // for (unsigned n=0;n<n_node;n++)
3113  } // End of get_dof_numbers_for_unknowns
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Definition: elements.h:1432
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
unsigned long eqn_number(const unsigned &ieqn_local) const
Definition: elements.h:704
int local_eqn_number(const unsigned long &ieqn_global) const
Definition: elements.h:726
virtual unsigned required_nvalue(const unsigned &n) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2199

References n.

◆ identify_load_data() [1/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_load_data ( std::set< std::pair< Data *, unsigned >> &  paired_load_data)
virtual

Add to the set paired_load_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all values (pressures, velocities) that affect the load computed in the get_load(...) function.

Implements oomph::FSIFluidElement.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

3000  {
3001  // Allocate storage for the indices of the velocity components
3002  unsigned u_index[DIM];
3003 
3004  // Loop over the velocity components
3005  for (unsigned i = 0; i < DIM; i++)
3006  {
3007  // Get the index at which the i-th velocity component is stored
3008  u_index[i] = this->u_index_nst(i);
3009  }
3010 
3011  // Get the number of nodes in this element
3012  unsigned n_node = this->nnode();
3013 
3014  // Loop over the nodes
3015  for (unsigned n = 0; n < n_node; n++)
3016  {
3017  // Loop over the velocity components and add pointer to their data
3018  // and indices to the vectors
3019  for (unsigned i = 0; i < DIM; i++)
3020  {
3021  // Add in the node and equation number pair
3022  paired_load_data.insert(std::make_pair(this->node_pt(n), u_index[i]));
3023  }
3024  } // for (unsigned n=0;n<n_node;n++)
3025 
3026  // Identify the pressure data
3027  this->identify_pressure_data(paired_load_data);
3028  } // End of identify_load_data
void identify_pressure_data(std::set< std::pair< Data *, unsigned >> &paired_pressure_data)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.cc:3040
virtual unsigned u_index_nst(const unsigned &i) const
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1102

References DIM, i, and n.

◆ identify_load_data() [2/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_load_data ( std::set< std::pair< Data *, unsigned >> &  paired_load_data)
virtual

Add to the set paired_load_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all values (pressures, velocities) that affect the load computed in the get_load(...) function.

Implements oomph::FSIFluidElement.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

◆ identify_load_data() [3/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_load_data ( std::set< std::pair< Data *, unsigned >> &  paired_load_data)
virtual

Add to the set paired_load_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all values (pressures, velocities) that affect the load computed in the get_load(...) function.

Implements oomph::FSIFluidElement.

◆ identify_pressure_data() [1/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_pressure_data ( std::set< std::pair< Data *, unsigned >> &  paired_pressure_data)
virtual

Add to the set paired_pressure_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all pressure values that affect the load computed in the get_load(...) function.

Add to the set paired_pressure_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for pressure values that affect the load computed in the get_load(...) function.,

Implements oomph::FSIFluidElement.

3042  {
3043  // Find the index at which the pressure is stored
3044  unsigned p_index = static_cast<unsigned>(this->p_nodal_index_nst());
3045 
3046  // Get the number of pressure degrees of freedom
3047  unsigned n_pres = npres_nst();
3048 
3049  // Loop over the pressure data
3050  for (unsigned l = 0; l < n_pres; l++)
3051  {
3052  // The DIM-th entry in each nodal data is the pressure, which affects
3053  // the traction
3054  paired_pressure_data.insert(
3055  std::make_pair(this->node_pt(Pconv[l]), p_index));
3056  }
3057  } // End of identify_pressure_data
unsigned npres_nst() const
Return number of pressure values.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2255

◆ identify_pressure_data() [2/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_pressure_data ( std::set< std::pair< Data *, unsigned >> &  paired_pressure_data)
virtual

Add to the set paired_pressure_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all pressure values that affect the load computed in the get_load(...) function.

Implements oomph::FSIFluidElement.

◆ identify_pressure_data() [3/3]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::identify_pressure_data ( std::set< std::pair< Data *, unsigned >> &  paired_pressure_data)
virtual

Add to the set paired_pressure_data pairs containing

  • the pointer to a Data object and
  • the index of the value in that Data object

for all pressure values that affect the load computed in the get_load(...) function.

Implements oomph::FSIFluidElement.

◆ Initial_Nvalue() [1/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Initial_Nvalue
private

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

◆ Initial_Nvalue() [2/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Initial_Nvalue
private

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

◆ Initial_Nvalue() [3/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Initial_Nvalue
private

//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////

◆ ndof_types()

template<unsigned DIM>
unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::ndof_types ( ) const
inlinevirtual

Returns the number of "DOF types" that degrees of freedom in this element are sub-divided into: Velocity and pressure.

Reimplemented from oomph::GeneralisedElement.

2345  {
2346  // There are DIM velocity components and 1 pressure component
2347  return DIM + 1;
2348  } // End of ndof_types

References DIM.

◆ npres_nst() [1/3]

template<unsigned DIM>
unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::npres_nst ( ) const
inlinevirtual

Return number of pressure values.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2256  {
2257  // There are 3*(2^{DIM}) pressure dofs where DIM is the spatial dimension
2258  // (remembering that these are space-time elements)
2259  return 3.0 * static_cast<unsigned>(pow(2.0, static_cast<int>(DIM)));
2260  } // End of npres_nst
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625

References DIM, and Eigen::bfloat16_impl::pow().

Referenced by oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::identify_load_data(), and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pin_elemental_redundant_nodal_pressure_dofs().

◆ npres_nst() [2/3]

template<unsigned DIM>
unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::npres_nst ( ) const
inlinevirtual

Return number of pressure values.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2263  {
2264  // There are 2^{DIM+1} pressure dofs where DIM is the spatial dimension
2265  // (rememebering that these are space-time elements)
2266  return static_cast<unsigned>(pow(2.0, static_cast<int>(DIM + 1)));
2267  } // End of npres_nst

References DIM, and Eigen::bfloat16_impl::pow().

◆ npres_nst() [3/3]

template<unsigned DIM>
unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::npres_nst ( ) const
inlinevirtual

Return number of pressure values.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2208  {
2209  // There are 2^{DIM+1} pressure dofs where DIM is the spatial dimension
2210  // (rememebering that these are space-time elements)
2211  return static_cast<unsigned>(pow(2.0, static_cast<int>(DIM + 1)));
2212  } // End of npres_nst

References DIM, and Eigen::bfloat16_impl::pow().

◆ output() [1/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2328  {
2329  // Call the base class implementation
2331  } // End of output
void output(std::ostream &outfile)
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:1472

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [2/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2335  {
2336  // Call the base class implementation
2338  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [3/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2280  {
2281  // Call the base class implementation
2283  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [4/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2336  {
2337  // Call the base class implementation
2339  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [5/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2343  {
2344  // Call the base class implementation
2346  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [6/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( FILE *  file_pt,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2288  {
2289  // Call the base class implementation
2291  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [7/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2312  {
2313  // Call the base class implementation
2315  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [8/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2319  {
2320  // Call the base class implementation
2322  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [9/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2264  {
2265  // Call the base class implementation
2267  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [10/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2320  {
2321  // Call the base class implementation
2323  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [11/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2327  {
2328  // Call the base class implementation
2330  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ output() [12/12]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::output ( std::ostream &  outfile,
const unsigned nplot 
)
inlinevirtual

Redirect output to NavierStokesEquations output.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2272  {
2273  // Call the base class implementation
2275  } // End of output

References oomph::SpaceTimeNavierStokesEquations< DIM >::output().

◆ p_local_eqn() [1/3]

template<unsigned DIM>
int oomph::QTaylorHoodSpaceTimeElement< DIM >::p_local_eqn ( const unsigned n) const
inlinevirtual

Return the local equation numbers for the pressure values.

Implements oomph::TemplateFreeSpaceTimeNavierStokesEquationsBase.

2230  {
2231  // Get the local equation number associated with the n-th pressure dof
2232  return this->nodal_local_eqn(Pconv[n], p_nodal_index_nst());
2233  } // End of p_local_eqn

References n, oomph::FiniteElement::nodal_local_eqn(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_local_eqn() [2/3]

template<unsigned DIM>
int oomph::QTaylorHoodSpaceTimeElement< DIM >::p_local_eqn ( const unsigned n) const
inlinevirtual

Return the local equation numbers for the pressure values.

Implements oomph::TemplateFreeSpaceTimeNavierStokesEquationsBase.

2237  {
2238  // Get the local equation number associated with the n-th pressure dof
2239  return this->nodal_local_eqn(Pconv[n], p_nodal_index_nst());
2240  } // End of p_local_eqn

References n, oomph::FiniteElement::nodal_local_eqn(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_local_eqn() [3/3]

template<unsigned DIM>
int oomph::QTaylorHoodSpaceTimeElement< DIM >::p_local_eqn ( const unsigned n) const
inlinevirtual

Return the local equation numbers for the pressure values.

Implements oomph::TemplateFreeSpaceTimeNavierStokesEquationsBase.

2182  {
2183  // Get the local equation number associated with the n-th pressure dof
2184  return this->nodal_local_eqn(Pconv[n], p_nodal_index_nst());
2185  } // End of p_local_eqn

References n, oomph::FiniteElement::nodal_local_eqn(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_nodal_index_nst() [1/3]

◆ p_nodal_index_nst() [2/3]

template<unsigned DIM>
virtual int oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst ( ) const
inlinevirtual

Set the value at which the pressure is stored in the nodes.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2229  {
2230  // The pressure is stored straight after the velocity components
2231  return static_cast<int>(DIM);
2232  } // End of p_nodal_index_nst

References DIM.

◆ p_nodal_index_nst() [3/3]

template<unsigned DIM>
virtual int oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst ( ) const
inlinevirtual

Set the value at which the pressure is stored in the nodes.

Reimplemented from oomph::SpaceTimeNavierStokesEquations< DIM >.

2174  {
2175  // The pressure is stored straight after the velocity components
2176  return static_cast<int>(DIM);
2177  } // End of p_nodal_index_nst

References DIM.

◆ p_nst() [1/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned n_p) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2239  {
2240  // Get the nodal value associated with the n_p-th pressure dof
2241  return this->nodal_value(Pconv[n_p], this->p_nodal_index_nst());
2242  } // End of p_nst
double nodal_value(const unsigned &n, const unsigned &i) const
Definition: elements.h:2593

References oomph::FiniteElement::nodal_value(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_nst() [2/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned n_p) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2246  {
2247  // Get the nodal value associated with the n_p-th pressure dof
2248  return this->nodal_value(Pconv[n_p], this->p_nodal_index_nst());
2249  } // End of p_nst

References oomph::FiniteElement::nodal_value(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_nst() [3/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned n_p) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2191  {
2192  // Get the nodal value associated with the n_p-th pressure dof
2193  return this->nodal_value(Pconv[n_p], this->p_nodal_index_nst());
2194  } // End of p_nst

References oomph::FiniteElement::nodal_value(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst().

◆ p_nst() [4/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned t,
const unsigned n_p 
) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2248  {
2249  // Return the pressure value of the n_p-th pressure dof at time-level t
2250  return this->nodal_value(t, Pconv[n_p], this->p_nodal_index_nst());
2251  } // End of p_nst

References oomph::FiniteElement::nodal_value(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::Pconv.

◆ p_nst() [5/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned t,
const unsigned n_p 
) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2255  {
2256  // Return the pressure value of the n_p-th pressure dof at time-level t
2257  return this->nodal_value(t, Pconv[n_p], this->p_nodal_index_nst());
2258  } // End of p_nst

References oomph::FiniteElement::nodal_value(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::Pconv.

◆ p_nst() [6/6]

template<unsigned DIM>
double oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst ( const unsigned t,
const unsigned n_p 
) const
inlinevirtual

Access function for the pressure values at local pressure node n_p (const version)

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2200  {
2201  // Return the pressure value of the n_p-th pressure dof at time-level t
2202  return this->nodal_value(t, Pconv[n_p], this->p_nodal_index_nst());
2203  } // End of p_nst

References oomph::FiniteElement::nodal_value(), oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nodal_index_nst(), and oomph::QTaylorHoodSpaceTimeElement< DIM >::Pconv.

◆ Pconv() [1/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Pconv
protected

◆ Pconv() [2/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Pconv
protected

◆ Pconv() [3/3]

const unsigned oomph::QTaylorHoodSpaceTimeElement< 2 >::Pconv
protected

◆ pshape_nst() [1/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

◆ pshape_nst() [2/9]

void oomph::QTaylorHoodSpaceTimeElement< 2 >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

2D (in space): Pressure shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2793  {
2794  // Local storage for the shape function value (in the x-direction)
2795  double psi1[2];
2796 
2797  // Local storage for the shape function value (in the y-direction)
2798  double psi2[2];
2799 
2800  // Local storage for the shape function value (in the z-direction)
2801  double psi3[3];
2802 
2803  // Call the OneDimensional Shape functions
2804  OneDimLagrange::shape<2>(s[0], psi1);
2805 
2806  // Call the OneDimensional Shape functions
2807  OneDimLagrange::shape<2>(s[1], psi2);
2808 
2809  // Call the OneDimensional Shape functions
2810  OneDimLagrange::shape<3>(s[2], psi3);
2811 
2812  //--------------------------------------------------------------------
2813  // Now let's loop over the nodal points in the element with s1 being
2814  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2815  // "z" coordinate:
2816  //--------------------------------------------------------------------
2817  // Loop over the points in the t-direction
2818  for (unsigned i = 0; i < 3; i++)
2819  {
2820  // Loop over the points in the y-direction
2821  for (unsigned j = 0; j < 2; j++)
2822  {
2823  // Loop over the points in the x-direction
2824  for (unsigned k = 0; k < 2; k++)
2825  {
2826  // Multiply the three 1D functions together to get the 3D function
2827  psi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2828  }
2829  } // for (unsigned j=0;j<2;j++)
2830  } // for (unsigned i=0;i<3;i++)
2831  } // End of pshape_nst

References i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), and oomph::OneDimLagrange::shape< 3 >().

◆ pshape_nst() [3/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

Pressure shape functions at local coordinate s.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ pshape_nst() [4/9]

void oomph::QTaylorHoodSpaceTimeElement< 2 >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

2D (in space): Pressure shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2810  {
2811  // Local storage for the shape function value (in the x-direction)
2812  double psi1[2];
2813 
2814  // Local storage for the shape function value (in the y-direction)
2815  double psi2[2];
2816 
2817  // Local storage for the shape function value (in the z-direction)
2818  double psi3[2];
2819 
2820  // Call the OneDimensional Shape functions
2821  OneDimLagrange::shape<2>(s[0], psi1);
2822 
2823  // Call the OneDimensional Shape functions
2824  OneDimLagrange::shape<2>(s[1], psi2);
2825 
2826  // Call the OneDimensional Shape functions
2827  OneDimLagrange::shape<2>(s[2], psi3);
2828 
2829  //--------------------------------------------------------------------
2830  // Now let's loop over the nodal points in the element with s1 being
2831  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2832  // "z" coordinate:
2833  //--------------------------------------------------------------------
2834  // Loop over the points in the z-direction
2835  for (unsigned i = 0; i < 2; i++)
2836  {
2837  // Loop over the points in the y-direction
2838  for (unsigned j = 0; j < 2; j++)
2839  {
2840  // Loop over the points in the x-direction
2841  for (unsigned k = 0; k < 2; k++)
2842  {
2843  // Multiply the three 1D functions together to get the 3D function
2844  psi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2845  }
2846  } // for (unsigned j=0;j<2;j++)
2847  } // for (unsigned i=0;i<2;i++)
2848  } // End of pshape_nst

References i, j, k, s, and oomph::OneDimLagrange::shape< 2 >().

◆ pshape_nst() [5/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

Pressure shape functions at local coordinate s.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ pshape_nst() [6/9]

void oomph::QTaylorHoodSpaceTimeElement< 2 >::pshape_nst ( const Vector< double > &  s,
Shape psi 
) const
inlinevirtual

2D (in space): Pressure shape functions

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2540  {
2541  // Local storage for the shape function value (in the x-direction)
2542  double psi1[2];
2543 
2544  // Local storage for the shape function value (in the y-direction)
2545  double psi2[2];
2546 
2547  // Local storage for the shape function value (in the z-direction)
2548  double psi3[2];
2549 
2550  // Call the OneDimensional Shape functions
2551  OneDimLagrange::shape<2>(s[0], psi1);
2552 
2553  // Call the OneDimensional Shape functions
2554  OneDimLagrange::shape<2>(s[1], psi2);
2555 
2556  // Call the OneDimensional Shape functions
2557  OneDimLagrange::shape<2>(s[2], psi3);
2558 
2559  //--------------------------------------------------------------------
2560  // Now let's loop over the nodal points in the element with s1 being
2561  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2562  // "z" coordinate:
2563  //--------------------------------------------------------------------
2564  // Loop over the points in the z-direction
2565  for (unsigned i = 0; i < 2; i++)
2566  {
2567  // Loop over the points in the y-direction
2568  for (unsigned j = 0; j < 2; j++)
2569  {
2570  // Loop over the points in the x-direction
2571  for (unsigned k = 0; k < 2; k++)
2572  {
2573  // Multiply the three 1D functions together to get the 3D function
2574  psi[4 * i + 2 * j + k] = psi3[i] * psi2[j] * psi1[k];
2575  }
2576  } // for (unsigned j=0;j<2;j++)
2577  } // for (unsigned i=0;i<2;i++)
2578  } // End of pshape_nst

References i, j, k, s, and oomph::OneDimLagrange::shape< 2 >().

◆ pshape_nst() [7/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi,
Shape test 
) const
inlinevirtual

Pressure shape and test functions at local coordinte s.

Pressure shape and test functions.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

2887  {
2888  // Call the pressure shape functions
2889  pshape_nst(s, psi);
2890 
2891  // Call the pressure test functions
2892  ptest_nst(s, test);
2893  } // End of pshape_nst
void pshape_nst(const Vector< double > &s, Shape &psi) const
Pressure shape functions at local coordinate s.
void ptest_nst(const Vector< double > &s, Shape &psi) const
Pressure test functions at local coordinate s.

References s.

◆ pshape_nst() [8/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi,
Shape test 
) const
inlinevirtual

Pressure shape and test functions at local coordinte s.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ pshape_nst() [9/9]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::pshape_nst ( const Vector< double > &  s,
Shape psi,
Shape test 
) const
inlinevirtual

Pressure shape and test functions at local coordinte s.

Implements oomph::SpaceTimeNavierStokesEquations< DIM >.

◆ ptest_nst() [1/4]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::ptest_nst ( const Vector< double > &  s,
Shape psi 
) const
inline

Pressure test functions at local coordinate s.

◆ ptest_nst() [2/4]

template<unsigned DIM>
void oomph::QTaylorHoodSpaceTimeElement< DIM >::ptest_nst ( const Vector< double > &  s,
Shape psi 
) const
inline

Pressure test functions at local coordinate s.

◆ ptest_nst() [3/4]

void oomph::QTaylorHoodSpaceTimeElement< 2 >::ptest_nst ( const Vector< double > &  s,
Shape test 
) const
inline

2D (in space): Pressure shape functions

2840  {
2841  // Local storage for the shape function value (in the x-direction)
2842  double test1[2];
2843 
2844  // Local storage for the shape function value (in the y-direction)
2845  double test2[2];
2846 
2847  // Local storage for the shape function value (in the z-direction)
2848  double test3[3];
2849 
2850  // Call the OneDimensional Shape functions
2852 
2853  // Call the OneDimensional Shape functions
2855 
2856  // Call the OneDimensional Shape functions
2858 
2859  //--------------------------------------------------------------------
2860  // Now let's loop over the nodal points in the element with s1 being
2861  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2862  // "z" coordinate:
2863  //--------------------------------------------------------------------
2864  // Loop over the points in the z-direction
2865  for (unsigned i = 0; i < 3; i++)
2866  {
2867  // Loop over the points in the y-direction
2868  for (unsigned j = 0; j < 2; j++)
2869  {
2870  // Loop over the points in the x-direction
2871  for (unsigned k = 0; k < 2; k++)
2872  {
2873  // Multiply the three 1D functions together to get the 3D function
2874  test[4 * i + 2 * j + k] = test3[i] * test2[j] * test1[k];
2875  }
2876  } // for (unsigned j=0;j<2;j++)
2877  } // for (unsigned i=0;i<3;i++)
2878  } // End of ptest_nst

References i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), oomph::OneDimLagrange::shape< 3 >(), test1(), and test2().

◆ ptest_nst() [4/4]

void oomph::QTaylorHoodSpaceTimeElement< 2 >::ptest_nst ( const Vector< double > &  s,
Shape test 
) const
inline

2D (in space): Pressure shape functions

2857  {
2858  // Local storage for the shape function value (in the x-direction)
2859  double test1[2];
2860 
2861  // Local storage for the shape function value (in the y-direction)
2862  double test2[2];
2863 
2864  // Local storage for the shape function value (in the z-direction)
2865  double test3[2];
2866 
2867  // Call the OneDimensional Shape functions
2869 
2870  // Call the OneDimensional Shape functions
2872 
2873  // Call the OneDimensional Shape functions
2875 
2876  //--------------------------------------------------------------------
2877  // Now let's loop over the nodal points in the element with s1 being
2878  // the "x" coordinate, s2 being the "y" coordinate and s3 being the
2879  // "z" coordinate:
2880  //--------------------------------------------------------------------
2881  // Loop over the points in the z-direction
2882  for (unsigned i = 0; i < 2; i++)
2883  {
2884  // Loop over the points in the y-direction
2885  for (unsigned j = 0; j < 2; j++)
2886  {
2887  // Loop over the points in the x-direction
2888  for (unsigned k = 0; k < 2; k++)
2889  {
2890  // Multiply the three 1D functions together to get the 3D function
2891  test[4 * i + 2 * j + k] = test3[i] * test2[j] * test1[k];
2892  }
2893  } // for (unsigned j=0;j<2;j++)
2894  } // for (unsigned i=0;i<2;i++)
2895  } // End of ptest_nst

References i, j, k, s, oomph::OneDimLagrange::shape< 2 >(), test1(), and test2().

◆ required_nvalue() [1/3]

template<unsigned DIM>
virtual unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::required_nvalue ( const unsigned n) const
inlinevirtual

Number of values (pinned or dofs) required at node n. Can be overwritten for hanging node version

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

2200  {
2201  // Return the appropriate entry from Initial_Nvalue
2202  return Initial_Nvalue[n];
2203  } // End of required_nvalue
static const unsigned Initial_Nvalue[]
Static array of ints to hold number of variables at node.
Definition: discontinuous_galerkin_equal_order_pressure_spacetime_navier_stokes_elements.h:2123

References oomph::QTaylorHoodSpaceTimeElement< DIM >::Initial_Nvalue, and n.

◆ required_nvalue() [2/3]

template<unsigned DIM>
virtual unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::required_nvalue ( const unsigned n) const
inlinevirtual

Number of values (pinned or dofs) required at node n. Can be overwritten for hanging node version

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

2207  {
2208  // Return the appropriate entry from Initial_Nvalue
2209  return Initial_Nvalue[n];
2210  } // End of required_nvalue

References n.

◆ required_nvalue() [3/3]

template<unsigned DIM>
virtual unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::required_nvalue ( const unsigned n) const
inlinevirtual

Number of values (pinned or dofs) required at node n. Can be overwritten for hanging node version

Reimplemented from oomph::FiniteElement.

Reimplemented in oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >, and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >.

2156  {
2157  // Return the appropriate entry from Initial_Nvalue
2158  return Initial_Nvalue[n];
2159  } // End of required_nvalue

References oomph::QTaylorHoodSpaceTimeElement< DIM >::Initial_Nvalue, and n.

Member Data Documentation

◆ Initial_Nvalue

template<unsigned DIM>
static const unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::Initial_Nvalue
staticprivate

Static array of ints to hold number of variables at node.

Referenced by oomph::QTaylorHoodSpaceTimeElement< DIM >::required_nvalue().

◆ Pconv

template<unsigned DIM>
static const unsigned oomph::QTaylorHoodSpaceTimeElement< DIM >::Pconv
staticprotected

Static array of ints to hold conversion from pressure node numbers to actual node numbers

Referenced by oomph::QTaylorHoodSpaceTimeElement< DIM >::p_nst(), and oomph::RefineableQTaylorHoodSpaceTimeElement< DIM >::pressure_node_pt().


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