]> git.gag.com Git - sw/motorsim/commitdiff
Added end delay support, negative regression checks
authorBill Kuker <bkuker@billkuker.com>
Tue, 14 Apr 2009 19:08:57 +0000 (19:08 +0000)
committerBill Kuker <bkuker@billkuker.com>
Tue, 14 Apr 2009 19:08:57 +0000 (19:08 +0000)
src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java

index d03a55aa2f7d114c0c3bd03695ee6d36273fe188..cc67b0bf2cb7e75e50ff22d178246551de85569a 100644 (file)
@@ -37,6 +37,8 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
        @Override\r
        public Amount<Area> surfaceArea(Amount<Length> regression) {\r
                Amount<Length> zero = Amount.valueOf(0, SI.MILLIMETER);\r
+               if ( regression.isLessThan(zero) )\r
+                       return Amount.valueOf(0, SI.SQUARE_METRE);\r
                \r
                //Calculated regressed length\r
                Amount<Length> cLength = regressedLength(regression);\r
@@ -66,7 +68,7 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
                \r
                Amount<Area> ends = (cOD.divide(2).pow(2).times(Math.PI)).minus(cID.divide(2).pow(2).times(Math.PI)).times(2).to(SI.SQUARE_METRE);\r
                \r
-               Amount<Area> total = inner.times(innerSurfaceInhibited?0:1).plus(outer.times(outerSurfaceInhibited?0:1)).plus(ends.times(numberOfBurningEnds()));\r
+               Amount<Area> total = inner.times(innerSurfaceInhibited?0:1).plus(outer.times(outerSurfaceInhibited?0:1)).plus(ends.times(numberOfBurningEnds(regression)));\r
                \r
                return total;\r
        }\r
@@ -75,6 +77,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
        public Amount<Volume> volume(Amount<Length> regression) {\r
                Amount<Length> zero = Amount.valueOf(0, SI.MILLIMETER);\r
                \r
+               if ( regression.isLessThan(zero) )\r
+                       regression = zero;\r
+               \r
                //Calculated regressed length\r
                Amount<Length> cLength = regressedLength(regression);\r
                \r
@@ -146,8 +151,8 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
                \r
                Amount<Length> axial = null;\r
                \r
-               if ( numberOfBurningEnds() != 0 )\r
-                       axial = getLength().divide(numberOfBurningEnds());\r
+               if ( numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER)) != 0 )\r
+                       axial = getLength().divide(numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER)));\r
                \r
                if ( axial == null )\r
                        return radial;\r
@@ -168,6 +173,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
        \r
        @Override\r
        public java.awt.geom.Area getCrossSection(Amount<Length> regression){\r
+               Amount<Length> zero = Amount.valueOf(0, SI.MILLIMETER);\r
+               if ( regression.isLessThan(zero) )\r
+                       regression = zero;\r
                double rmm = regression.doubleValue(SI.MILLIMETER);\r
                double oDmm = oD.doubleValue(SI.MILLIMETER);\r
                double iDmm = iD.doubleValue(SI.MILLIMETER);\r
@@ -186,6 +194,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va
        }\r
        \r
        public java.awt.geom.Area getSideView(Amount<Length> regression){\r
+               Amount<Length> zero = Amount.valueOf(0, SI.MILLIMETER);\r
+               if ( regression.isLessThan(zero) )\r
+                       regression = zero;\r
                double rmm = regression.doubleValue(SI.MILLIMETER);\r
                double oDmm = oD.doubleValue(SI.MILLIMETER);\r
                double iDmm = iD.doubleValue(SI.MILLIMETER);\r