From 1011f2df944dbfe3e82016ea0a3a0f0954c1ca9b Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Sun, 26 Feb 2023 09:41:55 -0700 Subject: [PATCH] Don't let fins with zero area cause NaN exceptions. --- .../aerodynamics/barrowman/FinSetCalc.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java index f7da050a1..326c73a0d 100644 --- a/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java +++ b/core/src/net/sf/openrocket/aerodynamics/barrowman/FinSetCalc.java @@ -86,7 +86,7 @@ public class FinSetCalc extends RocketComponentCalc { warnings.addAll(geometryWarnings); - if (span < 0.001) { + if (finArea < MathUtil.EPSILON) { forces.setCm(0); forces.setCN(0); forces.setCNa(0); @@ -618,6 +618,11 @@ public class FinSetCalc extends RocketComponentCalc { @Override public double calculateFrictionCD(FlightConditions conditions, double componentCf, WarningSet warnings) { + // a fin with 0 area contributes no drag + if (finArea < MathUtil.EPSILON) { + return 0.0; + } + double cd = componentCf * (1 + 2 * thickness / macLength) * 2 * finArea / conditions.getRefArea(); return cd; } @@ -626,6 +631,11 @@ public class FinSetCalc extends RocketComponentCalc { public double calculatePressureCD(FlightConditions conditions, double stagnationCD, double baseCD, WarningSet warnings) { + // a fin with 0 area contributes no drag + if (finArea < MathUtil.EPSILON) { + return 0.0; + } + double mach = conditions.getMach(); double cd = 0;