![]() |
|
#include <immersed_rigid_body_elements.h>
Public Types | |
typedef void(* | ExternalForceFctPt) (const double &time, Vector< double > &external_force) |
typedef void(* | ExternalTorqueFctPt) (const double &time, double &external_torque) |
Public Member Functions | |
ImmersedRigidBodyElement (GeomObject *const &geom_object_pt, TimeStepper *const &time_stepper_pt, Data *const ¢re_displacement_data_pt=0) | |
void | set_geometric_rotation () |
Set the rotation of the object to be included. More... | |
void | unset_geometric_rotation () |
double & | initial_phi () |
Access function for the initial angle. More... | |
double & | initial_centre_of_mass (const unsigned &i) |
Access function for the initial centre of mass. More... | |
const double & | initial_centre_of_mass (const unsigned &i) const |
Access function for the initial centre of mass (const version) More... | |
void | position (const Vector< double > &xi, Vector< double > &r) const |
Overload the position to apply the rotation and translation. More... | |
void | position (const unsigned &t, const Vector< double > &xi, Vector< double > &r) const |
Overload to include the time history of the motion of the object. More... | |
void | dposition_dt (const Vector< double > &zeta, const unsigned &j, Vector< double > &drdt) |
Work out the position derivative, including rigid body motion. More... | |
~ImmersedRigidBodyElement () | |
Destuctor: Cleanup if required. More... | |
double & | mass_shape () |
double & | moment_of_inertia_shape () |
Access to dimensionless polar "moment of inertia" shape parameter. More... | |
Data *& | centre_displacement_data_pt () |
double & | centre_x_displacement () |
x-displacement of centre of mass More... | |
double & | centre_y_displacement () |
y-displacement of centre of mass More... | |
double & | centre_rotation_angle () |
rotation of centre of mass More... | |
Vector< double > | centre_of_gravity () |
Get current centre of gravity. More... | |
void | pin_centre_of_mass_coordinate (const unsigned &i) |
Pin the i-th coordinate of the centre of mass. More... | |
void | unpin_centre_of_mass_coordinate (const unsigned &i) |
Unpin the i-th coordinate of the centre of mass. More... | |
void | pin_rotation_angle () |
Pin the rotation angle. More... | |
void | unpin_rotation_angle () |
Unpin the rotation angle. More... | |
void | output_centre_of_gravity (std::ostream &outfile) |
Output position velocity and acceleration of centre of gravity. More... | |
void | fill_in_contribution_to_residuals (Vector< double > &residuals) |
Get the contribution to the residuals. More... | |
void | fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
Get residuals including contribution to jacobian. More... | |
void | node_update_adjacent_fluid_elements () |
void | update_in_external_fd (const unsigned &i) |
After an external data change, update the nodal positions. More... | |
void | reset_in_external_fd (const unsigned &i) |
Do nothing to reset within finite-differencing of external data. More... | |
void | reset_after_external_fd () |
void | update_in_internal_fd (const unsigned &i) |
After an internal data change, update the nodal positions. More... | |
void | reset_in_internal_fd (const unsigned &i) |
Do nothing to reset within finite-differencing of internal data. More... | |
void | reset_after_internal_fd () |
void | get_force_and_torque (const double &time, Vector< double > &force, double &torque) |
ExternalForceFctPt & | external_force_fct_pt () |
ExternalTorqueFctPt & | external_torque_fct_pt () |
Mesh *const & | drag_mesh_pt () |
void | set_drag_mesh (Mesh *const &drag_mesh_pt) |
void | flush_drag_mesh () |
Function to clear the drag mesh and all associated external data. More... | |
unsigned | ngeom_data () const |
The position of the object depends on one data item. More... | |
Data * | geom_data_pt (const unsigned &j) |
Vector< double > *& | g_pt () |
Access function to the direction of gravity. More... | |
const Vector< double > & | g () const |
Access function for gravity. More... | |
double *& | re_pt () |
Access function for the pointer to the fluid Reynolds number. More... | |
const double & | re () const |
Access function for the fluid Reynolds number. More... | |
double *& | st_pt () |
Access function for the pointer to the fluid Strouhal number. More... | |
const double & | st () const |
Access function for the fluid Strouhal number. More... | |
double *& | re_invfr_pt () |
const double & | re_invfr () |
Access to the fluid inverse Froude number. More... | |
double *& | density_ratio_pt () |
Access function for the pointer to the density ratio. More... | |
const double & | density_ratio () const |
Access function for the the density ratio. More... | |
![]() | |
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 ¤t_string) const |
virtual void | describe_local_dofs (std::ostream &out, const std::string ¤t_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 ¶meter_pt, Vector< double > &dres_dparam) |
virtual void | get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
virtual void | get_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_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 unsigned | self_test () |
virtual void | compute_norm (Vector< double > &norm) |
virtual void | compute_norm (double &norm) |
virtual unsigned | ndof_types () const |
virtual void | get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const |
![]() | |
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 () |
TimeStepper * | time_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 |
virtual void | locate_zeta (const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false) |
virtual void | interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const |
Protected Attributes | |
Vector< double > | Initial_centre_of_mass |
X-coordinate of initial centre of gravity. More... | |
double | Initial_Phi |
Original rotation angle. More... | |
double | Mass |
double | Moment_of_inertia |
Polar moment of inertia of body. More... | |
Data * | Centre_displacement_data_pt |
![]() | |
unsigned | NLagrangian |
Number of Lagrangian (intrinsic) coordinates. More... | |
unsigned | Ndim |
Number of Eulerian coordinates. More... | |
TimeStepper * | Geom_object_time_stepper_pt |
Private Member Functions | |
int | centre_displacement_local_eqn (const unsigned &i) |
void | initialise (TimeStepper *const &time_stepper_pt) |
Initialisation function. More... | |
void | get_residuals_rigid_body_generic (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &flag) |
Get residuals and/or Jacobian. More... | |
void | delete_external_hijacked_data () |
Delete the storage for the external data formed from hijacked data. More... | |
Private Attributes | |
std::list< unsigned > | List_of_external_hijacked_data |
GeomObject * | Geom_object_pt |
Underlying geometric object. More... | |
ExternalForceFctPt | External_force_fct_pt |
ExternalTorqueFctPt | External_torque_fct_pt |
Mesh * | Drag_mesh_pt |
Vector< double > * | G_pt |
The direction of gravity. More... | |
double * | Re_pt |
Reynolds number of external fluid. More... | |
double * | St_pt |
Strouhal number of external fluid. More... | |
double * | ReInvFr_pt |
Reynolds number divided by Froude number of external fluid. More... | |
double * | Density_ratio_pt |
Density ratio of the solid to the external fluid. More... | |
unsigned | Index_for_centre_displacement |
bool | Displacement_data_is_internal |
Boolean flag to indicate whether data is internal. More... | |
bool | Include_geometric_rotation |
Static Private Attributes | |
static double | Default_Physical_Constant_Value = 0.0 |
Static default value for physical constants. More... | |
static double | Default_Physical_Ratio_Value = 1.0 |
Static default value for physical ratios. More... | |
static Vector< double > | Default_Gravity_vector |
Static default value for gravity. More... | |
Additional Inherited Members | |
![]() | |
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 |
![]() | |
static DenseMatrix< double > | Dummy_matrix |
static std::deque< double * > | Dof_pt_deque |
Class that solves the equations of motion for a general two-dimensional rigid body subject to a particular imposed force and torque distribution and immersed within an external fluid. The body's position is entirely specified by the location of its centre of mass, \(\mbox{\boldmath$X$}\), and a single angle, \(\phi\), that represents a possible rotation. The equations of motion are then simply Newton's second law for the conservation of linear momentum in two directions and angular momentum about the single possible axis of rotation.
The non-dimensionalisation is based on the viscous scales of the surrounding fluid, in which case, the governing equations are
\[ Re St^{2} M \frac{\mbox{d}^{2} \mbox{\boldmath$X$}}{\mbox{d} t^{2}} = \mbox{\boldmath$F$} + \oint \mbox{\boldmath$t$} \mbox{d} s \quad\mbox{and}\quad Re St^{2} I \frac{\mbox{d}^{2}\Phi}{\mbox{d} t^{2}} = \mbox{\boldmath$T$} + \oint \mbox{\boldmath$q$} \mbox{d} s, \]
where \(\mbox{\boldmath$F$} = \mbox{\boldmath$F$}^{*}/\mu U\) is the external force per unit length; \(\mbox{\boldmath$t$}\) is the net force per unit length applied on the rigid body by the surrounding fluid; \(\mbox{\boldmath$T$} = \mbox{\boldmath$T$}^{*}/(\mu UL)\) is the external torque per unit length; and \(\mbox{\boldmath$q$}\) is the net torque per unit length applied on the body by the fluid. \(M\) is a scaled mass the density ratio multiplied by a shape parameter and \(I\) is a scaled moment of inertia. Finally, \(Re\) and \(St\) are the Reynolds and Strouhal numbers of the surrounding fluid. Note that these equations may be used without the external fluid, in which case the non-dimensionalisation doesn't make a lot of sense, but may be re-interpreted accordingly.
A Data object whose three values represent the x and y displacements of the body's centre of mass and its rotation about the centre of mass may be passed in as external data or, if not, it will be constructed internally.
For general usage, an underlying geometric object must passed to the constructor and the position will be determined by applying rigid body motions to the underlying object based on the initial_centre_of_mass and initial_phi (angle), which default to zero. If these defaults are not suitable, the values must be set externally. In addition a mass and moment of inertia should also be set externally.
If added to a mesh in the Problem (in its incarnation as a GeneralisedElement) the displacement/rotation of the body is computed in response to (i) user-specifiable applied forces and a torque and (ii) the net drag (and associated torque) from a mesh of elements that can exert a drag onto the body (typically Navier-Stokes FaceElements that apply a viscous drag to an immersed body, represented by the body.)
typedef void(* oomph::ImmersedRigidBodyElement::ExternalForceFctPt) (const double &time, Vector< double > &external_force) |
Function pointer to function that specifies external force
typedef void(* oomph::ImmersedRigidBodyElement::ExternalTorqueFctPt) (const double &time, double &external_torque) |
Function pointer to function that specifies external torque
|
inlineprotected |
Default constructor that intialises everything to zero. This is expected to be called only from derived clases such as the ImmersedRigidBodyTriangleMeshPolygon that can provided their own position() functions.
References initialise().
|
inline |
|
inline |
Destuctor: Cleanup if required.
References Centre_displacement_data_pt, Displacement_data_is_internal, and oomph::GeneralisedElement::internal_data_pt().
|
inlineprotected |
Helper function to adjust the position in response to changes in position and angle of the solid about the centre of mass
References atan2(), Centre_displacement_data_pt, cos(), Include_geometric_rotation, Initial_centre_of_mass, UniformPSDSelfTest::r, sin(), sqrt(), oomph::Data::value(), X, and Y.
Referenced by position(), oomph::ImmersedRigidBodyTriangleMeshPolygon::position(), and oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration().
|
inline |
Pointer to Data for centre of gravity displacement. Values: 0: x-displ; 1: y-displ; 2: rotation angle.
References Centre_displacement_data_pt.
|
inlineprivate |
Return the equation number associated with the i-th centre of gravity displacment 0: x-displ; 1: y-displ; 2: rotation angle.
References Displacement_data_is_internal, oomph::GeneralisedElement::external_local_eqn(), Index_for_centre_displacement, and oomph::GeneralisedElement::internal_local_eqn().
Referenced by get_residuals_rigid_body_generic().
Get current centre of gravity.
References Centre_displacement_data_pt, i, Initial_centre_of_mass, and oomph::Data::value().
|
inline |
|
inline |
x-displacement of centre of mass
References Centre_displacement_data_pt, and oomph::Data::value_pt().
|
inline |
y-displacement of centre of mass
References Centre_displacement_data_pt, and oomph::Data::value_pt().
|
inlineprivate |
Delete the storage for the external data formed from hijacked data.
References oomph::GeneralisedElement::external_data_pt(), and List_of_external_hijacked_data.
Referenced by flush_drag_mesh(), and set_drag_mesh().
|
inline |
Access function for the the density ratio.
References Density_ratio_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for the pointer to the density ratio.
References Density_ratio_pt.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
virtual |
Work out the position derivative, including rigid body motion.
Work out the position derivative taking into account the movement relative to the original centre of mass
Reimplemented from oomph::GeomObject.
References atan2(), Centre_displacement_data_pt, cos(), Geom_object_pt, i, Include_geometric_rotation, Initial_centre_of_mass, j, n, OOMPH_EXCEPTION_LOCATION, position(), oomph::GeomObject::position(), sin(), sqrt(), oomph::TimeStepper::time_derivative(), oomph::Data::time_stepper_pt(), oomph::Data::value(), X, Y, and Eigen::zeta().
|
inline |
Access fct to mesh containing face elements that allow the computation of the drag on the body
References Drag_mesh_pt.
Referenced by set_drag_mesh().
|
inline |
Access to function pointer to function that specifies external force
References External_force_fct_pt.
|
inline |
Access to function pointer to function that specifies external torque
References External_torque_fct_pt.
|
inlinevirtual |
Get residuals including contribution to jacobian.
Reimplemented from oomph::GeneralisedElement.
References oomph::GeneralisedElement::fill_in_jacobian_from_external_by_fd(), oomph::GeneralisedElement::fill_in_jacobian_from_internal_by_fd(), and get_residuals_rigid_body_generic().
|
inlinevirtual |
Get the contribution to the residuals.
Reimplemented from oomph::GeneralisedElement.
References oomph::GeneralisedElement::Dummy_matrix, and get_residuals_rigid_body_generic().
|
inline |
Function to clear the drag mesh and all associated external data.
References delete_external_hijacked_data(), Drag_mesh_pt, and oomph::GeneralisedElement::flush_external_data().
Return pointer to the j-th (only) Data item that the object's shape depends on.
Reimplemented from oomph::GeomObject.
References Centre_displacement_data_pt.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::create_drag_elements().
void oomph::ImmersedRigidBodyElement::get_force_and_torque | ( | const double & | time, |
Vector< double > & | force, | ||
double & | torque | ||
) |
Get force and torque from specified fct pointers and drag mesh
Obtain the external force and torque on the body from specified function pointers and also from a drag mesh, if there is one
References Drag_mesh_pt, e(), oomph::Mesh::element_pt(), External_force_fct_pt, External_torque_fct_pt, and oomph::Mesh::nelement().
Referenced by get_residuals_rigid_body_generic().
|
private |
Get residuals and/or Jacobian.
Calculate the contributions to the residuals and the jacobian.
References Centre_displacement_data_pt, centre_displacement_local_eqn(), density_ratio(), G, g(), get_force_and_torque(), Global_Physical_Variables::Lambda_sq, Mass, Moment_of_inertia, re(), re_invfr(), st(), oomph::TimeStepper::time(), oomph::TimeStepper::time_derivative(), oomph::Data::time_stepper_pt(), and oomph::TimeStepper::weight().
Referenced by fill_in_contribution_to_jacobian(), and fill_in_contribution_to_residuals().
Access function for the initial centre of mass.
References i, and Initial_centre_of_mass.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::create_drag_elements(), and UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inline |
Access function for the initial centre of mass (const version)
References i, and Initial_centre_of_mass.
|
inline |
|
private |
Initialisation function.
Initialise the internal data.
References oomph::GeneralisedElement::add_external_data(), oomph::GeneralisedElement::add_internal_data(), Centre_displacement_data_pt, Displacement_data_is_internal, Index_for_centre_displacement, Initial_centre_of_mass, and oomph::GeomObject::time_stepper_pt().
Referenced by ImmersedRigidBodyElement().
|
inline |
Access to dimensionless "mass" shape parameter that must be set by hand for non polygonal shapes
References Mass.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inline |
Access to dimensionless polar "moment of inertia" shape parameter.
References Moment_of_inertia.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inlinevirtual |
The position of the object depends on one data item.
Reimplemented from oomph::GeomObject.
|
inline |
Update the positions of the nodes in fluid elements adjacent to the rigid body, defined as being elements in the drag mesh.
References Drag_mesh_pt, e(), oomph::Mesh::element_pt(), oomph::Mesh::nelement(), and oomph::FiniteElement::node_update().
Referenced by reset_after_external_fd(), reset_after_internal_fd(), update_in_external_fd(), and update_in_internal_fd().
void oomph::ImmersedRigidBodyElement::output_centre_of_gravity | ( | std::ostream & | outfile | ) |
Output position velocity and acceleration of centre of gravity.
Output the position of the centre of gravity including velocities and accelerations
References Centre_displacement_data_pt, Initial_centre_of_mass, Initial_Phi, oomph::TimeStepper::time(), oomph::TimeStepper::time_derivative(), oomph::GeomObject::time_stepper_pt(), oomph::Data::time_stepper_pt(), and oomph::Data::value().
|
inline |
Pin the i-th coordinate of the centre of mass.
References Centre_displacement_data_pt, i, and oomph::Data::pin().
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::solve_for_consistent_nodal_positions(), and UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inline |
Pin the rotation angle.
References Centre_displacement_data_pt, and oomph::Data::pin().
|
inlinevirtual |
Overload to include the time history of the motion of the object.
Reimplemented from oomph::GeomObject.
Reimplemented in oomph::ImmersedRigidBodyTriangleMeshPolygon.
References apply_rigid_body_motion(), Geom_object_pt, oomph::GeomObject::position(), and UniformPSDSelfTest::r.
|
inlinevirtual |
Overload the position to apply the rotation and translation.
Implements oomph::GeomObject.
Reimplemented in oomph::ImmersedRigidBodyTriangleMeshPolygon.
References apply_rigid_body_motion(), Geom_object_pt, oomph::GeomObject::position(), and UniformPSDSelfTest::r.
Referenced by dposition_dt().
|
inline |
Access function for the fluid Reynolds number.
References Re_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access to the fluid inverse Froude number.
References ReInvFr_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for pointer to the fluid inverse Froude number (dimensionless gravitational loading)
References ReInvFr_pt.
|
inline |
Access function for the pointer to the fluid Reynolds number.
References Re_pt.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inlinevirtual |
After all external data finite-differencing, update nodal positions
Reimplemented from oomph::GeneralisedElement.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
After all internal data finite-differencing, update nodal positions
Reimplemented from oomph::GeneralisedElement.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
Do nothing to reset within finite-differencing of external data.
Reimplemented from oomph::GeneralisedElement.
|
inlinevirtual |
Do nothing to reset within finite-differencing of internal data.
Reimplemented from oomph::GeneralisedElement.
void oomph::ImmersedRigidBodyElement::set_drag_mesh | ( | Mesh *const & | drag_mesh_pt | ) |
Function to set the drag mesh and add the appropriate load and geometric data as external data to the Rigid Body
Set the external drag mesh, which should consist of NavierStokesSurfaceDragTorqueElements and then read out the appropriate load and geometric data from those elements and set as external data for this element.
References oomph::GeneralisedElement::add_external_data(), delete_external_hijacked_data(), drag_mesh_pt(), Drag_mesh_pt, e(), oomph::Mesh::element_pt(), oomph::GeneralisedElement::flush_external_data(), oomph::FiniteElement::identify_geometric_data(), oomph::FSIFluidElement::identify_load_data(), List_of_external_hijacked_data, oomph::Mesh::nelement(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, and set().
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inline |
Set the rotation of the object to be included.
References Include_geometric_rotation.
|
inline |
Access function for the fluid Strouhal number.
References St_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for the pointer to the fluid Strouhal number.
References St_pt.
Referenced by UnstructuredImmersedEllipseProblem< ELEMENT >::UnstructuredImmersedEllipseProblem().
|
inline |
Unpin the i-th coordinate of the centre of mass.
References Centre_displacement_data_pt, i, and oomph::Data::unpin().
|
inline |
Unpin the rotation angle.
References Centre_displacement_data_pt, and oomph::Data::unpin().
|
inline |
Set the rotation of the object to be ignored (only really useful if you have a circular shape)
References Include_geometric_rotation.
|
inlinevirtual |
After an external data change, update the nodal positions.
Reimplemented from oomph::GeneralisedElement.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
After an internal data change, update the nodal positions.
Reimplemented from oomph::GeneralisedElement.
References node_update_adjacent_fluid_elements().
|
protected |
Data for centre of gravity displacement. Values: 0: x-displ; 1: y-displ; 2: rotation angle.
Referenced by apply_rigid_body_motion(), centre_displacement_data_pt(), centre_of_gravity(), centre_rotation_angle(), centre_x_displacement(), centre_y_displacement(), dposition_dt(), geom_data_pt(), get_residuals_rigid_body_generic(), initialise(), output_centre_of_gravity(), pin_centre_of_mass_coordinate(), pin_rotation_angle(), oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration(), unpin_centre_of_mass_coordinate(), unpin_rotation_angle(), and ~ImmersedRigidBodyElement().
Static default value for gravity.
Static default gravity direction vector.
|
staticprivate |
Static default value for physical constants.
Static default value for physical constants Zero gives instantaneous force and torque balances — no solid intertia
|
staticprivate |
Static default value for physical ratios.
Static default value for physical ratio.
|
private |
Density ratio of the solid to the external fluid.
Referenced by density_ratio(), and density_ratio_pt().
|
private |
Boolean flag to indicate whether data is internal.
Referenced by centre_displacement_local_eqn(), initialise(), and ~ImmersedRigidBodyElement().
|
private |
Mesh containing face elements that allow the computation of the drag on the body
Referenced by drag_mesh_pt(), flush_drag_mesh(), get_force_and_torque(), node_update_adjacent_fluid_elements(), and set_drag_mesh().
|
private |
Function pointer to function that specifies external force
Referenced by external_force_fct_pt(), and get_force_and_torque().
|
private |
Function pointer to function that specifies external torque
Referenced by external_torque_fct_pt(), and get_force_and_torque().
|
private |
Underlying geometric object.
Referenced by dposition_dt(), and position().
|
private |
Boolean to indicate that the rotation variable does not affect the boundary shape
Referenced by apply_rigid_body_motion(), dposition_dt(), set_geometric_rotation(), and unset_geometric_rotation().
|
private |
Index for the data (internal or external) that contains the centre-of-gravity displacement
Referenced by centre_displacement_local_eqn(), and initialise().
X-coordinate of initial centre of gravity.
Referenced by apply_rigid_body_motion(), centre_of_gravity(), dposition_dt(), oomph::ImmersedRigidBodyTriangleMeshPolygon::ImmersedRigidBodyTriangleMeshPolygon(), initial_centre_of_mass(), initialise(), output_centre_of_gravity(), and oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration().
|
protected |
Original rotation angle.
Referenced by oomph::ImmersedRigidBodyTriangleMeshPolygon::ImmersedRigidBodyTriangleMeshPolygon(), initial_phi(), output_centre_of_gravity(), and oomph::ImmersedRigidBodyTriangleMeshPolygon::reset_reference_configuration().
|
private |
Storage for the external data that is formed from hijacked data that must be deleted by this element
Referenced by delete_external_hijacked_data(), and set_drag_mesh().
|
protected |
|
protected |
Polar moment of inertia of body.
Referenced by get_residuals_rigid_body_generic(), oomph::ImmersedRigidBodyTriangleMeshPolygon::ImmersedRigidBodyTriangleMeshPolygon(), and moment_of_inertia_shape().
|
private |
|
private |
Reynolds number divided by Froude number of external fluid.
Referenced by re_invfr(), and re_invfr_pt().
|
private |