diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties
index d1462bf8a..097daf782 100644
--- a/core/resources/l10n/messages.properties
+++ b/core/resources/l10n/messages.properties
@@ -1846,6 +1846,7 @@ Warning.ZERO_LENGTH_BODY = Zero length bodies may not result in accurate simulat
Warning.ZERO_RADIUS_BODY = Zero length bodies may not result in accurate simulations.
Warning.TUBE_SEPARATION = Space between tube fins may not result in accurate simulations.
Warning.TUBE_OVERLAP = Overlapping tube fins may not result in accurate simulations.
+Warning.EMPTY_BRANCH = Simulation branch contains no data
Warning.SEPARATION_ORDER = Stages separated in an unreasonable order
! Scale dialog
diff --git a/core/src/net/sf/openrocket/aerodynamics/Warning.java b/core/src/net/sf/openrocket/aerodynamics/Warning.java
index 803073948..ae7c94e35 100644
--- a/core/src/net/sf/openrocket/aerodynamics/Warning.java
+++ b/core/src/net/sf/openrocket/aerodynamics/Warning.java
@@ -18,7 +18,6 @@ public abstract class Warning {
return new Warning.Other(text);
}
-
/**
* Return true
if the other
warning should replace
* this warning. The method should return true
if the other
@@ -398,4 +397,6 @@ public abstract class Warning {
public static final Warning TUBE_OVERLAP = new Other(trans.get("Warning.TUBE_OVERLAP"));
public static final Warning SEPARATION_ORDER = new Other(trans.get("Warning.SEPARATION_ORDER"));
+
+ public static final Warning EMPTY_BRANCH = new Other(trans.get("Warning.EMPTY_BRANCH"));
}
diff --git a/core/src/net/sf/openrocket/aerodynamics/WarningSet.java b/core/src/net/sf/openrocket/aerodynamics/WarningSet.java
index 4873976f3..6f709e83b 100644
--- a/core/src/net/sf/openrocket/aerodynamics/WarningSet.java
+++ b/core/src/net/sf/openrocket/aerodynamics/WarningSet.java
@@ -67,7 +67,17 @@ public class WarningSet extends AbstractSet implements Cloneable, Monit
mutable.check();
return add(Warning.fromString(s));
}
-
+
+ /**
+ * Add a Warning
of the specified type with the specified discriminator to the
+ * set.
+ * @param w the warning
+ * @param d the extra discriminator
+ *
+ */
+ public boolean add (Warning w, String d) {
+ return this.add(w.toString() + ": " + d);
+ }
@Override
public Iterator iterator() {
diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java
index 339c0704b..d3d61b829 100644
--- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java
+++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java
@@ -97,6 +97,12 @@ public class BasicEventSimulationEngine implements SimulationEngine {
dataBranch.getBranchName(),
currentStatus.getSimulationTime(),
dataBranch.getLast(FlightDataType.TYPE_TIME)));
+
+
+ // Did the branch generate any data?
+ if (dataBranch.getLength() == 0) {
+ flightData.getWarningSet().add(Warning.EMPTY_BRANCH, dataBranch.getBranchName());
+ }
}while( ! toSimulate.isEmpty());
SimulationListenerHelper.fireEndSimulation(currentStatus, null);