|
From: Jon S. B. <jon...@co...> - 2013-06-10 02:53:35
|
It has long been the case that 3-dimensional tables are the limit of what we
can do in JSBSim. Over the past few weeks I have become aware of a way to do
n-dimensional tables, with additional capabilities, too.
Some lookup tables in simulation - particularly for aerodynamic data - can
be four, five, six, or even more dimensional. Not too long ago, an
interpolation function was added to JSBSim. It is called Interpolate1d.
Interpolate1d returns the result from a 1-dimensional interpolation of the
supplied values, with the value of the first immediate child element
representing the lookup value into the table, and the following pairs of
values representing the independent and dependent values. The first provided
child element is expected to be a property. The interpolation does not
extrapolate, but holds the highest value if the provided lookup value goes
outside of the provided range. The format is as follows:
<interpolate1d>
{property, value, table, function}
{property, value, table, function} {property, value, table, function}
...
</interpolate1d>
Example: If mach is 0.4, the interpolation will return 0.375. If mach is
1.5, the interpolation
will return 0.60.
<interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <v> 0.25 </v>
<v> 0.80 </v> <v> 0.50 </v>
<v> 0.90 </v> <v> 0.60 </v>
</interpolate1d>
The above example is very simplistic. A more involved example would use a
function in any argument (except the first). That means that the breakpoint
vector can be variable - which would probably not be common - but more
importantly the values in the lookup vector (second column) could be
function table elements of 1, 2, or 3 dimensions. The arguments could even
be nested interpolate1d elements. For example:
<function name="whatever">
<interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table definition ... </table>
<v> 0.80 </v> <table> ... table definition ... </table>
<v> 0.90 </v> <table> ... table definition ... </table>
</interpolate1d>
</function>
Carrying this further:
<function name="bigWhatever1">
<interpolate1d>
<p> aero/qbar-psf </p>
<v> 0 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
<v> 65 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
<v> 90 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
</interpolate1d>
</function>
The above effectively gives a five dimensional lookup table. It would be big
and messy, in practice, but there it is. :-)
There is more, though. For very, very large aero databases there might be
times when some aero coefficients do not need to be calculated. For
instance, ground effects aero coefficients only need to be calculated close
to the ground. Why waste CPU cycles when the ground effects do not
contribute to the aero forces and moments? We can employ the ifthen element
to bypass expensive computations. The ifthen element works as follows:
If the value of the first immediate child element is 1, then the value of
the second immediate child element is returned, otherwise the value of the
third child element is returned.
<ifthen>
{property, value, table, or other function element}
{property, value, table, or other function element}
{property, value, table, or other function element}
</ifthen>
Example: if flight-mode is greater than 2, then a value of 0.00 is returned,
otherwise the value of the property control/pitch-lag is returned.
<ifthen>
<gt> <p> executive/flight-mode </p> <v> 2 </v> </gt>
<v> 0.00 </v>
<p> control/pitch-lag </p>
</ifthen>
In our case, we could write the 5-dimensional table lookup as follows,
returning a zero unless the gear is down:
<function name="propertyname">
<ifthen>
<lt> <p> position/altitudeMSL </p> <v> 90 </v> </lt>
<interpolate1d>
<p> aero/qbar-psf </p>
<v> 0 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
<v> 65 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
<v> 90 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
</interpolate1d>
<v> 0 </v>
</ifthen>
</function>
The above example is non-sensical in a way, but the format is correct. I
have used this approach and it works well. Performance-wise it is good
because the tables do not get executed unless absolutely needed in the
lookup.
Jon
|
|
From: Alan T. <ajt...@v-...> - 2013-06-10 08:05:17
|
Jon
Is this conditional able to cope with the incidence range of coefficients
decreasing with Mach No?
By this I mean that, for most aircraft, at low speed the incidence range is
quite high, but at high speed the incidence range is much lower. It seems
silly to populate tables with data that is difficult to estimate and will
never be used.
Alan
-----Original Message-----
From: Jon S. Berndt
Sent: Monday, June 10, 2013 3:53 AM
To: 'Development issues'
Subject: [Jsbsim-devel] Multi-dimensional tables
It has long been the case that 3-dimensional tables are the limit of what we
can do in JSBSim. Over the past few weeks I have become aware of a way to do
n-dimensional tables, with additional capabilities, too.
Some lookup tables in simulation - particularly for aerodynamic data - can
be four, five, six, or even more dimensional. Not too long ago, an
interpolation function was added to JSBSim. It is called Interpolate1d.
Interpolate1d returns the result from a 1-dimensional interpolation of the
supplied values, with the value of the first immediate child element
representing the lookup value into the table, and the following pairs of
values representing the independent and dependent values. The first provided
child element is expected to be a property. The interpolation does not
extrapolate, but holds the highest value if the provided lookup value goes
outside of the provided range. The format is as follows:
<interpolate1d>
{property, value, table, function}
{property, value, table, function} {property, value, table, function}
...
</interpolate1d>
Example: If mach is 0.4, the interpolation will return 0.375. If mach is
1.5, the interpolation
will return 0.60.
<interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <v> 0.25 </v>
<v> 0.80 </v> <v> 0.50 </v>
<v> 0.90 </v> <v> 0.60 </v>
</interpolate1d>
The above example is very simplistic. A more involved example would use a
function in any argument (except the first). That means that the breakpoint
vector can be variable - which would probably not be common - but more
importantly the values in the lookup vector (second column) could be
function table elements of 1, 2, or 3 dimensions. The arguments could even
be nested interpolate1d elements. For example:
<function name="whatever">
<interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table definition ... </table>
<v> 0.80 </v> <table> ... table definition ... </table>
<v> 0.90 </v> <table> ... table definition ... </table>
</interpolate1d>
</function>
Carrying this further:
<function name="bigWhatever1">
<interpolate1d>
<p> aero/qbar-psf </p>
<v> 0 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
<v> 65 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
<v> 90 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ... </table>
<v> 0.80 </v> <table> ... table 2 definition ... </table>
<v> 0.90 </v> <table> ... table 3 definition ... </table>
</interpolate1d>
</interpolate1d>
</function>
The above effectively gives a five dimensional lookup table. It would be big
and messy, in practice, but there it is. :-)
There is more, though. For very, very large aero databases there might be
times when some aero coefficients do not need to be calculated. For
instance, ground effects aero coefficients only need to be calculated close
to the ground. Why waste CPU cycles when the ground effects do not
contribute to the aero forces and moments? We can employ the ifthen element
to bypass expensive computations. The ifthen element works as follows:
If the value of the first immediate child element is 1, then the value of
the second immediate child element is returned, otherwise the value of the
third child element is returned.
<ifthen>
{property, value, table, or other function element}
{property, value, table, or other function element}
{property, value, table, or other function element}
</ifthen>
Example: if flight-mode is greater than 2, then a value of 0.00 is returned,
otherwise the value of the property control/pitch-lag is returned.
<ifthen>
<gt> <p> executive/flight-mode </p> <v> 2 </v> </gt>
<v> 0.00 </v>
<p> control/pitch-lag </p>
</ifthen>
In our case, we could write the 5-dimensional table lookup as follows,
returning a zero unless the gear is down:
<function name="propertyname">
<ifthen>
<lt> <p> position/altitudeMSL </p> <v> 90 </v> </lt>
<interpolate1d>
<p> aero/qbar-psf </p>
<v> 0 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
<v> 65 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
<v> 90 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
</table>
<v> 0.80 </v> <table> ... table 2 definition ...
</table>
<v> 0.90 </v> <table> ... table 3 definition ...
</table>
</interpolate1d>
</interpolate1d>
<v> 0 </v>
</ifthen>
</function>
The above example is non-sensical in a way, but the format is correct. I
have used this approach and it works well. Performance-wise it is good
because the tables do not get executed unless absolutely needed in the
lookup.
Jon
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. A cloud service to automate IT design, transition and operations
2. Dashboards that offer high-level views of enterprise services
3. A single system of record for all IT processes
http://p.sf.net/sfu/servicenow-d2d-j
_______________________________________________
Jsbsim-devel mailing list
Jsb...@li...
https://lists.sourceforge.net/lists/listinfo/jsbsim-devel
_______________________________________________
The JSBSim Flight Dynamics Model project
http://www.JSBSim.org
_______________________________________________
|
|
From: Jon S. B. <jon...@co...> - 2013-06-10 12:27:10
|
> Is this conditional able to cope with the incidence range of > coefficients decreasing with Mach No? > > By this I mean that, for most aircraft, at low speed the incidence > range is quite high, but at high speed the incidence range is much > lower. It seems silly to populate tables with data that is difficult to > estimate and will never be used. > > Alan I'm not sure I understand your question. Any tables defined are standard JSBSim tables with data suitable for your aircraft. I'm guessing that most people will not use the capability described in the original post, but for very large databases derived from extensive wind tunnel testing and/or CFD, the capability to model aero data higher than 3 dimensions may be needed. The mechanism for doing that was presented. It is up to the modeler to decide if that is needed or appropriate. In my case, with a very detailed aero database that is nearly a quarter million lines long, it is. Jon |
|
From: Sean M. <se...@se...> - 2013-06-10 13:18:54
|
I think what Alan is asking/looking for is whether there is any sparse data table support. So for example if he has data for some coefficient that is dependent on 2 dimensions, say mach number and AoA but for low mach numbers he has data for a range of AoAs from say -5 to +20 but for higher mach numbers he only has data for an AoA range from -3 to +5. He doesn't want to be forced to make up data for the higher mach numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the AoA range of the data he has for lower mach numbers. Cheers -----Original Message----- From: Jon S. Berndt [mailto:jon...@co...] Sent: Monday, June 10, 2013 2:27 PM To: 'Development issues' Subject: Re: [Jsbsim-devel] Multi-dimensional tables > Is this conditional able to cope with the incidence range of > coefficients decreasing with Mach No? > > By this I mean that, for most aircraft, at low speed the incidence > range is quite high, but at high speed the incidence range is much > lower. It seems silly to populate tables with data that is difficult > to estimate and will never be used. > > Alan I'm not sure I understand your question. Any tables defined are standard JSBSim tables with data suitable for your aircraft. I'm guessing that most people will not use the capability described in the original post, but for very large databases derived from extensive wind tunnel testing and/or CFD, the capability to model aero data higher than 3 dimensions may be needed. The mechanism for doing that was presented. It is up to the modeler to decide if that is needed or appropriate. In my case, with a very detailed aero database that is nearly a quarter million lines long, it is. Jon ------------------------------------------------------------------------------ How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ Jsbsim-devel mailing list Jsb...@li... https://lists.sourceforge.net/lists/listinfo/jsbsim-devel _______________________________________________ The JSBSim Flight Dynamics Model project http://www.JSBSim.org _______________________________________________ |
|
From: Bill G. <bi...@be...> - 2013-06-10 13:31:24
|
Making up data in that case would only consist of repeating the first or last value, since this method does not extrapolate. Specifying where the smaller table (AOA 3 to 5 in this case) would probably be more painful and less obvious for future support. I created a fancy LFI routine in Ada a long time ago in a galaxy far, far away, and one of the options that could be specified was if the values were clamped at the first and last values, or if extrapolation could be used. Most methods were used at times. Bill -----Original Message----- From: Sean McLeod [mailto:se...@se...] Sent: Monday, June 10, 2013 8:50 AM To: Development issues Subject: Re: [Jsbsim-devel] Multi-dimensional tables I think what Alan is asking/looking for is whether there is any sparse data table support. So for example if he has data for some coefficient that is dependent on 2 dimensions, say mach number and AoA but for low mach numbers he has data for a range of AoAs from say -5 to +20 but for higher mach numbers he only has data for an AoA range from -3 to +5. He doesn't want to be forced to make up data for the higher mach numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the AoA range of the data he has for lower mach numbers. Cheers -----Original Message----- From: Jon S. Berndt [mailto:jon...@co...] Sent: Monday, June 10, 2013 2:27 PM To: 'Development issues' Subject: Re: [Jsbsim-devel] Multi-dimensional tables > Is this conditional able to cope with the incidence range of > coefficients decreasing with Mach No? > > By this I mean that, for most aircraft, at low speed the incidence > range is quite high, but at high speed the incidence range is much > lower. It seems silly to populate tables with data that is difficult > to estimate and will never be used. > > Alan I'm not sure I understand your question. Any tables defined are standard JSBSim tables with data suitable for your aircraft. I'm guessing that most people will not use the capability described in the original post, but for very large databases derived from extensive wind tunnel testing and/or CFD, the capability to model aero data higher than 3 dimensions may be needed. The mechanism for doing that was presented. It is up to the modeler to decide if that is needed or appropriate. In my case, with a very detailed aero database that is nearly a quarter million lines long, it is. Jon ---------------------------------------------------------------------------- -- How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ Jsbsim-devel mailing list Jsb...@li... https://lists.sourceforge.net/lists/listinfo/jsbsim-devel _______________________________________________ The JSBSim Flight Dynamics Model project http://www.JSBSim.org _______________________________________________ ---------------------------------------------------------------------------- -- How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ Jsbsim-devel mailing list Jsb...@li... https://lists.sourceforge.net/lists/listinfo/jsbsim-devel _______________________________________________ The JSBSim Flight Dynamics Model project http://www.JSBSim.org _______________________________________________ ----- No virus found in this message. Checked by AVG - www.avg.com Version: 2013.0.3345 / Virus Database: 3199/6398 - Release Date: 06/10/13 |
|
From: Jon S. B. <jon...@co...> - 2013-06-10 14:02:02
|
Ah, yes - thanks for that. That explains it. JSBSim table lookups only do gridded tables - not ungridded/sparse. There are a number of methods one could take to fill in the blanks and IMHO it's better to do that offline. It's sort of an art, in my experience. Jon > -----Original Message----- > From: Sean McLeod [mailto:se...@se...] > Sent: Monday, June 10, 2013 6:50 AM > To: Development issues > Subject: Re: [Jsbsim-devel] Multi-dimensional tables > > I think what Alan is asking/looking for is whether there is any sparse > data table support. > > So for example if he has data for some coefficient that is dependent on > 2 dimensions, say mach number and AoA but for low mach numbers he has > data for a range of AoAs from say -5 to +20 but for higher mach numbers > he only has data for an AoA range from -3 to +5. > > He doesn't want to be forced to make up data for the higher mach > numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the > AoA range of the data he has for lower mach numbers. > > Cheers |
|
From: Dennis J. L. <js...@li...> - 2013-06-10 15:00:58
|
Jon,
1) Good stuff!
2) OK, gridded, not sparse. How about orthogonal? From the example you
provided, (repeated below), does the mach independent variable need to
have the same breakpoints? From the appearance, below, it would appear
that the answer is "no", which is good, as it is more flexible (at the
expense of storage space and possibly some computation speed-up tricks).
And if "no", then it can be used to sort address Alan's point, whether
you intended to or not.
<function name="bigWhatever1">
<interpolate1d>
<p> aero/qbar-psf </p>
<v> 0 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
<v> 0.80 </v> <table> ... table 2 definition ...
<v> 0.90 </v> <table> ... table 3 definition ...
</interpolate1d>
<v> 65 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
<v> 0.80 </v> <table> ... table 2 definition ...
<v> 0.90 </v> <table> ... table 3 definition ...
</interpolate1d>
<v> 90 </v> <interpolate1d>
<p> velocities/mach </p>
<v> 0.00 </v> <table> ... table 1 definition ...
<v> 0.80 </v> <table> ... table 2 definition ...
<v> 0.90 </v> <table> ... table 3 definition ...
</interpolate1d>
</interpolate1d>
</function>
3) And as one who has implemented such things as well, about about
monotonicity of independent variables. Is that checked/enforced? That
can be bear of a typo to debug, and can cause algorithms to get really
confused.
Dennis
On 2013-06-10 9:01 AM, Jon S. Berndt wrote:
> Ah, yes - thanks for that. That explains it. JSBSim table lookups only do
> gridded tables - not ungridded/sparse. There are a number of methods one
> could take to fill in the blanks and IMHO it's better to do that offline.
> It's sort of an art, in my experience.
>
> Jon
>
>> -----Original Message-----
>> From: Sean McLeod [mailto:se...@se...]
>> Sent: Monday, June 10, 2013 6:50 AM
>> To: Development issues
>> Subject: Re: [Jsbsim-devel] Multi-dimensional tables
>>
>> I think what Alan is asking/looking for is whether there is any sparse
>> data table support.
>>
>> So for example if he has data for some coefficient that is dependent on
>> 2 dimensions, say mach number and AoA but for low mach numbers he has
>> data for a range of AoAs from say -5 to +20 but for higher mach numbers
>> he only has data for an AoA range from -3 to +5.
>>
>> He doesn't want to be forced to make up data for the higher mach
>> numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the
>> AoA range of the data he has for lower mach numbers.
>>
>> Cheers
>
>
>
> ------------------------------------------------------------------------------
> How ServiceNow helps IT people transform IT departments:
> 1. A cloud service to automate IT design, transition and operations
> 2. Dashboards that offer high-level views of enterprise services
> 3. A single system of record for all IT processes
> http://p.sf.net/sfu/servicenow-d2d-j
> _______________________________________________
> Jsbsim-devel mailing list
> Jsb...@li...
> https://lists.sourceforge.net/lists/listinfo/jsbsim-devel
> _______________________________________________
> The JSBSim Flight Dynamics Model project
> http://www.JSBSim.org
> _______________________________________________
>
>
|
|
From: Alan T. <ajt...@v-...> - 2013-06-10 15:23:16
|
Yes Sean got the words that I meant. ;-) Thanks. What I am looking for is a way to break up the coefficient tables into sections that are split into the high alpha ranges that are applicable at low speeds, and low alpha ranges which are achievable at high speeds. My WIP stalls at 30 degrees incidence on the approach, but would probably break the airframe at 5 degrees when supersonic. At the moment each coefficient has a table covering the whole incidence range for each Mach number, so in this case the tables cover the range -10 to 40 degrees incidence and Mach numbers 0-2. . My solution at the moment is to extrapolate the data to make up numbers to fill in the grid at the high speed end, but these numbers are really just meaningless rubbish and are only there to complete a sparse matrix. -----Original Message----- From: Jon S. Berndt Sent: Monday, June 10, 2013 3:01 PM To: 'Development issues' Subject: Re: [Jsbsim-devel] Multi-dimensional tables Ah, yes - thanks for that. That explains it. JSBSim table lookups only do gridded tables - not ungridded/sparse. There are a number of methods one could take to fill in the blanks and IMHO it's better to do that offline. It's sort of an art, in my experience. Jon > -----Original Message----- > From: Sean McLeod [mailto:se...@se...] > Sent: Monday, June 10, 2013 6:50 AM > To: Development issues > Subject: Re: [Jsbsim-devel] Multi-dimensional tables > > I think what Alan is asking/looking for is whether there is any sparse > data table support. > > So for example if he has data for some coefficient that is dependent on > 2 dimensions, say mach number and AoA but for low mach numbers he has > data for a range of AoAs from say -5 to +20 but for higher mach numbers > he only has data for an AoA range from -3 to +5. > > He doesn't want to be forced to make up data for the higher mach > numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the > AoA range of the data he has for lower mach numbers. > > Cheers ------------------------------------------------------------------------------ How ServiceNow helps IT people transform IT departments: 1. A cloud service to automate IT design, transition and operations 2. Dashboards that offer high-level views of enterprise services 3. A single system of record for all IT processes http://p.sf.net/sfu/servicenow-d2d-j _______________________________________________ Jsbsim-devel mailing list Jsb...@li... https://lists.sourceforge.net/lists/listinfo/jsbsim-devel _______________________________________________ The JSBSim Flight Dynamics Model project http://www.JSBSim.org _______________________________________________ |
|
From: Dennis J. L. <js...@li...> - 2013-06-10 15:48:05
|
So, Jon, (without looking at the code) will this work for Alan?
<function name="bigWhatever1">
<interpolate1d>
<p> velocities/mach </p>
<v> 0.1 </v> <interpolate1d>
<p> ???/alpha </p>
<v> -10.0 </v> <v> ?? </v>
<v> 0.0 </v> <v> ?? </v>
<v> 30.0 </v> <v> ?? </v>
</interpolate1d>
<v> 0.9 </v> <interpolate1d>
<p> ???/alpha </p>
<v> -2.0 </v> <v> ?? </v>
<v> 0.0 </v> <v> ?? </v>
<v> 5.0 </v> <v> ?? </v>
</interpolate1d>
<v> 2.0 </v> <interpolate1d>
<p> ???/alpha </p>
<v> -1.0 </v> <v> ?? </v>
<v> 0.0 </v> <v> ?? </v>
<v> 1.0 </v> <v> ?? </v>
</interpolate1d>
</interpolate1d>
</function>
I'm guessing yes, by the way that you describe the tables since the
dependent value can be a table/function, etc. So each dimension needs
to be calculated separately at two different breakpoints and then
interpolated. (The traditional, orthogonal, multi-dimensional matrix
approach has only a single set of breakpoints in each dimension then
uses integer indices to get into the table, therefore, it has to be
"full".) If it is just linear in each dimension, it should work, right?
Dennis
On 2013-06-10 10:23 AM, Alan Teeder wrote:
>
> Yes Sean got the words that I meant. ;-) Thanks.
>
> What I am looking for is a way to break up the coefficient tables into
> sections that are split into the high alpha ranges that are applicable at
> low speeds, and low alpha ranges which are achievable at high speeds.
>
> My WIP stalls at 30 degrees incidence on the approach, but would probably
> break the airframe at 5 degrees when supersonic.
>
> At the moment each coefficient has a table covering the whole incidence
> range for each Mach number, so in this case the tables cover the range -10
> to 40 degrees incidence and Mach numbers 0-2. .
>
> My solution at the moment is to extrapolate the data to make up numbers to
> fill in the grid at the high speed end, but these numbers are really just
> meaningless rubbish and are only there to complete a sparse matrix.
>
> -----Original Message-----
> From: Jon S. Berndt
> Sent: Monday, June 10, 2013 3:01 PM
> To: 'Development issues'
> Subject: Re: [Jsbsim-devel] Multi-dimensional tables
>
> Ah, yes - thanks for that. That explains it. JSBSim table lookups only do
> gridded tables - not ungridded/sparse. There are a number of methods one
> could take to fill in the blanks and IMHO it's better to do that offline.
> It's sort of an art, in my experience.
>
> Jon
>
>> -----Original Message-----
>> From: Sean McLeod [mailto:se...@se...]
>> Sent: Monday, June 10, 2013 6:50 AM
>> To: Development issues
>> Subject: Re: [Jsbsim-devel] Multi-dimensional tables
>>
>> I think what Alan is asking/looking for is whether there is any sparse
>> data table support.
>>
>> So for example if he has data for some coefficient that is dependent on
>> 2 dimensions, say mach number and AoA but for low mach numbers he has
>> data for a range of AoAs from say -5 to +20 but for higher mach numbers
>> he only has data for an AoA range from -3 to +5.
>>
>> He doesn't want to be forced to make up data for the higher mach
>> numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the
>> AoA range of the data he has for lower mach numbers.
>>
>> Cheers
|
|
From: Jon S. B. <jon...@co...> - 2013-06-11 00:58:20
|
Dennis - I hadn't thought of that, but, yes, that will work. Each individual table does not have to have the same set of breakpoints. Jon > -----Original Message----- > From: Dennis J. Linse [mailto:js...@li...] > Sent: Monday, June 10, 2013 9:48 AM > To: Development issues > Subject: Re: [Jsbsim-devel] Multi-dimensional tables > > So, Jon, (without looking at the code) will this work for Alan? > > <function name="bigWhatever1"> > <interpolate1d> > <p> velocities/mach </p> > <v> 0.1 </v> <interpolate1d> > <p> ???/alpha </p> > <v> -10.0 </v> <v> ?? </v> > <v> 0.0 </v> <v> ?? </v> > <v> 30.0 </v> <v> ?? </v> > </interpolate1d> > <v> 0.9 </v> <interpolate1d> > <p> ???/alpha </p> > <v> -2.0 </v> <v> ?? </v> > <v> 0.0 </v> <v> ?? </v> > <v> 5.0 </v> <v> ?? </v> > </interpolate1d> > <v> 2.0 </v> <interpolate1d> > <p> ???/alpha </p> > <v> -1.0 </v> <v> ?? </v> > <v> 0.0 </v> <v> ?? </v> > <v> 1.0 </v> <v> ?? </v> > </interpolate1d> > </interpolate1d> > </function> > > I'm guessing yes, by the way that you describe the tables since the > dependent value can be a table/function, etc. So each dimension needs > to be calculated separately at two different breakpoints and then > interpolated. (The traditional, orthogonal, multi-dimensional matrix > approach has only a single set of breakpoints in each dimension then > uses integer indices to get into the table, therefore, it has to be > "full".) If it is just linear in each dimension, it should work, > right? > > Dennis > > On 2013-06-10 10:23 AM, Alan Teeder wrote: > > > > Yes Sean got the words that I meant. ;-) Thanks. > > > > What I am looking for is a way to break up the coefficient tables > into > > sections that are split into the high alpha ranges that are > applicable > > at low speeds, and low alpha ranges which are achievable at high > speeds. > > > > My WIP stalls at 30 degrees incidence on the approach, but would > > probably break the airframe at 5 degrees when supersonic. > > > > At the moment each coefficient has a table covering the whole > > incidence range for each Mach number, so in this case the tables > cover > > the range -10 to 40 degrees incidence and Mach numbers 0-2. . > > > > My solution at the moment is to extrapolate the data to make up > > numbers to fill in the grid at the high speed end, but these numbers > > are really just meaningless rubbish and are only there to complete a > sparse matrix. > > > > -----Original Message----- > > From: Jon S. Berndt > > Sent: Monday, June 10, 2013 3:01 PM > > To: 'Development issues' > > Subject: Re: [Jsbsim-devel] Multi-dimensional tables > > > > Ah, yes - thanks for that. That explains it. JSBSim table lookups > only > > do gridded tables - not ungridded/sparse. There are a number of > > methods one could take to fill in the blanks and IMHO it's better to > do that offline. > > It's sort of an art, in my experience. > > > > Jon > > > >> -----Original Message----- > >> From: Sean McLeod [mailto:se...@se...] > >> Sent: Monday, June 10, 2013 6:50 AM > >> To: Development issues > >> Subject: Re: [Jsbsim-devel] Multi-dimensional tables > >> > >> I think what Alan is asking/looking for is whether there is any > >> sparse data table support. > >> > >> So for example if he has data for some coefficient that is dependent > >> on > >> 2 dimensions, say mach number and AoA but for low mach numbers he > >> has data for a range of AoAs from say -5 to +20 but for higher mach > >> numbers he only has data for an AoA range from -3 to +5. > >> > >> He doesn't want to be forced to make up data for the higher mach > >> numbers for AoA ranges from -5 to -3 and from +5 to +20 to match the > >> AoA range of the data he has for lower mach numbers. > >> > >> Cheers > > ----------------------------------------------------------------------- > ------- > How ServiceNow helps IT people transform IT departments: > 1. A cloud service to automate IT design, transition and operations 2. > Dashboards that offer high-level views of enterprise services 3. A > single system of record for all IT processes > http://p.sf.net/sfu/servicenow-d2d-j > _______________________________________________ > Jsbsim-devel mailing list > Jsb...@li... > https://lists.sourceforge.net/lists/listinfo/jsbsim-devel > _______________________________________________ > The JSBSim Flight Dynamics Model project http://www.JSBSim.org > _______________________________________________ |