1 package com.billkuker.rocketry.motorsim.fuel;
\r
3 import javax.measure.quantity.Pressure;
\r
4 import javax.measure.quantity.Temperature;
\r
5 import javax.measure.quantity.Velocity;
\r
6 import javax.measure.quantity.VolumetricDensity;
\r
7 import javax.measure.unit.SI;
\r
9 import org.jscience.physics.amount.Amount;
\r
11 import com.billkuker.rocketry.motorsim.RocketScience.MolarWeight;
\r
12 import com.billkuker.rocketry.motorsim.visual.Chart;
\r
14 public class KNSB extends PiecewiseSaintRobertFuel {
\r
17 super(SaintRobertFuel.Type.Si);
\r
18 add(Amount.valueOf( .807, SI.MEGA(SI.PASCAL)), 10.71, 0.625);
\r
19 add(Amount.valueOf( 1.5, SI.MEGA(SI.PASCAL)), 8.763, -0.314);
\r
20 add(Amount.valueOf( 3.79, SI.MEGA(SI.PASCAL)), 7.852, -0.013);
\r
21 add(Amount.valueOf( 7.03, SI.MEGA(SI.PASCAL)), 3.907, 0.535);
\r
22 add(Amount.valueOf( 10.67, SI.MEGA(SI.PASCAL)), 9.653, 0.064);
\r
26 public Amount<VolumetricDensity> getIdealDensity() {
\r
27 return Amount.valueOf(1841, 0, SI.KILOGRAM.divide(SI.METER.pow(3))).to(VolumetricDensity.UNIT);
\r
30 public CombustionProduct getCombustionProduct() {
\r
31 return new CombustionProduct(){
\r
33 public Amount<Temperature> getIdealCombustionTemperature() {
\r
34 return Amount.valueOf(1600, SI.KELVIN);
\r
37 public Amount<MolarWeight> getEffectiveMolarWeight() {
\r
38 return Amount.valueOf("39.9 kg/kmol").to(MolarWeight.UNIT);
\r
41 public double getRatioOfSpecificHeats() {
\r
45 public double getRatioOfSpecificHeats2Phase() {
\r
51 public static void main( String args[]) throws Exception{
\r
52 KNSB f = new KNSB();
\r
54 Chart<Pressure, Velocity> burnRate = new Chart<Pressure, Velocity>(
\r
56 SI.METERS_PER_SECOND,
\r
60 burnRate.new IntervalDomain(
\r
61 Amount.valueOf(0, SI.MEGA(SI.PASCAL)),
\r
62 Amount.valueOf(11, SI.MEGA(SI.PASCAL)),
\r
69 public double getCombustionEfficiency() {
\r
73 public double getDensityRatio() {
\r