//
// CommonUnit.java
//
/*
VisAD system for interactive analysis and visualization of numerical
data. Copyright (C) 1996 - 2017 Bill Hibbard, Curtis Rueden, Tom
Rink, Dave Glowacki, Steve Emmerson, Tom Whittaker, Don Murray, and
Tommy Jasmin.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
*/
package visad;
/**
CommonUnit is a class for commonly used Units
*/
public class CommonUnit extends Object {
/** CommonUnit for plane angle, not temperature */
public static Unit degree;
/** CommonUnit for plane angle */
public static Unit radian = SI.radian;
/** CommonUnit for time */
public static Unit second = SI.second;
/** CommonUnit for length */
public static Unit meter = SI.meter;
/** CommonUnit for speed */
public static Unit meterPerSecond =
new DerivedUnit(new BaseUnit[] {SI.meter, SI.second},
new int[] {1, -1});
/** CommonUnit for seconds since the Epoch (i.e. 1970-01-01 00:00:00Z) */
public static Unit secondsSinceTheEpoch =
new OffsetUnit(
visad.data.units.UnitParser.encodeTimestamp(
1970, 1, 1, 0, 0, 0, 0),
SI.second);
/** CommonUnit for all BaseUnits with exponent = zero */
public static Unit dimensionless = new DerivedUnit();
/** promiscuous is compatible with any Unit; useful for constants;
not the same as null Unit, which is only compatible with
other null Units; not the same as dimensionless, which is not
compatible with other Units for addition and subtraction */
public static Unit promiscuous = PromiscuousUnit.promiscuous;
/**
* static initializer to catch impossible but declared Exception
*/
static {
try {
degree = SI.radian.scale(Math.PI/180.0, true).clone("deg");
}
catch (UnitException e) {} // can't happen
}
/**
* Test this class.
*
* @param args Arguments (ignored).
* @exception UnitException A problem occurred.
*/
public static void main(String[] args)
throws UnitException
{
System.out.println(
"new ScaledUnit(1.0).equals(dimensionless)=" +
new ScaledUnit(1.0).equals(dimensionless));
System.out.println(
"dimensionless.equals(new ScaledUnit(1.0))=" +
dimensionless.equals(new ScaledUnit(1.0)));
System.out.println(
"CommonUnit.dimensionless.isConvertible(SI.radian) = " +
CommonUnit.dimensionless.isConvertible(SI.radian));
System.out.println(
"CommonUnit.dimensionless.isConvertible(CommonUnit.degree) = " +
CommonUnit.dimensionless.isConvertible(CommonUnit.degree));
System.out.println(
"CommonUnit.degree.isConvertible(SI.radian) = " +
CommonUnit.degree.isConvertible(SI.radian));
}
}