Implement general wing geometry
jorgepiloto opened this issue · comments
Let me propose an interesting upgrade: imagine we want to carry out a simulation on a general wing geometry like the one shown below:
At the moment, ezaero
is able to properly mesh and solve for trapezoidal lifting surfaces. This new feature would require a software refactoring, but any geometry could be generated!
I propose the following steps to achieve this new feature:
- Generate a
vlm/lifting_surface.py
module which holds the definition of aLiftingSurface
class. This class holds all geometrical definitions for a small trapezoidal section. It contains aplot()
method for showing the current geometry without having to run a simulation. Also, it includes a newr_offset
when building the object, which is the position vector of the leading edge of the root. This will enable to move the part along the global model geometry.
- Instead of a single wing, a list of
LiftingSurfaces
modeling the global geometry is passed to theSimulation
instance. Influence coefficient matrices are stacked and a global solution is finally achieved. Testing cases can be implemented from this online solver.
Let me now what you think about this new feature when possible, @partmor 👍
With previous presented approach, it is easy to model complex shapes:
wing_root = LiftingSurface(
r_offset = np.array([0,0,0]),
root_chord=1.5,
tip_chord=0.5,
planform_wingspan=4,
sweep_angle=30 * np.pi / 180,
dihedral_angle=15 * np.pi / 180,
)
wing_tip = LiftingSurface(
r_offset = wing_root.LE_tip,
root_chord=0.5,
tip_chord=0.1,
planform_wingspan=2,
sweep_angle=75 * np.pi / 180,
dihedral_angle=45 * np.pi / 180,
)
for part in [wing_root, wing_tip]:
fig = part.plot(fig)
fig.show()
Which outputs the following:
Hi @jorgepiloto!
I LOVE this proposal. You just aced one of the "that would be nice..." things I've had in my head for a while!
Please go ahead and open a PR whenever you like, and we can discuss together the needed refactors directly on the code ;)
Thank you again
In previous image, wake offset was reduced for a better visualization.
Great stuff!! Looking forward to seeing the final result! ^^
Hi @jorgepiloto just checking in; all good? if you need any help please reach out :)