Added compound grain
authorBill Kuker <bkuker@billkuker.com>
Fri, 10 Apr 2009 20:24:02 +0000 (20:24 +0000)
committerBill Kuker <bkuker@billkuker.com>
Fri, 10 Apr 2009 20:24:02 +0000 (20:24 +0000)
src/com/billkuker/rocketry/motorsim/Burn.java
src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java [new file with mode: 0644]
src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java

index b7c46b54572eacf8849e3a5287d3156ec477aa62..3a53a45c0566ae288767a6a5860227248841f4da 100644 (file)
@@ -25,6 +25,7 @@ import org.jscience.physics.amount.Constants;
 \r
 import com.billkuker.rocketry.motorsim.fuel.KNSU;\r
 import com.billkuker.rocketry.motorsim.grain.BurnPanel;\r
+import com.billkuker.rocketry.motorsim.grain.CompoundGrain;\r
 import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain;\r
 import com.billkuker.rocketry.motorsim.grain.ExtrudedGrain;\r
 import com.billkuker.rocketry.motorsim.grain.GrainPanel;\r
@@ -231,7 +232,24 @@ public class Burn {
                g.setID(Amount.valueOf(10, SI.MILLIMETER));\r
                m.setGrain(g);\r
                \r
-               m.setGrain(new MultiGrain(g,2));\r
+               CoredCylindricalGrain g1 = new CoredCylindricalGrain();\r
+               g1.setLength(Amount.valueOf(70, SI.MILLIMETER));\r
+               g1.setOD(Amount.valueOf(30, SI.MILLIMETER));\r
+               g1.setID(Amount.valueOf(18, SI.MILLIMETER));\r
+               m.setGrain(g);\r
+               \r
+               CoredCylindricalGrain g2 = new CoredCylindricalGrain();\r
+               g2.setLength(Amount.valueOf(70, SI.MILLIMETER));\r
+               g2.setOD(Amount.valueOf(12, SI.MILLIMETER));\r
+               g2.setID(Amount.valueOf(0, SI.MILLIMETER));\r
+               g2.inhibit(true, false, false);\r
+               m.setGrain(g);\r
+               \r
+               CompoundGrain cg = new CompoundGrain(g1, g2);\r
+               \r
+               m.setGrain( cg );\r
+               \r
+               //m.setGrain(new MultiGrain(g,2));\r
                \r
                //m.setGrain(new ExtrudedGrain());\r
                \r
diff --git a/src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java b/src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java
new file mode 100644 (file)
index 0000000..1610453
--- /dev/null
@@ -0,0 +1,49 @@
+package com.billkuker.rocketry.motorsim.grain;\r
+\r
+import java.awt.geom.Area;\r
+\r
+import javax.measure.quantity.Length;\r
+import javax.measure.quantity.Volume;\r
+\r
+import org.jscience.physics.amount.Amount;\r
+\r
+import com.billkuker.rocketry.motorsim.Grain;\r
+\r
+public class CompoundGrain implements Grain {\r
+       \r
+       private Grain a, b;\r
+       \r
+       public CompoundGrain(Grain a, Grain b){\r
+               this.a = a;\r
+               this.b = b;\r
+       }\r
+\r
+       public Area getCrossSection(Amount<Length> regression) {\r
+               Area aa = a.getCrossSection(regression);\r
+               aa.add(b.getCrossSection(regression));\r
+               return aa;\r
+       }\r
+\r
+       public Area getSideView(Amount<Length> regression) {\r
+               Area aa = a.getSideView(regression);\r
+               aa.add(b.getSideView(regression));\r
+               return aa;\r
+       }\r
+\r
+       public Amount<javax.measure.quantity.Area> surfaceArea(\r
+                       Amount<Length> regression) {\r
+               return a.surfaceArea(regression).plus(b.surfaceArea(regression));\r
+       }\r
+\r
+       public Amount<Volume> volume(Amount<Length> regression) {\r
+               return a.volume(regression).plus(b.volume(regression));\r
+       }\r
+\r
+       public Amount<Length> webThickness() {\r
+               Amount<Length> l = a.webThickness();\r
+               if ( b.webThickness().isGreaterThan(l) )\r
+                       return b.webThickness();\r
+               return l;\r
+       }\r
+\r
+}\r
index 5bbad6d801022c2029c9c17eedca251f1b8646af..b90a41d78dd110f5188b48cd47f28376ee468c15 100644 (file)
@@ -27,6 +27,12 @@ public class CoredCylindricalGrain implements Grain, Validating {
        public CoredCylindricalGrain() {\r
 \r
        }\r
+       \r
+       public void inhibit(boolean in, boolean out, boolean end){\r
+               oInh = out;\r
+               iInh = in;\r
+               eInh = end;\r
+       }\r
 \r
        @Override\r
        public Amount<Area> surfaceArea(Amount<Length> regression) {\r