Source code for quantity.predefined

# -*- coding: utf-8 -*-
##----------------------------------------------------------------------------
## Name:        quantities.predefined
## Purpose:     Define commonly used quantities.
##
## Author:      Michael Amrhein (mamrhein@users.sourceforge.net)
##
## Copyright:   (c) 2012 ff. Michael Amrhein
## License:     This program is free software. You can redistribute it, use it
##              and/or modify it under the terms of the 2-clause BSD license.
##              For license details please read the file LICENSE.TXT provided
##              together with the source code.
##----------------------------------------------------------------------------
## $Source: quantity/predefined.py $
## $Revision: d7c67273a1e7 2015-01-03 14:08 +0100 mamrhein $


"""Define commonly used quantities."""

#TODO: add more units

from __future__ import absolute_import, division, unicode_literals
from decimalfp import Decimal
from .quantity import Quantity


__version__ = 0, 5, 0

__metaclass__ = type


[docs]class Length(Quantity): refUnitName = 'Meter' refUnitSymbol = 'm'
METER = Length.refUnit CENTIMETER = Length.Unit('cm', 'Centimeter', Decimal('0.01') * METER) MILLIMETER = Length.Unit('mm', 'Millimeter', Decimal('0.001') * METER) KILOMETER = Length.Unit('km', 'Kilometer', Decimal(1000) * METER) # some imperial units INCH = Length.Unit('in', 'Inch', Decimal('2.54') * CENTIMETER) FOOT = Length.Unit('ft', 'Foot', Decimal(12) * INCH) YARD = Length.Unit('yd', 'Inch', Decimal(3) * FOOT)
[docs]class Mass(Quantity): refUnitName = 'Kilogram' refUnitSymbol = 'kg'
KILOGRAM = Mass.refUnit
[docs]class Duration(Quantity): refUnitName = 'Second' refUnitSymbol = 's'
SECOND = Duration.refUnit MINUTE = Duration.Unit('min', 'Minute', Decimal(60) * SECOND) HOUR = Duration.Unit('h', 'Hour', Decimal(60) * MINUTE) DAY = Duration.Unit('d', 'Day', Decimal(24) * HOUR)
[docs]class Area(Quantity): defineAs = Length ** 2 refUnitName = 'Square Meter'
SQUARE_METER = Area.refUnit
[docs]class Volume(Quantity): defineAs = Length ** 3 refUnitName = 'Cubic Meter'
CUBIC_METER = Volume.refUnit
[docs]class Velocity(Quantity): defineAs = Length / Duration refUnitName = 'Meter per Second'
METER_PER_SECOND = Velocity.refUnit KILOMETER_PER_HOUR = Velocity.Unit(None, 'Kilometer per hour', KILOMETER / HOUR)
[docs]class Acceleration(Quantity): defineAs = Length / Duration ** 2 refUnitName = 'Meter per Second squared'
METER_PER_SECOND_SQUARED = Acceleration.refUnit
[docs]class Force(Quantity): defineAs = Mass * Acceleration refUnitName = 'Newton' refUnitSymbol = 'N'
NEWTON = Force.refUnit
[docs]class Energy(Quantity): defineAs = Force * Length refUnitName = 'Joule' refUnitSymbol = 'J'
JOULE = Energy.refUnit
[docs]class Power(Quantity): defineAs = Energy / Duration refUnitName = 'Watt' refUnitSymbol = 'W'
WATT = Power.refUnit
[docs]class DataVolume(Quantity): refUnitName = 'Byte' refUnitSymbol = 'B'
BYTE = DataVolume.refUnit
[docs]class DataThroughput(Quantity): defineAs = DataVolume / Duration refUnitName = 'Bytes per Second'
BYTES_PER_SECOND = DataThroughput.refUnit
[docs]class Temperature(Quantity): pass
CELSIUS = Temperature.Unit('°C', 'Degree Celsius') KELVIN = Temperature.Unit('°K', 'Degree Kelvin') FAHRENHEIT = Temperature.Unit('°F', 'Degree Fahrenheit') #TODO: provide converter for Temperature