airinnova / pytornado

:airplane: An implementation of the vortex-lattice method (VLM)
https://pytornado.readthedocs.io/
Apache License 2.0
25 stars 7 forks source link

Calculating Moments #14

Closed bharswami closed 4 years ago

bharswami commented 4 years ago

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?

bharswami commented 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**
aarondettmann commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/ebf98707793dc05346ee28372325f07aa68ca3bd/src/lib/pytornado/aero/c_results.cpp#L168

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.)

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/ebf98707793dc05346ee28372325f07aa68ca3bd/src/lib/pytornado/aero/c_results.cpp#L168

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:

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 .

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/ebf98707793dc05346ee28372325f07aa68ca3bd/src/lib/pytornado/aero/c_results.cpp#L168

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:

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 .

aarondettmann commented 4 years ago

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:

Horseshoe

Discretisation

bharswami commented 4 years ago

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: Horseshoe] https://raw.githubusercontent.com/airinnova/pytornado/9300599f5f43258187a36e9a5b5f99df1c842d7d/docs/source/theory/_static/images/horseshoe_vortex_geometry.svg?sanitize=true

[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 .

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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 .

bharswami commented 4 years ago

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 .

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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 .

bharswami commented 4 years ago

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 .

aarondettmann commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/c_downwash.cpp#L27

This function is called from Python via a wrapper function called py2c_downwash():

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L440

Again, the implementation is based on the book by Drela, 2014.

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/c_downwash.cpp#L27

This function is called from Python via a wrapper function called py2c_downwash():

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L440

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 .

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/c_downwash.cpp#L27

This function is called from Python via a wrapper function called py2c_downwash():

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L440

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 .

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/c_downwash.cpp#L27

This function is called from Python via a wrapper function called py2c_downwash():

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L440

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 .

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/c_downwash.cpp#L27

This function is called from Python via a wrapper function called py2c_downwash():

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L440

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 .

aarondettmann commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L376

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).

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/a2c77038005eb001c86b4749ffde4db4fdaa9cc7/src/lib/pytornado/aero/vlm.py#L377

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 .

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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 .

bharswami commented 4 years ago

"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 .

bharswami commented 4 years ago

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 .

bharswami commented 4 years ago

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 .

aarondettmann commented 4 years ago

The bound leg midpoint position is computed in the C++ code:

https://github.com/airinnova/pytornado/blob/b50edcccca357a289877f52fb2bd2ae3589ff559/src/lib/pytornado/aero/c_lattice.cpp#L227

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:

https://github.com/airinnova/pytornado/blob/b50edcccca357a289877f52fb2bd2ae3589ff559/src/lib/pytornado/aero/vlm.py#L365

Numpy arrays can be conveniently written to text with the savetxt() function.

aarondettmann commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/0c18330071930d2cf5331db829bf2fe4edb90711/src/lib/pytornado/objects/vlm_struct.py#L51

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 :)

bharswami commented 4 years ago

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:

https://github.com/airinnova/pytornado/blob/0c18330071930d2cf5331db829bf2fe4edb90711/src/lib/pytornado/objects/vlm_struct.py#L51

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 .

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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

bharswami commented 4 years ago

Rename them to use

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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 .

aarondettmann commented 4 years ago

Again, PyTornado only has the equivalent of fixed wake, standard VLM method. This is the vortex geometry which is used:

Horseshoe

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.

bharswami commented 4 years ago

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:

[image: Horseshoe] https://raw.githubusercontent.com/airinnova/pytornado/9300599f5f43258187a36e9a5b5f99df1c842d7d/docs/source/theory/_static/images/horseshoe_vortex_geometry.svg?sanitize=true

Matlab Tornado, by default, uses a different geometry, see:

- https://www.researchgate.net/publication/238671899_A_Vortex_Lattice_MATLAB_Implementation_for_Linear_Aerodynamic_Wing_Applications

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 .

bharswami commented 4 years ago

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:

[image: Horseshoe] https://raw.githubusercontent.com/airinnova/pytornado/9300599f5f43258187a36e9a5b5f99df1c842d7d/docs/source/theory/_static/images/horseshoe_vortex_geometry.svg?sanitize=true

Matlab Tornado, by default, uses a different geometry, see:

- https://www.researchgate.net/publication/238671899_A_Vortex_Lattice_MATLAB_Implementation_for_Linear_Aerodynamic_Wing_Applications

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 .

aarondettmann commented 4 years ago

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.

bharswami commented 4 years ago

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 .

bharswami commented 4 years ago

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

bharswami commented 4 years ago

Link to download AVL: http://web.mit.edu/drela/Public/web/avl/

bharswami commented 4 years ago

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 .

aarondettmann commented 4 years ago

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:

  1. Freestream-following wake method (what Matlab Tornado does by default)
  2. Three-legged horseshoe vortex with trailing legs following the freestream direction (what PyTornado does)
  3. Three-legged horseshoe vortex with trailing legs parallel to X-axis (assuming angle of attack and sideslip are small). Drela does this in the book, so maybe this is how it's done in AVL too (?)

I will lock the conversation here. The issue will be treated in #18