Dimensional Analysis, Unit Conversions, and Physical Constants
When I was in college, I memorized most of the common physical constants, such as Plank's Constant or Earth's mass. To be honest, today I don't remember most of these without looking them up. Although this isn't too difficult to do in the era of the internet where I can copy and paste the search result of "Plank's Constant" from my browser into the IDL editor, IDL makes it much easier by storing many of these physical constants in the !CONST system variable. For example, if I am writing code that calculates gravitational forces using the Gravitation Constant, I can simply use !CONST.G. More convenient than just saving me a few seconds of typing a long number as a variable, however, is the fact that IDL automatically stores these values as double precision, ensuring maximum accuracy each time they are used.
Unit Conversion in IDL
Another helpful tool when developing code that involves processing dimensional data is IDLUNIT, which can perform unit conversion, calculate simple mathematical expressions, and much more. Similar to !CONST, all values and calculations are kept in double precision for maximum accuracy.
Here is an example of how you may convert PSI to Pascals:
PsiToPa = (IDLUnit('psi -> Pa')).Quantity
PaValue = psiValue * psiToPa
IDLUNIT even allows a user to add custom units, which is helpful when using non-standard units. For example, how many Olympic sized swimming pools does it take to fill Sydney Harbour? Let's define a unit of 'pool' as 50 x 25 x 2 meters = 2500 m3, and let's define Sydney Harbour as 494 Gigaliters (source: Wikipedia: List of unusual units of measurement).
IDLUnit.AddUnit, 'pool', '2500 m^3', PLURAL='pools'
IDLUnit.AddUnit, 'Sydharb', '494 Gl', PLURAL='Sydharbs'
IDLUnit('1 Sydharb -> pools')
IDL tells us that 197,600 pools could fill Sydney Harbour.
IDL's help page for the IDLUNIT topic contains many additional examples.
Unit Converter Widget
In addition to performing unit conversions in code or at the command line, IDL has an interactive unit converter. To launch this converter, run 'idl_convert' or select 'IDL Converter' from the IDL Workbench's Macros menu. Notice that the custom units defined in the example above are included in this tool.