Skip to content

Units Dimensions

Greg Sjaardema edited this page Feb 6, 2019 · 14 revisions

Base Units

Dimension Units
Mass Kilogram, Gram, Slug, PoundMass
Length Meter, Centimeter, Millimeter, Foot, Inch
Time Second, Minute, Hour
Temperature Kelvin, Celsius, Rankine, Fahrenheit
Angle [not base] Degree, Radian
ElectricCurrent Ampere, Abampere, Statampere, Edison, auCurrent
SubstanceAmount Mole, Entities, StandardCubicFoot, StandardCubicMeter
LuminousIntensity Candela, Candle, Carcel, Hefner, Violle

Derived Units

Derived Dimension SI Derived Unit
area square meter m^2
volume cubic meter m^3
speed, velocity meter per second m/s
acceleration meter per second squared m/s^2
wave number reciprocal meter m^-1
mass density kilogram per cubic meter kg/m^3
specific volume cubic meter per kilogram m^3/kg
current density ampere per square meter A/m^2
magnetic field strength ampere per meter A/m
amount-of-substance concentration mole per cubic meter mol/m^3
luminance candela per square meter cd/m^2
mass fraction kilogram per kilogram, which may be represented by the number 1 kg/kg = 1

Dimensions

mass, length, time, temperature, angle, electric current, substance amount, and luminous intensity

Unit Systems

    "si"
    "cgs"
    "cgs-ev"
    "shock"
    "swap"
    "ft-lbf-s"
    "ft-lbm-s"
    "in-lbf-s"

Representation

An Exodus file will have a single consistent set of units which can either be specified by the eight individual units for each dimension (mass, length, time, temperature, angle, electric current, substance amount, and luminous intensity) or the specification of a predefined units system (si, cgs, cgs-ev, shock, swap, ft-lbf-s, ft-lbm-s, in-lbf-s).

Each variable within the Exodus file will have an optional specification of the dimensionality of the data by defining the exponents associated with each of the fundamental units. The exponents will be real (floating point) values to permit non-integral exponents.

The units for a particular variable can be derived from the unit system of the file combined with the dimensional exponents of the variable. As an example:

  • File unit system is "SI"
  • Variable "accel" has dimensional exponents are "0, 1, -2, 0, 0, 0, 0, 0"
  • The variable's units would be "meter / second^2"

If a file does not have a specified units system, then it is still permissible for the variables to have dimensional exponents; however, no units will be assumed and the dimensional exponents would simply serve to define the dimension of the variable. For example, the variable is an "acceleration".

If the file has a specified units system, but a variable has no dimensional exponents, then that variable will be assumed to be dimensionless. This can also be represented by a set of dimensional exponents that are all zero.

If a variable has any dimensional exponents attribute defined, then there must be either 5 or 8 exponents defined. It is permissible to ignore the last 3 dimensions and only provide values for the first five (mass, length, time, temperature, angle).

The exodus file and API provide a mechanism for storing, retrieving and defining the units and dimensions, but there is no validity checking or conversion from one system to another.

API

CDF Representation

The dimensional exponents will be represented as a attribute on the variable named "dimensional_exponents" with length 5 or 8 floating point values:

vars:
   double coordx(num_nodes) ;
      coordx:dimensional_exponents = "0, 1, 0, 0, 0" ;
   double vals_elem_var3eb2(time_step, num_el_in_blk2) ;
      vals_elem_var3eb2:dimensional_exponents = "0, 1, -2, 0, 0" ;

The units system would be specified as an a global attribute:

// global attributes:
                :api_version = 7.1f ;
                :version = 7.1f ;
                :floating_point_word_size = 8 ;
                :file_size = 1 ;
                :maximum_name_length = 8 ;
                // One of the following two lines:
     --->       :units_system = "SI" ;
     --->       :units_system = "kilogram", "meter", "second", "kelvin", "radian" ;
                :int64_status = 0 ;
                :title = "This is the Title of the file" ;
                :last_written_time = 0.100000001490116 ;