arithmetic/src/basictypes/physicalunit/SIUnit.ig


GENERIC INTERFACE SIUnit(UDB);

Some common quantities, their units according to the SI standard are packed into a database by CreateDatabase.

One might predefine values for each usual SI unit, but it is difficult to mix with complex numbers.


IMPORT PhysicalUnit AS U;

TYPE
  SIUnit = ARRAY OF U.ExpType;

CONST
  (*                     s  t  m  U     T     *)
  (*                     m  s kg  V  °  K bit *)
  noUnit       = SIUnit{ 0, 0, 0, 0, 0, 0, 0};
  length       = SIUnit{ 1, 0, 0, 0, 0, 0, 0};
  area         = SIUnit{ 2, 0, 0, 0, 0, 0, 0};
  volume       = SIUnit{ 3, 0, 0, 0, 0, 0, 0};
  time         = SIUnit{ 0, 1, 0, 0, 0, 0, 0};
  frequency    = SIUnit{ 0,-1, 0, 0, 0, 0, 0};
  speed        = SIUnit{ 1,-1, 0, 0, 0, 0, 0};
  acceleration = SIUnit{ 1,-2, 0, 0, 0, 0, 0};
  mass         = SIUnit{ 0, 0, 1, 0, 0, 0, 0};
  force        = SIUnit{ 1,-2, 1, 0, 0, 0, 0};
  pressure     = SIUnit{-1,-2, 1, 0, 0, 0, 0};
  energy       = SIUnit{ 2,-2, 1, 0, 0, 0, 0};
  power        = SIUnit{ 2,-3, 1, 0, 0, 0, 0};
  charge       = SIUnit{ 0, 0, 0, 1, 0, 0, 0};
  current      = SIUnit{ 0,-1, 0, 1, 0, 0, 0};
  voltage      = SIUnit{ 2,-2, 1,-1, 0, 0, 0};
  resistance   = SIUnit{ 2,-1, 1,-2, 0, 0, 0};
  capacity     = SIUnit{-2, 2,-1, 2, 0, 0, 0};
  angle        = SIUnit{ 0, 0, 0, 0, 1, 0, 0};
  angularspeed = SIUnit{ 0,-1, 0, 0, 1, 0, 0};
  temperature  = SIUnit{ 0, 0, 0, 0, 0, 1, 0};
  information  = SIUnit{ 0, 0, 0, 0, 0, 0, 1};
  datarate     = SIUnit{ 0,-1, 0, 0, 0, 0, 1};

PROCEDURE CreateDatabase():UDB.T;

END SIUnit.