From fc6b782ec72d7a6f4ff2a9590a54dcf5a36a9ff3 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Tue, 23 Nov 2010 16:16:46 +0000 Subject: [PATCH 1/1] Add volume loading --- .../billkuker/rocketry/motorsim/visual/SummaryPanel.java | 2 ++ .../rocketry/motorsim/visual/workbench/MotorsEditor.java | 2 +- .../motorsim/visual/workbench/MultiMotorTable.java | 6 +++++- src/com/billkuker/rocketry/motorsim/BurnSummary.java | 8 ++++++++ 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java b/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java index 33ae34e..b78d217 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java @@ -74,6 +74,7 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, R SummaryPanel.this.add(new JLabel("Average Thust")); SummaryPanel.this.add(new JLabel("Max Pressure")); SummaryPanel.this.add(new JLabel("Fuel Mass")); + SummaryPanel.this.add(new JLabel("Volume Loading")); SummaryPanel.this.add(new JLabel("Safty Factor")); SummaryPanel.this.add(new JLabel(bi.getRating())); @@ -89,6 +90,7 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, R .ammountToRoundedString(bi.maxPressure()))); SummaryPanel.this.add(new JLabel(RocketScience .ammountToRoundedString(bi.getPropellantMass()))); + SummaryPanel.this.add(new JLabel(Integer.toString((int)(bi.getVolumeLoading()*100.0)) + "%")); Color saftyColor; if (bi.getSaftyFactor() == null) { diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java index e805f8a..c5b771d 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorsEditor.java @@ -2,6 +2,7 @@ package com.billkuker.rocketry.motorsim.visual.workbench; import java.awt.FileDialog; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -13,7 +14,6 @@ import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.JSeparator; -import java.awt.event.ActionListener; import com.billkuker.rocketry.motorsim.Burn; import com.billkuker.rocketry.motorsim.Motor; diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorTable.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorTable.java index 518904f..c7f3302 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorTable.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MultiMotorTable.java @@ -42,6 +42,8 @@ public class MultiMotorTable extends JTable implements BurnWatcher, RocketScienc case 7: return "Max Pressure"; case 8: + return "Volume Loading"; + case 9: return "Fuel Mass"; } return null; @@ -49,7 +51,7 @@ public class MultiMotorTable extends JTable implements BurnWatcher, RocketScienc @Override public int getColumnCount() { - return 9; + return 10; } @Override @@ -81,6 +83,8 @@ public class MultiMotorTable extends JTable implements BurnWatcher, RocketScienc case 7: return RocketScience.ammountToRoundedString(bs.maxPressure()); case 8: + return Integer.toString((int)(bs.getVolumeLoading()*100.0)) + "%"; + case 9: return RocketScience.ammountToRoundedString(bs.getPropellantMass()); } throw new IndexOutOfBoundsException("Col out of bounds"); diff --git a/src/com/billkuker/rocketry/motorsim/BurnSummary.java b/src/com/billkuker/rocketry/motorsim/BurnSummary.java index beb145c..5f2f68c 100644 --- a/src/com/billkuker/rocketry/motorsim/BurnSummary.java +++ b/src/com/billkuker/rocketry/motorsim/BurnSummary.java @@ -24,6 +24,7 @@ public class BurnSummary { Amount isp; Amount propellantMass; Double saftyFactor; + Double volumeLoading; public BurnSummary(Burn b) { for (Interval i : b.getData().values()) { @@ -58,6 +59,9 @@ public class BurnSummary { Amount ideal = b.getMotor().getFuel().getIdealDensity(); Amount actual = ideal.times(b.getMotor().getFuel().getDensityRatio()); propellantMass = vol.times(actual).to(SI.GRAM); + + Amount chamber = b.getMotor().getChamber().chamberVolume(); + volumeLoading = vol.divide(chamber).to(Dimensionless.UNIT).doubleValue(Dimensionless.UNIT); } public String getRating() { @@ -108,5 +112,9 @@ public class BurnSummary { public Amount getPropellantMass() { return propellantMass; } + + public double getVolumeLoading() { + return volumeLoading; + } } -- 2.30.2