1 package com.billkuker.rocketry.motorsim;
\r
3 import java.util.HashSet;
\r
4 import java.util.Set;
\r
6 import javax.measure.quantity.Pressure;
\r
7 import javax.measure.quantity.Quantity;
\r
8 import javax.measure.unit.NonSI;
\r
9 import javax.measure.unit.ProductUnit;
\r
10 import javax.measure.unit.SI;
\r
11 import javax.measure.unit.Unit;
\r
12 import javax.measure.unit.UnitFormat;
\r
14 public class RocketScience {
\r
15 public static Unit<Pressure> PSI = new ProductUnit<Pressure>(NonSI.POUND_FORCE.divide(NonSI.INCH.pow(2)));
\r
16 public static Unit<Impulse> NEWTON_SECOND = new ProductUnit<Impulse>(SI.NEWTON.times(SI.SECOND));
\r
18 UnitFormat.getInstance().label(PSI, "psi");
\r
19 UnitFormat.getInstance().label(NEWTON_SECOND, "Ns");
\r
22 public interface MolarWeight extends Quantity {
\r
23 public static final Unit<MolarWeight> UNIT = new ProductUnit<MolarWeight>(
\r
24 SI.KILOGRAM.divide(SI.MOLE));
\r
27 public interface Impulse extends Quantity {
\r
28 public static Unit<Impulse> UNIT = NEWTON_SECOND;
\r
31 public static enum UnitPreference{
\r
33 javax.measure.unit.SI.MILLIMETER,
\r
34 javax.measure.unit.SI.NEWTON,
\r
35 javax.measure.unit.SI.MEGA(javax.measure.unit.SI.PASCAL),
\r
39 javax.measure.unit.NonSI.INCH,
\r
40 javax.measure.unit.NonSI.POUND_FORCE,
\r
45 public static UnitPreference preference = NonSI;
\r
47 protected Set<Unit<?>> units = new HashSet<Unit<?>>();
\r
49 UnitPreference( Unit u[] ){
\r
54 public Unit getPreferredUnit(Unit u){
\r
55 if ( units.contains(u) )
\r
57 for( Unit ret : units ){
\r
58 if ( ret.isCompatible(u) ){
\r