Skip to content

Commit 627f6d9

Browse files
author
Arjit Seth
authored
Merge pull request #137 from GodotMisogi/develop
Version 0.4.10: Minor bugfixes
2 parents b220e10 + 8370ec3 commit 627f6d9

25 files changed

+314
-280
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "AeroFuse"
22
uuid = "477c59f4-51f5-487f-bf1e-8db39645b227"
33
authors = ["GodotMisogi <[email protected]>"]
4-
version = "0.4.9"
4+
version = "0.4.10"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ If you use AeroFuse in your research, please cite the following until any releva
6969
author = {Arjit Seth, Rhea P. Liem},
7070
title = {AeroFuse},
7171
url = {https://github.com/GodotMisogi/AeroFuse},
72-
version = {0.4.9},
73-
date = {2023-04-10},
72+
version = {0.4.10},
73+
date = {2023-05-02},
7474
}
7575
```

docs/Project.toml

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"
33
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
44
DocumenterTools = "35a29f4d-8980-5a13-9543-d66fff28ecb8"
5-
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
65
LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
76
Literate = "98b081ad-f1c9-55d3-8b20-4c87d4299306"
87
PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5"

docs/lit/howto.jl

+2-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ locs = panel_location.(panels); # Upper or lower surface
9393
#
9494
# To define a wing, AeroFuse provides a `Wing` constructor based on the following parametrization. The named arguments correspond to the foil shapes, chord and span lengths, twist, dihedral and sweep angles.
9595
# !!! info
96-
# A **wing section** consists of two foil profiles and their chord lengths and twist angles. Between them is their span length with associated _leading-edge_ dihedral and sweep angles. So a general half-wing consisting of ``n`` sections will have ``n`` entries for spans $b$, dihedrals $\delta$, sweeps $\Lambda$, and ``n+1`` entries for foils, chords $c$, and twists $\iota$, for some ``n \in \mathbb N``.
96+
# A **wing section** consists of two foil profiles and their chord lengths and twist angles. Between them is their span length with associated _leading-edge_ dihedral and sweep angles. So a general half-wing consisting of ``n`` sections will have ``n`` entries for spans $b$, dihedrals $\delta$, sweeps $\Lambda$, and ``n+1`` entries for foils, chords $c$, and twists $\iota$, for some ``n \in \mathbb N``.
9797
#
9898
# ![](https://godot-bloggy.xyz/post/diagrams/WingGeometry.svg)
9999
airfoil = naca4((2,4,1,2))
@@ -302,8 +302,7 @@ Fs, Ms = surface_dynamics(system; axes = ax)
302302
# A Trefftz plane integration is performed to compute farfield forces.
303303
#
304304
# !!! note
305-
# The farfield forces are usually more accurate compared to nearfield forces.
306-
# (This is because the components do not interact as in the evaluation of the Biot-Savart integrals for the latter.)
305+
# The farfield forces are usually more accurate compared to nearfield forces.
307306
#
308307
# To obtain the nearfield coefficients of the components (in wind axes by definition):
309308
nfs = nearfield_coefficients(system)

docs/lit/tutorials-stability.jl

+4-3
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ fs = Freestream(
170170
# Similarly, define the reference values. Here, the reference flight condition will be set to Mach number $M = 0.84$.
171171
M = 0.84 # Mach number
172172
refs = References(
173+
sound_speed = 330.,
173174
speed = M * 330.,
174175
density = 1.225,
175176
span = b_w,
@@ -201,11 +202,11 @@ dvs = freestream_derivatives(
201202
# You can access the derivatives of each lifting surface based on the keys defined in the `ComponentVector`.
202203
ac_dvs = dvs.aircraft
203204

204-
# These quantities are the force and moment coefficients $(C_X, C_Y, C_Z, C_l, C_m, C_n, C_{D_{i,ff}}, C_{Y_{ff}} C_{L_{ff}})$ generated from the nearfield and farfield analyses, and their derivatives respect to the Mach number $M$, freestream angles of attack and sideslip $(\alpha, \beta)$, and the non-dimensional angular velocity rates $(\bar{p}, \bar{q}, \bar{r})$. The keys corresponding to the freestream derivatives should be evident:
205+
# These quantities are the force and moment coefficients $(C_X, C_Y, C_Z, C_l, C_m, C_n, C_{D_{i,ff}}, C_{Y_{ff}} C_{L_{ff}})$ generated from the nearfield and farfield analyses, and their derivatives respect to the Mach number $M$, freestream angles of attack and sideslip $(\alpha, \beta)$, and the non-dimensional angular velocity rates in stability axes $(\bar{p}, \bar{q}, \bar{r})$. The keys corresponding to the freestream derivatives should be evident:
205206
keys(dvs.aircraft)
206207

207208
# These can be accessed either like a dictionary, or by 'dot' syntax.
208-
ac_dvs[:CZ_al], ac_dvs.CZ_al, ac_dvs.CLff_al # Lift coefficient derivative wrt. alpha
209+
ac_dvs[:CZ_al], ac_dvs.CZ_al, ac_dvs.CL_al # Lift coefficient derivative wrt. alpha
209210

210211
# Note that the nearfield forces and moments $(C_X, C_Y, C_Z, C_l, C_m, C_n)$ depend on the axis system used ($C_Z$ is not lift if body axes are used!). You can also pretty-print the derivatives for each surface.
211212
print_derivatives(dvs.aircraft, "Aircraft", farfield = true)
@@ -241,7 +242,7 @@ stab_plt = plot(
241242
xaxis = L"x", yaxis = L"y", zaxis = L"z",
242243
aspect_ratio = 1,
243244
zlim = (-0.5, 0.5) .* span(wing_mesh),
244-
camera = (0,90),
245+
camera = (30,60),
245246
)
246247
plot!(fuse, label = "Fuselage", alpha = 0.6)
247248
plot!(stab_plt, wing_mesh, label = "Wing", mac = false)

docs/src/howto.md

+1-2
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ How to work with wing geometry.
130130

131131
To define a wing, AeroFuse provides a `Wing` constructor based on the following parametrization. The named arguments correspond to the foil shapes, chord and span lengths, twist, dihedral and sweep angles.
132132
!!! info
133-
A **wing section** consists of two foil profiles and their chord lengths and twist angles. Between them is their span length with associated _leading-edge_ dihedral and sweep angles. So a general half-wing consisting of ``n`` sections will have ``n`` entries for spans $b$, dihedrals $\delta$, sweeps $\Lambda$, and ``n+1`` entries for foils, chords $c$, and twists $\iota$, for some ``n \in \mathbb N``.
133+
A **wing section** consists of two foil profiles and their chord lengths and twist angles. Between them is their span length with associated _leading-edge_ dihedral and sweep angles. So a general half-wing consisting of ``n`` sections will have ``n`` entries for spans $b$, dihedrals $\delta$, sweeps $\Lambda$, and ``n+1`` entries for foils, chords $c$, and twists $\iota$, for some ``n \in \mathbb N``.
134134

135135
![](https://godot-bloggy.xyz/post/diagrams/WingGeometry.svg)
136136

@@ -393,7 +393,6 @@ A Trefftz plane integration is performed to compute farfield forces.
393393

394394
!!! note
395395
The farfield forces are usually more accurate compared to nearfield forces.
396-
(This is because the components do not interact as in the evaluation of the Biot-Savart integrals for the latter.)
397396

398397
To obtain the nearfield coefficients of the components (in wind axes by definition):
399398

docs/src/index.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ If you use AeroFuse in your research, please cite the following until any releva
6161
author = {Arjit Seth, Rhea P. Liem},
6262
title = {AeroFuse},
6363
url = {https://github.com/GodotMisogi/AeroFuse},
64-
version = {0.4.9},
65-
date = {2023-03-27},
64+
version = {0.4.10},
65+
date = {2023-05-02},
6666
}
6767
```
6868

docs/src/tutorials-stability.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ Similarly, define the reference values. Here, the reference flight condition wil
201201
````@example tutorials-stability
202202
M = 0.84 # Mach number
203203
refs = References(
204-
speed = 0.84 * 330.,
204+
speed = M * 330.,
205205
density = 1.225,
206206
span = b_w,
207207
area = S_w,
@@ -253,16 +253,16 @@ keys(dvs.aircraft)
253253
These can be accessed either like a dictionary, or by 'dot' syntax.
254254

255255
````@example tutorials-stability
256-
ac_dvs[:CZ_al], ac_dvs.CZ_al, ac_dvs.CLff_al # Lift coefficient derivative wrt. alpha
256+
ac_dvs[:CZ_al], ac_dvs.CZ_al, ac_dvs.CL_al # Lift coefficient derivative wrt. alpha
257257
````
258258

259259
Note that the nearfield forces and moments $(C_X, C_Y, C_Z, C_l, C_m, C_n)$ depend on the axis system used ($C_Z$ is not lift if body axes are used!). You can also pretty-print the derivatives for each surface.
260260

261261
````@example tutorials-stability
262-
print_derivatives(dvs.aircraft, "Aircraft")
263-
print_derivatives(dvs.wing, "Wing")
264-
print_derivatives(dvs.htail, "Horizontal Tail")
265-
print_derivatives(dvs.vtail, "Vertical Tail")
262+
print_derivatives(dvs.aircraft, "Aircraft", farfield = true)
263+
print_derivatives(dvs.wing, "Wing", farfield = true)
264+
print_derivatives(dvs.htail, "Horizontal Tail", farfield = true)
265+
print_derivatives(dvs.vtail, "Vertical Tail", farfield = true)
266266
````
267267

268268
## Static Stability Analysis
@@ -298,7 +298,7 @@ stab_plt = plot(
298298
xaxis = L"x", yaxis = L"y", zaxis = L"z",
299299
aspect_ratio = 1,
300300
zlim = (-0.5, 0.5) .* span(wing_mesh),
301-
camera = (0,90),
301+
camera = (30,60),
302302
)
303303
plot!(fuse, label = "Fuselage", alpha = 0.6)
304304
plot!(stab_plt, wing_mesh, label = "Wing", mac = false)

examples/aerodynamics/3d_vortex_lattice_method/vlm_aircraft.jl

+28-20
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ htail = Wing(
2727
dihedrals = [0.],
2828
sweeps = [6.39],
2929
position = [4., 0, -0.1],
30-
angle = -2.,
30+
angle = -2,
3131
axis = [0., 1., 0.],
3232
symmetry = true
3333
)
@@ -64,7 +64,7 @@ aircraft = ComponentVector(
6464

6565
## Case
6666
fs = Freestream(
67-
alpha = 4.0,
67+
alpha = 3.0,
6868
beta = 0.0,
6969
omega = [0., 0., 0.]
7070
);
@@ -85,15 +85,21 @@ ref = References(
8585
compressible = true, # Compressibility correction flag
8686
print = true, # Prints the results for only the aircraft
8787
print_components = true, # Prints the results for all components
88-
);
88+
)
8989

9090
## Compute forces, moments and velocities over each surface
91-
ax_sys = Wind() # Axis systems: Geometry(), Stability(), Body()
92-
@time CFs, CMs = surface_coefficients(sys; axes = ax_sys) # Coefficients
91+
92+
# Axis system for reporting forces and moments of surfaces (not nearfield and farfield)
93+
# Available axis systems: Geometry(), Stability(), Body(), Wind()
94+
ax = Wind() # Custom choice of axes
95+
96+
@time CFs, CMs = surface_coefficients(sys;
97+
axes = ax
98+
) # Coefficients
9399
# Fs, Ms = surface_dynamics(sys; axes = ax) # Forces and moments
94100
# Fs = surface_forces(sys; axes = ax) # Forces only
95101
# vels = surface_velocities(sys) # Velocities
96-
102+
;
97103
## Aerodynamic coefficients
98104
nf = nearfield(sys)
99105
ff = farfield(sys)
@@ -103,35 +109,35 @@ ffs = farfield_coefficients(sys)
103109

104110
## Force/moment coefficients and derivatives
105111
@time dvs = freestream_derivatives(sys;
106-
axes = ax_sys,
112+
axes = Stability(), # Optional for changing the axes
107113
print = true,
108114
print_components = true,
109-
farfield = true
115+
farfield = true # Farfield coefficients and derivatives
110116
);
111117

112-
## Viscous drag prediction
118+
## Parasitic drag estimation
113119

114-
# Equivalent flat-plate skin friction estimation
115-
CDv_wing = parasitic_drag_coefficient(wing, sys.reference, 0.8)
116-
CDv_htail = parasitic_drag_coefficient(htail, sys.reference, 0.6)
117-
CDv_vtail = parasitic_drag_coefficient(vtail, sys.reference, 0.6)
120+
# Wetted-area method via equivalent flat-plate skin-friction
121+
CDp_wing = parasitic_drag_coefficient(wing, sys.reference, 0.5)
122+
CDp_htail = parasitic_drag_coefficient(htail, sys.reference, 0.0)
123+
CDp_vtail = parasitic_drag_coefficient(vtail, sys.reference, 0.0)
118124

119-
CDv_plate = CDv_wing + CDv_htail + CDv_vtail
125+
CDp_plate = CDp_wing + CDp_htail + CDp_vtail
120126

121-
## Local dissipation form factor friction estimation
127+
## Wetted-area method via local-friction and local-dissipation
122128
import LinearAlgebra: norm
123129

124130
edge_speeds = norm.(surface_velocities(sys)); # Inviscid speeds on the surfaces
125131

126132
# Drag coefficients
127-
CDvd_wing = parasitic_drag_coefficient(wing_mesh, sys.reference, 0.8, edge_speeds.wing)
128-
CDvd_htail = parasitic_drag_coefficient(htail_mesh, sys.reference, 0.6, edge_speeds.htail)
129-
CDvd_vtail = parasitic_drag_coefficient(vtail_mesh, sys.reference, 0.6, edge_speeds.vtail)
133+
CDpd_wing = parasitic_drag_coefficient(wing_mesh, sys.reference, 0.5, edge_speeds.wing)
134+
CDpd_htail = parasitic_drag_coefficient(htail_mesh, sys.reference, 0.0, edge_speeds.htail)
135+
CDpd_vtail = parasitic_drag_coefficient(vtail_mesh, sys.reference, 0.0, edge_speeds.vtail)
130136

131-
CDv_diss = CDvd_wing + CDvd_htail + CDvd_vtail
137+
CDp_diss = CDpd_wing + CDpd_htail + CDpd_vtail
132138

133139
## Viscous drag coefficient
134-
CDv = CDv_diss
140+
CDp = CDp_diss
135141

136142
## Total force coefficients with empirical viscous drag prediction
137143
CDi_nf, CY_nf, CL_nf, Cl, Cm, Cn = nf = nearfield(sys)
@@ -142,6 +148,8 @@ ff_v = [ CDi_ff + CDv; CDv; ff ]
142148

143149
print_coefficients(nf_v, ff_v)
144150

151+
@info "L/D" ff_v[5] / ff_v[1]
152+
145153
## Plotting
146154
#=========================================================#
147155

examples/aerodynamics/3d_vortex_lattice_method/vlm_benchmark.jl

+12-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using BenchmarkTools
33

44
## BYU Flow
5-
using VortexLattice
5+
import VortexLattice
66

77
function vlm_byu()
88
# Simple Wing with Uniform Spacing
@@ -24,33 +24,31 @@ function vlm_byu()
2424
Vinf = 1.0
2525
ref = VortexLattice.Reference(Sref, cref, bref, rref, Vinf)
2626

27-
alpha = 1.0*pi/180
28-
beta = 0.0
27+
alpha = 2.0*pi/180
28+
beta = 4.0*pi/180
2929
Omega = [0.0; 0.0; 0.0]
3030
fs = VortexLattice.Freestream(Vinf, alpha, beta, Omega)
3131

3232
# vortex rings with mirrored geometry
3333
mirror = true
3434
symmetric = false
3535

36-
_, surface = wing_to_surface_panels(xle, yle, zle, chord, theta, phi, ns, nc;
36+
_, surface = VortexLattice.wing_to_surface_panels(xle, yle, zle, chord, theta, phi, ns, nc;
3737
mirror=mirror, spacing_s=spacing_s, spacing_c=spacing_c)
3838

3939
surfaces = [surface]
4040

41-
system = steady_analysis(surfaces, ref, fs; symmetric=symmetric)
41+
system = VortexLattice.steady_analysis(surfaces, ref, fs; symmetric=symmetric)
4242

43-
CF, CM = body_forces(system; frame=VortexLattice.Stability())
44-
CDiff = far_field_drag(system)
43+
CF, CM = VortexLattice.body_forces(system; frame=VortexLattice.Stability())
44+
CDiff = VortexLattice.far_field_drag(system)
4545

4646
return CF, CM, CDiff, system
4747
end
4848

4949
##
5050
@time CF, CM, CDiff, byu_sys = vlm_byu();
5151

52-
print_coefficients([CF; CM], [CDiff,"",""], "BYU")
53-
5452
## AeroFuse.jl
5553
using AeroFuse
5654

@@ -72,8 +70,8 @@ function vlm_aerofuse()
7270

7371
# Freestream conditions
7472
fs = Freestream(
75-
alpha = 1.0, # deg
76-
beta = 0.0, # deg
73+
alpha = 2.0, # deg
74+
beta = 4.0, # deg
7775
omega = [0.,0.,0.]
7876
)
7977

@@ -89,7 +87,7 @@ function vlm_aerofuse()
8987
)
9088

9189
## Horseshoes
92-
ac_hs = ComponentVector(wing = make_horseshoes(wing_mesh))
90+
ac_hs = ComponentVector(wing = make_vortex_rings(wing_mesh))
9391
system = VortexLatticeSystem(ac_hs, fs, ref)
9492

9593
## Vortex rings
@@ -102,6 +100,8 @@ end
102100
##
103101
@time nfs, ffs, sys = vlm_aerofuse();
104102

103+
##
104+
print_coefficients([CF; CM], [CDiff,"",""], "BYU")
105105
print_coefficients(nfs, ffs, "AeroFuse")
106106

107107
## Results

src/AeroFuse.jl

+29-4
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,6 @@ export Fuselage, projected_area, length, cosine_interpolation, volume, HyperElli
111111
# Wing
112112
import .AircraftGeometry: Wing, WingSection, affine_transformation, mean_aerodynamic_chord, span, aspect_ratio, projected_area, taper_ratio, leading_edge, trailing_edge, chop_leading_edge, chop_trailing_edge, chop_wing, chop_sections, chop_coordinates, chop_spanwise_sections, chop_chords, chop_spans, make_panels, mesh_chords, mesh_wing, mesh_cambers, mean_aerodynamic_center, panel_wing, number_of_spanwise_panels, symmetric_spacing, coordinates, chord_coordinates, camber_coordinates, surface_coordinates, foils, chords, twists, spans, dihedrals, sweeps, position, orientation, WingMesh, chord_panels, camber_panels, surface_panels, AbstractSpacing, Sine, Cosine, Uniform, properties, wetted_area_ratio
113113

114-
# export Wing, WingSection
115-
116114
export Wing, WingSection, affine_transformation, mean_aerodynamic_chord, span, aspect_ratio, projected_area, taper_ratio, leading_edge, trailing_edge, chop_leading_edge, chop_trailing_edge, chop_wing, chop_sections, chop_coordinates, chop_spanwise_sections, chop_chords, chop_spans, make_panels, mesh_chords, mesh_wing, mesh_cambers, mean_aerodynamic_center, panel_wing, number_of_spanwise_panels, symmetric_spacing, coordinates, chord_coordinates, camber_coordinates, surface_coordinates, foils, chords, twists, spans, dihedrals, sweeps, position, orientation, WingMesh, chord_panels, camber_panels, surface_panels, AbstractSpacing, Sine, Cosine, Uniform, properties, wetted_area_ratio
117115

118116
# Surfaces
@@ -145,9 +143,36 @@ export total_velocity, source_velocity, vortex_velocity, vortex_influence_matrix
145143
## Vortex lattice
146144

147145
include("Aerodynamics/VortexLattice/VortexLattice.jl")
148-
import .VortexLattice: Horseshoe, AbstractVortexLatticeSystem, VortexLatticeSystem, References, AbstractAxisSystem, Stability, Wind, Body, Geometry, streamlines, influence_coefficient, influence_matrix, boundary_condition, solve_system, bound_leg_center, bound_leg_vector, control_point, Horseshoe, surface_velocity, surface_forces, surface_moments, nearfield_drag, geometry_to_wind_axes, geometry_to_stability_axes, stability_to_geometry_axes, wind_to_geometry_axes, rate_coefficient, nearfield, farfield, farfield_forces, surface_velocities, surface_forces, surface_dynamics, surface_coefficients, nearfield_coefficients, farfield_coefficients, VortexRing, velocity, kinematic_viscosity, mach_number, stream_velocity, center_of_pressure, freestream_derivatives!, freestream_derivatives, print_coefficients, print_derivatives
149146

150-
export Horseshoe, VortexLatticeSystem, References, AbstractAxisSystem, Stability, Wind, Body, Geometry, streamlines, influence_coefficient, influence_matrix, boundary_condition, solve_system, bound_leg_center, bound_leg_vector, control_point, Horseshoe, surface_velocity, surface_forces, surface_moments, nearfield_drag, geometry_to_wind_axes, geometry_to_stability_axes, stability_to_geometry_axes, wind_to_geometry_axes, rate_coefficient, nearfield, farfield, farfield_forces, surface_velocities, surface_forces, surface_dynamics, surface_coefficients, nearfield_coefficients, farfield_coefficients, VortexRing, velocity, kinematic_viscosity, mach_number, stream_velocity, center_of_pressure, freestream_derivatives!, freestream_derivatives, print_coefficients, print_derivatives
147+
# Vortex types
148+
import .VortexLattice: Horseshoe, VortexRing, velocity, bound_leg_center, bound_leg_vector, control_point
149+
150+
export Horseshoe, VortexRing, velocity, bound_leg_center, bound_leg_vector, control_point
151+
152+
# Reference values
153+
import .VortexLattice: References, kinematic_viscosity, mach_number
154+
155+
export References, kinematic_viscosity, mach_number
156+
157+
# Reference frames and traits
158+
import .VortexLattice: AbstractAxisSystem, Stability, Wind, Body, Geometry, geometry_to_wind_axes, geometry_to_stability_axes, stability_to_geometry_axes, wind_to_geometry_axes, wind_to_body_axes
159+
160+
export AbstractAxisSystem, Stability, Wind, Body, Geometry, geometry_to_wind_axes, geometry_to_stability_axes, stability_to_geometry_axes, wind_to_geometry_axes, wind_to_body_axes
161+
162+
# System methods
163+
import .VortexLattice: AbstractPotentialFlowSystem, VortexLatticeSystem, surface_velocity, surface_forces, surface_moments, nearfield_drag, rate_coefficient, nearfield, farfield, farfield_forces, surface_velocities, surface_forces, surface_dynamics, surface_coefficients, nearfield_coefficients, farfield_coefficients, center_of_pressure
164+
165+
export AbstractPotentialFlowSystem, VortexLatticeSystem, surface_velocity, surface_forces, surface_moments, nearfield_drag, rate_coefficient, nearfield, farfield, farfield_forces, surface_velocities, surface_forces, surface_dynamics, surface_coefficients, nearfield_coefficients, farfield_coefficients, center_of_pressure
166+
167+
# Derivatives
168+
import .VortexLattice: freestream_derivatives
169+
170+
export freestream_derivatives
171+
172+
# Post-prrocessing
173+
import .VortexLattice: print_coefficients, print_derivatives, streamlines
174+
175+
export print_coefficients, print_derivatives, streamlines
151176

152177
## Panel-VLM interface
153178
include("Aerodynamics/vlm_interface.jl")

0 commit comments

Comments
 (0)