Closed bharswami closed 4 years ago
I identified this section of code for computing moments. Hope you will be able to help me out and throw some light on this. Thanks.
**for j=1:nofderiv
IW(:,j,1)=DWX*gamma(:,j);
IW(:,j,2)=DWY*gamma(:,j);
IW(:,j,3)=DWZ*gamma(:,j);
G(:,1)=gamma(:,j).*lehat(:,1); %Aligning vorticity along panel vortex
G(:,2)=gamma(:,j).*lehat(:,2);
G(:,3)=gamma(:,j).*lehat(:,3);
wind1=state.AS*([cos(state.alpha)*cos(state.betha) -cos(state.alpha)*sin(state.betha) sin(state.alpha)]); %Aligning with wind
for i=1:a
Wind(i,:)=wind1-squeeze(IW(i,j,:))';
Rot(i,:)=cross((lattice.COLLOC(i,:)-geo.CG),[state.P state.Q state.R]); %Calculating rotations
end %^^^^^^^---new stuff in T131 %Thanks Luca for pointing out the error here
Wind=Wind+Rot; %Adding rotations
Fprim(:,j,:)=state.rho*cross(Wind,G); %Force per unit length
F(:,j,1)=Fprim(:,j,1).*Lle; %Force per panel
F(:,j,2)=Fprim(:,j,2).*Lle; %Force per panel
F(:,j,3)=Fprim(:,j,3).*Lle; %Force per panel
C3(:,:,1)=c3(:,1)*ones(1,nofderiv);
C3(:,:,2)=c3(:,2)*ones(1,nofderiv);
C3(:,:,3)=c3(:,3)*ones(1,nofderiv);
end
results.F=F;
results.FORCE=sum(F,1); %Total force
M=cross(C3,F,3); %Moments per panel
results.M=M;
results.MOMENTS=sum(M,1); %Summing up moments
results.gamma=gamma;
end**
In PyTornado, we compute a global moment vector, i.e. moments (Mx, My, Mz) about some reference point (RP). The RP position must be specified in the aircraft input file (see aircraft file).
For each panel in the VLM mesh a force vector is computed. The force acts in the middle of the quarter chord line (not collocation point/control point). The moment contribution of this force is the cross product of lever arm and force vector, and it is added up to the global moment vector.
Code implementation is found here:
Reference literature:
Please note, I cannot give any support on UVLM, since I do not know it in detail. I can only refer to the literature here, namely Katz and Plotkin, which I think is a good starting point:
Same for Matlab Tornado, I am afraid. I only know PyTornado and am happy to help with any issues related to this implementation. (I cannot answer everything here, but I try my best to help with what I know. I can only give support here in my limited free time, so don't always expect immediate answers. Thanks.)
Thanks for your reply. I really appreciate the time you take to help me out. Can you please tell me what is the BoundLegMidPoint? Is it the middle of the vortex element? I was not able to figure out from Drela's ref. you sent me. double P_x = lattice->BoundLegMidpoint[index_i ]; double P_y = lattice->BoundLegMidpoint[index_i + 1]; double P_z = lattice->BoundLegMidpoint[index_i + 2];
On Fri, Jan 3, 2020 at 1:37 PM Aaron Dettmann notifications@github.com wrote:
In PyTornado, we compute a global moment vector, i.e. moments (Mx, My, Mz) about the aircraft's centre of gravity (CG). The CG position must be specified in the aircraft input file (see aircraft file https://pytornado.readthedocs.io/en/latest/user_guide/input_file_aircraft.html ).
For each panel in the VLM mesh a force vector is computed. The force acts in the middle of the quarter chord line (not collocation point/control point). The moment contribution of this force is the cross product of lever arm and force vector, and it is added up to the global moment vector.
Code implementation is found here:
Reference literature:
- Drela, Mark: Flight Vehicle Aerodynamics. Cambridge, Massachusetts: MIT Press, 2014. - ISBN 978-0-262-52644-9
Please note, I cannot give any support on UVLM, since I do not know it in detail. I can only refer to the literature here, namely Katz and Plotkin, which I think is a good starting point:
- Katz, J. ; Plotkin, A.: Low-Speed Aerodynamics. 2. Cambridge University Press, 2001 (Cambridge Aerospace Series). http://dx.doi.org/10.1017/CBO9780511810329 http://dx.doi.org/10.1017/CBO9780511810329. – ISBN 978-0-521-66219-2
Same for Matlab Tornado, I am afraid. I only know PyTornado and am happy to help with any issues related to this implementation. (I cannot answer everything here, but I try my best to help with what I know. I can only give support here in my limited free time, so don't always expect immediate answers. Thanks.)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5APYMIZKZYVUEBDLJBTQ36V25A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICEPMA#issuecomment-570705840, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AO4VMGVCVSQFMX2MJ3Q36V25ANCNFSM4KCPKULA .
Is it the middle of the quarter chord line?
On Fri, Jan 3, 2020 at 7:43 PM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Thanks for your reply. I really appreciate the time you take to help me out. Can you please tell me what is the BoundLegMidPoint? Is it the middle of the vortex element? I was not able to figure out from Drela's ref. you sent me. double P_x = lattice->BoundLegMidpoint[index_i ]; double P_y = lattice->BoundLegMidpoint[index_i + 1]; double P_z = lattice->BoundLegMidpoint[index_i + 2];
On Fri, Jan 3, 2020 at 1:37 PM Aaron Dettmann notifications@github.com wrote:
In PyTornado, we compute a global moment vector, i.e. moments (Mx, My, Mz) about the aircraft's centre of gravity (CG). The CG position must be specified in the aircraft input file (see aircraft file https://pytornado.readthedocs.io/en/latest/user_guide/input_file_aircraft.html ).
For each panel in the VLM mesh a force vector is computed. The force acts in the middle of the quarter chord line (not collocation point/control point). The moment contribution of this force is the cross product of lever arm and force vector, and it is added up to the global moment vector.
Code implementation is found here:
Reference literature:
- Drela, Mark: Flight Vehicle Aerodynamics. Cambridge, Massachusetts: MIT Press, 2014. - ISBN 978-0-262-52644-9
Please note, I cannot give any support on UVLM, since I do not know it in detail. I can only refer to the literature here, namely Katz and Plotkin, which I think is a good starting point:
- Katz, J. ; Plotkin, A.: Low-Speed Aerodynamics. 2. Cambridge University Press, 2001 (Cambridge Aerospace Series). http://dx.doi.org/10.1017/CBO9780511810329 http://dx.doi.org/10.1017/CBO9780511810329. – ISBN 978-0-521-66219-2
Same for Matlab Tornado, I am afraid. I only know PyTornado and am happy to help with any issues related to this implementation. (I cannot answer everything here, but I try my best to help with what I know. I can only give support here in my limited free time, so don't always expect immediate answers. Thanks.)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5APYMIZKZYVUEBDLJBTQ36V25A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICEPMA#issuecomment-570705840, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AO4VMGVCVSQFMX2MJ3Q36V25ANCNFSM4KCPKULA .
Each panel in the VLM has a horseshoe vortex associated with it. Each horseshoe consists of three legs, a bound leg and two trailing legs. Drela or Katz and Plotkin describe this fairly detailed, and I have also added a short summary in the documentation including illustrations which should make the geometry pretty clear:
Thanks Aaron. So the moment arm is the distance from the midpoint of the quarter chord line of each panel to the reference point. I still find the moments computed from UVLM to be different from that of steady VLM.
On Sat, Jan 4, 2020 at 2:08 AM Aaron Dettmann notifications@github.com wrote:
Each panel in the VLM has a horseshoe vortex associated with it. Each horseshoe consists of three legs, a bound leg and two trailing legs. Drela or Katz and Plotkin describe this fairly detailed, and I have also added a short summary in the documentation including illustration which should make the geometry pretty clear:
[image: Discretisation] https://raw.githubusercontent.com/airinnova/pytornado/9300599f5f43258187a36e9a5b5f99df1c842d7d/docs/source/theory/_static/images/vlm_discretisation.svg?sanitize=true
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AI4YQNWSXFVW7JMSQ3Q4BNYVA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICU2WA#issuecomment-570772824, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AJRHZ7IYW2ZOYMTTX3Q4BNYVANCNFSM4KCPKULA .
So the moment arm is the distance from the midpoint of the quarter chord line of each panel to the reference point.
Yes, correct. If you have N panels, there will be N different lever arms, all connected to your chosen reference point.
Aaron, I am having some trouble with the UVLM code. I have expressions for lift and drag forces. Could you please check and tell me if they are right?
On Sat, Jan 4, 2020 at 5:14 AM Aaron Dettmann notifications@github.com wrote:
So the moment arm is the distance from the midpoint of the quarter chord line of each panel to the reference point.
Yes, correct. If you have N panels, there will be N different lever arms, all connected to your chosen reference point.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AM2VCKELXSZCXIOMV3Q4CDUZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICXY4Q#issuecomment-570784882, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALYKQBYGRDFWZSR6C3Q4CDUZANCNFSM4KCPKULA .
I know you mentioned you couldn't help out, but I am not familiar with VLM at all. So I thought you would be in a better position to help.
On Sat, Jan 4, 2020 at 9:56 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Aaron, I am having some trouble with the UVLM code. I have expressions for lift and drag forces. Could you please check and tell me if they are right?
On Sat, Jan 4, 2020 at 5:14 AM Aaron Dettmann notifications@github.com wrote:
So the moment arm is the distance from the midpoint of the quarter chord line of each panel to the reference point.
Yes, correct. If you have N panels, there will be N different lever arms, all connected to your chosen reference point.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AM2VCKELXSZCXIOMV3Q4CDUZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEICXY4Q#issuecomment-570784882, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALYKQBYGRDFWZSR6C3Q4CDUZANCNFSM4KCPKULA .
Hello Bharath, if you have doubts about the correctness of a UVLM implementation, wouldn't it be best to get in contact with the author/s of that program. They will probably know their implementation a lot better, and also know the references they may have used.
I have tried talking to Katz, but he seems to not have the time (being a professor and all). Since you are a VLM developer I thought you will have some quick answers. I just found out that my influence matrix between UVLM and PyTornado aren't the same. I wonder where I could have gone wrong.
On Sun, Jan 5, 2020 at 2:41 AM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, if you have doubts about the correctness of a UVLM implementation, wouldn't it be best to get in contact with the author/s of that program. They will probably know their implementation a lot better, and also know the references they may have used.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AM4I74KFSDVIY5PQXDQ4G2NDA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEIDTSJY#issuecomment-570898727, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AJ42OXAKCAPMBKY4ALQ4G2NDANCNFSM4KCPKULA .
Dear Aaron Could you please send the link of the code where the influence matrix is calculated? I hope you will be able to help me with the details of that. Bharath
On Sun, Jan 5, 2020 at 4:11 PM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, if you have doubts about the correctness of a UVLM implementation, wouldn't it be best to get in contact with the author/s of that program. They will probably know their implementation a lot better, and also know the references they may have used.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AM4I74KFSDVIY5PQXDQ4G2NDA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEIDTSJY#issuecomment-570898727, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AJ42OXAKCAPMBKY4ALQ4G2NDANCNFSM4KCPKULA .
Hello Bharath, sorry that I cannot be of any bigger help with your project at the moment.
The VLM influence coefficient matrix/downwash matrix is computed in C++ code here:
This function is called from Python via a wrapper function called py2c_downwash()
:
Again, the implementation is based on the book by Drela, 2014.
You have been of great help. No questions there. Thanks for the links.
On Fri, Jan 10, 2020 at 2:06 PM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, sorry that I cannot be of any bigger help with your project at the moment.
The VLM influence coefficient matrix/downwash matrix is computed in C++ code here:
This function is called from Python via a wrapper function called py2c_downwash():
Again, the implementation is based on the book by Drela, 2014.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AOGXJ72ASPBT776ZZLQ5AXP7A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEITDNNA#issuecomment-572929716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALECMHNHR4U6NK4C2LQ5AXP7ANCNFSM4KCPKULA .
Is the normal vector in the rotated configuration (after rotating by sideslip and angle of attack) or the initial configuration?
On Fri, Jan 10, 2020 at 2:06 PM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, sorry that I cannot be of any bigger help with your project at the moment.
The VLM influence coefficient matrix/downwash matrix is computed in C++ code here:
This function is called from Python via a wrapper function called py2c_downwash():
Again, the implementation is based on the book by Drela, 2014.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AOGXJ72ASPBT776ZZLQ5AXP7A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEITDNNA#issuecomment-572929716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALECMHNHR4U6NK4C2LQ5AXP7ANCNFSM4KCPKULA .
I would also like to view the downwash matrix. Is it possible to store it in a file?
On Sun, Jan 12, 2020 at 10:11 PM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Is the normal vector in the rotated configuration (after rotating by sideslip and angle of attack) or the initial configuration?
On Fri, Jan 10, 2020 at 2:06 PM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, sorry that I cannot be of any bigger help with your project at the moment.
The VLM influence coefficient matrix/downwash matrix is computed in C++ code here:
This function is called from Python via a wrapper function called py2c_downwash():
Again, the implementation is based on the book by Drela, 2014.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AOGXJ72ASPBT776ZZLQ5AXP7A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEITDNNA#issuecomment-572929716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALECMHNHR4U6NK4C2LQ5AXP7ANCNFSM4KCPKULA .
View => Get the values of the downwash matrix
On Mon, Jan 13, 2020 at 5:04 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
I would also like to view the downwash matrix. Is it possible to store it in a file?
On Sun, Jan 12, 2020 at 10:11 PM Bharath ae15d019 < ae15d019@smail.iitm.ac.in> wrote:
Is the normal vector in the rotated configuration (after rotating by sideslip and angle of attack) or the initial configuration?
On Fri, Jan 10, 2020 at 2:06 PM Aaron Dettmann notifications@github.com wrote:
Hello Bharath, sorry that I cannot be of any bigger help with your project at the moment.
The VLM influence coefficient matrix/downwash matrix is computed in C++ code here:
This function is called from Python via a wrapper function called py2c_downwash():
Again, the implementation is based on the book by Drela, 2014.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AOGXJ72ASPBT776ZZLQ5AXP7A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEITDNNA#issuecomment-572929716, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALECMHNHR4U6NK4C2LQ5AXP7ANCNFSM4KCPKULA .
Is the normal vector in the rotated configuration (after rotating by sideslip and angle of attack) or the initial configuration?
The final VLM mesh is computed in the C++ code, and here panel normal vectors are computed from the panel geometries. But to account for aerofoils or deflected control surfaces, the normals are modified in the Python code afterwards. The rotation is done using the Euler-Rodrigues formula. [This implementation is actually not optimal and may increase computation time a bit.]
Rotation of panel normals after mesh generation:
I would also like to view the downwash matrix. Is it possible to store it in a file?
So far there is no option to store the matrix. It can be accessed via the Python API. I can add support for storing the matrix in a file. I will see if I have time later today or tomorrow (but I cannot promise).
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
On Tue, Jan 14, 2020 at 3:22 PM Aaron Dettmann notifications@github.com wrote:
Is the normal vector in the rotated configuration (after rotating by sideslip and angle of attack) or the initial configuration?
The final VLM mesh is computed in the C++ code, and here panel normal vectors are computed from the panel geometries. But to account for aerofoils or deflected control surfaces, the normals are modified in the Python code afterwards. The rotation is done using the Euler-Rodrigues formula https://en.wikipedia.org/wiki/Euler%E2%80%93Rodrigues_formula. [This implementation is actually not optimal and may increase computation time a bit.]
Rotation of panel normals after mesh generation:
I would also like to view the downwash matrix. Is it possible to store it in a file?
So far there is no option to store the matrix. It can be accessed via the Python API. I can add support for storing the matrix in a file. I will see if I have time later today or tomorrow (but I cannot promise).
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AL6CGYNKFVAD3GQUADQ5WDMBA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI37MEQ#issuecomment-574092818, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANA4XCFYJL74KXIGBDQ5WDMBANCNFSM4KCPKULA .
I would also like to view the downwash matrix. Is it possible to store it in a file?
I have now added an option to save the downwash matrix and the right-hand side (RHS) of the VLM equation system to a file. To save the system of equations, you can add the option "matrix_system": true
in the settings file as indicated below:
...
"save_results": {
"global": false,
"panelwise": false,
"matrix_system": true,
"aeroperformance": false
},
...
This creates a file called matrix.dat
in the results folder. For instance, if your VLM mesh consists of 4 panels, the downwash matrix is of size 4x4 and the the RHS is of size 4x1. The file matrix.dat
will look something like this:
# Downwash matrix: (4, 4)
# Right-hand side: (4,)
3.308056e-01,-6.184585e-02,-6.184585e-02,-1.024569e-02, 3.489950e+00
-6.184585e-02, 3.308056e-01,-1.024569e-02,-6.184585e-02, 3.489950e+00
-6.184585e-02,-1.024569e-02, 3.308056e-01,-4.128267e-03, 3.489950e+00
-1.024569e-02,-6.184585e-02,-4.128267e-03, 3.308056e-01, 3.489950e+00
The last column is the RHS. I hope this is helpful to you. Let me know if you have any issues with this. This feature is part of PyTornado 0.5.3. You will have to update your installation to use this feature.
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
I will try to add this sometime in the next couple of days.
Thank you. Could you send me the code where the "BoundLegMidPoint" is calculated?
On Wed, Jan 15, 2020 at 1:20 AM Aaron Dettmann notifications@github.com wrote:
I would also like to view the downwash matrix. Is it possible to store it in a file?
I have now added an option to save the downwash matrix and the right-hand side (RHS) of the VLM equation system to a file. To save the system of equations, you can add the option "matrix_system": true in the settings file as indicated below:
...
"save_results": { "global": false, "panelwise": false, "matrix_system": true, "aeroperformance": false },
...
This creates a file called matrix.dat in the results folder. For instance, if your VLM mesh consists of 4 panels, the downwash matrix is of size 4x4 and the the RHS is of size 4x1. The file matrix.dat will look something like this:
Downwash matrix: (4, 4)
Right-hand side: (4,)
3.308056e-01,-6.184585e-02,-6.184585e-02,-1.024569e-02, 3.489950e+00 -6.184585e-02, 3.308056e-01,-1.024569e-02,-6.184585e-02, 3.489950e+00 -6.184585e-02,-1.024569e-02, 3.308056e-01,-4.128267e-03, 3.489950e+00 -1.024569e-02,-6.184585e-02,-4.128267e-03, 3.308056e-01, 3.489950e+00
The last column is the RHS. I hope this is helpful to you. Let me know if you have any issues with this. This feature is part of PyTornado 0.5.3. You will have to update your installation to use this feature.
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
I will try to add this sometime in the next couple of days.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AKOMW4MQZ3CLKEOOGLQ5YJRZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI54PMA#issuecomment-574343088, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANACPCJFPNGKWMFCVDQ5YJRZANCNFSM4KCPKULA .
"BoundLegMidPoint" is the variable I want stored.
On Wed, Jan 15, 2020 at 4:06 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Thank you. Could you send me the code where the "BoundLegMidPoint" is calculated?
On Wed, Jan 15, 2020 at 1:20 AM Aaron Dettmann notifications@github.com wrote:
I would also like to view the downwash matrix. Is it possible to store it in a file?
I have now added an option to save the downwash matrix and the right-hand side (RHS) of the VLM equation system to a file. To save the system of equations, you can add the option "matrix_system": true in the settings file as indicated below:
...
"save_results": { "global": false, "panelwise": false, "matrix_system": true, "aeroperformance": false },
...
This creates a file called matrix.dat in the results folder. For instance, if your VLM mesh consists of 4 panels, the downwash matrix is of size 4x4 and the the RHS is of size 4x1. The file matrix.dat will look something like this:
Downwash matrix: (4, 4)
Right-hand side: (4,)
3.308056e-01,-6.184585e-02,-6.184585e-02,-1.024569e-02, 3.489950e+00 -6.184585e-02, 3.308056e-01,-1.024569e-02,-6.184585e-02, 3.489950e+00 -6.184585e-02,-1.024569e-02, 3.308056e-01,-4.128267e-03, 3.489950e+00 -1.024569e-02,-6.184585e-02,-4.128267e-03, 3.308056e-01, 3.489950e+00
The last column is the RHS. I hope this is helpful to you. Let me know if you have any issues with this. This feature is part of PyTornado 0.5.3. You will have to update your installation to use this feature.
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
I will try to add this sometime in the next couple of days.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AKOMW4MQZ3CLKEOOGLQ5YJRZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI54PMA#issuecomment-574343088, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANACPCJFPNGKWMFCVDQ5YJRZANCNFSM4KCPKULA .
Hi Aaron. I didn’t realize I had the codes from the installation. I can make the required changes myself. Thanks for your help.
On Wed, Jan 15, 2020 at 4:10 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
"BoundLegMidPoint" is the variable I want stored.
On Wed, Jan 15, 2020 at 4:06 AM Bharath ae15d019 < ae15d019@smail.iitm.ac.in> wrote:
Thank you. Could you send me the code where the "BoundLegMidPoint" is calculated?
On Wed, Jan 15, 2020 at 1:20 AM Aaron Dettmann notifications@github.com wrote:
I would also like to view the downwash matrix. Is it possible to store it in a file?
I have now added an option to save the downwash matrix and the right-hand side (RHS) of the VLM equation system to a file. To save the system of equations, you can add the option "matrix_system": true in the settings file as indicated below:
...
"save_results": { "global": false, "panelwise": false, "matrix_system": true, "aeroperformance": false },
...
This creates a file called matrix.dat in the results folder. For instance, if your VLM mesh consists of 4 panels, the downwash matrix is of size 4x4 and the the RHS is of size 4x1. The file matrix.dat will look something like this:
Downwash matrix: (4, 4)
Right-hand side: (4,)
3.308056e-01,-6.184585e-02,-6.184585e-02,-1.024569e-02, 3.489950e+00 -6.184585e-02, 3.308056e-01,-1.024569e-02,-6.184585e-02, 3.489950e+00 -6.184585e-02,-1.024569e-02, 3.308056e-01,-4.128267e-03, 3.489950e+00 -1.024569e-02,-6.184585e-02,-4.128267e-03, 3.308056e-01, 3.489950e+00
The last column is the RHS. I hope this is helpful to you. Let me know if you have any issues with this. This feature is part of PyTornado 0.5.3. You will have to update your installation to use this feature.
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
I will try to add this sometime in the next couple of days.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AKOMW4MQZ3CLKEOOGLQ5YJRZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI54PMA#issuecomment-574343088, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANACPCJFPNGKWMFCVDQ5YJRZANCNFSM4KCPKULA .
Of course I will be using the latest change you made for the downwash matrix.
On Wed, Jan 15, 2020 at 6:56 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Hi Aaron. I didn’t realize I had the codes from the installation. I can make the required changes myself. Thanks for your help.
On Wed, Jan 15, 2020 at 4:10 AM Bharath ae15d019 < ae15d019@smail.iitm.ac.in> wrote:
"BoundLegMidPoint" is the variable I want stored.
On Wed, Jan 15, 2020 at 4:06 AM Bharath ae15d019 < ae15d019@smail.iitm.ac.in> wrote:
Thank you. Could you send me the code where the "BoundLegMidPoint" is calculated?
On Wed, Jan 15, 2020 at 1:20 AM Aaron Dettmann notifications@github.com wrote:
I would also like to view the downwash matrix. Is it possible to store it in a file?
I have now added an option to save the downwash matrix and the right-hand side (RHS) of the VLM equation system to a file. To save the system of equations, you can add the option "matrix_system": true in the settings file as indicated below:
...
"save_results": { "global": false, "panelwise": false, "matrix_system": true, "aeroperformance": false },
...
This creates a file called matrix.dat in the results folder. For instance, if your VLM mesh consists of 4 panels, the downwash matrix is of size 4x4 and the the RHS is of size 4x1. The file matrix.dat will look something like this:
Downwash matrix: (4, 4)
Right-hand side: (4,)
3.308056e-01,-6.184585e-02,-6.184585e-02,-1.024569e-02, 3.489950e+00 -6.184585e-02, 3.308056e-01,-1.024569e-02,-6.184585e-02, 3.489950e+00 -6.184585e-02,-1.024569e-02, 3.308056e-01,-4.128267e-03, 3.489950e+00 -1.024569e-02,-6.184585e-02,-4.128267e-03, 3.308056e-01, 3.489950e+00
The last column is the RHS. I hope this is helpful to you. Let me know if you have any issues with this. This feature is part of PyTornado 0.5.3. You will have to update your installation to use this feature.
Can you also add a feature to store coordinates of the middle of the quarter chord line from which moments are calculated?
I will try to add this sometime in the next couple of days.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AKOMW4MQZ3CLKEOOGLQ5YJRZA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI54PMA#issuecomment-574343088, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANACPCJFPNGKWMFCVDQ5YJRZANCNFSM4KCPKULA .
The bound leg midpoint position is computed in the C++ code:
However, if you are only interested in storing the data, it is probably easier to do this from Python. The bound legs positions are stored in the variable lattice.bound_leg_midpoints
(Numpy data structure). You can access the variable anywhere after this function call which generates the lattice geometry:
Numpy arrays can be conveniently written to text with the savetxt()
function.
Hi again, I have thought about adding a built-in feature to store the lattice geometry parameters in a file (or multiple). You requested bound leg midpoints specifically. However, if I add a new feature, I would like it to be more general.
When starting to implement this, I realized that the geometry data structures are quite elaborate, and storing everything may generate relatively large file sizes. For instance, lattice.p
which stores lattice corner points is a Nx4x3 matrix. If the VLM mesh would consist of 1000 panels, we would store 1000x4x3 = 12000 values in a file. And looking at the geometry object, there are several other matrices of similar size:
I don't think storing geometry points is a very common use case. So for now, I will leave things as they are and suggest to use the Python API for post-processing of the mesh geometry. PyTornado can be run from a Python script as shown below. This is completely equivalent to starting PyTornado from a terminal with pytornado -v --run path/to/settings/settings_file.json
, but it allows to directly process any data structures in Python.
from pytornado.stdfun.run import StdRunArgs, standard_run
# Run a PyTornado analysis
args = StdRunArgs(run='path/to/settings/settings_file.json')
results = standard_run(args)
lattice = results['lattice']
lattice.bound_leg_midpoints # E.g. access the bound leg midpoints
I will close this issue here. Feel free to create a new issue for any other questions/requests :)
Please try running this analysis (attachment). The results don't seem to match Matlab Tornado. They are way off. My UVLM code matches Matlab Tornado result.
On Fri, Jan 17, 2020 at 3:03 AM Aaron Dettmann notifications@github.com wrote:
Hi again, I have thought about adding a built-in feature to store the lattice geometry parameters in a file (or multiple). You requested bound leg midpoints specifically. However, if I add a new feature, I would like it to be more general.
When starting to implement this, I realized that the geometry data structures are quite elaborate, and storing everything may generate relatively large file sizes. For instance, lattice.p which stores lattice corner points is a Nx4x3 matrix. If the VLM mesh would consist of 1000 panels, we would store 1000x4x3 = 12000 values in a file. And looking at the geometry object, there are several other matrices of similar size:
I don't think storing geometry points is a very common use case. So for now, I will leave things as they are and suggest to use the Python API for post-processing of the mesh geometry. PyTornado can be run from a Python script as shown below. This is completely equivalent to starting PyTornado from a terminal with pytornado -v --run path/to/settings/settings_file.json, but it allows to directly process any data structures in Python.
from pytornado.stdfun.run import StdRunArgs, standard_run
Run a PyTornado analysis
args = StdRunArgs(run='path/to/settings/settings_file.json') results = standard_run(args)
lattice = results['lattice'] lattice.bound_leg_midpoints # E.g. access the bound leg midpoints
I will close this issue here. Feel free to create a new issue for any other questions/requests :)
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AOTKRTP4SSKKEJTNXTQ6DHBBA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJFUBCY#issuecomment-575357067, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ANJP7XQ5EOLAZXIWALQ6DHBBANCNFSM4KCPKULA .
I didn't receive the attachment. Could you upload it directly on Github?
I.e. here: https://github.com/airinnova/pytornado/issues/14
And please specify which results you are comparing.
My UVLM results seem to match Matlab Tornado's result ("Freestream following wake, Tornado Method") as opposed to the "fixed wake, standard VLM method". I am comparing the moments (Mx, My and Mz). JSON format not supported for uploading, hence sending txt files. template.txt template_aircraft.txt template_state.txt
Rename them to use
I can run the files you sent. Main results, I get:
[... INFO] @ pytornado.aero.vlm | Computing results...
[... INFO] @ pytornado.aero.vlm | --> Fx = -2.286e+02
[... INFO] @ pytornado.aero.vlm | --> Fy = -5.712e+01
[... INFO] @ pytornado.aero.vlm | --> Fz = 2.928e+03
[... INFO] @ pytornado.aero.vlm | --> FD = 3.233e+01
[... INFO] @ pytornado.aero.vlm | --> FC = -5.451e+01
[... INFO] @ pytornado.aero.vlm | --> FL = 2.936e+03
[... INFO] @ pytornado.aero.vlm | --> Mx = -2.268e+02
[... INFO] @ pytornado.aero.vlm | --> My = 5.202e+03
[... INFO] @ pytornado.aero.vlm | --> Mz = -8.079e+01
[... INFO] @ pytornado.aero.vlm | --> Cx = -0.0373
[... INFO] @ pytornado.aero.vlm | --> Cy = -0.0093
[... INFO] @ pytornado.aero.vlm | --> Cz = 0.4777
[... INFO] @ pytornado.aero.vlm | --> CD = 0.0053
[... INFO] @ pytornado.aero.vlm | --> CC = -0.0089
[... INFO] @ pytornado.aero.vlm | --> CL = 0.4792
[... INFO] @ pytornado.aero.vlm | --> Cl = -0.0046
[... INFO] @ pytornado.aero.vlm | --> Cm = 1.6979
[... INFO] @ pytornado.aero.vlm | --> Cn = -0.0016
Does that seem to match what you get?
Please let me know where values differ in your opinion. Can you also attach the corresponding Matlab Tornado files, so that I can try to recreate your results? Also note that PyTornado does not have the option Freestream following wake, Tornado Method (only fixed wake, standard VLM method).
If you attach files, try to just zip the whole folder if possible. Then I don't need to rename and create the PyTornado folders. Thanks.
These results match "fixed wake, standard VLM method". I wonder which is correct..... I am attaching Matlab Tornado.
On Fri, Jan 17, 2020 at 3:26 PM Aaron Dettmann notifications@github.com wrote:
I can run the files you sent. Main results, I get:
[... INFO] @ pytornado.aero.vlm | Computing results... [... INFO] @ pytornado.aero.vlm | --> Fx = -2.286e+02 [... INFO] @ pytornado.aero.vlm | --> Fy = -5.712e+01 [... INFO] @ pytornado.aero.vlm | --> Fz = 2.928e+03 [... INFO] @ pytornado.aero.vlm | --> FD = 3.233e+01 [... INFO] @ pytornado.aero.vlm | --> FC = -5.451e+01 [... INFO] @ pytornado.aero.vlm | --> FL = 2.936e+03 [... INFO] @ pytornado.aero.vlm | --> Mx = -2.268e+02 [... INFO] @ pytornado.aero.vlm | --> My = 5.202e+03 [... INFO] @ pytornado.aero.vlm | --> Mz = -8.079e+01 [... INFO] @ pytornado.aero.vlm | --> Cx = -0.0373 [... INFO] @ pytornado.aero.vlm | --> Cy = -0.0093 [... INFO] @ pytornado.aero.vlm | --> Cz = 0.4777 [... INFO] @ pytornado.aero.vlm | --> CD = 0.0053 [... INFO] @ pytornado.aero.vlm | --> CC = -0.0089 [... INFO] @ pytornado.aero.vlm | --> CL = 0.4792 [... INFO] @ pytornado.aero.vlm | --> Cl = -0.0046 [... INFO] @ pytornado.aero.vlm | --> Cm = 1.6979 [... INFO] @ pytornado.aero.vlm | --> Cn = -0.0016
Does that seem to match what you get?
Please let me know where values differ in your opinion. Can you also attach the corresponding Matlab Tornado files, so that I can try to recreate your results? Also note that PyTornado does not have the option Freestream following wake, Tornado Method (only fixed wake, standard VLM method).
If you attach files, try to just zip the whole folder if possible. Then I don't need to rename and create the PyTornado folders. Thanks.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5ALYGU64T6MJ7DQUOL3Q6F6F7A5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJHEYOQ#issuecomment-575556666, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AMR3ON57JPKASFKLZTQ6F6F7ANCNFSM4KCPKULA .
Again, PyTornado only has the equivalent of fixed wake, standard VLM method. This is the vortex geometry which is used:
Matlab Tornado, by default, uses a different geometry, see:
If you want an accurate comparison, you should use the fixed wake option.
I am attaching Matlab Tornado.
I didn't receive any attachment.
Have you compared the fixed wake results with another software like AVL? There is a big difference in results, for example Cl = -0.0057016 for fixed wake and is -0.00211 in AVL
On Fri, Jan 17, 2020 at 3:43 PM Aaron Dettmann notifications@github.com wrote:
Again, PyTornado only has the equivalent of fixed wake, standard VLM method. This is the vortex geometry which is used:
Matlab Tornado, by default, uses a different geometry, see:
If you want an accurate comparison, you should use the fixed wake option.
I am attaching Matlab Tornado.
I didn't receive any attachment.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AJN345ACKCBKTSQGPTQ6GADTA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJHGG6I#issuecomment-575562617, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALQ2QQMACGJ4BBNVV3Q6GADTANCNFSM4KCPKULA .
In contrast freestream wake gives a Cl of -0.001.
On Fri, Jan 17, 2020 at 6:00 PM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
Have you compared the fixed wake results with another software like AVL? There is a big difference in results, for example Cl = -0.0057016 for fixed wake and is -0.00211 in AVL
On Fri, Jan 17, 2020 at 3:43 PM Aaron Dettmann notifications@github.com wrote:
Again, PyTornado only has the equivalent of fixed wake, standard VLM method. This is the vortex geometry which is used:
Matlab Tornado, by default, uses a different geometry, see:
If you want an accurate comparison, you should use the fixed wake option.
I am attaching Matlab Tornado.
I didn't receive any attachment.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AJN345ACKCBKTSQGPTQ6GADTA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJHGG6I#issuecomment-575562617, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5ALQ2QQMACGJ4BBNVV3Q6GADTANCNFSM4KCPKULA .
I have compared results with Matlab Tornado and checked that results match, but of course no grantee that there isn't a bug. If you have a test case that you can share in which you get different results, I'd appreciate it if you can send it. I would be best if you can share all input files so that I can recreate the results that you get.
Please add attachments on Github as I don't get them if you answer via email. Thanks.
So far as the result goes, can you compare with AVL? Files attached in github. I think I need to figure out calculating forces in the presence of sideslip. That is what is causing the difference.
On Fri, Jan 17, 2020 at 8:28 PM Aaron Dettmann notifications@github.com wrote:
I have compared results with Matlab Tornado and checked that results match, but of course no grantee that there isn't a bug. If you have a test case that you can share in which you get different results, I'd appreciate it if you can send it. I would be best if you can share all input files so that I can recreate the results that you get.
Please add attachments on Github as I don't get them if you answer via email. Thanks.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AI6HO4IZ7KK62RUVWLQ6HBPTA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJH537A#issuecomment-575659516, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AK3E6F276CRTZMW3KTQ6HBPTANCNFSM4KCPKULA .
For comparison with AVL. Rename aircraft_run.txt to aircraft_run DOT run. Rename aircraft_avl.txt to aircraft_avl DOT avl aircraft_run.txt aircraft_avl.txt
Link to download AVL: http://web.mit.edu/drela/Public/web/avl/
I think freestream-following wake (Tornado Method) is more accurate than the fixed wake method. That was probably why it was introduced in Matlab Tornado. Moreover, the wake actually travels with the freestream and hence this method.
On Sat, Jan 18, 2020 at 5:14 AM Bharath ae15d019 ae15d019@smail.iitm.ac.in wrote:
So far as the result goes, can you compare with AVL? Files attached in github. I think I need to figure out calculating forces in the presence of sideslip. That is what is causing the difference.
On Fri, Jan 17, 2020 at 8:28 PM Aaron Dettmann notifications@github.com wrote:
I have compared results with Matlab Tornado and checked that results match, but of course no grantee that there isn't a bug. If you have a test case that you can share in which you get different results, I'd appreciate it if you can send it. I would be best if you can share all input files so that I can recreate the results that you get.
Please add attachments on Github as I don't get them if you answer via email. Thanks.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/airinnova/pytornado/issues/14?email_source=notifications&email_token=AHHO5AI6HO4IZ7KK62RUVWLQ6HBPTA5CNFSM4KCPKULKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJH537A#issuecomment-575659516, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHHO5AK3E6F276CRTZMW3KTQ6HBPTANCNFSM4KCPKULA .
Thanks for reporting and creating the new issue. I will start looking into it when I have time. If there is a discrepancy between results, I think it is most likely to do with the "normal rotations" (aerofoils/control surface modelling) which is implemented suboptimal at the moment in PyTornado. Also different vortex discretizations may play a role.
I think freestream-following wake (Tornado Method) is more accurate than the fixed wake method. That was probably why it was introduced in Matlab Tornado. Moreover, the wake actually travels with the freestream and hence this method.
Regarding different vortex discretizations in general: Katz and Plotkin give the best overview. Basically, there are three different ways to describe the vortex geometry:
I will lock the conversation here. The issue will be treated in #18
For calculating moments, do you compute the moments due to force at each collocation point and add them up or do you add up the forces and multiply with the moment arm (distance to quarter-chord)? This also beings me back to the question on forces and moments of UVLM being exactly the same as steady VLM?