This class provides the effect of viscousity on the hull of lighter-than-air vehicles such as airships. The equations implemented is based on the work published in [1], which describes a modeling approach for the nonlinear dynamics simulation of airships and [2] providing more insight of the modelling of an airship. More...
#include <LighterThanAirDynamics.hh>
Public Member Functions | |
LighterThanAirDynamics () | |
Constructor. More... | |
~LighterThanAirDynamics () override | |
Destructor. More... | |
math::Vector3d | AddedMassForce (math::Vector3d lin_vel, math::Vector3d ang_vel, math::Matrix3d m11, math::Matrix3d m12) |
Calculates the potential flow aerodynamic torques that a LTA vehicle experience when moving in a potential fluid. The aerodynamic torques is derived using Kirchoff's equation. More... | |
math::Vector3d | AddedMassTorque (math::Vector3d lin_vel, math::Vector3d ang_vel, math::Matrix3d m11, math::Matrix3d m12, math::Matrix3d m21, math::Matrix3d m22) |
Calculates the potential flow aerodynamic forces that a LTA vehicle experience when moving in a potential fluid. The aerodynamic force is derived using Kirchoff's equation. More... | |
void | Configure (const Entity &_entity, const std::shared_ptr< const sdf::Element > &_sdf, EntityComponentManager &_ecm, EventManager &) override |
Documentation inherited. More... | |
double | DynamicPressure (math::Vector3d vec, double air_density) |
Calculates dynamic pressure. More... | |
math::Vector3d | LocalVelocity (math::Vector3d lin_vel, math::Vector3d ang_vel, math::Vector3d dist) |
Calculates the local velocity at an offset from a origin. More... | |
void | PreUpdate (const UpdateInfo &_info, EntityComponentManager &_ecm) override |
Documentation inherited. More... | |
math::Matrix3d | SkewSymmetricMatrix (math::Vector3d mat) |
Skew-symmetric matrices can be used to represent cross products as matrix multiplications. More... | |
Public Member Functions inherited from System | |
System ()=default | |
Constructor. More... | |
virtual | ~System ()=default |
Destructor. More... | |
Additional Inherited Members | |
Public Types inherited from System | |
using | PriorityType = int32_t |
Signed integer type used for specifying priority of the execution order of PreUpdate and Update phases. More... | |
Static Public Attributes inherited from System | |
constexpr static PriorityType | kDefaultPriority = {0} |
Default priority value for execution order of the PreUpdate and Update phases. More... | |
constexpr static std::string_view | kPriorityElementName |
Name of the XML element from which the priority value will be parsed. More... | |
Detailed Description
This class provides the effect of viscousity on the hull of lighter-than-air vehicles such as airships. The equations implemented is based on the work published in [1], which describes a modeling approach for the nonlinear dynamics simulation of airships and [2] providing more insight of the modelling of an airship.
System Parameters
<air_density>
sets the density of air that surrounds the buoyant object. [Units: kgm^-3]<force_invisc_coeff
is the first coefficient in Eq (11) in [1]: \( (k_2 - k_1) \cdot \int_{\varepsilon_{0}}^{L} \frac{dS}{d\varepsilon} \,d\varepsilon \)<force_visc_coeff>
is the second coefficient in Eq (11) in [1]: \( \eta C_{DC} \cdot \int_{\varepsilon_{0}}^{L} 2R \,d\varepsilon \)<moment_invisc_coeff
is the first coefficient in Eq (14) in [1]: \( (k_2 - k_1) \cdot \int_{\varepsilon_{0}}^{L} \frac{dS}{d\varepsilon} (\varepsilon_{m} - \varepsilon) \,d\varepsilon \)<moment_visc_coeff>
is the second coefficient in Eq (14) in [1]: \( \eta C_{DC} \cdot \int_{\varepsilon_{0}}^{L} 2R (\varepsilon_{m} - \varepsilon) \,d\varepsilon \)<eps_v>
is the point on the hull where the flow ceases being potential<axial_drag_coeff>
the actual drag coefficient of the hull
Notes
This class only implements the viscous effects on the hull of an airship and currently does not take into the account wind. This class should be used in combination with the boyuancy, added mass and gravity plugins to simulate the behaviour of an airship. Its important to provide a collision property to the hull, since this is from which the buoyancy plugin determines the volume.
Citations
[1] Li, Y., & Nahon, M. (2007). Modeling and simulation of airship dynamics. Journal of Guidance, Control, and Dynamics, 30(6), 1691–1700.
[2] Li, Y., Nahon, M., & Sharf, I. (2011). Airship dynamics modeling: A literature review. Progress in Aerospace Sciences, 47(3), 217–239.
Constructor & Destructor Documentation
◆ LighterThanAirDynamics()
Constructor.
◆ ~LighterThanAirDynamics()
|
override |
Destructor.
Member Function Documentation
◆ AddedMassForce()
math::Vector3d AddedMassForce | ( | math::Vector3d | lin_vel, |
math::Vector3d | ang_vel, | ||
math::Matrix3d | m11, | ||
math::Matrix3d | m12 | ||
) |
Calculates the potential flow aerodynamic torques that a LTA vehicle experience when moving in a potential fluid. The aerodynamic torques is derived using Kirchoff's equation.
- Parameters
-
[in] lin_vel - The body linear velocity [in] ang_vel - The body angular velocity [in] m11 - The left upper [3x3] matrix of the added mass matrix [in] m12 - The right upper [3x3] matrix of the added mass matrix
- Returns
- The aerodynamic torque
◆ AddedMassTorque()
math::Vector3d AddedMassTorque | ( | math::Vector3d | lin_vel, |
math::Vector3d | ang_vel, | ||
math::Matrix3d | m11, | ||
math::Matrix3d | m12, | ||
math::Matrix3d | m21, | ||
math::Matrix3d | m22 | ||
) |
Calculates the potential flow aerodynamic forces that a LTA vehicle experience when moving in a potential fluid. The aerodynamic force is derived using Kirchoff's equation.
- Parameters
-
[in] lin_vel - The body linear velocity [in] ang_vel - The body angular velocity [in] m11 - The left upper [3x3] matrix of the added mass matrix [in] m12 - The right upper [3x3] matrix of the added mass matrix [in] m21 - The left lower [3x3] matrix of the added mass matrix [in] m22 - The right lower [3x3] matrix of the added mass matrix
- Returns
- The aerodynamic force.
◆ Configure()
|
overridevirtual |
Documentation inherited.
Implements ISystemConfigure.
◆ DynamicPressure()
double DynamicPressure | ( | math::Vector3d | vec, |
double | air_density | ||
) |
Calculates dynamic pressure.
- Parameters
-
[in] vec - The linear velocity [in] air_density - The air density [kg/m^3]
- Returns
- The dynamic pressure, q
◆ LocalVelocity()
math::Vector3d LocalVelocity | ( | math::Vector3d | lin_vel, |
math::Vector3d | ang_vel, | ||
math::Vector3d | dist | ||
) |
Calculates the local velocity at an offset from a origin.
- Parameters
-
[in] lin_vel - The linear body velocity [in] ang_vel - The angular body velocity [in] dist - The distance vector from the origin
- Returns
- The local velocity at the distance vector
◆ PreUpdate()
|
overridevirtual |
Documentation inherited.
Implements ISystemPreUpdate.
◆ SkewSymmetricMatrix()
math::Matrix3d SkewSymmetricMatrix | ( | math::Vector3d | mat | ) |
Skew-symmetric matrices can be used to represent cross products as matrix multiplications.
- Parameters
-
[in] mat - A [3x1] vector
- Returns
- The skew-symmetric matrix of mat
The documentation for this class was generated from the following file: