From 60240f2f43c2ec13ef03b07c09645c18ae23d0d8 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Fri, 10 Apr 2009 20:24:02 +0000 Subject: [PATCH] Added compound grain --- src/com/billkuker/rocketry/motorsim/Burn.java | 20 +++++++- .../motorsim/grain/CompoundGrain.java | 49 +++++++++++++++++++ .../motorsim/grain/CoredCylindricalGrain.java | 6 +++ 3 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java diff --git a/src/com/billkuker/rocketry/motorsim/Burn.java b/src/com/billkuker/rocketry/motorsim/Burn.java index b7c46b5..3a53a45 100644 --- a/src/com/billkuker/rocketry/motorsim/Burn.java +++ b/src/com/billkuker/rocketry/motorsim/Burn.java @@ -25,6 +25,7 @@ import org.jscience.physics.amount.Constants; import com.billkuker.rocketry.motorsim.fuel.KNSU; import com.billkuker.rocketry.motorsim.grain.BurnPanel; +import com.billkuker.rocketry.motorsim.grain.CompoundGrain; import com.billkuker.rocketry.motorsim.grain.CoredCylindricalGrain; import com.billkuker.rocketry.motorsim.grain.ExtrudedGrain; import com.billkuker.rocketry.motorsim.grain.GrainPanel; @@ -231,7 +232,24 @@ public class Burn { g.setID(Amount.valueOf(10, SI.MILLIMETER)); m.setGrain(g); - m.setGrain(new MultiGrain(g,2)); + CoredCylindricalGrain g1 = new CoredCylindricalGrain(); + g1.setLength(Amount.valueOf(70, SI.MILLIMETER)); + g1.setOD(Amount.valueOf(30, SI.MILLIMETER)); + g1.setID(Amount.valueOf(18, SI.MILLIMETER)); + m.setGrain(g); + + CoredCylindricalGrain g2 = new CoredCylindricalGrain(); + g2.setLength(Amount.valueOf(70, SI.MILLIMETER)); + g2.setOD(Amount.valueOf(12, SI.MILLIMETER)); + g2.setID(Amount.valueOf(0, SI.MILLIMETER)); + g2.inhibit(true, false, false); + m.setGrain(g); + + CompoundGrain cg = new CompoundGrain(g1, g2); + + m.setGrain( cg ); + + //m.setGrain(new MultiGrain(g,2)); //m.setGrain(new ExtrudedGrain()); diff --git a/src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java b/src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java new file mode 100644 index 0000000..1610453 --- /dev/null +++ b/src/com/billkuker/rocketry/motorsim/grain/CompoundGrain.java @@ -0,0 +1,49 @@ +package com.billkuker.rocketry.motorsim.grain; + +import java.awt.geom.Area; + +import javax.measure.quantity.Length; +import javax.measure.quantity.Volume; + +import org.jscience.physics.amount.Amount; + +import com.billkuker.rocketry.motorsim.Grain; + +public class CompoundGrain implements Grain { + + private Grain a, b; + + public CompoundGrain(Grain a, Grain b){ + this.a = a; + this.b = b; + } + + public Area getCrossSection(Amount regression) { + Area aa = a.getCrossSection(regression); + aa.add(b.getCrossSection(regression)); + return aa; + } + + public Area getSideView(Amount regression) { + Area aa = a.getSideView(regression); + aa.add(b.getSideView(regression)); + return aa; + } + + public Amount surfaceArea( + Amount regression) { + return a.surfaceArea(regression).plus(b.surfaceArea(regression)); + } + + public Amount volume(Amount regression) { + return a.volume(regression).plus(b.volume(regression)); + } + + public Amount webThickness() { + Amount l = a.webThickness(); + if ( b.webThickness().isGreaterThan(l) ) + return b.webThickness(); + return l; + } + +} diff --git a/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java b/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java index 5bbad6d..b90a41d 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java +++ b/src/com/billkuker/rocketry/motorsim/grain/CoredCylindricalGrain.java @@ -27,6 +27,12 @@ public class CoredCylindricalGrain implements Grain, Validating { public CoredCylindricalGrain() { } + + public void inhibit(boolean in, boolean out, boolean end){ + oInh = out; + iInh = in; + eInh = end; + } @Override public Amount surfaceArea(Amount regression) { -- 2.47.2