84 std::ostringstream error_message;
85 error_message <<
"Normal vector should have dimension 2, not" << N.size()
93 std::ostringstream error_message;
94 error_message <<
"Position vector should have dimension 2, not"
95 <<
r.
size() << std::endl;
103 std::ostringstream error_message;
104 error_message <<
"Local coordinate should have dimension 1, not"
105 <<
s.size() << std::endl;
141 for (
unsigned i = 0;
i <
n_dim;
i++)
152 for (
unsigned i = 0;
i <
n_dim;
i++)
191 std::ostringstream error_message;
192 error_message <<
"Tangent vector should have dimension 2, not"
200 std::ostringstream error_message;
201 error_message <<
"Position vector should have dimension 2, not"
202 <<
r.
size() << std::endl;
210 std::ostringstream error_message;
211 error_message <<
"Local coordinate should have dimension 1, not"
212 <<
s.size() << std::endl;
245 for (
unsigned i = 0;
i <
n_dim;
i++)
252 for (
unsigned i = 0;
i <
n_dim;
i++)
345 for (
unsigned i = 0;
i <
n_dim;
i++)
376 for (
unsigned i = 0;
i <
n_dim;
i++)
412 for (
unsigned k = 0;
k <
n_dim;
k++)
414 amet += a(0,
k) * a(0,
k);
437 double b =
n[0] *
dadxi(0, 0, 0) +
n[1] *
dadxi(0, 0, 1);
442 double kappa = b - B;
493 for (
unsigned i = 0;
i <
n_dim;
i++)
657 for (
unsigned i = 0;
i <
n_dim;
i++)
689 for (
unsigned i = 0;
i <
n_dim;
i++)
715 for (
unsigned i = 0;
i <
n_dim;
i++)
734 for (
unsigned k = 0;
k <
n_dim;
k++)
736 amet += a(0,
k) * a(0,
k);
757 double b =
n[0] *
dadxi(0, 0, 0) +
n[1] *
dadxi(0, 0, 1);
762 double kappa = b - B;
788 const unsigned&
n_plot)
const
790#ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
793 "Order of function arguments has changed between versions 0.8 and 0.85",
794 "HermiteBeamElement::output(...)",
810 s[0] = -1.0 +
l * 2.0 / (
n_plot - 1);
813 for (
unsigned i = 0;
i <
n_dim;
i++)
864 for (
unsigned i = 0;
i <
n_dim;
i++)
888 for (
unsigned i = 0;
i <
n_dim;
i++)
902 for (
unsigned i = 0;
i <
n_dim;
i++)
908 for (
unsigned i = 0;
i <
n_dim;
i++)
913 for (
unsigned i = 0;
i <
n_dim;
i++)
942 const unsigned&
n_plot)
const
944#ifdef WARN_ABOUT_SUBTLY_CHANGED_OOMPH_INTERFACES
947 "Order of function arguments has changed between versions 0.8 and 0.85",
948 "HermiteBeamElement::output(...)",
965 s[0] = -1.0 +
l * 2.0 / (
n_plot - 1);
968 for (
unsigned i = 0;
i <
n_dim;
i++)
1022 for (
unsigned i = 0;
i <
n_dim;
i++)
1046 for (
unsigned i = 0;
i <
n_dim;
i++)
1060 for (
unsigned i = 0;
i <
n_dim;
i++)
1068 for (
unsigned i = 0;
i <
n_dim;
i++)
1074 for (
unsigned i = 0;
i <
n_dim;
i++)
1121 unsigned lo = 0,
hi = 1;
1131 double epsilon = 1.0e-13;
1150 geom_object_pt =
this;
1168 <<
"The zeta coordinate " <<
zeta_test[0] <<
" \n"
1169 <<
"computed by interpolated_zeta() for s[0]=" <<
s[0] <<
" \n"
1170 <<
"differs by more than the tolerance (" << epsilon <<
") from \n "
1171 <<
"the required value " <<
zeta_test[0] <<
" \n\n"
1172 <<
"You're probably using a mesh with non-uniformly \n "
1173 <<
"spaced FSIHermiteBeamElements. For such cases the root finding"
1174 <<
"in FSIHermiteBeamElement::locate_zeta() must be replaced "
1175 <<
"by a proper Newton method or some such thing...\n";
1177 "FSIHermiteBeamElement::locate_zeta()",
1206 "Undeformed_beam_pt has not been set",
1207 "FSIHermiteBeamElement::dposition_dlagrangian_at_local_coordinate()",
1230 drdxi.initialise(0.0);
1239 for (
unsigned i = 0;
i <
n_dim;
i++)
1415 for (
unsigned i = 0;
i <
n_dim;
i++)
Vector< double > Vector_to_symmetry_line
Vector to some point on the symmetry line along which the end of the beam is sliding.
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.
A Class for the derivatives of shape functions The class design is essentially the same as Shape,...
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...
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...
FaceElements are elements that coincide with the faces of higher-dimensional "bulk" elements....
int & face_index()
Index of the face (a number that uniquely identifies the face in the element)
FiniteElement *& bulk_element_pt()
Pointer to higher-dimensional "bulk" element.
Vector< unsigned > Nbulk_value
A vector that will hold the number of data values at the nodes that are associated with the "bulk" el...
void get_local_coordinate_in_bulk(const Vector< double > &s, Vector< double > &s_bulk) const
Calculate the vector of local coordinate in the bulk element given the local coordinates in this Face...
void resize_nodes(Vector< unsigned > &nadditional_data_values)
Provide additional storage for a specified number of values at the nodes of the FaceElement....
FaceGeometry class definition: This policy class is used to allow construction of face elements that ...
A general Finite Element class.
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
void set_nnodal_position_type(const unsigned &nposition_type)
Set the number of types required to interpolate the coordinate.
unsigned nnodal_position_type() const
Return the number of coordinate types that the element requires to interpolate the geometry between t...
void interpolated_zeta(const Vector< double > &s, Vector< double > &zeta) const
Calculate the interpolated value of zeta, the intrinsic coordinate of the element when viewed as a co...
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
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.
double nodal_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Return the value of the k-th type of the i-th positional variable at the local node n.
unsigned nnode() const
Return the number of nodes.
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
virtual void dshape_local(const Vector< double > &s, Shape &psi, DShape &dpsids) const
Function to compute the geometric shape functions and derivatives w.r.t. local coordinates at local c...
virtual void build_face_element(const int &face_index, FaceElement *face_element_pt)
Function for building a lower dimensional FaceElement on the specified face of the FiniteElement....
double raw_dnodal_position_gen_dt(const unsigned &n, const unsigned &k, const unsigned &i) const
i-th component of time derivative (velocity) of the generalised position, dx(k,i)/dt at local node n....
unsigned nodal_dimension() const
Return the required Eulerian dimension of the nodes in this element.
double raw_nodal_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Return the value of the k-th type of the i-th positional variable at the local node n....
void fill_in_jacobian_from_external_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
Calculate the contributions to the jacobian from the external degrees of freedom using finite differe...
unsigned ndof() const
Return the number of equations/dofs in the element.
unsigned long eqn_number(const unsigned &ieqn_local) const
Return the global equation number corresponding to the ieqn_local-th local equation number.
virtual void get_residuals(Vector< double > &residuals)
Calculate the vector of residuals of the equations in the element. By default initialise the vector t...
A geometric object is an object that provides a parametrised description of its shape via the functio...
unsigned ndim() const
Access function to # of Eulerian coordinates.
virtual void d2position(const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const
2nd derivative of position Vector w.r.t. to coordinates: = ddrdzeta(alpha,beta,i)....
unsigned nlagrangian() const
Access function to # of Lagrangian coordinates.
Hermite Kirchhoff Love beam. Implements KirchhoffLoveBeamEquations using 2-node Hermite elements as t...
void output(std::ostream &outfile)
Output function.
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.
static double Default_sigma0_value
Static default value for 2nd Piola Kirchhoff prestress.
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.
const double & h() const
Return the non-dimensional wall thickness.
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 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.
const double & lambda_sq() const
Return the timescale ratio (non-dimensional density)
static double Default_h_value
Static default value for non-dim wall thickness.
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...
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.
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)
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
double value(const unsigned &i) const
Return i-th value (dofs or pinned) at this node either directly or via hanging node representation....
An OomphLibError object which should be thrown when an run-time error is encountered....
An OomphLibWarning object which should be created as a temporary object to issue a warning....
void shape(const Vector< double > &s, Shape &psi) const
Function to calculate the geometric shape functions at local coordinate s.
A Class for shape functions. In simple cases, the shape functions have only one index that can be tho...
double raw_lagrangian_position_gen(const unsigned &n, const unsigned &k, const unsigned &i) const
Return Generalised Lagrangian coordinate at local node n. ‘Direction’ i, ‘Type’ k....
double dshape_lagrangian(const Vector< double > &s, Shape &psi, DShape &dpsidxi) const
Calculate shape functions and derivatives w.r.t. Lagrangian coordinates at local coordinate s....
double raw_lagrangian_position(const unsigned &n, const unsigned &i) const
Return i-th Lagrangian coordinate at local node n without using the hanging representation.
bool Solve_for_consistent_newmark_accel_flag
Flag to indicate which system of equations to solve when assigning initial conditions for time-depend...
SolidInitialCondition * Solid_ic_pt
Pointer to object that specifies the initial condition.
void fill_in_residuals_for_solid_ic(Vector< double > &residuals)
Fill in the residuals for the setup of an initial condition. The global equations are:
virtual double d2shape_lagrangian_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsidxi, DShape &d2psidxi) const
Return the geometric shape functions and also first and second derivatives w.r.t. Lagrangian coordina...
int position_local_eqn(const unsigned &n, const unsigned &k, const unsigned &j) const
Access function that returns the local equation number that corresponds to the j-th coordinate of the...
virtual double interpolated_xi(const Vector< double > &s, const unsigned &i) const
Return i-th FE-interpolated Lagrangian coordinate xi[i] at local coordinate s.
virtual void fill_in_jacobian_from_solid_position_by_fd(Vector< double > &residuals, DenseMatrix< double > &jacobian)
Use finite differences to calculate the Jacobian entries corresponding to the solid positions....
void fill_in_jacobian_for_newmark_accel(DenseMatrix< double > &jacobian)
Fill in the contributions of the Jacobian matrix for the consistent assignment of the initial "accele...
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).