-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discuss about sweep angle when defining a wing #22
Comments
I've looked a bit into it, and I think there is not a bug. Maybe the way the wing is built is a bit confusing. Let me try to break it down: As is currently is (i.e. ignoring the -great- enhancement from #20) the wing is built using:
Then in I think the confusing fact here is the definition of the sweep angle tied to the quarter-chord line. I think I chose that due to legacy reasons (I think it was preferred at UPM, where I studied). If this is too unintuitive or not canon, I'm open to have a discussion and refactor this. If you run the simple example in the @jorgepiloto let me know if this makes sense to you :) PS: It is true I should've documented this a bit better, also the vectorization on 4-D arrays and absence of for-loops beyond the wing building method might make seem a bit obfuscated. On the latter, I might have got too excited using vectorized NumPy and einsums to squeeze performance; maybe Numba on more naive code would've made more sense for the sake of readability? who knows... at the time I committed to vectorization ;) (also open to discussion here) |
Oh! Swept angle is the one for 1/4 chord line 💡 You are completely right, sweep angle is defined for the 25% of the chord. However, from a building point of view and once defining a wing part, I think it is more usual to have the "leading edge sweep angle". Therefore, this is not a bug but a misunderstanding, as you pointed out. Let me change the title of the issue. What do you think we should use when defining a geometry? I can implement a function to convert between leading edge and 25% chord sweep angles, so user inputs the one for the LE but internally the one for 25% is used, so code is kept in the same way. Regarding vectorization, your |
This sounds super reasonable @jorgepiloto, if it's not too much extra work go for it :)
haha! good ol' tensor Einstein summation! it's very handy to express these kind of linalg operations in a concise way. The good thing is that GPU-enabled frameworks like TensorFlow, JAX, etc. support this operation, so you have guaranteed compatibility if you are in the need of squeezing even more performance via GPU parallelization. |
While working in #3, I just noticed that panels are not being generated properly since a local chord shift is being introduced:
ezaero/src/ezaero/vlm/steady.py
Lines 224 to 228 in a7c1f31
This shift should be introduced only within vortex rings, not on wing panels. The bug has not been identified early since for drawing actual geometry of the wing, panel matrix was used. I implemented a geometry visualizer which does not require from a simulation to be used, only needs wing parameters:
Notice how panels are not placed in proper place, they are shifted in the local chord direction. I was finally able to fix this issue, see:
Now panels adapt perfectly to geometry and collocation points are 3/4 of the local chord
The text was updated successfully, but these errors were encountered: