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
ArgumentErrorif panel count is not divisible by the number of control inputs
Returns
nothing(modifies wing in-place)