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

Aerodynamic Coeffecients #8

Closed bharathswami closed 4 years ago

bharathswami commented 4 years ago

I have a doubt. Scenario: Aircraft 6 dof dynamics is given Requirement: Integrate ODEs to find position of aircraft (initial conditions given). For this we need aerodynamic coefficients. These coefficients aren't fixed in time since wind speed is changing. Question: Is it enough to find steady state coefficient at different velocities or do I need to take the transient response of the coefficients (unsteady VLM)? Do you know any unsteady VLM solvers available online?

aarondettmann commented 4 years ago

Hello bharathswami,

Thanks for your question.

I suppose the answer depends a bit on the requirements you have. The main thing to keep in mind is that the PyTornado (standard VLM method) only computes steady state solutions, i.e. there is no time-dependency in any of the aerodynamic coefficients. So if you only deal with slowly changing flight conditions (e.g. steady climb, slow turns and steady descent), it might be reasonable to assume steady state aerodynamics. In this case, one could integrate the ODEs piecewise using the steady state aerodynamic coefficients. However, in cases of highly dynamic manoeuvres and wind gusts, you may have to take unsteady effects into account.

Perhaps some interesting literature related to your questions:

I cannot give any recommendations on other software, but there exists other open source CFD code with higher fidelity models, for instance:

bharathswami commented 4 years ago

By higher fidelity, do you mean it handles unsteady effects? Gives coefficients as functions of time?

Sent from my iPad

On Dec 1, 2019, at 8:48 PM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Hello bharathswami,

Thanks for your question.

I suppose the answer depends a bit on the requirements you have. The main thing to keep in mind is that the PyTornado (standard VLM method) only computes steady state solutions, i.e. there is no time-dependency in any of the aerodynamic coefficients. So if you only deal with slowly changing flight conditions (e.g. steady climb, slow turns and steady descent), it might be reasonable to assume steady state aerodynamics. In this case, one could integrate the ODEs piecewise using the steady state aerodynamic coefficients. However, in cases of highly dynamic manoeuvres and wind gusts, you may have to take unsteady effects into account.

Perhaps some interesting literature related to your questions:

I cannot give any recommendations on other software, but there exists other open source CFD code with higher fidelity models, for instance:

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76N4BSRKGUW3L5LEQUDQWPIVDA5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFRMCRQ#issuecomment-560120134, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76JX2SHDYQHPEW2VBKTQWPIVDANCNFSM4JPAHSVA.

bharathswami commented 4 years ago

Thanks for you reply.

By higher fidelity, do you mean it handles unsteady effects? Gives coefficients as functions of time?

Sent from my iPad

On Dec 1, 2019, at 8:48 PM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Hello bharathswami,

Thanks for your question.

I suppose the answer depends a bit on the requirements you have. The main thing to keep in mind is that the PyTornado (standard VLM method) only computes steady state solutions, i.e. there is no time-dependency in any of the aerodynamic coefficients. So if you only deal with slowly changing flight conditions (e.g. steady climb, slow turns and steady descent), it might be reasonable to assume steady state aerodynamics. In this case, one could integrate the ODEs piecewise using the steady state aerodynamic coefficients. However, in cases of highly dynamic manoeuvres and wind gusts, you may have to take unsteady effects into account.

Perhaps some interesting literature related to your questions:

I cannot give any recommendations on other software, but there exists other open source CFD code with higher fidelity models, for instance:

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76N4BSRKGUW3L5LEQUDQWPIVDA5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFRMCRQ#issuecomment-560120134, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76JX2SHDYQHPEW2VBKTQWPIVDANCNFSM4JPAHSVA.

aarondettmann commented 4 years ago

Short answer: no. I might have used the term higher fidelity a bit loosely above. Sometimes, CFD models are classified according to how accurate the models can represent the real physics. One such classification system is to distinguish between L0 to L3 methods [ZJGM18]:

In my eyes, the unsteady VLM (UVLM) still classifies as a L1 method. But also a general comment here: using a higher fidelity model will not automatically result in better/more accurate results. There are a lot more input parameters required and there is a lot more room for introducing modelling errors.

If, in your case, it is sufficient to make estimations and to get the order of magnitude correct, you probably want to use a simplified CFD model.

[ZJGM18] Zhang, M. ; Jungo, A. ; Gastaldi, A.A. ; Melin, T.: Aircraft Geometry and Meshing with Common Language Schema CPACS for Variable-Fidelity MDO Applications. 5 (2018), No. 47. http://dx.doi.org/10.3390/aerospace5020047. – DOI 10.3390/aerospace5020047

bharathswami commented 4 years ago

Thanks for your reply. Could you clarify: In tornado for Matlab, if we specify an airfoil for the wing, is that taken care in the lattice point generation? That is, are the lattice points generated in the shape of the airfoil?

Sent from my iPad

On Dec 2, 2019, at 11:36 PM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Short answer: no. I might have used the term higher fidelity a bit loosely above. Sometimes, CFD models are classified according to how accurate the models can represent the real physics. One ways such classification system is to distinguish between L0 to L3 methods [ZJGM18]:

In my eyes, the unsteady VLM (UVLM) still classifies as a L1 method. But also a general comment here: using a higher fidelity model will not automatically result in better/more accurate results. There are a lot more input parameters required and there is a lot more room for introducing modelling errors.

If, in your case, it is sufficient to make estimations and to get the order of magnitude correct, you probably want to use a simplified CFD model.

[ZJGM18] Zhang, M. ; Jungo, A. ; Gastaldi, A.A. ; Melin, T.: Aircraft Geometry and Meshing with Common Language Schema CPACS for Variable-Fidelity MDO Applications. 5 (2018), No. 47. http://dx.doi.org/10.3390/aerospace5020047. – DOI 10.3390/aerospace5020047

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76NTJY3SW4ZF2Q5AJR3QWVFC5A5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFULUAY#issuecomment-560511491, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76OZQZMG3W27ZEKNV33QWVFC5ANCNFSM4JPAHSVA.

aarondettmann commented 4 years ago

Could you clarify: In tornado for Matlab, if we specify an airfoil for the wing, is that taken care in the lattice point generation? That is, are the lattice points generated in the shape of the airfoil?

Both PyTornado and Matlab Tornado approximate the wing geometry using flat quadrilaterals (usually referred to as segments). These segments are subdivided into panels which constitute the mesh.

Panels/lattice points themselves are not generated in the shape of the airfoil. Airfoils are always modelled by tilting the normal vectors of each panel. This changes the flow tangency boundary condition. This is the same in both PyTornado and Matlab Tornado (*).

(*) There is one exception where Matlab Tornado actually changes the mesh geometry which is for trailing edge control surface deflections. This requires so-called vortex slings (see [Meli00]).

[Meli00] Melin, T.: A Vortex Lattice MATLAB Implementation for Linear Aerodynamic Wing Applications, Diss., December 2000. http://dx.doi.org/10.13140/RG.2.2.24472.49923. - DOI 10.13140/RG.2.2.24472.49923

bharathswami commented 4 years ago

Thanks. Is it possible for you to send me a code where lattice points are generated in the shape of the airfoil? It will be helpful for me to use it for further analyses.

Sent from my iPad

On Dec 4, 2019, at 1:54 AM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Could you clarify: In tornado for Matlab, if we specify an airfoil for the wing, is that taken care in the lattice point generation? That is, are the lattice points generated in the shape of the airfoil?

Both PyTornado and Matlab Tornado approximate the wing geometry using flat quadrilaterals (usually referred to as segments). These segments are subdivided into panels which constitute the mesh.

Panels/lattice points themselves are not generated in the shape of the airfoil. Airfoils are always modelled by tilting the normal vectors of each panel. This changes the flow tangency boundary condition. This is the same in both PyTornado and Matlab Tornado (*).

(*) There is one exception where Matlab Tornado actually changes the mesh geometry which is for trailing edge control surface deflections. This required so-called vortex slings (see [Meli00]).

[Meli00] Melin, T.: A Vortex Lattice MATLAB Implementation for Linear Aerodynamic Wing Applications, Diss., December 2000. http://dx.doi.org/10.13140/RG.2.2.24472.49923. - DOI 10.13140/RG.2.2.24472.49923

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76LJZVQ27HWS7X3E3RLQW2565A5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF2WIFI#issuecomment-561341461, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76IESR623IFSFWEYDL3QW2565ANCNFSM4JPAHSVA.

bharathswami commented 4 years ago

Or could you tell how to retrieve the rotated normals in the code from the main function?

Thanks Bharath


From: Bharath Swaminathan bharathswami@hotmail.com Sent: Thursday, December 5, 2019 8:36 AM To: airinnova/pytornado reply@reply.github.com Subject: Re: [airinnova/pytornado] Aerodynamic Coeffecients (#8)

Thanks. Is it possible for you to send me a code where lattice points are generated in the shape of the airfoil? It will be helpful for me to use it for further analyses.

Sent from my iPad

On Dec 4, 2019, at 1:54 AM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Could you clarify: In tornado for Matlab, if we specify an airfoil for the wing, is that taken care in the lattice point generation? That is, are the lattice points generated in the shape of the airfoil?

Both PyTornado and Matlab Tornado approximate the wing geometry using flat quadrilaterals (usually referred to as segments). These segments are subdivided into panels which constitute the mesh.

Panels/lattice points themselves are not generated in the shape of the airfoil. Airfoils are always modelled by tilting the normal vectors of each panel. This changes the flow tangency boundary condition. This is the same in both PyTornado and Matlab Tornado (*).

(*) There is one exception where Matlab Tornado actually changes the mesh geometry which is for trailing edge control surface deflections. This required so-called vortex slings (see [Meli00]).

[Meli00] Melin, T.: A Vortex Lattice MATLAB Implementation for Linear Aerodynamic Wing Applications, Diss., December 2000. http://dx.doi.org/10.13140/RG.2.2.24472.49923. - DOI 10.13140/RG.2.2.24472.49923

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76LJZVQ27HWS7X3E3RLQW2565A5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF2WIFI#issuecomment-561341461, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76IESR623IFSFWEYDL3QW2565ANCNFSM4JPAHSVA.

aarondettmann commented 4 years ago

Hi bharathswami,

Is it possible for you to send me a code where lattice points are generated in the shape of the airfoil? It will be helpful for me to use it for further analyses.

What is the use case for generating lattice points based on the real airfoil geometry? This has not been considered so far (and probably won't be), since this is not needed for the VLM. I am afraid, you will be on your own to write the code. Perhaps, you could have a look at this module which could be helpful to evaluate and interpolate airfoil coordinates:

Or could you tell how to retrieve the rotated normals in the code from the main function?

There is actually no functionality (yet) to export lattice geometry parameters using PyTornado's settings file. Currently, you would have to use the Python API to access the normal vectors which, unfortunately is not well documented. In a Python script you can retrieve the lattice normal vectors like this:

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)

normals = results['lattice'].n

Here, normals is a 3xN matrix, each row a normal with x, y, z vector components. For more lattice geometry parameters, you can have a look at the docstring of the VLMLattice() object:

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

bharathswami commented 4 years ago

What about extracting normals from the Matlab version?

Sent from my iPad

On Dec 5, 2019, at 11:10 PM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

Hi bharathswami,

Is it possible for you to send me a code where lattice points are generated in the shape of the airfoil? It will be helpful for me to use it for further analyses.

What is the use case for generating lattice points based on the real airfoil geometry? This has not been considered so far (and probably won't be), since this is not needed for the VLM. I am afraid, you will be on your own to write the code. Perhaps, you could have a look at this module which could be helpful to evaluate and interpolate airfoil coordinates:

Or could you tell how to retrieve the rotated normals in the code from the main function?

There is actually no functionality (yet) to export lattice geometry parameters using PyTornado's settings file. Currently, you would have to use the Python API to access the normal vectors which, unfortunately is not well documented. In a Python script you can retrieve the lattice normal vectors like this:

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)

normals = results['lattice'].n

Here, normals is a 3xN matrix, each row a normal with x, y, z vector components. For more lattice geometry parameters, you can have a look at the docstring of the VLMLattice() object:

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

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76KVNDMA5IO6CRGLRPDQXE4KRA5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGBQRJQ#issuecomment-562235558, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76IUAETO2UXT2GXEBIDQXE4KRANCNFSM4JPAHSVA.

aarondettmann commented 4 years ago

I cannot help with that. I don’t know Matlab Tornado very well. Note that PyTornado has been implemented from scratch and differs significantly from Matlab Tornado. Matlab Tornado is also not actively developed any more.

I am closing this issue since the original question has been answered. You may create a new issue, if you require further support with something else :)

bharathswami commented 4 years ago

Thanks Aaron Dettmann

Sent from my iPad

On Dec 7, 2019, at 2:12 AM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

I cannot help with that. I don’t know Matlab Tornado very well. Note that PyTornado has been implemented from scratch and differs significantly from Matlab Tornado. Matlab Tornado is also not actively developed any more.

I am closing this issue since the original question has been answered. You may create a new issue, if you require further support with something else :)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76P7RTOT36U7FKLOAADQXK2LRA5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGFJJZA#issuecomment-562730212, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76ITVV3DT4KQ2NENGB3QXK2LRANCNFSM4JPAHSVA.

bharathswami commented 4 years ago

Thanks Aaron

Sent from my iPad

On Dec 7, 2019, at 2:12 AM, Aaron Dettmann notifications@github.com<mailto:notifications@github.com> wrote:

I cannot help with that. I don’t know Matlab Tornado very well. Note that PyTornado has been implemented from scratch and differs significantly from Matlab Tornado. Matlab Tornado is also not actively developed any more.

I am closing this issue since the original question has been answered. You may create a new issue, if you require further support with something else :)

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/airinnova/pytornado/issues/8?email_source=notifications&email_token=AH3S76P7RTOT36U7FKLOAADQXK2LRA5CNFSM4JPAHSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGFJJZA#issuecomment-562730212, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AH3S76ITVV3DT4KQ2NENGB3QXK2LRANCNFSM4JPAHSVA.