Private Functions
VortexStepMethod.calculate_AIC_matrices!
— Functioncalculate_AIC_matrices!(body_aero::BodyAerodynamics, model::Model,
core_radius_fraction,
va_norm_array,
va_unit_array)
Calculate Aerodynamic Influence Coefficient matrices.
See also: BodyAerodynamics, Model
Returns: nothing
VortexStepMethod.update_panel_properties!
— Functionupdate_panel_properties!(panel_props::PanelProperties, section_list::Vector{Section}, n_panels::Int)
Update geometric properties for each panel.
Arguments
Returns:
nothing
, updates the PanelProperties in-place
VortexStepMethod.calculate_inertia_tensor
— Functioncalculate_inertia_tensor(vertices, faces, mass, com)
Calculate the inertia tensor for a triangulated surface mesh, assuming a thin shell with uniform surface density.
Arguments
vertices
: Vector of 3D point coordinates representing mesh verticesfaces
: Vector of triangle indices, each defining a face of the meshmass
: Total mass of the shell in kgcom
: Center of mass coordinates [x,y,z]
Method
Uses the thin shell approximation where:
- Mass is distributed uniformly over the surface area
- Each triangle contributes to the inertia based on its area and position
- For each triangle vertex p, contribution to diagonal terms is: area * (sum(p²) - p_i²)
- For off-diagonal terms: area * (-
p_i
*p_j
) - Final tensor is scaled by mass/(3*total_area) to get correct units
Returns
- 3×3 matrix representing the inertia tensor in kg⋅m²
VortexStepMethod.group_deform!
— Functiongroup_deform!(wing::RamAirWing, theta_angles::AbstractVector, delta_angles::AbstractVector)
Distribute control angles across wing panels and apply smoothing using a moving average filter.
Arguments
wing::RamAirWing
: The wing to deformtheta_angles::AbstractVector
: Twist angles in radians for each control sectiondelta_angles::AbstractVector
: Trailing edge deflection angles in radians for each control sectionsmooth::Bool
: Wether to apply smoothing or not
Algorithm
- Distributes each control input to its corresponding group of panels
- Applies moving average smoothing with window size based on control group size
Errors
- Throws
ArgumentError
if panel count is not divisible by the number of control inputs
Returns
nothing
(modifies wing in-place)