From 03f5c8924e85a83189cb1e54e7b1406d2ed32a1f Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Sat, 10 Feb 2024 06:59:48 -0700 Subject: [PATCH] allow sustainer to tumble before apogee. I don't know if it's actually possible for the sustainer to tumble when not under thrust (I guess it would need a tractor motor and very careful CG-CP design so it would tumble immediately after burnout?) but the conditions are checked separately just in case --- .../simulation/BasicEventSimulationEngine.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index 232da2090..821bab500 100644 --- a/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/core/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -258,21 +258,16 @@ public class BasicEventSimulationEngine implements SimulationEngine { // Check for Tumbling // Conditions for transition are: - // apogee reached (if sustainer stage) - // and is not already tumbling + // is not already tumbling // and not stable (cg > cp) // and aoa > AOA_TUMBLE_CONDITION threshold - // and thrust < THRUST_TUMBLE_CONDITION threshold if (!currentStatus.isTumbling()) { final double cp = currentStatus.getFlightData().getLast(FlightDataType.TYPE_CP_LOCATION); final double cg = currentStatus.getFlightData().getLast(FlightDataType.TYPE_CG_LOCATION); final double aoa = currentStatus.getFlightData().getLast(FlightDataType.TYPE_AOA); - final boolean wantToTumble = (cg > cp && aoa > AOA_TUMBLE_CONDITION); - final boolean isSustainer = currentStatus.getConfiguration().isStageActive(0); - final boolean isApogee = currentStatus.isApogeeReached(); - if (wantToTumble && (isApogee || !isSustainer)) { + if (cg > cp && aoa > AOA_TUMBLE_CONDITION) { currentStatus.addEvent(new FlightEvent(FlightEvent.Type.TUMBLE, currentStatus.getSimulationTime())); } }