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, , and a single angle, , 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. More...
#include <immersed_rigid_body_elements.h>
Public Types | |
typedef void(* | ExternalForceFctPt) (const double &time, Vector< double > &external_force) |
Function pointer to function that specifies external force. More... | |
typedef void(* | ExternalTorqueFctPt) (const double &time, double &external_torque) |
Function pointer to function that specifies external torque. More... | |
Public Member Functions | |
ImmersedRigidBodyElement (GeomObject *const &geom_object_pt, TimeStepper *const &time_stepper_pt, Data *const ¢re_displacement_data_pt=0) | |
Constructor that takes an underlying geometric object: and timestepper. More... | |
void | set_geometric_rotation () |
Set the rotation of the object to be included. More... | |
void | unset_geometric_rotation () |
Set the rotation of the object to be ignored (only really useful if you have a circular shape) More... | |
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 () |
Access to dimensionless "mass" shape parameter that must be set by hand for non polygonal shapes. More... | |
double & | moment_of_inertia_shape () |
Access to dimensionless polar "moment of inertia" shape parameter. More... | |
Data *& | centre_displacement_data_pt () |
Pointer to Data for centre of gravity displacement. Values: 0: x-displ; 1: y-displ; 2: rotation angle. More... | |
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 () |
Update the positions of the nodes in fluid elements adjacent to the rigid body, defined as being elements in the drag mesh. More... | |
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 () |
After all external data finite-differencing, update nodal positions. More... | |
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 () |
After all internal data finite-differencing, update nodal positions. More... | |
void | get_force_and_torque (const double &time, Vector< double > &force, double &torque) |
Get force and torque from specified fct pointers and drag mesh. More... | |
ExternalForceFctPt & | external_force_fct_pt () |
Access to function pointer to function that specifies external force. More... | |
ExternalTorqueFctPt & | external_torque_fct_pt () |
Access to function pointer to function that specifies external torque. More... | |
Mesh *const & | drag_mesh_pt () |
Access fct to mesh containing face elements that allow the computation of the drag on the body. More... | |
void | 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. More... | |
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) |
Return pointer to the j-th (only) Data item that the object's shape depends on. More... | |
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 () |
Access function for pointer to the fluid inverse Froude number (dimensionless gravitational loading) More... | |
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... | |
Public Member Functions inherited from oomph::GeneralisedElement | |
GeneralisedElement() | GeneralisedElement (const GeneralisedElement &)=delete |
Constructor: Initialise all pointers and all values to zero. 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 |
Return the global equation number corresponding to the ieqn_local-th local equation number. More... | |
int | local_eqn_number (const unsigned long &ieqn_global) const |
Return the local equation number corresponding to the ieqn_global-th global equation number. Returns minus one (-1) if there is no local degree of freedom corresponding to the chosen global equation number. More... | |
unsigned | add_external_data (Data *const &data_pt, const bool &fd=true) |
Add a (pointer to an) external data object to the element and return its index (i.e. the index required to obtain it from the access function external_data_pt(...) . The optional boolean flag indicates whether the data should be included in the general finite-difference loop when calculating the jacobian. The default value is true, i.e. the data will be included in the finite-differencing. More... | |
bool | external_data_fd (const unsigned &i) const |
Return the status of the boolean flag indicating whether the external data is included in the finite difference loop. More... | |
void | exclude_external_data_fd (const unsigned &i) |
Set the boolean flag to exclude the external datum from the the finite difference loop when computing the jacobian matrix. More... | |
void | include_external_data_fd (const unsigned &i) |
Set the boolean flag to include the external datum in the the finite difference loop when computing the jacobian matrix. More... | |
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) |
Set the timestepper associated with the i-th internal data object. More... | |
void | assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt) |
Assign the global equation numbers to the internal Data. The arguments are the current highest global equation number (which will be incremented) and a Vector of pointers to the global variables (to which any unpinned values in the internal Data are added). More... | |
void | describe_dofs (std::ostream &out, const std::string ¤t_string) const |
Function to describe the dofs of the element. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More... | |
virtual void | describe_local_dofs (std::ostream &out, const std::string ¤t_string) const |
Function to describe the local dofs of the element. The ostream specifies the output stream to which the description is written; the string stores the currently assembled output that is ultimately written to the output stream by Data::describe_dofs(...); it is typically built up incrementally as we descend through the call hierarchy of this function when called from Problem::describe_dofs(...) More... | |
void | add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt) |
Add pointers to the internal data values to map indexed by the global equation number. More... | |
void | add_internal_data_values_to_vector (Vector< double > &vector_of_values) |
Add all internal data and time history values to the vector in the internal storage order. More... | |
void | read_internal_data_values_from_vector (const Vector< double > &vector_of_values, unsigned &index) |
Read all internal data and time history values from the vector starting from index. On return the index will be set to the value at the end of the data that has been read in. More... | |
void | add_internal_eqn_numbers_to_vector (Vector< long > &vector_of_eqn_numbers) |
Add all equation numbers associated with internal data to the vector in the internal storage order. More... | |
void | read_internal_eqn_numbers_from_vector (const Vector< long > &vector_of_eqn_numbers, unsigned &index) |
Read all equation numbers associated with internal data from the vector starting from index. On return the index will be set to the value at the end of the data that has been read in. More... | |
virtual void | assign_local_eqn_numbers (const bool &store_local_dof_pt) |
Setup the arrays of local equation numbers for the element. If the optional boolean argument is true, then pointers to the associated degrees of freedom are stored locally in the array Dof_pt. More... | |
virtual void | complete_setup_of_dependencies () |
Complete the setup of any additional dependencies that the element may have. Empty virtual function that may be overloaded for specific derived elements. Used, e.g., for elements with algebraic node update functions to determine the "geometric
Data", i.e. the Data that affects the element's shape. This function is called (for all elements) at the very beginning of the equation numbering procedure to ensure that all dependencies are accounted for. More... | |
virtual void | get_residuals (Vector< double > &residuals) |
Calculate the vector of residuals of the equations in the element. By default initialise the vector to zero and then call the fill_in_contribution_to_residuals() function. Note that this entire function can be overloaded if desired. More... | |
virtual void | get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian) |
Calculate the elemental Jacobian matrix "d equation / d
variable". More... | |
virtual void | get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) |
Calculate the residuals and the elemental "mass" matrix, the matrix that multiplies the time derivative terms in a problem. More... | |
virtual void | get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) |
Calculate the residuals and jacobian and elemental "mass" matrix, the matrix that multiplies the time derivative terms. More... | |
virtual void | get_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) |
Calculate the derivatives of the residuals with respect to a parameter. More... | |
virtual void | get_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
Calculate the derivatives of the elemental Jacobian matrix and residuals with respect to a parameter. More... | |
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) |
Calculate the derivatives of the elemental Jacobian matrix mass matrix and residuals with respect to a parameter. More... | |
virtual void | get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) |
Calculate the product of the Hessian (derivative of Jacobian with respect to all variables) an eigenvector, Y, and other specified vectors, C (d(J_{ij})/d u_{k}) Y_{j} C_{k}. More... | |
virtual void | get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product) |
Return the vector of inner product of the given pairs of history values. More... | |
virtual void | get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector) |
Compute the vectors that when taken as a dot product with other history values give the inner product over the element. More... | |
virtual unsigned | self_test () |
Self-test: Have all internal values been classified as pinned/unpinned? Return 0 if OK. More... | |
virtual void | compute_norm (Vector< double > &norm) |
Compute norm of solution – broken virtual can be overloaded by element writer to implement whatever norm is desired for the specific element. More... | |
virtual void | compute_norm (double &norm) |
Compute norm of solution – broken virtual can be overloaded by element writer to implement whatever norm is desired for the specific element. More... | |
void | set_halo (const unsigned &non_halo_proc_ID) |
Label the element as halo and specify processor that holds non-halo counterpart. More... | |
void | set_nonhalo () |
Label the element as not being a halo. More... | |
bool | is_halo () const |
Is this element a halo? More... | |
int | non_halo_proc_ID () |
ID of processor ID that holds non-halo counterpart of halo element; negative if not a halo. More... | |
void | set_must_be_kept_as_halo () |
Insist that this element be kept as a halo element during a distribute? More... | |
void | unset_must_be_kept_as_halo () |
Do not insist that this element be kept as a halo element during distribution. More... | |
bool | must_be_kept_as_halo () const |
Test whether the element must be kept as a halo element. More... | |
virtual unsigned | ndof_types () const |
The number of types of degrees of freedom in this element are sub-divided into. More... | |
virtual void | get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const |
Create a list of pairs for the unknowns that this element is "in charge of" – ignore any unknowns associated with external Data . The first entry in each pair must contain the global equation number of the unknown, while the second one contains the number of the DOF type that this unknown is associated with. (The function can obviously only be called if the equation numbering scheme has been set up.) More... | |
Public Member Functions inherited from oomph::GeomObject | |
GeomObject () | |
Default constructor. More... | |
GeomObject (const unsigned &ndim) | |
Constructor: Pass dimension of geometric object (# of Eulerian coords = # of Lagrangian coords; no time history available/needed) More... | |
GeomObject (const unsigned &nlagrangian, const unsigned &ndim) | |
Constructor: pass # of Eulerian and Lagrangian coordinates. No time history available/needed. More... | |
GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt) | |
Constructor: pass # of Eulerian and Lagrangian coordinates and pointer to time-stepper which is used to handle the position at previous timesteps and allows the evaluation of veloc/acceleration etc. in cases where the GeomData varies with time. More... | |
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 () |
Access function for pointer to time stepper: Null if object is not time-dependent. More... | |
TimeStepper * | time_stepper_pt () const |
Access function for pointer to time stepper: Null if object is not time-dependent. Const version. More... | |
virtual void | position (const double &t, const Vector< double > &zeta, Vector< double > &r) const |
Parametrised position on object: r(zeta). Evaluated at the continuous time value, t. More... | |
virtual void | dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const |
Derivative of position Vector w.r.t. to coordinates: = drdzeta(alpha,i). Evaluated at current time. More... | |
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). Evaluated at current time. More... | |
virtual void | d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const |
Posn Vector and its 1st & 2nd derivatives w.r.t. to coordinates: = drdzeta(alpha,i). = ddrdzeta(alpha,beta,i). Evaluated at current time. More... | |
virtual void | locate_zeta (const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false) |
A geometric object may be composed of may sub-objects (e.g. a finite-element representation of a boundary). In order to implement sparse update functions, it is necessary to know the sub-object and local coordinate within that sub-object at a given intrinsic coordinate, zeta. Note that only one sub-object can "cover" any given intrinsic position. If the position is at an "interface" between sub-objects, either one can be returned. The default implementation merely returns, the pointer to the "entire" GeomObject and the coordinate, zeta The optional boolean flag only applies if a Newton method is used to find the value of zeta, and if true the value of the coordinate s is used as the initial guess for the method. If the flag is false (the default) a value of s=0 is used as the initial guess. More... | |
virtual void | interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const |
A geometric object may be composed of many sub-objects each with their own local coordinate. This function returns the "global" intrinsic coordinate zeta (within the compound object), at a given local coordinate s (i.e. the intrinsic coordinate of the sub-GeomObject. In simple (non-compound) GeomObjects, the local intrinsic coordinate is the global intrinsic coordinate and so the function merely returns s. To make it less likely that the default implementation is called in error (because it is not overloaded in a derived GeomObject where the default is not appropriate, we do at least check that s and zeta have the same size if called in PARANOID mode. More... | |
Protected Member Functions | |
ImmersedRigidBodyElement (TimeStepper *const &time_stepper_pt, Data *const ¢re_displacement_data_pt=0) | |
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. More... | |
void | apply_rigid_body_motion (const unsigned &t, const Vector< double > &initial_x, Vector< double > &r) const |
Helper function to adjust the position in response to changes in position and angle of the solid about the centre of mass. More... | |
Protected Member Functions inherited from oomph::GeneralisedElement | |
unsigned | add_internal_data (Data *const &data_pt, const bool &fd=true) |
Add a (pointer to an) internal data object to the element and return the index required to obtain it from the access function internal_data_pt() . The boolean indicates whether the datum should be included in the general finite-difference loop when calculating the jacobian. The default value is true, i.e. the data will be included in the finite differencing. More... | |
bool | internal_data_fd (const unsigned &i) const |
Return the status of the boolean flag indicating whether the internal data is included in the finite difference loop. More... | |
void | exclude_internal_data_fd (const unsigned &i) |
Set the boolean flag to exclude the internal datum from the finite difference loop when computing the jacobian matrix. More... | |
void | include_internal_data_fd (const unsigned &i) |
Set the boolean flag to include the internal datum in the finite difference loop when computing the jacobian matrix. More... | |
void | clear_global_eqn_numbers () |
Clear the storage for the global equation numbers and pointers to dofs (if stored) More... | |
void | add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt) |
Add the contents of the queue global_eqn_numbers to the local storage for the local-to-global translation scheme. It is essential that the entries in the queue are added IN ORDER i.e. from the front. More... | |
virtual void | assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt) |
Assign the local equation numbers for the internal and external Data This must be called after the global equation numbers have all been assigned. It is virtual so that it can be overloaded by ElementWithExternalElements so that any external data from the external elements in included in the numbering scheme. If the boolean argument is true then pointers to the dofs will be stored in Dof_pt. More... | |
virtual void | assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt) |
Assign all the local equation numbering schemes that can be applied generically for the element. In most cases, this is the function that will be overloaded by inherited classes. It is required to ensure that assign_additional_local_eqn_numbers() can always be called after ALL other local equation numbering has been performed. The default for the GeneralisedElement is simply to call internal and external local equation numbering. If the boolean argument is true then pointers to the dofs will be stored in Dof_pt. More... | |
virtual void | assign_additional_local_eqn_numbers () |
Setup any additional look-up schemes for local equation numbers. Examples of use include using local storage to refer to explicit degrees of freedom. The additional memory cost of such storage may or may not be offset by fast local access. More... | |
int | internal_local_eqn (const unsigned &i, const unsigned &j) const |
Return the local equation number corresponding to the j-th value stored at the i-th internal data. More... | |
int | external_local_eqn (const unsigned &i, const unsigned &j) |
Return the local equation number corresponding to the j-th value stored at the i-th external data. More... | |
void | fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false) |
Calculate the contributions to the jacobian from the internal degrees of freedom using finite differences. This version of the function assumes that the residuals vector has already been calculated. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More... | |
void | fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false) |
Calculate the contributions to the jacobian from the internal degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More... | |
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 differences. This version of the function assumes that the residuals vector has already been calculated. If the boolean argument is true, the finite differencing will be performed for all external data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More... | |
void | fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false) |
Calculate the contributions to the jacobian from the external degrees of freedom using finite differences. This version computes the residuals vector before calculating the jacobian terms. If the boolean argument is true, the finite differencing will be performed for all internal data, irrespective of the information in Data_fd. The default value (false) uses the information in Data_fd to selectively difference only certain data. More... | |
virtual void | update_before_internal_fd () |
Function that is called before the finite differencing of any internal data. This may be overloaded to update any dependent data before finite differencing takes place. More... | |
virtual void | update_before_external_fd () |
Function that is called before the finite differencing of any external data. This may be overloaded to update any dependent data before finite differencing takes place. More... | |
virtual void | fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix) |
Add the elemental contribution to the mass matrix matrix. and the residuals vector. Note that this function should NOT initialise the residuals vector or the mass matrix. It must be called after the residuals vector and jacobian matrix have been initialised to zero. The default is deliberately broken. More... | |
virtual void | fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix) |
Add the elemental contribution to the jacobian matrix, mass matrix and the residuals vector. Note that this function should NOT initialise any entries. It must be called after the residuals vector and matrices have been initialised to zero. More... | |
virtual void | fill_in_contribution_to_dresiduals_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam) |
Add the elemental contribution to the derivatives of the residuals with respect to a parameter. This function should NOT initialise any entries and must be called after the entries have been initialised to zero The default implementation is to use finite differences to calculate the derivatives. More... | |
virtual void | fill_in_contribution_to_djacobian_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam) |
Add the elemental contribution to the derivatives of the elemental Jacobian matrix and residuals with respect to a parameter. This function should NOT initialise any entries and must be called after the entries have been initialised to zero The default implementation is to use finite differences to calculate the derivatives. More... | |
virtual void | fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const ¶meter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam) |
Add the elemental contribution to the derivative of the jacobian matrix, mass matrix and the residuals vector with respect to the passed parameter. Note that this function should NOT initialise any entries. It must be called after the residuals vector and matrices have been initialised to zero. More... | |
virtual void | fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product) |
Fill in contribution to the product of the Hessian (derivative of Jacobian with respect to all variables) an eigenvector, Y, and other specified vectors, C (d(J_{ij})/d u_{k}) Y_{j} C_{k}. More... | |
virtual void | fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product) |
Fill in the contribution to the inner products between given pairs of history values. More... | |
virtual void | fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector) |
Fill in the contributions to the vectors that when taken as dot product with other history values give the inner product over the element. More... | |
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 |
Data for centre of gravity displacement. Values: 0: x-displ; 1: y-displ; 2: rotation angle. More... | |
Protected Attributes inherited from oomph::GeneralisedElement | |
int | Non_halo_proc_ID |
Non-halo processor ID for Data; -1 if it's not a halo. More... | |
bool | Must_be_kept_as_halo |
Does this element need to be kept as a halo element during a distribute? More... | |
Protected Attributes inherited from oomph::GeomObject | |
unsigned | NLagrangian |
Number of Lagrangian (intrinsic) coordinates. More... | |
unsigned | Ndim |
Number of Eulerian coordinates. More... | |
TimeStepper * | Geom_object_time_stepper_pt |
Timestepper (used to handle access to geometry at previous timesteps) More... | |
Private Member Functions | |
int | centre_displacement_local_eqn (const unsigned &i) |
Return the equation number associated with the i-th centre of gravity displacment 0: x-displ; 1: y-displ; 2: rotation angle. More... | |
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 |
Storage for the external data that is formed from hijacked data that must be deleted by this element. More... | |
GeomObject * | Geom_object_pt |
Underlying geometric object. More... | |
ExternalForceFctPt | External_force_fct_pt |
Function pointer to function that specifies external force. More... | |
ExternalTorqueFctPt | External_torque_fct_pt |
Function pointer to function that specifies external torque. More... | |
Mesh * | Drag_mesh_pt |
Mesh containing face elements that allow the computation of the drag on the body. More... | |
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 |
Index for the data (internal or external) that contains the centre-of-gravity displacement. More... | |
bool | Displacement_data_is_internal |
Boolean flag to indicate whether data is internal. More... | |
bool | Include_geometric_rotation |
Boolean to indicate that the rotation variable does not affect the boundary shape. More... | |
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 Public Attributes inherited from oomph::GeneralisedElement | |
static bool | Suppress_warning_about_repeated_internal_data |
Static boolean to suppress warnings about repeated internal data. Defaults to false. More... | |
static bool | Suppress_warning_about_repeated_external_data = true |
Static boolean to suppress warnings about repeated external data. Defaults to true. More... | |
static double | Default_fd_jacobian_step = 1.0e-8 |
Double used for the default finite difference step in elemental jacobian calculations. More... | |
Static Protected Attributes inherited from oomph::GeneralisedElement | |
static DenseMatrix< double > | Dummy_matrix |
Empty dense matrix used as a dummy argument to combined residual and jacobian functions in the case when only the residuals are being assembled. More... | |
static std::deque< double * > | Dof_pt_deque |
Static storage for deque used to add_global_equation_numbers when pointers to the dofs in each element are not required. More... | |
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, , and a single angle, , 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
where is the external force per unit length; is the net force per unit length applied on the rigid body by the surrounding fluid; is the external torque per unit length; and is the net torque per unit length applied on the body by the fluid. is a scaled mass the density ratio multiplied by a shape parameter and is a scaled moment of inertia. Finally, and 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.)
Definition at line 92 of file immersed_rigid_body_elements.h.
typedef void(* oomph::ImmersedRigidBodyElement::ExternalForceFctPt) (const double &time, Vector< double > &external_force) |
Function pointer to function that specifies external force.
Definition at line 97 of file immersed_rigid_body_elements.h.
typedef void(* oomph::ImmersedRigidBodyElement::ExternalTorqueFctPt) (const double &time, double &external_torque) |
Function pointer to function that specifies external torque.
Definition at line 102 of file immersed_rigid_body_elements.h.
|
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.
Definition at line 110 of file immersed_rigid_body_elements.h.
References initialise().
|
inline |
Constructor that takes an underlying geometric object: and timestepper.
Definition at line 133 of file immersed_rigid_body_elements.h.
References initialise().
|
inline |
Destuctor: Cleanup if required.
Definition at line 210 of file immersed_rigid_body_elements.h.
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.
Definition at line 498 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, Include_geometric_rotation, Initial_centre_of_mass, and oomph::Data::value().
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.
Definition at line 235 of file immersed_rigid_body_elements.h.
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.
Definition at line 537 of file immersed_rigid_body_elements.h.
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().
|
inline |
Get current centre of gravity.
Definition at line 259 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, i, Initial_centre_of_mass, and oomph::Data::value().
|
inline |
rotation of centre of mass
Definition at line 253 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, and oomph::Data::value_pt().
|
inline |
x-displacement of centre of mass
Definition at line 241 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, and oomph::Data::value_pt().
|
inline |
y-displacement of centre of mass
Definition at line 247 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, and oomph::Data::value_pt().
|
inlineprivate |
Delete the storage for the external data formed from hijacked data.
Definition at line 562 of file immersed_rigid_body_elements.h.
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.
Definition at line 489 of file immersed_rigid_body_elements.h.
References Density_ratio_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for the pointer to the density ratio.
Definition at line 483 of file immersed_rigid_body_elements.h.
References Density_ratio_pt.
|
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.
Definition at line 45 of file immersed_rigid_body_elements.cc.
References Centre_displacement_data_pt, Geom_object_pt, i, Include_geometric_rotation, Initial_centre_of_mass, position(), oomph::GeomObject::position(), oomph::TimeStepper::time_derivative(), oomph::Data::time_stepper_pt(), and oomph::Data::value().
|
inline |
Access fct to mesh containing face elements that allow the computation of the drag on the body.
Definition at line 400 of file immersed_rigid_body_elements.h.
References Drag_mesh_pt.
Referenced by set_drag_mesh().
|
inline |
Access to function pointer to function that specifies external force.
Definition at line 386 of file immersed_rigid_body_elements.h.
References External_force_fct_pt.
|
inline |
Access to function pointer to function that specifies external torque.
Definition at line 393 of file immersed_rigid_body_elements.h.
References External_torque_fct_pt.
|
inlinevirtual |
Get residuals including contribution to jacobian.
Reimplemented from oomph::GeneralisedElement.
Definition at line 307 of file immersed_rigid_body_elements.h.
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.
Definition at line 298 of file immersed_rigid_body_elements.h.
References oomph::GeneralisedElement::Dummy_matrix, and get_residuals_rigid_body_generic().
|
inline |
Function to clear the drag mesh and all associated external data.
Definition at line 410 of file immersed_rigid_body_elements.h.
References delete_external_hijacked_data(), Drag_mesh_pt, and oomph::GeneralisedElement::flush_external_data().
|
inline |
Access function for gravity.
Definition at line 440 of file immersed_rigid_body_elements.h.
References G_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function to the direction of gravity.
Definition at line 434 of file immersed_rigid_body_elements.h.
References G_pt.
|
inlinevirtual |
Return pointer to the j-th (only) Data item that the object's shape depends on.
Reimplemented from oomph::GeomObject.
Definition at line 428 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt.
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.
Definition at line 153 of file immersed_rigid_body_elements.cc.
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.
Definition at line 304 of file immersed_rigid_body_elements.cc.
References Centre_displacement_data_pt, centre_displacement_local_eqn(), density_ratio(), g(), get_force_and_torque(), 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().
|
inline |
Access function for the initial centre of mass.
Definition at line 174 of file immersed_rigid_body_elements.h.
References i, and Initial_centre_of_mass.
|
inline |
Access function for the initial centre of mass (const version)
Definition at line 180 of file immersed_rigid_body_elements.h.
References i, and Initial_centre_of_mass.
|
inline |
Access function for the initial angle.
Definition at line 168 of file immersed_rigid_body_elements.h.
References Initial_Phi.
|
private |
Initialisation function.
Initialise the internal data.
Definition at line 266 of file immersed_rigid_body_elements.cc.
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.
Definition at line 222 of file immersed_rigid_body_elements.h.
References Mass.
|
inline |
Access to dimensionless polar "moment of inertia" shape parameter.
Definition at line 228 of file immersed_rigid_body_elements.h.
References Moment_of_inertia.
|
inlinevirtual |
The position of the object depends on one data item.
Reimplemented from oomph::GeomObject.
Definition at line 421 of file immersed_rigid_body_elements.h.
|
inline |
Update the positions of the nodes in fluid elements adjacent to the rigid body, defined as being elements in the drag mesh.
Definition at line 324 of file immersed_rigid_body_elements.h.
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.
Definition at line 121 of file immersed_rigid_body_elements.cc.
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.
Definition at line 271 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, i, and oomph::Data::pin().
|
inline |
Pin the rotation angle.
Definition at line 283 of file immersed_rigid_body_elements.h.
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.
Definition at line 194 of file immersed_rigid_body_elements.h.
References apply_rigid_body_motion(), Geom_object_pt, and oomph::GeomObject::position().
|
inlinevirtual |
Overload the position to apply the rotation and translation.
Implements oomph::GeomObject.
Reimplemented in oomph::ImmersedRigidBodyTriangleMeshPolygon.
Definition at line 186 of file immersed_rigid_body_elements.h.
References apply_rigid_body_motion(), Geom_object_pt, and oomph::GeomObject::position().
Referenced by dposition_dt().
|
inline |
Access function for the fluid Reynolds number.
Definition at line 452 of file immersed_rigid_body_elements.h.
References Re_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access to the fluid inverse Froude number.
Definition at line 477 of file immersed_rigid_body_elements.h.
References ReInvFr_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for pointer to the fluid inverse Froude number (dimensionless gravitational loading)
Definition at line 471 of file immersed_rigid_body_elements.h.
References ReInvFr_pt.
|
inline |
Access function for the pointer to the fluid Reynolds number.
Definition at line 446 of file immersed_rigid_body_elements.h.
References Re_pt.
|
inlinevirtual |
After all external data finite-differencing, update nodal positions.
Reimplemented from oomph::GeneralisedElement.
Definition at line 357 of file immersed_rigid_body_elements.h.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
After all internal data finite-differencing, update nodal positions.
Reimplemented from oomph::GeneralisedElement.
Definition at line 373 of file immersed_rigid_body_elements.h.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
Do nothing to reset within finite-differencing of external data.
Reimplemented from oomph::GeneralisedElement.
Definition at line 353 of file immersed_rigid_body_elements.h.
|
inlinevirtual |
Do nothing to reset within finite-differencing of internal data.
Reimplemented from oomph::GeneralisedElement.
Definition at line 369 of file immersed_rigid_body_elements.h.
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.
Definition at line 206 of file immersed_rigid_body_elements.cc.
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, and oomph::Mesh::nelement().
|
inline |
Set the rotation of the object to be included.
Definition at line 155 of file immersed_rigid_body_elements.h.
References Include_geometric_rotation.
|
inline |
Access function for the fluid Strouhal number.
Definition at line 464 of file immersed_rigid_body_elements.h.
References St_pt.
Referenced by get_residuals_rigid_body_generic().
|
inline |
Access function for the pointer to the fluid Strouhal number.
Definition at line 458 of file immersed_rigid_body_elements.h.
References St_pt.
|
inline |
Unpin the i-th coordinate of the centre of mass.
Definition at line 277 of file immersed_rigid_body_elements.h.
References Centre_displacement_data_pt, i, and oomph::Data::unpin().
|
inline |
Unpin the rotation angle.
Definition at line 289 of file immersed_rigid_body_elements.h.
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)
Definition at line 162 of file immersed_rigid_body_elements.h.
References Include_geometric_rotation.
|
inlinevirtual |
After an external data change, update the nodal positions.
Reimplemented from oomph::GeneralisedElement.
Definition at line 347 of file immersed_rigid_body_elements.h.
References node_update_adjacent_fluid_elements().
|
inlinevirtual |
After an internal data change, update the nodal positions.
Reimplemented from oomph::GeneralisedElement.
Definition at line 363 of file immersed_rigid_body_elements.h.
References node_update_adjacent_fluid_elements().
|
protected |
Data for centre of gravity displacement. Values: 0: x-displ; 1: y-displ; 2: rotation angle.
Definition at line 592 of file immersed_rigid_body_elements.h.
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().
|
staticprivate |
Static default value for gravity.
Static default gravity direction vector.
Definition at line 632 of file immersed_rigid_body_elements.h.
|
staticprivate |
Static default value for physical constants.
Static default value for physical constants Zero gives instantaneous force and torque balances — no solid intertia.
Definition at line 626 of file immersed_rigid_body_elements.h.
|
staticprivate |
Static default value for physical ratios.
Static default value for physical ratio.
Definition at line 629 of file immersed_rigid_body_elements.h.
|
private |
Density ratio of the solid to the external fluid.
Definition at line 623 of file immersed_rigid_body_elements.h.
Referenced by density_ratio(), and density_ratio_pt().
|
private |
Boolean flag to indicate whether data is internal.
Definition at line 639 of file immersed_rigid_body_elements.h.
Referenced by centre_displacement_local_eqn(), initialise(), and ~ImmersedRigidBodyElement().
|
private |
Mesh containing face elements that allow the computation of the drag on the body.
Definition at line 608 of file immersed_rigid_body_elements.h.
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.
Definition at line 600 of file immersed_rigid_body_elements.h.
Referenced by external_force_fct_pt(), and get_force_and_torque().
|
private |
Function pointer to function that specifies external torque.
Definition at line 604 of file immersed_rigid_body_elements.h.
Referenced by external_torque_fct_pt(), and get_force_and_torque().
|
private |
The direction of gravity.
Definition at line 611 of file immersed_rigid_body_elements.h.
|
private |
Underlying geometric object.
Definition at line 596 of file immersed_rigid_body_elements.h.
Referenced by dposition_dt(), and position().
|
private |
Boolean to indicate that the rotation variable does not affect the boundary shape.
Definition at line 643 of file immersed_rigid_body_elements.h.
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.
Definition at line 636 of file immersed_rigid_body_elements.h.
Referenced by centre_displacement_local_eqn(), and initialise().
|
protected |
X-coordinate of initial centre of gravity.
Definition at line 579 of file immersed_rigid_body_elements.h.
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.
Definition at line 582 of file immersed_rigid_body_elements.h.
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.
Definition at line 559 of file immersed_rigid_body_elements.h.
Referenced by delete_external_hijacked_data(), and set_drag_mesh().
|
protected |
Definition at line 585 of file immersed_rigid_body_elements.h.
Referenced by get_residuals_rigid_body_generic(), oomph::ImmersedRigidBodyTriangleMeshPolygon::ImmersedRigidBodyTriangleMeshPolygon(), and mass_shape().
|
protected |
Polar moment of inertia of body.
Definition at line 588 of file immersed_rigid_body_elements.h.
Referenced by get_residuals_rigid_body_generic(), oomph::ImmersedRigidBodyTriangleMeshPolygon::ImmersedRigidBodyTriangleMeshPolygon(), and moment_of_inertia_shape().
|
private |
Reynolds number of external fluid.
Definition at line 614 of file immersed_rigid_body_elements.h.
|
private |
Reynolds number divided by Froude number of external fluid.
Definition at line 620 of file immersed_rigid_body_elements.h.
Referenced by re_invfr(), and re_invfr_pt().
|
private |
Strouhal number of external fluid.
Definition at line 617 of file immersed_rigid_body_elements.h.