27 #ifndef OOMPH_KIRCHHOFF_LOVE_BEAM_ELEMENTS_HEADER
28 #define OOMPH_KIRCHHOFF_LOVE_BEAM_ELEMENTS_HEADER
32 #include <oomph-lib-config.h>
36 #include "../generic/hermite_elements.h"
37 #include "../generic/geom_objects.h"
38 #include "../generic/fsi.h"
39 #include "../generic/block_preconditioner.h"
215 const double&
h()
const
299 void get_energy(
double& pot_en,
double& kin_en);
303 void get_energy(
double& stretch,
double& bend,
double& kin_en);
324 void output(std::ostream& outfile);
327 void output(std::ostream& outfile,
const unsigned& n_plot);
332 std::ostream& outfile,
333 const unsigned& n_plot)
const;
336 void output(FILE* file_pt);
339 void output(FILE* file_pt,
const unsigned& n_plot);
343 void output(
const unsigned&
t, FILE* file_pt,
const unsigned& n_plot)
const;
428 for (
unsigned i = 0;
i < 2;
i++)
430 load[
i] += sign * fsi_load[
i];
457 const bool& use_coordinate_as_initial_guess =
false);
474 std::list<std::pair<unsigned long, unsigned>>& dof_lookup_list)
const;
526 "ClampedSlidingHermiteBeamBoundaryConditionElement ",
527 OOMPH_CURRENT_FUNCTION,
528 OOMPH_EXCEPTION_LOCATION);
571 void output(std::ostream& outfile,
const unsigned& n_plot)
586 void output(FILE* file_pt,
const unsigned& n_plot)
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
void output(FILE *file_pt, const unsigned &n_plot)
C-style output function – forward to broken version in FiniteElement until somebody decides what exac...
Vector< double > Vector_to_symmetry_line
Vector to some point on the symmetry line along which the end of the beam is sliding.
void set_symmetry_line(const Vector< double > &vector_to_symmetry_line, const Vector< double > &normal_to_symmetry_line)
Broken assignment operator.
void output(std::ostream &outfile, const unsigned &n_plot)
Output function – forward to broken version in FiniteElement until somebody decides what exactly they...
ClampedSlidingHermiteBeamBoundaryConditionElement(const ClampedSlidingHermiteBeamBoundaryConditionElement &dummy)=delete
Broken copy constructor.
void output(FILE *file_pt)
C-style output function – forward to broken version in FiniteElement until somebody decides what exac...
void output(std::ostream &outfile)
Output function – forward to broken version in FiniteElement until somebody decides what exactly they...
Vector< double > Normal_to_symmetry_line
Normal vector to the symmetry line along which the end of the beam is sliding.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Fill in the element's contribution to its residual vector.
ClampedSlidingHermiteBeamBoundaryConditionElement()
Broken empty constructor.
void fill_in_jacobian_from_external_interaction_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Calculate the contributions to the jacobian from all external interaction degrees of freedom (geometr...
Hermite Kirchhoff Love beam "upgraded" to a FSIWallElement (and thus, by inheritance,...
void dposition_dlagrangian_at_local_coordinate(const Vector< double > &s, DenseMatrix< double > &drdxi) const
Derivative of position vector w.r.t. the SolidFiniteElement's Lagrangian coordinates; evaluated at cu...
FSIHermiteBeamElement()
Constructor: Create beam element as FSIWallElement (and thus, by inheritance, a GeomObject)....
unsigned ndof_types() const
The number of "DOF types" that degrees of freedom in this element are sub-divided into: Just the soli...
void set_normal_pointing_into_fluid()
Set the normal computed by KirchhoffLoveBeamEquations::get_normal(...) to point into the fluid.
~FSIHermiteBeamElement()
Destructor: empty.
virtual void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Get the Jacobian and residuals. Wrapper to generic FSI version; that catches the case when we replace...
void set_normal_pointing_out_of_fluid()
Set the normal computed by KirchhoffLoveBeamEquations::get_normal(...) to point out of the fluid.
void get_dof_numbers_for_unknowns(std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
Create a list of pairs for all unknowns in this element, so that the first entry in each pair contain...
void locate_zeta(const Vector< double > &zeta, GeomObject *&geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
Find the local coordinate s in this element that corresponds to the global "intrinsic" coordinate (h...
void load_vector(const unsigned &intpt, const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
Get the load vector: Pass number of the integration point, Lagr. coordinate, Eulerian coordinate and ...
bool Normal_points_into_fluid
////////////////////////////////////////////////////////////////////////// //////////////////////////...
void setup_fsi_wall_element(const unsigned &nlagr_solid, const unsigned &ndim_fluid)
Setup: Assign storage – pass the Eulerian dimension of the "adjacent" fluid elements and the number o...
void fluid_load_vector(const unsigned &intpt, const Vector< double > &N, Vector< double > &load)
Get FE Jacobian by systematic finite differencing w.r.t. nodal positition Data, internal and external...
int & face_index()
Index of the face (a number that uniquely identifies the face in the element)
FaceGeometry()
Constructor [this was only required explicitly from gcc 4.5.2 onwards...].
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
A general Finite Element class.
void set_nodal_dimension(const unsigned &nodal_dim)
Set the dimension of the nodes in the element. This will typically only be required when constructing...
virtual void output(std::ostream &outfile)
Output the element data — typically the values at the nodes in a format suitable for post-processing.
/////////////////////////////////////////////////////////////////////
Hermite Kirchhoff Love beam. Implements KirchhoffLoveBeamEquations using 2-node Hermite elements as t...
void output(std::ostream &outfile)
Output function.
HermiteBeamElement()
Constructor (empty)
A class for elements that solve the equations of Kirchhoff-Love large-displacement (but linearly-elas...
KirchhoffLoveBeamEquations()
Constructor. Set default values for all physical parameters and zero traction.
void fill_in_contribution_to_residuals(Vector< double > &residuals)
Return the residuals for the equations of Kirchhoff-Love beam theory with linear constitutive equatio...
static double Default_sigma0_value
Static default value for 2nd Piola Kirchhoff prestress.
void(*&)(const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load) load_vector_fct_pt()
Reference to the load vector function pointer.
static void Zero_traction_fct(const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
Default load function (zero traction)
GeomObject * Undeformed_beam_pt
Pointer to the GeomObject that specifies the beam's undeformed midplane.
static void Unit_profile_fct(const Vector< double > &xi, const Vector< double > &x, double &h_ratio)
Default profile function (constant thickness 'h_0')
void fill_in_contribution_to_residuals_beam(Vector< double > &residuals)
Return the residuals for the equations of Kirchhoff-Love beam theory with linear constitutive equatio...
void(* Load_vector_fct_pt)(const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
Pointer to load vector function: Its arguments are: Lagrangian coordinate, Eulerian coordinate,...
double *& sigma0_pt()
Return a pointer to axial prestress.
void(* Wall_profile_fct_pt)(const Vector< double > &xi, const Vector< double > &x, double &h_ratio)
Pointer to wall profile function: Its arguments are: Lagrangian coordinate, Eulerian coordinate,...
double * Lambda_sq_pt
Pointer to Timescale ratio (non-dim. density)
void get_non_unit_tangent(const Vector< double > &s, Vector< double > &r, Vector< double > &drds)
Get position vector to and non-unit tangent vector on wall: dr/ds.
void(*&)(const Vector< double > &xi, const Vector< double > &x, double &h_ratio) wall_profile_fct_pt()
Reference to the wall thickness ratio profile function pointer.
static double Default_h_value
Static default value for non-dim wall thickness.
double * Sigma0_pt
Pointer to axial prestress.
const double & lambda_sq() const
Return the timescale ratio (non-dimensional density)
void get_normal(const Vector< double > &s, Vector< double > &N)
Get normal vector on wall.
static double Default_lambda_sq_value
Static default value for timescale ratio (1.0 – for natural scaling)
void wall_profile(const Vector< double > &xi, const Vector< double > &x, double &h_ratio)
Get the wall profile: Pass Lagrangian & Eulerian coordinate and return the wall profile (not all of t...
double *& h_pt()
Return a pointer to non-dim. wall thickness.
const double & sigma0() const
Return the axial prestress.
void get_energy(double &pot_en, double &kin_en)
Get potential (strain) and kinetic energy of the element.
double *& lambda_sq_pt()
Return a pointer to timescale ratio (nondim density)
const double & h() const
Return the non-dimensional wall thickness.
GeomObject *& undeformed_beam_pt()
Return a Pointer to geometric object that specifies the beam's undeformed geometry.
double * H_pt
Pointer to wall thickness.
virtual void load_vector(const unsigned &intpt, const Vector< double > &xi, const Vector< double > &x, const Vector< double > &N, Vector< double > &load)
Get the load vector: Pass number of integration point (dummy), Lagr. and Eulerian coordinate and norm...
virtual void fill_in_contribution_to_jacobian(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Get FE jacobian and residuals (Jacobian done by finite differences)
An OomphLibError object which should be thrown when an run-time error is encountered....
SolidFaceElements combine FaceElements and SolidFiniteElements and overload various functions so they...
////////////////////////////////////////////////////////////////////// //////////////////////////////...
//////////////////////////////////////////////////////////////////// ////////////////////////////////...
////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////// ////////////////////////////////...