From: Bill Kuker Date: Tue, 14 Apr 2009 19:08:57 +0000 (+0000) Subject: Added end delay support, negative regression checks X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=d535b0d296e2c5f68fa4577be180ab387f717943;p=sw%2Fmotorsim Added end delay support, negative regression checks --- diff --git a/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java b/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java index d03a55a..cc67b0b 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java +++ b/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java @@ -37,6 +37,8 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va @Override public Amount surfaceArea(Amount regression) { Amount zero = Amount.valueOf(0, SI.MILLIMETER); + if ( regression.isLessThan(zero) ) + return Amount.valueOf(0, SI.SQUARE_METRE); //Calculated regressed length Amount cLength = regressedLength(regression); @@ -66,7 +68,7 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va Amount ends = (cOD.divide(2).pow(2).times(Math.PI)).minus(cID.divide(2).pow(2).times(Math.PI)).times(2).to(SI.SQUARE_METRE); - Amount total = inner.times(innerSurfaceInhibited?0:1).plus(outer.times(outerSurfaceInhibited?0:1)).plus(ends.times(numberOfBurningEnds())); + Amount total = inner.times(innerSurfaceInhibited?0:1).plus(outer.times(outerSurfaceInhibited?0:1)).plus(ends.times(numberOfBurningEnds(regression))); return total; } @@ -75,6 +77,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va public Amount volume(Amount regression) { Amount zero = Amount.valueOf(0, SI.MILLIMETER); + if ( regression.isLessThan(zero) ) + regression = zero; + //Calculated regressed length Amount cLength = regressedLength(regression); @@ -146,8 +151,8 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va Amount axial = null; - if ( numberOfBurningEnds() != 0 ) - axial = getLength().divide(numberOfBurningEnds()); + if ( numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER)) != 0 ) + axial = getLength().divide(numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER))); if ( axial == null ) return radial; @@ -168,6 +173,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va @Override public java.awt.geom.Area getCrossSection(Amount regression){ + Amount zero = Amount.valueOf(0, SI.MILLIMETER); + if ( regression.isLessThan(zero) ) + regression = zero; double rmm = regression.doubleValue(SI.MILLIMETER); double oDmm = oD.doubleValue(SI.MILLIMETER); double iDmm = iD.doubleValue(SI.MILLIMETER); @@ -186,6 +194,9 @@ public class CoredCylindricalGrain extends ExtrudedGrain implements MotorPart.Va } public java.awt.geom.Area getSideView(Amount regression){ + Amount zero = Amount.valueOf(0, SI.MILLIMETER); + if ( regression.isLessThan(zero) ) + regression = zero; double rmm = regression.doubleValue(SI.MILLIMETER); double oDmm = oD.doubleValue(SI.MILLIMETER); double iDmm = iD.doubleValue(SI.MILLIMETER);