27#ifndef OOMPH_FOEPPLVONKARMAN_DISPLACEMENT_ELEMENTS_HEADER
28#define OOMPH_FOEPPLVONKARMAN_DISPLACEMENT_ELEMENTS_HEADER
32#include <oomph-lib-config.h>
91 const double&
nu()
const
132 const unsigned n_plot = 5;
143 const unsigned n_plot = 5;
166 "There is no time-dependent output_fct() for Foeppl von Karman"
188 "There is no time-dependent compute_error() for Foeppl von Karman"
224 double& pressure)
const
234 (*Pressure_fct_pt)(x, pressure);
251 (*Traction_fct_pt)(x, traction);
278 for (
unsigned j = 0;
j < 2;
j++)
287 for (
unsigned j = 0;
j < 2;
j++)
302 const unsigned& index)
const
323 for (
unsigned j = 0;
j < 2;
j++)
332 for (
unsigned j = 0;
j < 2;
j++)
355 const double _nu =
nu();
367 sigma(0, 1) = sigma(1, 0) =
e_xy / (1.0 +
_nu);
416 for (
unsigned j = 0;
j < 2;
j++)
462 for (
unsigned i = 0;
i <
ndof;
i++)
531 for (
unsigned j = 0;
j < 2;
j++)
557 double pressure = 0.0;
575 for (
unsigned k = 0;
k < 2;
k++)
585 for (
unsigned alpha = 0; alpha < 2; alpha++)
588 for (
unsigned beta = 0; beta < 2; beta++)
607 for (
unsigned k = 0;
k < 2;
k++)
627 for (
unsigned beta = 0; beta < 2; beta++)
643 for (
unsigned beta = 0; beta < 2; beta++)
659 unsigned index = 0)
const
770 template<
class FVK_ELEMENT>
786 <<
"Foeppl von Karman elements only store four fields so fld must be"
787 <<
"0 to 3 rather than " <<
fld << std::endl;
798 for (
unsigned j = 0;
j <
nnod;
j++)
823 <<
"Foeppl von Karman elements only store four fields so fld must be"
824 <<
"0 to 3 rather than " <<
fld << std::endl;
851 <<
"Foeppl von Karman elements only store four fields so fld must be"
852 <<
"0 to 3 rather than " <<
fld << std::endl;
878 <<
"Foeppl von Karman elements only store four fields so fld must be"
879 <<
"0 to 3 rather than " <<
fld << std::endl;
914 <<
"Foeppl von Karman elements only store four fields so fld must be"
915 <<
"0 to 3 rather than " <<
fld << std::endl;
920 return this->
nnode();
932 <<
"Foeppl von Karman elements only store four fields so fld must be"
933 <<
"0 to 3 rather than " <<
fld << std::endl;
947 template<
class ELEMENT>
961 template<
class ELEMENT>
A Class for the derivatives of shape functions The class design is essentially the same as Shape,...
void pin(const unsigned &i)
Pin the i-th stored variable.
unsigned ntstorage() const
Return total number of doubles stored per value to record time history of each value (one for steady ...
A class for all isoparametric elements that solve the Foeppl von Karman equations.
double *& nu_pt()
Pointer to Poisson's ratio.
bool Linear_bending_model
Flag which stores whether we are using a linear, pure bending model instead of the full non-linear Fo...
void compute_error(std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
Get error against and norm of exact solution.
void use_linear_bending_model()
Sets a flag to signify that we are solving the linear, pure bending equations, and pin all the nodal ...
DisplacementBasedFoepplvonKarmanEquations(const DisplacementBasedFoepplvonKarmanEquations &dummy)=delete
Broken copy constructor.
const double & eta() const
Eta.
unsigned self_test()
Self-test: Return 0 for OK.
void output_fct(std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
Output exact soln: x,y,w_exact at n_plot^DIM plot points.
void get_stress_and_strain_for_output(const Vector< double > &s, DenseMatrix< double > &sigma, DenseMatrix< double > &strain)
double * Nu_pt
Pointer to global Poisson's ratio.
FoepplvonKarmanTractionFctPt & traction_fct_pt()
Access function: Pointer to in-plane traction function.
FoepplvonKarmanTractionFctPt traction_fct_pt() const
Access function: Pointer to in-plane traction function. Const version.
virtual void output_fct(std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
Output exact soln: x,y,w_exact at n_plot^DIM plot points (dummy time-dependent version to keep intel ...
DisplacementBasedFoepplvonKarmanEquations()
Constructor (must initialise the Pressure_fct_pt and the Traction_fct_pt. Also set physical parameter...
FoepplvonKarmanPressureFctPt Pressure_fct_pt
Pointer to pressure function:
void output(std::ostream &outfile)
Output with default number of plot points.
void get_gradient_of_field(const Vector< double > &s, Vector< double > &gradient, const unsigned &index) const
Get gradient of field: gradient[i] = d[.]/dx_i,.
FoepplvonKarmanPressureFctPt pressure_fct_pt() const
Access function: Pointer to pressure function. Const version.
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 ...
virtual double dshape_and_dtest_eulerian_fvk(const Vector< double > &s, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Shape/test functions and derivs w.r.t. to global coords at local coord. s; return Jacobian of mapping...
virtual double dshape_and_dtest_eulerian_at_knot_fvk(const unsigned &ipt, Shape &psi, DShape &dpsidx, Shape &test, DShape &dtestdx) const =0
Shape/test functions and derivs w.r.t. to global coords at integration point ipt; return Jacobian of ...
void operator=(const DisplacementBasedFoepplvonKarmanEquations &)=delete
Broken assignment operator.
void get_gradient_of_deflection(const Vector< double > &s, Vector< double > &gradient) const
Get gradient of deflection: gradient[i] = dw/dx_i.
void fill_in_contribution_to_jacobian_and_mass_matrix(Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
hierher dummy
void(* FoepplvonKarmanPressureFctPt)(const Vector< double > &x, double &f)
Function pointer to pressure function fct(x,f(x)) – x is a Vector!
double *& eta_pt()
Pointer to eta.
const double & nu() const
Poisson's ratio.
void compute_error(std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
Dummy, time dependent error checker.
double interpolated_w_fvk(const Vector< double > &s, unsigned index=0) const
Return FE representation of function value w_fvk(s) at local coordinate s (by default - if index > 0,...
void(* FoepplvonKarmanTractionFctPt)(const Vector< double > &x, Vector< double > &f)
Function pointer to traction function fct(x,f(x)) – x is a Vector!
FoepplvonKarmanPressureFctPt & pressure_fct_pt()
Access function: Pointer to pressure function.
double * Eta_pt
Pointer to global eta.
void output(FILE *file_pt)
C_style output with default number of plot points.
void get_sigma(DenseMatrix< double > &sigma, const Vector< double > &interpolated_dwdx, const Vector< double > &interpolated_duxdx, const Vector< double > &interpolated_duydx)
Get the in-plane stress (sigma) as a fct of the pre=computed displcement derivatives.
virtual void get_pressure_fvk(const unsigned &ipt, const Vector< double > &x, double &pressure) const
Get pressure term at (Eulerian) position x. This function is virtual to allow overloading in multi-ph...
static double Default_Nu_Value
Default value for Poisson's ratio.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Fill in the residuals with this element's contribution.
FoepplvonKarmanTractionFctPt Traction_fct_pt
Pointer to traction function:
static double Default_Physical_Constant_Value
Default value for physical constants.
virtual void get_traction_fvk(Vector< double > &x, Vector< double > &traction) const
Get in-plane traction term at (Eulerian) position x.
FaceGeometry class definition: This policy class is used to allow construction of face elements that ...
A general Finite Element class.
void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Add the elemental contribution to the jacobian matrix. and the residuals vector. Note that this funct...
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
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...
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...
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
int nodal_local_eqn(const unsigned &n, const unsigned &i) const
Return the local equation number corresponding to the i-th value at the n-th local node.
unsigned dim() const
Return the spatial dimension of the element, i.e. the number of local coordinates required to paramet...
unsigned nnode() const
Return the number of nodes.
void(* SteadyExactSolutionFctPt)(const Vector< double > &, Vector< double > &)
Function pointer for function that computes vector-valued steady "exact solution" as .
double nodal_position(const unsigned &n, const unsigned &i) const
Return the i-th coordinate at local node n. If the node is hanging, the appropriate interpolation is ...
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...
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
void(* UnsteadyExactSolutionFctPt)(const double &, const Vector< double > &, Vector< double > &)
Function pointer for function that computes Vector-valued time-dependent function as .
unsigned ndof() const
Return the number of equations/dofs in the element.
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
TimeStepper *& position_time_stepper_pt()
Return a pointer to the position timestepper.
An OomphLibError object which should be thrown when an run-time error is encountered....
Foeppl von Karman upgraded to become projectable.
double jacobian_and_shape_of_field(const unsigned &fld, const Vector< double > &s, Shape &psi)
Return Jacobian of mapping and shape functions of field fld at local coordinate s.
int local_equation(const unsigned &fld, const unsigned &j)
Return local equation number of field fld of node j.
unsigned nfields_for_projection()
Number of fields to be projected: Just two.
unsigned nhistory_values_for_coordinate_projection()
Number of positional history values (Note: count includes current value!)
unsigned nhistory_values_for_projection(const unsigned &fld)
Number of history values to be stored for fld-th field. (Note: count includes current value!...
double get_field(const unsigned &t, const unsigned &fld, const Vector< double > &s)
Return interpolated field fld at local coordinate s, at time level t (t=0: present; t>0: history valu...
Vector< std::pair< Data *, unsigned > > data_values_of_field(const unsigned &fld)
Specify the values associated with field fld. The information is returned in a vector of pairs which ...
unsigned nvalue_of_field(const unsigned &fld)
Return number of values in field fld: One per node.
Wrapper class for projectable elements. Adds "projectability" to the underlying ELEMENT.
A Class for shape functions. In simple cases, the shape functions have only one index that can be tho...
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
unsigned ntstorage() const
Return the number of doubles required to represent history (one for steady)
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).