Removed URI from fuels.
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / fuel / editable / EditablePiecewiseSaintRobertFuel.java
1 package com.billkuker.rocketry.motorsim.fuel.editable;\r
2 \r
3 import java.util.HashMap;\r
4 import java.util.Map;\r
5 \r
6 import javax.measure.quantity.Pressure;\r
7 import javax.measure.quantity.VolumetricDensity;\r
8 \r
9 import org.jscience.physics.amount.Amount;\r
10 \r
11 import com.billkuker.rocketry.motorsim.fuel.EditableCombustionProduct;\r
12 import com.billkuker.rocketry.motorsim.fuel.PiecewiseSaintRobertFuel;\r
13 \r
14 public class EditablePiecewiseSaintRobertFuel extends PiecewiseSaintRobertFuel implements EditableFuel {\r
15 \r
16         @SuppressWarnings("unchecked")\r
17         private Amount<VolumetricDensity> idealDensity = (Amount<VolumetricDensity>) Amount\r
18                         .valueOf("1 g/mm^3");\r
19         \r
20         private double combustionEfficiency = 1;\r
21         private double densityRatio = 1;\r
22         private EditableCombustionProduct cp;\r
23         private String name = "New Fuel";\r
24 \r
25         public EditablePiecewiseSaintRobertFuel() {\r
26                 super(Type.SI);\r
27                 clear();\r
28                 cp = new EditableCombustionProduct();\r
29         }\r
30         \r
31         private Map<Amount<Pressure>, Double> aMap;\r
32         private Map<Amount<Pressure>, Double> nMap;\r
33         \r
34         public void clear(){\r
35                 super.clear();\r
36                 aMap = new HashMap<Amount<Pressure>, Double>();\r
37                 nMap = new HashMap<Amount<Pressure>, Double>();\r
38         }\r
39         \r
40         public void setType(Type t){\r
41                 super.setType(t);\r
42         }\r
43 \r
44         public void add(Amount<Pressure> p, final double _a, final double _n) {\r
45                 super.add(p, _a, _n);\r
46                 aMap.put(p, _a);\r
47                 nMap.put(p, _n);\r
48         }\r
49         \r
50         public Amount<VolumetricDensity> getIdealDensity() {\r
51                 return idealDensity;\r
52         }\r
53 \r
54         public void setIdealDensity(Amount<VolumetricDensity> idealDensity) {\r
55                 this.idealDensity = idealDensity;\r
56         }\r
57 \r
58         public double getCombustionEfficiency() {\r
59                 return combustionEfficiency;\r
60         }\r
61 \r
62         public void setCombustionEfficiency(double combustionEfficiency) {\r
63                 this.combustionEfficiency = combustionEfficiency;\r
64         }\r
65 \r
66         public double getDensityRatio() {\r
67                 return densityRatio;\r
68         }\r
69 \r
70         public void setDensityRatio(double densityRatio) {\r
71                 this.densityRatio = densityRatio;\r
72         }\r
73 \r
74         @Override\r
75         public CombustionProduct getCombustionProduct() {\r
76                 return cp;\r
77         }\r
78         \r
79         public void setCombustionProduct(final CombustionProduct product){\r
80                 this.cp = (EditableCombustionProduct)product;\r
81         }\r
82 \r
83         public String getName() {\r
84                 return name;\r
85         }\r
86 \r
87         public void setName(String name) {\r
88                 this.name = name;\r
89         }\r
90 \r
91         public Map<Amount<Pressure>, Double> getAMap() {\r
92                 return aMap;\r
93         }\r
94 \r
95         public void setAMap(Map<Amount<Pressure>, Double> aMap) {\r
96                 this.aMap = aMap;\r
97                 reset();\r
98         }\r
99 \r
100         public Map<Amount<Pressure>, Double> getNMap() {\r
101                 return nMap;\r
102         }\r
103 \r
104         public void setNMap(Map<Amount<Pressure>, Double> nMap) {\r
105                 this.nMap = nMap;\r
106                 reset();\r
107         }\r
108 \r
109         private void reset(){\r
110                 if (nMap != null && aMap != null && nMap.size() == aMap.size()){\r
111                         for ( Amount<Pressure> p : aMap.keySet() ){\r
112                                 add(p, aMap.get(p), nMap.get(p));\r
113                         }\r
114                 }\r
115         }\r
116 }