Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
systems.uom.ucum.UCUM Maven / Gradle / Ivy
Go to download
Unit System supporting the Unified Code for Units of Measure (UCUM)
/*
* Units of Measurement Systems
* Copyright (c) 2005-2019, Jean-Marie Dautelle, Werner Keil and others.
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions
* and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of JSR-385, Units of Measurement nor the names of their contributors may be used to
* endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package systems.uom.ucum;
import static javax.measure.MetricPrefix.*;
import static tech.units.indriya.AbstractUnit.ONE;
import si.uom.quantity.*;
import systems.uom.quantity.Acidity;
import systems.uom.quantity.Concentration;
import systems.uom.quantity.Drag;
import systems.uom.quantity.Information;
import systems.uom.quantity.InformationRate;
import si.uom.quantity.Level;
import si.uom.SI;
import tech.units.indriya.*;
import tech.units.indriya.format.SimpleUnitFormat;
import tech.units.indriya.function.LogConverter;
import tech.units.indriya.function.MultiplyConverter;
import tech.units.indriya.unit.AlternateUnit;
import tech.units.indriya.unit.ProductUnit;
import tech.units.indriya.unit.TransformedUnit;
import tech.units.indriya.unit.Units;
import javax.measure.Quantity;
import javax.measure.Unit;
import javax.measure.quantity.*;
/**
*
* This class contains {@link SI} and Non-SI units as defined in the
* Unified Code for Units of Measure .
*
*
*
* Compatibility with {@link SI} units has been given priority over strict
* adherence to the standard. We have attempted to note every place where the
* definitions in this class deviate from the UCUM standard, but such notes are
* likely to be incomplete.
*
*
* @author Eric Russell
* @author Werner Keil
* @see UCUM
* @version 2.1, $Date: 2019-10-02 $
*/
public final class UCUM extends AbstractSystemOfUnits {
/**
* The singleton instance.
*/
private static final UCUM INSTANCE = new UCUM();
/**
* Default constructor (prevents this class from being instantiated).
*/
private UCUM() {
}
/**
* Returns the singleton instance of this class.
*
* @return the UCUM system instance.
*/
public static UCUM getInstance() {
return INSTANCE;
}
//////////////////////////////
// BASE UNITS: UCUM 4.2 §28 //
//////////////////////////////
/** As per UCUM standard. */
public static final Unit METER = addUnit(Units.METRE);
/** As per UCUM standard. */
public static final Unit SECOND = addUnit(Units.SECOND);
/**
* We deviate slightly from the standard here, to maintain compatibility
* with the existing SI units. In UCUM, the gram is the base unit of mass,
* rather than the kilogram. This doesn't have much effect on the units
* themselves, but it does make formatting the units a challenge.
*/
public static final Unit GRAM = addUnit(Units.GRAM);
/** As per UCUM standard. */
public static final Unit RADIAN = addUnit(Units.RADIAN);
/** As per UCUM standard. */
public static final Unit KELVIN = addUnit(Units.KELVIN);
/** As per UCUM standard. */
public static final Unit COULOMB = addUnit(Units.COULOMB);
/** As per UCUM standard. */
public static final Unit CANDELA = addUnit(Units.CANDELA);
///////////////////////////////////////////////
// DIMENSIONLESS DERIVED UNITS: UCUM 4.3 §29 //
///////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit TRILLIONS = addUnit(ONE.multiply(1000000000000L));
/** As per UCUM standard. */
public static final Unit BILLIONS = addUnit(ONE.multiply(1000000000));
/** As per UCUM standard. */
public static final Unit MILLIONS = addUnit(ONE.multiply(1000000));
/** As per UCUM standard. */
public static final Unit THOUSANDS = addUnit(ONE.multiply(1000));
/** As per UCUM standard. */
public static final Unit HUNDREDS = addUnit(ONE.multiply(100));
/** As per UCUM standard. */
public static final Unit PI = addUnit(ONE.transform(MultiplyConverter.ofPiExponent(1)));
/** As per UCUM standard. */
public static final Unit PERCENT = addUnit(ONE.divide(100));
/** As per UCUM standard. */
public static final Unit PER_THOUSAND = addUnit(ONE.divide(1000));
/** As per UCUM standard. */
public static final Unit PER_MILLION = addUnit(ONE.divide(1000000));
/** As per UCUM standard. */
public static final Unit PER_BILLION = addUnit(ONE.divide(1000000000));
/** As per UCUM standard. */
public static final Unit PER_TRILLION = addUnit(ONE.divide(1000000000000L));
////////////////////////////
// SI UNITS: UCUM 4.3 §30 //
////////////////////////////
/**
* We deviate slightly from the standard here, to maintain compatibility
* with the existing SI units. In UCUM, the mole is no longer a base unit,
* but is defined as Unit.ONE.multiply(6.0221367E23)
.
*/
public static final Unit MOLE = addUnit(Units.MOLE);
/**
* We deviate slightly from the standard here, to maintain compatibility
* with the existing SI units. In UCUM, the steradian is defined as
* RADIAN.pow(2)
.
*/
public static final Unit STERADIAN = addUnit(Units.STERADIAN);
/** As per UCUM standard. */
public static final Unit HERTZ = addUnit(Units.HERTZ);
/** As per UCUM standard. */
public static final Unit NEWTON = addUnit(Units.NEWTON);
/** As per UCUM standard. */
public static final Unit PASCAL = addUnit(Units.PASCAL);
/** As per UCUM standard. */
public static final Unit JOULE = addUnit(Units.JOULE);
/** As per UCUM standard. */
public static final Unit WATT = addUnit(Units.WATT);
/**
* We deviate slightly from the standard here, to maintain compatibility
* with the existing SI units. In UCUM, the ampere is defined as
* COULOMB.divide(SECOND)
.
*/
public static final Unit AMPERE = addUnit(Units.AMPERE);
// public static final Unit AMPERE_TURN =
// addUnit(Units.AMPERE_TURN);
/**
* We deviate slightly from the standard here, to maintain compatibility
* with the existing SI units. In UCUM, the volt is defined as
* JOULE.divide(COULOMB)
.
*/
public static final Unit VOLT = addUnit(Units.VOLT);
/** As per UCUM standard. */
public static final Unit FARAD = addUnit(Units.FARAD);
/** As per UCUM standard. */
public static final Unit OHM = addUnit(Units.OHM);
/** As per UCUM standard. */
public static final Unit SIEMENS = addUnit(Units.SIEMENS);
/** As per UCUM standard. */
public static final Unit WEBER = addUnit(Units.WEBER);
/** As per UCUM standard. */
public static final Unit CELSIUS = addUnit(Units.CELSIUS);
/** As per UCUM standard. */
public static final Unit TESLA = addUnit(Units.TESLA);
/** As per UCUM standard. */
public static final Unit HENRY = addUnit(Units.HENRY);
/** As per UCUM standard. */
public static final Unit LUMEN = addUnit(Units.LUMEN);
/** As per UCUM standard. */
public static final Unit LUX = addUnit(Units.LUX);
/** As per UCUM standard. */
public static final Unit BECQUEREL = addUnit(Units.BECQUEREL);
/** As per UCUM standard. */
public static final Unit GRAY = addUnit(Units.GRAY);
/** As per UCUM standard. */
public static final Unit SIEVERT = addUnit(Units.SIEVERT);
///////////////////////////////////////////////////////////////////////
// OTHER UNITS FROM ISO 1000, ISO 2955, AND ANSI X3.50: UCUM 4.3 §31 //
///////////////////////////////////////////////////////////////////////
// The order of GON and DEGREE has been inverted because GON is defined in
// terms of DEGREE
/** As per UCUM standard. */
public static final Unit DEGREE = addUnit(new ProductUnit(PI.multiply(RADIAN.divide(180))));
/** As per UCUM standard. */
public static final Unit GRADE = addUnit(DEGREE.multiply(0.9));
/** As per UCUM standard. */
public static final Unit GON = GRADE;
/** As per UCUM standard. */
public static final Unit MINUTE_ANGLE = addUnit(DEGREE.divide(60));
/** As per UCUM standard. */
public static final Unit SECOND_ANGLE = addUnit(MINUTE_ANGLE.divide(60));
/** As per UCUM standard. */
public static final Unit LITER = addUnit(Units.LITRE, "liter", "L", true);
/**
* As per UCUM standard. Liter has
* two definitions.
*
* @see UCUM Table
* 5
*/
public static final Unit LITER_DM3 = addUnit(DECI(Units.METRE).pow(3).asType(Volume.class), "liter", "l", true);
/** As per UCUM standard. */
public static final Unit ARE = addUnit(Units.SQUARE_METRE.multiply(100));
/** As per UCUM standard. */
public static final Unit MINUTE = addUnit(Units.MINUTE);
/** As per UCUM standard. */
public static final Unit HOUR = addUnit(Units.HOUR);
/** As per UCUM standard. */
public static final Unit DAY = addUnit(Units.DAY);
/** As per UCUM standard. */
public static final Unit YEAR_TROPICAL = addUnit(Units.DAY.multiply(365.24219));
/** As per UCUM standard. */
public static final Unit YEAR_JULIAN = addUnit(Units.DAY.multiply(365.25));
/** As per UCUM standard. */
public static final Unit YEAR_GREGORIAN = addUnit(Units.DAY.multiply(365.2425));
/** As per UCUM standard. */
public static final Unit YEAR = addUnit(Units.DAY.multiply(365.25));
/** As per UCUM standard. */
public static final Unit WEEK = addUnit(Units.DAY.multiply(7));
/** As per UCUM standard. */
public static final Unit MONTH_SYNODAL = addUnit(Units.DAY.multiply(29.53059));
/** As per UCUM standard. */
public static final Unit MONTH_JULIAN = addUnit(YEAR_JULIAN.divide(12));
/** As per UCUM standard. */
public static final Unit MONTH_GREGORIAN = addUnit(YEAR_GREGORIAN.divide(12));
/** As per UCUM standard. */
public static final Unit MONTH = addUnit(YEAR_JULIAN.divide(12));
/** As per UCUM standard. */
public static final Unit TONNE = addUnit(Units.KILOGRAM.multiply(1000));
/** As per UCUM standard. */
public static final Unit BAR = addUnit(Units.PASCAL.multiply(100000));
/** As per UCUM standard. */
public static final Unit ATOMIC_MASS_UNIT = addUnit(SI.UNIFIED_ATOMIC_MASS);
/** As per UCUM standard. */
public static final Unit ELECTRON_VOLT = addUnit(SI.ELECTRON_VOLT);
/** As per UCUM standard. */
public static final Unit ASTRONOMIC_UNIT = addUnit(SI.ASTRONOMICAL_UNIT);
/** As per UCUM standard. */
public static final Unit PARSEC = addUnit(Units.METRE.multiply(3.085678E16));
/////////////////////////////////
// NATURAL UNITS: UCUM 4.3 §32 //
/////////////////////////////////
/** As per UCUM standard. */
public static final Unit VELOCITY_OF_LIGHT = addUnit(Units.METRE_PER_SECOND.multiply(299792458));
/** As per UCUM standard. */
public static final Unit PLANCK = addUnit(SI.JOULE_SECOND.multiply(6.6260755E-34));
/** As per UCUM standard. */
public static final Unit> BOLTZMAN = addUnit(JOULE.divide(KELVIN).multiply(1.380658E-23));
/** As per UCUM standard. */
public static final Unit PERMITTIVITY_OF_VACUUM = addUnit(
SI.FARAD_PER_METRE.multiply(8.854187817E-12));
/** As per UCUM standard. */
public static final Unit PERMEABILITY_OF_VACUUM = addUnit(
new ProductUnit(SI.NEWTON_PER_SQUARE_AMPERE.multiply(PI.multiply(4).divide(1E7))),
MagneticPermeability.class);
// public static final Unit PERMEABILITY_OF_VACUUM =
// addUnit(
// new ProductUnit(Units.NEWTONS_PER_SQUARE_AMPERE
// .multiply(PI).multiply(4).divide(1E7)),
// MagneticPermeability.class);
/** As per UCUM standard. */
public static final Unit ELEMENTARY_CHARGE = addUnit(
Units.COULOMB.transform(((AbstractUnit) SI.ELECTRON_VOLT).getSystemConverter()));
/** As per UCUM standard. */
public static final Unit ELECTRON_MASS = addUnit(GRAM.multiply(9.1093897E-28));
/** As per UCUM standard. */
public static final Unit PROTON_MASS = addUnit(GRAM.multiply(1.6726231E-24));
/** As per UCUM standard. */
public static final Unit> NEWTON_CONSTANT_OF_GRAVITY = addUnit(
METER.pow(3).multiply(Units.KILOGRAM.pow(-1)).multiply(SECOND.pow(-2)).multiply(6.67259E-11));
/** As per UCUM standard. */
public static final Unit ACCELERATION_OF_FREEFALL = addUnit(
Units.METRE_PER_SQUARE_SECOND.multiply(9.80665));
/** As per UCUM standard. */
public static final Unit ATMOSPHERE = addUnit(Units.PASCAL.multiply(101325));
/** As per UCUM standard. */
public static final Unit LIGHT_YEAR = addUnit(
new ProductUnit(VELOCITY_OF_LIGHT.multiply(YEAR_JULIAN)));
/** As per UCUM standard. */
public static final Unit GRAM_FORCE = addUnit(
new ProductUnit(GRAM.multiply(ACCELERATION_OF_FREEFALL)));
// POUND_FORCE contains a forward reference to avoirdupois pound weight, so
// it has been moved after section §39 below
/////////////////////////////
// CGS UNITS: UCUM 4.3 §33 //
/////////////////////////////
/** As per UCUM standard. */
public static final Unit KAYSER = addUnit(SI.RECIPROCAL_METRE.divide(100));
/** As per UCUM standard. */
public static final Unit GAL = addUnit(
new ProductUnit(CENTI(METER).divide(SECOND.pow(2))));
/** As per UCUM standard. */
public static final Unit DYNE = addUnit(
new ProductUnit(Units.GRAM.multiply(CENTI(Units.METRE).divide(Units.SECOND.pow(2)))));
// public static final Unit DYNE = addUnit(new ProductUnit(
// Units.GRAM.multiply(new
// ProductUnit(CENTI(Units.METRE)).divide(Units.SECOND
// .pow(2)))));
/** As per UCUM standard. */
public static final Unit ERG = addUnit(new ProductUnit(DYNE.multiply(CENTI(Units.METRE))));
/** As per UCUM standard. */
public static final Unit POISE = addUnit(
new ProductUnit(DYNE.multiply(SECOND).divide(CENTI(Units.METRE).pow(2))));
/** As per UCUM standard. */
public static final Unit BIOT = addUnit(AMPERE.multiply(10));
/** As per UCUM standard. */
public static final Unit STOKES = addUnit(
new ProductUnit(CENTI(Units.METRE).pow(2).divide(Units.SECOND)));
/** As per UCUM standard. */
public static final Unit MAXWELL = addUnit(Units.WEBER.divide(1E8));
/** As per UCUM standard. */
public static final Unit GAUSS = addUnit(Units.TESLA.divide(1E4));
/** As per UCUM standard. */
public static final Unit OERSTED = addUnit(
new ProductUnit(SI.AMPERE_PER_METRE.multiply(250).divide(PI)));
/** As per UCUM standard. */
public static final Unit GILBERT = addUnit(
new ProductUnit(OERSTED.multiply(CENTI(Units.METRE))));
/** As per UCUM standard. */
public static final Unit STILB = addUnit(
new ProductUnit(CANDELA.divide(CENTI(METER).pow(2))));
/** As per UCUM standard. */
public static final Unit LAMBERT = addUnit(new ProductUnit(STILB.divide(PI)));
/** As per UCUM standard. */
public static final Unit PHOT = addUnit(LUX.divide(1E4));
/** As per UCUM standard. */
public static final Unit CURIE = addUnit(Units.BECQUEREL.multiply(3.7E10));
/** As per UCUM standard. */
public static final Unit ROENTGEN = addUnit(SI.COULOMB_PER_KILOGRAM.multiply(2.58E-4));
// add later when JMQ issue fixed
/** As per UCUM standard. */
public static final Unit RAD = addUnit(
new ProductUnit(ERG.divide(Units.GRAM.multiply(100))));
// public static final Unit RAD = addUnit(new
// ProductUnit(
// ERG.divide(Units.GRAM).multiply(100)));
/** As per UCUM standard. */
public static final Unit REM = addUnit(
new ProductUnit(ERG.divide(Units.GRAM.multiply(100))));
// public static final Unit REM = addUnit(new
// AlternateUnit(
// RAD, RAD.getSymbol())); // TODO are symbols for RAD and REM same?
/////////////////////////////////////////////////
// INTERNATIONAL CUSTOMARY UNITS: UCUM 4.4 §34 //
/////////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit INCH_INTERNATIONAL = addUnit(CENTI(METER).multiply(254).divide(100));
/** As per UCUM standard. */
public static final Unit FOOT_INTERNATIONAL = addUnit(INCH_INTERNATIONAL.multiply(12));
/** As per UCUM standard. */
public static final Unit YARD_INTERNATIONAL = addUnit(FOOT_INTERNATIONAL.multiply(3));
/** As per UCUM standard. */
public static final Unit MILE_INTERNATIONAL = addUnit(FOOT_INTERNATIONAL.multiply(5280));
/** As per UCUM standard. */
public static final Unit FATHOM_INTERNATIONAL = addUnit(FOOT_INTERNATIONAL.multiply(6));
/** As per UCUM standard. */
public static final Unit NAUTICAL_MILE_INTERNATIONAL = addUnit(METER.multiply(1852));
/** As per UCUM standard. */
public static final Unit KNOT_INTERNATIONAL = addUnit(
new ProductUnit(NAUTICAL_MILE_INTERNATIONAL.divide(HOUR)));
/** As per UCUM standard. */
public static final Unit SQUARE_INCH_INTERNATIONAL = addUnit(
new ProductUnit (INCH_INTERNATIONAL.pow(2)));
/** As per UCUM standard. */
public static final Unit SQUARE_FOOT_INTERNATIONAL = addUnit(
new ProductUnit (FOOT_INTERNATIONAL.pow(2)));
/** As per UCUM standard. */
public static final Unit SQUARE_YARD_INTERNATIONAL = addUnit(
new ProductUnit (YARD_INTERNATIONAL.pow(2)));
/** As per UCUM standard. */
public static final Unit CUBIC_INCH_INTERNATIONAL = addUnit(
new ProductUnit(INCH_INTERNATIONAL.pow(3)));
/** As per UCUM standard. */
public static final Unit CUBIC_FOOT_INTERNATIONAL = addUnit(
new ProductUnit(FOOT_INTERNATIONAL.pow(3)));
/** As per UCUM standard. */
public static final Unit CUBIC_YARD_INTERNATIONAL = addUnit(
new ProductUnit(YARD_INTERNATIONAL.pow(3)));
/** As per UCUM standard. */
public static final Unit BOARD_FOOT_INTERNATIONAL = addUnit(CUBIC_INCH_INTERNATIONAL.multiply(144));
/** As per UCUM standard. */
public static final Unit CORD_INTERNATIONAL = addUnit(CUBIC_FOOT_INTERNATIONAL.multiply(128));
/** As per UCUM standard. */
public static final Unit MIL_INTERNATIONAL = addUnit(INCH_INTERNATIONAL.divide(1000));
/** As per UCUM standard. */
public static final Unit CIRCULAR_MIL_INTERNATIONAL = addUnit(
new ProductUnit (MIL_INTERNATIONAL.pow(2).multiply(PI.divide(4))));
// public static final Unit CIRCULAR_MIL_INTERNATIONAL = addUnit(new
// ProductUnit (
// MIL_INTERNATIONAL.pow(2).multiply(PI).divide(4)));
/** As per UCUM standard. */
public static final Unit HAND_INTERNATIONAL = addUnit(INCH_INTERNATIONAL.multiply(4));
//////////////////////////////////////////
// US SURVEY LENGTH UNITS: UCUM 4.4 §35 //
//////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit FOOT_US_SURVEY = addUnit(METER.multiply(1200).divide(3937));
/** As per UCUM standard. */
public static final Unit YARD_US_SURVEY = addUnit(FOOT_US_SURVEY.multiply(3));
/** As per UCUM standard. */
public static final Unit INCH_US_SURVEY = addUnit(FOOT_US_SURVEY.divide(12));
/** As per UCUM standard. */
public static final Unit ROD_US_SURVEY = addUnit(FOOT_US_SURVEY.multiply(33).divide(2));
/** As per UCUM standard. */
public static final Unit CHAIN_US_SURVEY = addUnit(ROD_US_SURVEY.multiply(4));
/** As per UCUM standard. */
public static final Unit LINK_US_SURVEY = addUnit(CHAIN_US_SURVEY.divide(100));
/** As per UCUM standard. */
public static final Unit RAMDEN_CHAIN_US_SURVEY = addUnit(FOOT_US_SURVEY.multiply(100));
/** As per UCUM standard. */
public static final Unit RAMDEN_LINK_US_SURVEY = addUnit(CHAIN_US_SURVEY.divide(100));
/** As per UCUM standard. */
public static final Unit FATHOM_US_SURVEY = addUnit(FOOT_US_SURVEY.multiply(6));
/** As per UCUM standard. */
public static final Unit FURLONG_US_SURVEY = addUnit(ROD_US_SURVEY.multiply(40));
/** As per UCUM standard. */
public static final Unit MILE_US_SURVEY = addUnit(FURLONG_US_SURVEY.multiply(8));
/** As per UCUM standard. */
public static final Unit ACRE_US_SURVEY = addUnit(new ProductUnit (ROD_US_SURVEY.pow(2)).multiply(160));
// public static final Unit ACRE_US_SURVEY = addUnit(new
// ProductUnit (
// ROD_US_SURVEY.pow(2).multiply(160)));
/** As per UCUM standard. */
public static final Unit SQUARE_ROD_US_SURVEY = addUnit(new ProductUnit (ROD_US_SURVEY.pow(2)));
/** As per UCUM standard. */
public static final Unit SQUARE_MILE_US_SURVEY = addUnit(new ProductUnit (MILE_US_SURVEY.pow(2)));
/** As per UCUM standard. */
public static final Unit SECTION_US_SURVEY = addUnit(new ProductUnit (MILE_US_SURVEY.pow(2)));
/** As per UCUM standard. */
public static final Unit TOWNSHP_US_SURVEY = addUnit(SECTION_US_SURVEY.multiply(36));
/** As per UCUM standard. */
public static final Unit MIL_US_SURVEY = addUnit(INCH_US_SURVEY.divide(1000));
/////////////////////////////////////////////////
// BRITISH IMPERIAL LENGTH UNITS: UCUM 4.4 §36 //
/////////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit INCH_BRITISH = addUnit(CENTI(METER).multiply(2539998).divide(1000000));
/** As per UCUM standard. */
public static final Unit FOOT_BRITISH = addUnit(INCH_BRITISH.multiply(12));
/** As per UCUM standard. */
public static final Unit ROD_BRITISH = addUnit(FOOT_BRITISH.multiply(33).divide(2));
/** As per UCUM standard. */
public static final Unit CHAIN_BRITISH = addUnit(ROD_BRITISH.multiply(4));
/** As per UCUM standard. */
public static final Unit LINK_BRITISH = addUnit(CHAIN_BRITISH.divide(100));
/** As per UCUM standard. */
public static final Unit FATHOM_BRITISH = addUnit(FOOT_BRITISH.multiply(6));
/** As per UCUM standard. */
public static final Unit PACE_BRITISH = addUnit(FOOT_BRITISH.multiply(5).divide(2));
/** As per UCUM standard. */
public static final Unit YARD_BRITISH = addUnit(FOOT_BRITISH.multiply(3));
/** As per UCUM standard. */
public static final Unit MILE_BRITISH = addUnit(FOOT_BRITISH.multiply(5280));
/** As per UCUM standard. */
public static final Unit NAUTICAL_MILE_BRITISH = addUnit(FOOT_BRITISH.multiply(6080));
/** As per UCUM standard. */
public static final Unit KNOT_BRITISH = addUnit(new ProductUnit(NAUTICAL_MILE_BRITISH.divide(HOUR)));
/** As per UCUM standard. */
public static final Unit ACRE_BRITISH = addUnit(new ProductUnit (YARD_BRITISH.pow(2)).multiply(4840));
// public static final Unit ACRE_BRITISH = addUnit(new
// ProductUnit (
// YARD_BRITISH.pow(2).multiply(4840)));
///////////////////////////////////
// US VOLUME UNITS: UCUM 4.4 §37 //
///////////////////////////////////
/** As per UCUM standard. */
public static final Unit GALLON_US = addUnit(CUBIC_INCH_INTERNATIONAL.multiply(231), "Queen Anne's wine gallon", "gal_us");
/** As per UCUM standard. */
public static final Unit BARREL_US = addUnit(GALLON_US.multiply(42), "barrel", "bbl_us");
/** As per UCUM standard. */
public static final Unit QUART_US = addUnit(GALLON_US.divide(4));
/** As per UCUM standard. */
public static final Unit PINT_US = addUnit(QUART_US.divide(2));
/** As per UCUM standard. */
public static final Unit GILL_US = addUnit(PINT_US.divide(4));
/** As per UCUM standard. */
public static final Unit FLUID_OUNCE_US = addUnit(GILL_US.divide(4));
/** As per UCUM standard. */
public static final Unit FLUID_DRAM_US = addUnit(FLUID_OUNCE_US.divide(8));
/** As per UCUM standard. */
public static final Unit MINIM_US = addUnit(FLUID_DRAM_US.divide(60));
/** As per UCUM standard. */
public static final Unit CORD_US = addUnit(CUBIC_FOOT_INTERNATIONAL.multiply(128));
/** As per UCUM standard. */
public static final Unit BUSHEL_US = addUnit(CUBIC_INCH_INTERNATIONAL.multiply(215042).divide(100));
/** As per UCUM standard. */
public static final Unit GALLON_WINCHESTER = addUnit(BUSHEL_US.divide(8));
/** As per UCUM standard. */
public static final Unit PECK_US = addUnit(BUSHEL_US.divide(4));
/** As per UCUM standard. */
public static final Unit DRY_QUART_US = addUnit(PECK_US.divide(8));
/** As per UCUM standard. */
public static final Unit DRY_PINT_US = addUnit(DRY_QUART_US.divide(2));
/** As per UCUM standard. */
public static final Unit TABLESPOON_US = addUnit(FLUID_OUNCE_US.divide(2));
/** As per UCUM standard. */
public static final Unit TEASPOON_US = addUnit(TABLESPOON_US.divide(3));
/** As per UCUM standard. */
public static final Unit CUP_US = addUnit(TABLESPOON_US.multiply(16));
/** As per UCUM standard. */
public static final Unit METRIC_FLUID_OUNCE_US = addUnit(MILLI(LITER).multiply(30));
/** As per UCUM standard. */
public static final Unit METRIC_CUP_US = addUnit(MILLI(LITER).multiply(240));
/** As per UCUM standard. */
public static final Unit METRIC_TEASPOON_CUP_US = addUnit(MILLI(LITER).multiply(5));
/** As per UCUM standard. */
public static final Unit METRIC_TABLESPOON_CUP_US = addUnit(MILLI(LITER).multiply(15));
/////////////////////////////////////////////////
// BRITISH IMPERIAL VOLUME UNITS: UCUM 4.4 §38 //
/////////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit GALLON_BRITISH = addUnit(LITER.multiply(454609).divide(100000));
/** As per UCUM standard. */
public static final Unit PECK_BRITISH = addUnit(GALLON_BRITISH.multiply(2));
/** As per UCUM standard. */
public static final Unit BUSHEL_BRITISH = addUnit(PECK_BRITISH.multiply(4));
/** As per UCUM standard. */
public static final Unit QUART_BRITISH = addUnit(GALLON_BRITISH.divide(4));
/** As per UCUM standard. */
public static final Unit PINT_BRITISH = addUnit(QUART_BRITISH.divide(2));
/** As per UCUM standard. */
public static final Unit GILL_BRITISH = addUnit(PINT_BRITISH.divide(4));
/** As per UCUM standard. */
public static final Unit FLUID_OUNCE_BRITISH = addUnit(GILL_BRITISH.divide(5));
/** As per UCUM standard. */
public static final Unit FLUID_DRAM_BRITISH = addUnit(FLUID_OUNCE_BRITISH.divide(8));
/** As per UCUM standard. */
public static final Unit MINIM_BRITISH = addUnit(FLUID_DRAM_BRITISH.divide(60));
////////////////////////////////////////////
// AVOIRDUPOIS WIEGHT UNITS: UCUM 4.4 §39 //
////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit GRAIN = addUnit(MILLI(GRAM).multiply(6479891).divide(100000));
/** As per UCUM standard. */
public static final Unit POUND = addUnit(GRAIN.multiply(7000));
/** As per UCUM standard. */
public static final Unit OUNCE = addUnit(POUND.divide(16));
/** As per UCUM standard. */
public static final Unit DRAM = addUnit(OUNCE.divide(16));
/** As per UCUM standard. */
public static final Unit SHORT_HUNDREDWEIGHT = addUnit(POUND.multiply(100));
/** As per UCUM standard. */
public static final Unit LONG_HUNDREDWEIGHT = addUnit(POUND.multiply(112));
/** As per UCUM standard. */
public static final Unit SHORT_TON = addUnit(SHORT_HUNDREDWEIGHT.multiply(20));
/** As per UCUM standard. */
public static final Unit LONG_TON = addUnit(LONG_HUNDREDWEIGHT.multiply(20));
/** As per UCUM standard. */
public static final Unit STONE = addUnit(POUND.multiply(14));
// CONTINUED FROM SECTION §32
// contains a forward reference to POUND, so we had to move it here, below
// section §39
/** As per UCUM standard. */
// public static final Unit POUND_FORCE = addUnit(new
// ProductUnit(
// POUND.multiply(ACCELERATION_OF_FREEFALL)));
public static final Unit POUND_FORCE = addUnit(
POUND.multiply(ACCELERATION_OF_FREEFALL).asType(Force.class));
// public static final Unit POUND_FORCE2 =
// addUnit(POUND.multiply(ACCELERATION_OF_FREEFALL).asType(InformationRate.class));
/////////////////////////////////////
// TROY WEIGHT UNITS: UCUM 4.4 §40 //
/////////////////////////////////////
/** As per UCUM standard. */
public static final Unit PENNYWEIGHT_TROY = addUnit(GRAIN.multiply(24));
/** As per UCUM standard. */
public static final Unit OUNCE_TROY = addUnit(PENNYWEIGHT_TROY.multiply(20));
/** As per UCUM standard. */
public static final Unit POUND_TROY = addUnit(OUNCE_TROY.multiply(12));
/////////////////////////////////////////////
// APOTECARIES' WEIGHT UNITS: UCUM 4.4 §41 //
/////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit SCRUPLE_APOTHECARY = addUnit(GRAIN.multiply(20));
/** As per UCUM standard. */
public static final Unit DRAM_APOTHECARY = addUnit(SCRUPLE_APOTHECARY.multiply(3));
/** As per UCUM standard. */
public static final Unit OUNCE_APOTHECARY = addUnit(DRAM_APOTHECARY.multiply(8));
/** As per UCUM standard. */
public static final Unit POUND_APOTHECARY = addUnit(OUNCE_APOTHECARY.multiply(12));
/** As per UCUM standard. */
public static final Unit METRIC_OUNCE = addUnit(GRAM.multiply(28));
/////////////////////////////////////////////
// TYPESETTER'S LENGTH UNITS: UCUM 4.4 §42 //
/////////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit LINE = addUnit(INCH_INTERNATIONAL.divide(12));
/** As per UCUM standard. */
public static final Unit POINT = addUnit(LINE.divide(6));
/** As per UCUM standard. */
public static final Unit PICA = addUnit(POINT.multiply(12));
/** As per UCUM standard. */
public static final Unit POINT_PRINTER = addUnit(INCH_INTERNATIONAL.multiply(13837).divide(1000000));
/** As per UCUM standard. */
public static final Unit PICA_PRINTER = addUnit(POINT_PRINTER.multiply(12));
/** As per UCUM standard. */
public static final Unit PIED = addUnit(CENTI(METER).multiply(3248).divide(100));
/** As per UCUM standard. */
public static final Unit POUCE = addUnit(PIED.divide(12));
/** As per UCUM standard. */
public static final Unit LIGNE = addUnit(POUCE.divide(12));
/** As per UCUM standard. */
public static final Unit DIDOT = addUnit(LIGNE.divide(6));
/** As per UCUM standard. */
public static final Unit CICERO = addUnit(DIDOT.multiply(12));
//////////////////////////////////////
// OTHER LEGACY UNITS: UCUM 4.5 §43 //
//////////////////////////////////////
/** As per UCUM standard. */
public static final Unit RANKINE = addUnit(KELVIN.divide(9).multiply(5));
/** As per UCUM standard. */
public static final Unit FAHRENHEIT = addUnit(RANKINE.shift(459.67));
/** As per UCUM standard. */
public static final Unit REAUMUR = addUnit((KELVIN.multiply(4).divide(5)).shift(218.52));
/** As per UCUM standard. */
public static final Unit CALORIE_AT_15C = addUnit(JOULE.multiply(41858).divide(10000));
/** As per UCUM standard. */
public static final Unit CALORIE_AT_20C = addUnit(JOULE.multiply(41819).divide(10000));
/** As per UCUM standard. */
public static final Unit CALORIE_MEAN = addUnit(JOULE.multiply(419002).divide(100000));
/** As per UCUM standard. */
public static final Unit CALORIE_INTERNATIONAL_TABLE = addUnit(JOULE.multiply(41868).divide(10000));
/** As per UCUM standard. */
public static final Unit CALORIE_THERMOCHEMICAL = addUnit(JOULE.multiply(4184).divide(1000));
/** As per UCUM standard. */
public static final Unit CALORIE = addUnit(CALORIE_THERMOCHEMICAL);
/** As per UCUM standard. */
public static final Unit CALORIE_FOOD = addUnit(KILO(CALORIE_THERMOCHEMICAL));
/** As per UCUM standard. */
public static final Unit BTU_AT_39F = addUnit(KILO(JOULE).multiply(105967).divide(100000));
/** As per UCUM standard. */
public static final Unit BTU_AT_59F = addUnit(KILO(JOULE).multiply(105480).divide(100000));
/** As per UCUM standard. */
public static final Unit BTU_AT_60F = addUnit(KILO(JOULE).multiply(105468).divide(100000));
/** As per UCUM standard. */
public static final Unit BTU_MEAN = addUnit(KILO(JOULE).multiply(105587).divide(100000));
/** As per UCUM standard. */
public static final Unit BTU_INTERNATIONAL_TABLE = addUnit(
KILO(JOULE).multiply(105505585262L).divide(100000000000L));
/** As per UCUM standard. */
public static final Unit BTU_THERMOCHEMICAL = addUnit(KILO(JOULE).multiply(105435).divide(100000));
/** As per UCUM standard. */
public static final Unit BTU = addUnit(BTU_THERMOCHEMICAL);
/** As per UCUM standard. */
public static final Unit HORSEPOWER = addUnit(
new ProductUnit(FOOT_INTERNATIONAL.multiply(POUND_FORCE).divide(SECOND)));
////////////////////////////////////////////
// CLINICAL MEDICINE UNITS: UCUM 4.5 §44 //
///////////////////////////////////////////
/** As per UCUM standard. */
public static final Unit METER_OF_WATER_COLUMN = addUnit(KILO(PASCAL).multiply(980665).divide(100000));
/** As per UCUM standard. */
public static final Unit METER_OF_MERCURY_COLUMN = addUnit(KILO(PASCAL).multiply(1333220).divide(10000));
/** As per UCUM standard. */
public static final Unit INCH_OF_WATER_COLUMN = addUnit(
new ProductUnit(METER_OF_WATER_COLUMN.multiply(INCH_INTERNATIONAL).divide(METER)));
/** As per UCUM standard. */
public static final Unit INCH_OF_MERCURY_COLUMN = addUnit(
new ProductUnit(METER_OF_MERCURY_COLUMN.multiply(INCH_INTERNATIONAL).divide(METER)));
public static final Unit PERIPHERAL_VASCULAR_RESISTANCE = addUnit(
MILLI(METER_OF_MERCURY_COLUMN).multiply(SECOND).divide(MILLI(LITER)).asType(Drag.class));
public static final Unit WOOD = addUnit(MILLI(METER_OF_MERCURY_COLUMN).multiply(MINUTE).divide(LITER).asType(Drag.class));
// public static final Unit DIOPTER = addUnit(ONE.divide(METER));
// public static final Unit PRISM_DIOPTER =
// addUnit(ONE.multiply(100).multiply(Math.tan(1)));
// public static final Unit PERCENT_OF_SLOPE =
// addUnit(ONE.multiply(100).multiply(Math.tan(1)));
// public static final Unit MESH = addUnit(ONE.divide(INCH_INTERNATIONAL));
// public static final Unit CHARRIERE = addUnit(MILLI(METER).divide(3));
/** As per UCUM standard. */
public static final Unit DROP = addUnit(MILLI(LITER).divide(20));
// public static final Unit HOUNSFIELD = addUnit(ONE);
// public static final Unit METABOLIC_EQUIVALENT =
// addUnit(MILLI(LITER).divide(MINUTE).divide(KILO(GRAM)));
// public static final Unit HOMEOPATHIC_POTENCY_OF_DECIMAL =
// addUnit(ONE.multiply(-1).multiply(Math.log10(1)));
// public static final Unit HOMEOPATHIC_POTENCY_OF_CENTESIMAL =
// addUnit(ONE.multiply(-1).multiply(Math.log(1)).divide(Math.log(100)));
// public static final Unit HOMEOPATHIC_POTENCY_OF_MILLESIMAL =
// addUnit(ONE.multiply(-1).multiply(Math.log(1)).divide(Math.log(1000)));
// public static final Unit HOMEOPATHIC_POTENCY_OF_QUINTALLESIMAL =
// addUnit(ONE.multiply(-1).multiply(Math.log(1)).divide(Math.log(50000)));
// public static final Unit HOMEOPATHIC_POTENCY_OF_DECIMAL_HAHNEMANNIAN =
// UNDEFINED;
// public static final Unit HOMEOPATHIC_POTENCY_OF_CENTESIMAL_HAHNEMANNIAN =
// UNDEFINED;
// public static final Unit HOMEOPATHIC_POTENCY_OF_MILLESIMAL_HAHNEMANNIAN =
// UNDEFINED;
// public static final Unit
// HOMEOPATHIC_POTENCY_OF_QUINTAMILLESIMAL_HAHNEMANNIAN = UNDEFINED;
// public static final Unit HOMEOPATHIC_POTENCY_OF_DECIMAL_KORSAKOVIAN =
// UNDEFINED;
// public static final Unit HOMEOPATHIC_POTENCY_OF_CENTESIMAL_KORSAKOVIAN =
// UNDEFINED;
// public static final Unit HOMEOPATHIC_POTENCY_OF_MILLESIMAL_KORSAKOVIAN =
// UNDEFINED;
// public static final Unit
// HOMEOPATHIC_POTENCY_OF_QUINTAMILLESIMAL_KORSAKOVIAN = UNDEFINED;
//////////////////////////////////////////////////
// CHEMICAL AND BIOCHEMICAL UNITS: UCUM 4.5 §45 //
//////////////////////////////////////////////////
// public static final Unit EQUIVALENTS = addUnit(MOLE);
// public static final Unit OSMOLE = addUnit(MOLE);
public static final Unit PH = addUnit(
MOLE.divide(LITER).transform(new LogConverter(10)).multiply(-1).asType(Acidity.class));
// @SuppressWarnings("unchecked")
@SuppressWarnings("unchecked")
public static final Unit