/* * #%L * The OME Data Model specification * %% * Copyright (C) 2014 - 2015 Open Microscopy Environment: * - Board of Regents of the University of Wisconsin-Madison * - Glencoe Software, Inc. * - University of Dundee * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 2 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-2.0.html>. * #L% */ /* * $Id$ * * Copyright 2014 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.units; import ome.units.quantity.Angle; import ome.units.quantity.ElectricPotential; import ome.units.quantity.Frequency; import ome.units.quantity.Length; import ome.units.quantity.Power; import ome.units.quantity.Pressure; import ome.units.quantity.Quantity; import ome.units.quantity.Temperature; import ome.units.quantity.Time; import ome.units.unit.Unit; import java.math.BigInteger; /** * Defines unit constants corresponding to unit classes in ome.units.unit.* * * @author Andrew Patterson      * <a href="mailto:ajpatterson@lifesci.dundee.ac.uk">ajpatterson@lifesci.dundee.ac.uk</a> * @version 1.0 * <small> * (<b>Internal version:</b> $Revision: $Date: $) * </small> * @since 5.1 */ public final class UNITS { public String getName() { return "OME-combined"; } // Definitions of units that others are calculated from public static final ome.units.unit.Unit<Angle> RADIAN = ome.units.unit.Unit.<Angle>CreateBaseUnit("SI.RADIAN", "rad"); public static final ome.units.unit.Unit<ElectricPotential> VOLT = ome.units.unit.Unit.<ElectricPotential>CreateBaseUnit("SI.VOLT", "V"); public static final ome.units.unit.Unit<Frequency> HERTZ = ome.units.unit.Unit.<Frequency>CreateBaseUnit("SI.HERTZ", "Hz"); public static final ome.units.unit.Unit<Length> METRE = ome.units.unit.Unit.<Length>CreateBaseUnit("SI.METRE", "m"); public static final ome.units.unit.Unit<Length> INCH = METRE.multiply(0.0254).setSymbol("in"); public static final ome.units.unit.Unit<Power> WATT = ome.units.unit.Unit.<Power>CreateBaseUnit("SI.WATT", "W"); public static final ome.units.unit.Unit<Pressure> PASCAL = ome.units.unit.Unit.<Pressure>CreateBaseUnit("SI.PASCAL", "Pa"); public static final ome.units.unit.Unit<Temperature> KELVIN = ome.units.unit.Unit.<Temperature>CreateBaseUnit("SI.KELVIN", "K"); public static final ome.units.unit.Unit<Time> SECOND = ome.units.unit.Unit.<Time>CreateBaseUnit("SI.SECOND", "s"); // functions to provide standard SI scaling public static <T extends Quantity> ome.units.unit.Unit<T> YOTTA(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "Y").multiply(BigInteger.TEN.pow(24).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> ZETTA(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "Z").multiply(BigInteger.TEN.pow(21).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> EXA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "E").multiply(BigInteger.TEN.pow(18).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> PETA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "P").multiply(BigInteger.TEN.pow(15).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> TERA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "T").multiply(BigInteger.TEN.pow(12).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> GIGA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "G").multiply(BigInteger.TEN.pow(9).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> MEGA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "M").multiply(BigInteger.TEN.pow(6).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> KILO( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "k").multiply(BigInteger.TEN.pow(3).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> HECTO(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "h").multiply(BigInteger.TEN.pow(2).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> DEKA( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol("da").multiply(BigInteger.TEN.pow(1).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> DECI( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "d").divide(BigInteger.TEN.pow(1).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> CENTI(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "c").divide(BigInteger.TEN.pow(2).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> MILLI(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "m").divide(BigInteger.TEN.pow(3).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> MICRO(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "µ").divide(BigInteger.TEN.pow(6).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> NANO( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "n").divide(BigInteger.TEN.pow(9).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> PICO( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "p").divide(BigInteger.TEN.pow(12).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> FEMTO(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "f").divide(BigInteger.TEN.pow(15).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> ATTO( ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "a").divide(BigInteger.TEN.pow(18).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> ZEPTO(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "z").divide(BigInteger.TEN.pow(21).doubleValue());} public static <T extends Quantity> ome.units.unit.Unit<T> YOCTO(ome.units.unit.Unit<T> inUnit){return inUnit.prefixSymbol( "y").divide(BigInteger.TEN.pow(24).doubleValue());} // Frequency public static final ome.units.unit.Unit<Frequency> YOTTAHZ = YOTTA(HERTZ); public static final ome.units.unit.Unit<Frequency> ZETTAHZ = ZETTA(HERTZ); public static final ome.units.unit.Unit<Frequency> EXAHZ = EXA(HERTZ); public static final ome.units.unit.Unit<Frequency> PETAHZ = PETA(HERTZ); public static final ome.units.unit.Unit<Frequency> TERAHZ = TERA(HERTZ); public static final ome.units.unit.Unit<Frequency> GIGAHZ = GIGA(HERTZ); public static final ome.units.unit.Unit<Frequency> MEGAHZ = MEGA(HERTZ); public static final ome.units.unit.Unit<Frequency> KHZ = KILO(HERTZ); public static final ome.units.unit.Unit<Frequency> HHZ = HECTO(HERTZ); public static final ome.units.unit.Unit<Frequency> DAHZ = DEKA(HERTZ); public static final ome.units.unit.Unit<Frequency> HZ = HERTZ; public static final ome.units.unit.Unit<Frequency> DHZ = DECI(HERTZ); public static final ome.units.unit.Unit<Frequency> CHZ = CENTI(HERTZ); public static final ome.units.unit.Unit<Frequency> MHZ = MILLI(HERTZ); public static final ome.units.unit.Unit<Frequency> MICROHZ = MICRO(HERTZ); public static final ome.units.unit.Unit<Frequency> NHZ = NANO(HERTZ); public static final ome.units.unit.Unit<Frequency> PHZ = PICO(HERTZ); public static final ome.units.unit.Unit<Frequency> FHZ = FEMTO(HERTZ); public static final ome.units.unit.Unit<Frequency> AHZ = ATTO(HERTZ); public static final ome.units.unit.Unit<Frequency> ZHZ = ZEPTO(HERTZ); public static final ome.units.unit.Unit<Frequency> YHZ = YOCTO(HERTZ); // Length public static final ome.units.unit.Unit<Length> YOTTAM = YOTTA(METRE); public static final ome.units.unit.Unit<Length> ZETTAM = ZETTA(METRE); public static final ome.units.unit.Unit<Length> EXAM = EXA(METRE); public static final ome.units.unit.Unit<Length> PETAM = PETA(METRE); public static final ome.units.unit.Unit<Length> TERAM = TERA(METRE); public static final ome.units.unit.Unit<Length> GIGAM = GIGA(METRE); public static final ome.units.unit.Unit<Length> MEGAM = MEGA(METRE); public static final ome.units.unit.Unit<Length> KM = KILO(METRE); public static final ome.units.unit.Unit<Length> HM = HECTO(METRE); public static final ome.units.unit.Unit<Length> DAM = DEKA(METRE); public static final ome.units.unit.Unit<Length> M = METRE; public static final ome.units.unit.Unit<Length> DM = DECI(METRE); public static final ome.units.unit.Unit<Length> CM = CENTI(METRE); public static final ome.units.unit.Unit<Length> MM = MILLI(METRE); public static final ome.units.unit.Unit<Length> MICROM = MICRO(METRE); public static final ome.units.unit.Unit<Length> NM = NANO(METRE); public static final ome.units.unit.Unit<Length> PM = PICO(METRE); public static final ome.units.unit.Unit<Length> FM = FEMTO(METRE); public static final ome.units.unit.Unit<Length> AM = ATTO(METRE); public static final ome.units.unit.Unit<Length> ZM = ZEPTO(METRE); public static final ome.units.unit.Unit<Length> YM = YOCTO(METRE); public static final ome.units.unit.Unit<Length> ANGSTROM = NM.divide(10).setSymbol("Å"); public static final ome.units.unit.Unit<Length> THOU = MILLI(INCH).setSymbol("thou"); public static final ome.units.unit.Unit<Length> LI = INCH.divide(12).setSymbol("li"); public static final ome.units.unit.Unit<Length> IN = INCH; public static final ome.units.unit.Unit<Length> FT = INCH.multiply(12).setSymbol("ft"); public static final ome.units.unit.Unit<Length> YD = FT.multiply(3).setSymbol("yd"); public static final ome.units.unit.Unit<Length> MI = YD.multiply(1760).setSymbol("mi"); public static final ome.units.unit.Unit<Length> UA = GIGA(METRE.multiply(149.597870700)).setSymbol("ua"); public static final ome.units.unit.Unit<Length> LY = PETA(METRE.multiply(9.4607304725808)).setSymbol("ly"); public static final ome.units.unit.Unit<Length> PC = GIGA(METRE.multiply(30856776)).setSymbol("pc"); // APPROXIMATE 3.0856776×10^16 m, exact would be UA.divide(tan(DEGREE.divide(3600))) public static final ome.units.unit.Unit<Length> PT = INCH.divide(72).setSymbol("pt"); public static final ome.units.unit.Unit<Length> PIXEL = ome.units.unit.Unit.<Length>CreateBaseUnit("Pixel", "pixel"); public static final ome.units.unit.Unit<Length> REFERENCEFRAME = ome.units.unit.Unit.<Length>CreateBaseUnit("ReferenceFrame", "reference frame"); // Power public static final ome.units.unit.Unit<Power> YOTTAW = YOTTA(WATT); public static final ome.units.unit.Unit<Power> ZETTAW = ZETTA(WATT); public static final ome.units.unit.Unit<Power> EXAW = EXA(WATT); public static final ome.units.unit.Unit<Power> PETAW = PETA(WATT); public static final ome.units.unit.Unit<Power> TERAW = TERA(WATT); public static final ome.units.unit.Unit<Power> GIGAW = GIGA(WATT); public static final ome.units.unit.Unit<Power> MEGAW = MEGA(WATT); public static final ome.units.unit.Unit<Power> KW = KILO(WATT); public static final ome.units.unit.Unit<Power> HW = HECTO(WATT); public static final ome.units.unit.Unit<Power> DAW = DEKA(WATT); public static final ome.units.unit.Unit<Power> W = WATT; public static final ome.units.unit.Unit<Power> DW = DECI(WATT); public static final ome.units.unit.Unit<Power> CW = CENTI(WATT); public static final ome.units.unit.Unit<Power> MW = MILLI(WATT); public static final ome.units.unit.Unit<Power> MICROW = MICRO(WATT); public static final ome.units.unit.Unit<Power> NW = NANO(WATT); public static final ome.units.unit.Unit<Power> PW = PICO(WATT); public static final ome.units.unit.Unit<Power> FW = FEMTO(WATT); public static final ome.units.unit.Unit<Power> AW = ATTO(WATT); public static final ome.units.unit.Unit<Power> ZW = ZEPTO(WATT); public static final ome.units.unit.Unit<Power> YW = YOCTO(WATT); // Pressure public static final ome.units.unit.Unit<Pressure> YOTTAPA = YOTTA(PASCAL); public static final ome.units.unit.Unit<Pressure> ZETTAPA = ZETTA(PASCAL); public static final ome.units.unit.Unit<Pressure> EXAPA = EXA(PASCAL); public static final ome.units.unit.Unit<Pressure> PETAPA = PETA(PASCAL); public static final ome.units.unit.Unit<Pressure> TERAPA = TERA(PASCAL); public static final ome.units.unit.Unit<Pressure> GIGAPA = GIGA(PASCAL); public static final ome.units.unit.Unit<Pressure> MEGAPA = MEGA(PASCAL); public static final ome.units.unit.Unit<Pressure> KPA = KILO(PASCAL); public static final ome.units.unit.Unit<Pressure> HPA = HECTO(PASCAL); public static final ome.units.unit.Unit<Pressure> DAPA = DEKA(PASCAL); public static final ome.units.unit.Unit<Pressure> PA = PASCAL; public static final ome.units.unit.Unit<Pressure> DPA = DECI(PASCAL); public static final ome.units.unit.Unit<Pressure> CPA = CENTI(PASCAL); public static final ome.units.unit.Unit<Pressure> MPA = MILLI(PASCAL); public static final ome.units.unit.Unit<Pressure> MICROPA = MICRO(PASCAL); public static final ome.units.unit.Unit<Pressure> NPA = NANO(PASCAL); public static final ome.units.unit.Unit<Pressure> PPA = PICO(PASCAL); public static final ome.units.unit.Unit<Pressure> FPA = FEMTO(PASCAL); public static final ome.units.unit.Unit<Pressure> APA = ATTO(PASCAL); public static final ome.units.unit.Unit<Pressure> ZPA = ZEPTO(PASCAL); public static final ome.units.unit.Unit<Pressure> YPA = YOCTO(PASCAL); public static final ome.units.unit.Unit<Pressure> BAR = PASCAL.multiply(100000).setSymbol("bar"); public static final ome.units.unit.Unit<Pressure> MEGABAR = MEGA(BAR); public static final ome.units.unit.Unit<Pressure> KBAR = KILO(BAR); public static final ome.units.unit.Unit<Pressure> DBAR = DECI(BAR); public static final ome.units.unit.Unit<Pressure> CBAR = CENTI(BAR); public static final ome.units.unit.Unit<Pressure> MBAR = MILLI(BAR); public static final ome.units.unit.Unit<Pressure> ATM = PASCAL.multiply(101325).setSymbol("atm"); public static final ome.units.unit.Unit<Pressure> PSI = PASCAL.multiply(6894.75729316836142).setSymbol("psi"); // APPROXIMATE public static final ome.units.unit.Unit<Pressure> TORR = ATM.divide(760).setSymbol("Torr"); public static final ome.units.unit.Unit<Pressure> MTORR = MILLI(TORR); public static final ome.units.unit.Unit<Pressure> MMHG = PASCAL.multiply(133.322387415).setSymbol("mm Hg"); // Temperature public static final ome.units.unit.Unit<Temperature> DEGREEC = KELVIN.add(273.15).setSymbol("°C"); public static final ome.units.unit.Unit<Temperature> K = KELVIN; public static final ome.units.unit.Unit<Temperature> DEGREER = KELVIN.multiply(5).divide(9).setSymbol("°R"); public static final ome.units.unit.Unit<Temperature> DEGREEF = DEGREER.add(459.67).setSymbol("°F"); // Time public static final ome.units.unit.Unit<Time> YOTTAS = YOTTA(SECOND); public static final ome.units.unit.Unit<Time> ZETTAS = ZETTA(SECOND); public static final ome.units.unit.Unit<Time> EXAS = EXA(SECOND); public static final ome.units.unit.Unit<Time> PETAS = PETA(SECOND); public static final ome.units.unit.Unit<Time> TERAS = TERA(SECOND); public static final ome.units.unit.Unit<Time> GIGAS = GIGA(SECOND); public static final ome.units.unit.Unit<Time> MEGAS = MEGA(SECOND); public static final ome.units.unit.Unit<Time> KS = KILO(SECOND); public static final ome.units.unit.Unit<Time> HS = HECTO(SECOND); public static final ome.units.unit.Unit<Time> DAS = DEKA(SECOND); public static final ome.units.unit.Unit<Time> S = SECOND; public static final ome.units.unit.Unit<Time> DS = DECI(SECOND); public static final ome.units.unit.Unit<Time> CS = CENTI(SECOND); public static final ome.units.unit.Unit<Time> MS = MILLI(SECOND); public static final ome.units.unit.Unit<Time> MICROS = MICRO(SECOND); public static final ome.units.unit.Unit<Time> NS = NANO(SECOND); public static final ome.units.unit.Unit<Time> PS = PICO(SECOND); public static final ome.units.unit.Unit<Time> FS = FEMTO(SECOND); public static final ome.units.unit.Unit<Time> AS = ATTO(SECOND); public static final ome.units.unit.Unit<Time> ZS = ZEPTO(SECOND); public static final ome.units.unit.Unit<Time> YS = YOCTO(SECOND); public static final ome.units.unit.Unit<Time> MIN = SECOND.multiply(60).setSymbol("min"); public static final ome.units.unit.Unit<Time> H = MIN.multiply(60).setSymbol("h"); public static final ome.units.unit.Unit<Time> D = H.multiply(24).setSymbol("d"); // ElectricPotential public static final ome.units.unit.Unit<ElectricPotential> YOTTAV = YOTTA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> ZETTAV = ZETTA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> EXAV = EXA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> PETAV = PETA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> TERAV = TERA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> GIGAV = GIGA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> MEGAV = MEGA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> KV = KILO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> HV = HECTO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> DAV = DEKA(VOLT); public static final ome.units.unit.Unit<ElectricPotential> V = VOLT; public static final ome.units.unit.Unit<ElectricPotential> DV = DECI(VOLT); public static final ome.units.unit.Unit<ElectricPotential> CV = CENTI(VOLT); public static final ome.units.unit.Unit<ElectricPotential> MV = MILLI(VOLT); public static final ome.units.unit.Unit<ElectricPotential> MICROV = MICRO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> NV = NANO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> PV = PICO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> FV = FEMTO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> AV = ATTO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> ZV = ZEPTO(VOLT); public static final ome.units.unit.Unit<ElectricPotential> YV = YOCTO(VOLT); // Angle public static final ome.units.unit.Unit<Angle> DEG = RADIAN.multiply(Math.PI).divide(180).setSymbol("deg"); public static final ome.units.unit.Unit<Angle> RAD = RADIAN; public static final ome.units.unit.Unit<Angle> GON = RADIAN.multiply(Math.PI).divide(200).setSymbol("gon"); }