From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Expressing physical units (Was: Reprise: 'in out' parameters for functions)
Date: Tue, 13 Apr 2004 12:55:50 +0200
Date: 2004-04-13T12:55:50+02:00 [thread overview]
Message-ID: <c5gh04$1ba02$1@ID-77047.news.uni-berlin.de> (raw)
In-Reply-To: bebbba07.0404122252.5b684880@posting.google.com
Russ wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:<c5dr33$gkic$3@ID-77047.news.uni-berlin.de>...
>> Russ wrote:
>>
>> > By the way, I work in the field of air traffic management (ATM), and
>> > I'd really like to see a practical way to guarantee units consistency.
>> > The general mks system is inappropriate for ATM. The traditional units
>> > for ATM are nautical miles (nmi) for horizontal length, and feet (ft)
>> > for altitude. That won't change in our lifetimes -- and probably
>> > never. As for time, it can be in seconds, minutes, or hours.
>> > Horizontal speed in usually given in terms of knots (kn), which is
>> > nmi/hr, but altitude rate is usually given in terms of ft/min. Heading
>> > is normally given in degrees.
>> >
>> > In my experience, the most common units problem is confusion between
>> > degrees and radians. Radians are preferable for use inside programs,
>> > but degrees are preferable for I/O. This problem really needs to be
>> > licked once and for all.
>>
>> It does not differ from [m] vs. [ft]. The dimension of radian is [1] =
>> m**0*A**0*s**0... The dimension of degree is [Pi/180]. No magic here.
>> More difficult is Celsius degree vs. K, which AFAIK cannot be solved
>> using C++ templates.
>
> I know it can be done in C++, but I thought we were talking about doing it
> in Ada.
>
> By the way, what the heck is "m**0*A**0*s**0..."?
Any unit system is built upon some standard set of measures (base units).
This set is pretty arbitrary from a physics point of view, but in SI it was
selected to be m, A, s, kg, K, cd, mol. A dimension of any derived unit is
then a product of powers of the base units. For example, the dimension of
acceleration is m*s**(-2). When all powers are 0, we have a "dimensionless"
unit, like radian is.
Now to templates and C++. You are wrong thinking that units can be properly
done in C++. What indeed can be, is a tiny part of what is really
necessary. Consider the following issues:
1. Shifted units, like Celsius degree.
2. Dealing with units unknown at compile time. How would you communicate
with a data base, or develop a gauge widget, or write a unit calculator?
How to write a unit I/O package?
3. Dealing with multiple unit systems. The C++ solution actually works in
SI. It means that a measure in [ft] has to be converted to [m]. It is OK as
long as:
3.a. There is no range problems. In an emedded system one could use a fixed
arithmetics with would overflow if the distance is measured in [m], but
work fine for [km].
3.b. One can ignore inevitable precission loss caused by unit conversions.
This might be critical for some applications.
5. How to handle logarithmic units and other non-linear scales?
6. Container problem. Surely a vector, matrix etc of dimensioned values
should have a dimension. Possibly it could be handled by templates, but I
am afraid it would not be so easy.
7. Any generic (template) solution would make everything based upon it also
generic.
--
Regards,
Dmitry A. Kazakov
www.dmitry-kazakov.de
next prev parent reply other threads:[~2004-04-13 10:55 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <u4qrv5hwr.fsf@acm.org>
2004-04-08 17:19 ` Reprise: 'in out' parameters for functions Alexander E. Kopilovich
[not found] ` <bRecOT0TxF@VB1162.spb.edu>
2004-04-08 23:46 ` Stephen Leake
2004-04-09 9:23 ` Florian Weimer
2004-04-09 10:04 ` Dmitry A. Kazakov
2004-04-09 11:23 ` Martin Krischik
2004-04-09 12:44 ` Dmitry A. Kazakov
2004-04-09 22:48 ` Randy Brukardt
2004-04-14 14:40 ` Robert I. Eachus
2004-04-14 21:20 ` Randy Brukardt
2004-04-09 22:47 ` Florian Weimer
2004-04-10 10:49 ` Dmitry A. Kazakov
2004-04-10 11:11 ` Florian Weimer
2004-04-10 13:26 ` Dmitry A. Kazakov
2004-04-10 20:50 ` Georg Bauhaus
2004-04-11 10:31 ` Dmitry A. Kazakov
2004-04-09 11:27 ` Stephen Leake
2004-04-09 22:46 ` Randy Brukardt
2004-04-09 13:12 ` Wojtek Narczynski
2004-04-09 15:48 ` Expressing physical units (Was: Reprise: 'in out' parameters for functions) Jacob Sparre Andersen
2004-04-10 13:07 ` Wojtek Narczynski
2004-04-10 13:52 ` Jacob Sparre Andersen
2004-04-11 2:45 ` Hyman Rosen
2004-04-11 10:14 ` Expressing physical units Jacob Sparre Andersen
2004-04-11 16:05 ` Hyman Rosen
2004-04-12 6:58 ` Expressing physical units (Was: Reprise: 'in out' parameters for functions) Russ
2004-04-12 10:29 ` Dmitry A. Kazakov
2004-04-13 6:52 ` Russ
2004-04-13 10:55 ` Dmitry A. Kazakov [this message]
2004-04-14 4:50 ` Hyman Rosen
2004-04-14 8:49 ` Dmitry A. Kazakov
2004-04-14 16:49 ` Hyman Rosen
2004-04-15 10:37 ` Dmitry A. Kazakov
2004-04-14 7:10 ` Russ
2004-04-14 8:53 ` tmoran
2004-04-14 9:01 ` Vinzent 'Gadget' Hoefler
2004-04-14 9:21 ` Dmitry A. Kazakov
2004-04-13 9:53 ` Wojtek Narczynski
2004-04-15 21:27 ` Expressing physical units Jacob Sparre Andersen
2004-04-16 11:40 ` Dmitry A. Kazakov
2004-04-09 16:17 ` Reprise: 'in out' parameters for functions Georg Bauhaus
2004-04-10 2:28 ` Wojtek Narczynski
2004-04-10 9:46 ` Georg Bauhaus
2004-04-10 10:49 ` Dmitry A. Kazakov
2004-04-10 15:35 ` Wojtek Narczynski
2004-04-10 21:01 ` Georg Bauhaus
2004-04-10 21:16 ` Georg Bauhaus
2004-04-11 13:20 ` exception parameters Stephen Leake
2004-04-12 10:29 ` Dmitry A. Kazakov
2004-04-13 0:58 ` Stephen Leake
2004-04-13 1:30 ` Randy Brukardt
2004-04-13 8:04 ` Jean-Pierre Rosen
2004-04-11 10:31 ` Reprise: 'in out' parameters for functions Dmitry A. Kazakov
2004-04-12 22:02 ` Randy Brukardt
2004-04-13 10:56 ` Dmitry A. Kazakov
2004-04-14 21:12 ` Randy Brukardt
2004-04-15 10:37 ` Dmitry A. Kazakov
2004-04-13 9:30 ` Wojtek Narczynski
2004-04-13 12:00 ` Dmitry A. Kazakov
2004-04-13 22:41 ` Wojtek Narczynski
2004-04-14 8:49 ` Dmitry A. Kazakov
2004-04-14 15:03 ` Wojtek Narczynski
2004-04-15 10:37 ` Dmitry A. Kazakov
2004-04-16 0:29 ` Wojtek Narczynski
2004-04-16 11:36 ` Dmitry A. Kazakov
2004-04-16 19:25 ` Wojtek Narczynski
2004-04-14 15:57 ` Robert I. Eachus
2004-04-15 8:04 ` Dmitry A. Kazakov
2004-04-10 12:32 ` Wojtek Narczynski
2004-04-14 15:46 ` Robert I. Eachus
2004-04-16 1:52 ` Wojtek Narczynski
2004-04-16 5:40 ` Robert I. Eachus
2004-04-16 11:38 ` Wojtek Narczynski
2004-04-16 16:30 ` Robert I. Eachus
2004-04-16 18:38 ` Randy Brukardt
2004-04-16 22:15 ` Wojtek Narczynski
2004-04-17 1:20 ` Robert I. Eachus
2004-04-17 11:42 ` Wojtek Narczynski
2004-04-17 14:14 ` Robert I. Eachus
2004-04-16 19:28 ` Wojtek Narczynski
2004-04-09 17:09 ` Pascal Obry
2004-04-10 2:37 ` Wojtek Narczynski
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox