import javax.measure.quantity.Velocity;\r
import javax.measure.quantity.VolumetricDensity;\r
import javax.measure.unit.NonSI;\r
-import javax.measure.unit.SI;\r
import javax.measure.unit.Unit;\r
\r
import org.jscience.physics.amount.Amount;\r
\r
import com.billkuker.rocketry.motorsim.Fuel;\r
+import com.billkuker.rocketry.motorsim.RocketScience;\r
\r
public abstract class SaintRobertFuel implements Fuel {\r
\r
- protected enum Type{\r
- Si(\r
- SI.MILLIMETER.divide(SI.SECOND).asType(Velocity.class),\r
- SI.MEGA(SI.PASCAL).asType(Pressure.class)),\r
- English(\r
- NonSI.INCH.divide(SI.SECOND).asType(Velocity.class),\r
- NonSI.POUND_FORCE.divide(NonSI.INCH.pow(2)).asType(Pressure.class))\r
+ public enum Type{\r
+ SI(\r
+ javax.measure.unit.SI.MILLIMETER.divide(javax.measure.unit.SI.SECOND).asType(Velocity.class),\r
+ javax.measure.unit.SI.MEGA(javax.measure.unit.SI.PASCAL).asType(Pressure.class)),\r
+ NONSI(\r
+ NonSI.INCH.divide(javax.measure.unit.SI.SECOND).asType(Velocity.class),\r
+ RocketScience.PSI)\r
;\r
\r
private final Unit<Velocity> v;\r
}\r
}\r
\r
- private Type t = Type.Si;\r
+ private Type t = Type.SI;\r
\r
public SaintRobertFuel(Type t){\r
+ if ( t == null )\r
+ throw new IllegalArgumentException("Type must be non-null");\r
+ this.t = t;\r
+ }\r
+ \r
+ public Type getType(){\r
+ return t;\r
+ }\r
+ \r
+ protected void setType(final Type t){\r
this.t = t;\r
}\r
\r
public Amount<Velocity> burnRate(Amount<Pressure> pressure) {\r
\r
\r
- double p = pressure.doubleValue(t.p);\r
+ double p = pressure.doubleValue(getType().p);\r
double a = burnrateCoefficient(pressure);\r
double n = burnrateExponent(pressure);\r
\r
- return burnrateConstant().plus(Amount.valueOf( a*Math.pow(p,n), t.v ));\r
+ return burnrateConstant().plus(Amount.valueOf( a*Math.pow(p,n), getType().v ));\r
}\r
\r
protected abstract double burnrateCoefficient(Amount<Pressure> pressure);\r
return Amount.valueOf(0, Velocity.UNIT);\r
}\r
\r
- public abstract Amount<VolumetricDensity> idealDensity();\r
+ public abstract Amount<VolumetricDensity> getIdealDensity();\r
\r
+ public String getName(){\r
+ return this.getClass().getSimpleName();\r
+ }\r
+ \r
+ public String toString(){\r
+ return getName();\r
+ }\r
}\r