31 #ifndef OOMPH_AXISYM_DISPL_BASED_FOEPPLVONKARMAN_ELEMENTS_HEADER 32 #define OOMPH_AXISYM_DISPL_BASED_FOEPPLVONKARMAN_ELEMENTS_HEADER 37 #include <oomph-lib-config.h> 41 #include "../generic/nodes.h" 42 #include "../generic/Qelements.h" 43 #include "../generic/oomph_utilities.h" 83 const double &
nu()
const 88 std::stringstream error_stream;
90 <<
"Nu has not yet been set!" << std::endl;
93 OOMPH_CURRENT_FUNCTION,
94 OOMPH_EXCEPTION_LOCATION);
124 const unsigned n_plot=5;
130 void output(std::ostream &outfile,
const unsigned &n_plot);
135 const unsigned n_plot=5;
141 void output(FILE* file_pt,
const unsigned &n_plot);
144 void output_fct(std::ostream &outfile,
const unsigned &n_plot,
150 virtual void output_fct(std::ostream &outfile,
const unsigned &n_plot,
156 "There is no time-dependent output_fct() for Foeppl von Karman" 158 OOMPH_CURRENT_FUNCTION,
159 OOMPH_EXCEPTION_LOCATION);
165 double& error,
double& norm);
171 const double& time,
double& error,
double& norm)
174 "There is no time-dependent compute_error() for Foeppl von Karman" 176 OOMPH_CURRENT_FUNCTION,
177 OOMPH_EXCEPTION_LOCATION);
194 double& pressure)
const 204 (*Pressure_fct_pt)(r,pressure);
213 const unsigned n_node =
nnode();
229 for(
unsigned l=0;l<n_node;l++)
231 gradient[0] += this->
nodal_value(l,w_nodal_index)*dpsidr(l,0);
248 const unsigned n_node =
nnode();
260 double interpolated_w = 0.0;
263 for(
unsigned l=0;l<n_node;l++)
265 interpolated_w += this->
nodal_value(l,w_nodal_index)*psi[l];
268 return(interpolated_w);
276 const unsigned n_node =
nnode();
288 double interpolated_u = 0.0;
291 for(
unsigned l=0;l<n_node;l++)
293 interpolated_u += this->
nodal_value(l,u_nodal_index)*psi[l];
296 return(interpolated_u);
303 double& sigma_phi_phi)
const;
326 unsigned total_fvk_nodal_indices = 3;
329 unsigned n_node =
nnode();
332 for(
unsigned index=first_fvk_nodal_index+2;
333 index<first_fvk_nodal_index+total_fvk_nodal_indices;
337 for(
unsigned inod=0;inod<n_node;inod++)
362 (
const unsigned &ipt,
401 template <
unsigned NNODE_1D>
436 {
return Initial_Nvalue;}
446 void output(std::ostream &outfile,
const unsigned &n_plot)
456 void output(FILE* file_pt,
const unsigned &n_plot)
461 void output_fct(std::ostream &outfile,
const unsigned &n_plot,
469 void output_fct(std::ostream &outfile,
const unsigned &n_plot,
473 (outfile,n_plot,time,exact_soln_pt);}
487 (
const unsigned& ipt,
506 template<
unsigned NNODE_1D>
534 template<
unsigned NNODE_1D>
void output(FILE *file_pt)
C_style output with default number of plot points.
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
bool interpolated_stress(const Vector< double > &s, double &sigma_r_r, double &sigma_phi_phi) const
Compute in-plane stresses. Return boolean to indicate success (false if attempt to evaluate stresses ...
AxisymFoepplvonKarmanEquations()
Constructor (must initialise the Pressure_fct_pt). Also set physical parameters to their default valu...
virtual double dshape_eulerian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidx) const
Return the geometric shape functions and also first derivatives w.r.t. global coordinates at the ipt-...
double *& nu_pt()
Pointer to Poisson's ratio.
virtual void get_pressure_fvk(const unsigned &ipt, const double &r, double &pressure) const
Get pressure term at (Eulerian) position r. This function is virtual to allow overloading in multi-ph...
AxisymFoepplvonKarmanElement()
Constructor: Call constructors for QElement and AxisymFoepplvonKarmanEquations.
A general Finite Element class.
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Function pointer for function that computes Vector-valued time-dependent function as ...
AxisymFoepplvonKarmanPressureFctPt Pressure_fct_pt
Pointer to pressure function:
void operator=(const AxisymFoepplvonKarmanElement< NNODE_1D > &)
Broken assignment operator.
void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Output function for a time-dependent exact solution. r,w_exact at n_plot plot points (Calls the stead...
void operator=(const AxisymFoepplvonKarmanEquations &)
Broken assignment operator.
void pin(const unsigned &i)
Pin the i-th stored variable.
static const unsigned Initial_Nvalue
Static int that holds the number of variables at nodes: always the same.
void output(std::ostream &outfile)
Output with default number of plot points.
void output(FILE *file_pt)
C-style output function: r,w.
AxisymFoepplvonKarmanPressureFctPt pressure_fct_pt() const
Access function: Pointer to pressure function. Const version.
unsigned self_test()
Self-test: Return 0 for OK.
virtual double dshape_and_dtest_eulerian_axisym_fvk(const Vector< double > &s, Shape &psi, DShape &dpsidr, Shape &test, DShape &dtestdr) const =0
Shape/test functions and derivs w.r.t. to global coords at local coord. s; return Jacobian of mapping...
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Function pointer for function that computes vector-valued steady "exact solution" as ...
double interpolated_u_fvk(const Vector< double > &s) const
Return FE representation of radial displacement.
virtual unsigned nodal_index_fvk(const unsigned &i=0) const
Return the index at which the i-th unknown value is stored. The default value, i, is appropriate for ...
double dshape_eulerian(const Vector< double > &s, Shape &psi, DShape &dpsidx) const
Compute the geometric shape functions and also first derivatives w.r.t. global coordinates at local c...
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function: r,w at n_plot plot points.
double dshape_and_dtest_eulerian_axisym_fvk(const Vector< double > &s, Shape &psi, DShape &dpsidr, Shape &test, DShape &dtestdr) const
Shape, test functions & derivs. w.r.t. to global coords. Return Jacobian.
virtual void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Output exact soln: r,w_exact at n_plot plot points (dummy time-dependent version to keep intel compil...
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
Dummy, time dependent error checker.
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output function for an exact solution: r,w_exact at n_plot plot points.
virtual double dshape_and_dtest_eulerian_at_knot_axisym_fvk(const unsigned &ipt, Shape &psi, DShape &dpsidr, Shape &test, DShape &dtestdr) const =0
Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of ...
double nodal_value(const unsigned &n, const unsigned &i) const
Return the i-th value stored at local node n. Produces suitably interpolated values for hanging nodes...
double * Eta_pt
Pointer to FvK parameter.
void(* AxisymFoepplvonKarmanPressureFctPt)(const double &r, double &f)
Function pointer to pressure function fct(r,f(r)) – r is a Vector!
unsigned required_nvalue(const unsigned &n) const
Required # of `values' (pinned or dofs) at node n.
void output(std::ostream &outfile, const unsigned &n_plot)
Output function: r,w,sigma_r_r,sigma_phi_phi at n_plot plot points.
const double & nu() const
Poisson's ratio.
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
static double Default_Physical_Constant_Value
Default value for physical constants.
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Get error against and norm of exact solution.
double *& eta_pt()
Pointer to FvK parameter.
double dshape_and_dtest_eulerian_at_knot_axisym_fvk(const unsigned &ipt, Shape &psi, DShape &dpsidr, Shape &test, DShape &dtestdr) const
Shape, test functions & derivs. w.r.t. to global coords. at integration point ipt. Return Jacobian.
bool Linear_bending_model
Flag which stores whether we are using a linear, pure bending model instead of the full non-linear Fo...
double interpolated_w_fvk(const Vector< double > &s) const
Return FE representation of transverse displacement.
void get_gradient_of_deflection(const Vector< double > &s, Vector< double > &gradient) const
Get gradient of deflection: gradient[i] = dw/dr_i */.
AxisymFoepplvonKarmanEquations(const AxisymFoepplvonKarmanEquations &dummy)
Broken copy constructor.
void use_linear_bending_model()
Sets a flag to signify that we are solving the linear, pure bending equations, and pin all the nodal ...
void output(std::ostream &outfile)
Output function: r,w,sigma_r_r,sigma_phi_phi.
unsigned nnode() const
Return the number of nodes.
virtual void shape(const Vector< double > &s, Shape &psi) const =0
Calculate the geometric shape functions at local coordinate s. This function must be overloaded for e...
double * Nu_pt
Pointer to Poisson's ratio.
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output exact soln: r,w_exact at n_plot plot points.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Fill in the residuals with this element's contribution.
AxisymFoepplvonKarmanPressureFctPt & pressure_fct_pt()
Access function: Pointer to pressure function.
const double & eta() const
FvK parameter.