7#include <janus/math/Linalg.hpp>
8#include <janus/math/Logic.hpp>
9#include <janus/math/Trig.hpp>
27template <
typename Scalar>
29 return Scalar(0.5) * density * velocity * velocity;
42template <
typename Scalar>
43Scalar
mach_number(
const Scalar &velocity,
const Scalar &speed_of_sound) {
44 return velocity / speed_of_sound;
59template <
typename Scalar>
61 const Scalar &length,
const Scalar &viscosity) {
62 return density * velocity * length / viscosity;
75template <
typename Scalar>
76Scalar
airspeed(
const Vec3<Scalar> &velocity_ground,
77 const Vec3<Scalar> &velocity_wind) {
78 Vec3<Scalar> v_air = velocity_ground - velocity_wind;
79 return janus::norm(v_air);
89template <
typename Scalar> Scalar
airspeed(
const Vec3<Scalar> &velocity) {
90 return janus::norm(velocity);
112template <
typename Scalar>
114 Scalar vx = velocity_body(0);
115 Scalar vy = velocity_body(1);
116 Scalar vz = velocity_body(2);
119 Scalar v_total = janus::norm(velocity_body);
120 Scalar eps = Scalar(1e-10);
121 Scalar is_zero = v_total < eps;
125 Scalar alpha = janus::atan2(vz, vx);
126 alpha = janus::where(is_zero, Scalar(0), alpha);
130 Scalar beta = janus::asin(vy / v_total);
131 beta = janus::where(is_zero, Scalar(0), beta);
134 angles << alpha, beta;
170template <
typename Scalar>
172aero_state(
const Scalar &density,
const Scalar &speed_of_sound,
173 const Scalar &viscosity,
const Vec3<Scalar> &velocity_body,
174 const Scalar &char_length) {
Definition Aerodynamics.hpp:11
Scalar airspeed(const Vec3< Scalar > &velocity_ground, const Vec3< Scalar > &velocity_wind)
Compute airspeed from ground velocity and wind.
Definition Aerodynamics.hpp:76
Scalar mach_number(const Scalar &velocity, const Scalar &speed_of_sound)
Mach number.
Definition Aerodynamics.hpp:43
AeroState< Scalar > aero_state(const Scalar &density, const Scalar &speed_of_sound, const Scalar &viscosity, const Vec3< Scalar > &velocity_body, const Scalar &char_length)
Compute complete aerodynamic state.
Definition Aerodynamics.hpp:172
Vec2< Scalar > aero_angles(const Vec3< Scalar > &velocity_body)
Compute aerodynamic angles from velocity in body frame.
Definition Aerodynamics.hpp:113
Scalar dynamic_pressure(const Scalar &density, const Scalar &velocity)
Dynamic pressure.
Definition Aerodynamics.hpp:28
Scalar reynolds_number(const Scalar &density, const Scalar &velocity, const Scalar &length, const Scalar &viscosity)
Reynolds number.
Definition Aerodynamics.hpp:60
Complete aerodynamic state at a flight condition.
Definition Aerodynamics.hpp:150
Scalar airspeed
Airspeed magnitude [m/s].
Definition Aerodynamics.hpp:154
Scalar beta
Sideslip angle [rad].
Definition Aerodynamics.hpp:156
Scalar reynolds
Reynolds number [-].
Definition Aerodynamics.hpp:153
Scalar dynamic_pressure
Dynamic pressure [Pa].
Definition Aerodynamics.hpp:151
Scalar mach
Mach number [-].
Definition Aerodynamics.hpp:152
Scalar alpha
Angle of attack [rad].
Definition Aerodynamics.hpp:155