Remove tube fin stability warning

This commit is contained in:
JoePfeiffer 2022-06-07 10:52:34 -06:00
parent 27b1380a45
commit 910ef69b79
3 changed files with 17 additions and 9 deletions

View File

@ -1789,7 +1789,6 @@ Warning.TUMBLE_UNDER_THRUST = Stage began to tumble under thrust.
Warning.EVENT_AFTER_LANDING = Flight Event occurred after landing:
Warning.ZERO_LENGTH_BODY = Zero length bodies may not result in accurate simulations.
Warning.ZERO_RADIUS_BODY = Zero length bodies may not result in accurate simulations.
Warning.TUBE_STABILITY = Tube fin stability calculations may not be accurate.
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.

View File

@ -392,7 +392,6 @@ public abstract class Warning {
public static final Warning ZERO_LENGTH_BODY = new Other(trans.get("Warning.ZERO_LENGTH_BODY"));
public static final Warning ZERO_RADIUS_BODY = new Other(trans.get("Warning.ZERO_RADIUS_BODY"));
public static final Warning TUBE_STABILITY = new Other(trans.get("Warning.TUBE_STABILITY"));
public static final Warning TUBE_SEPARATION = new Other(trans.get("Warning.TUBE_SEPARATION"));
public static final Warning TUBE_OVERLAP = new Other(trans.get("Warning.TUBE_OVERLAP"));
}

View File

@ -41,14 +41,14 @@ public class TubeFinSetCalc extends TubeCalc {
private final double outerRadius;
private final int tubeCount;
private final double baseRotation;
// at present tubes are only allowed a cant angle of 0
private final double cantAngle;
// values we can precompute once
private final double ar;
private final double intersticeArea;
private final double wettedArea;
private final double cnaconst;
protected double rollSum = Double.NaN; // Roll damping sum term
protected final WarningSet geometryWarnings = new WarningSet();
@ -60,7 +60,6 @@ public class TubeFinSetCalc extends TubeCalc {
final TubeFinSet tubes = (TubeFinSet) component;
geometryWarnings.add(Warning.TUBE_STABILITY);
if (tubes.getTubeSeparation() > MathUtil.EPSILON) {
geometryWarnings.add(Warning.TUBE_SEPARATION);
} else if (tubes.getTubeSeparation() < -MathUtil.EPSILON) {
@ -73,6 +72,9 @@ public class TubeFinSetCalc extends TubeCalc {
outerRadius = tubes.getOuterRadius();
tubeCount = tubes.getFinCount();
baseRotation = tubes.getBaseRotation();
// at present, tube cant angle can only be 0
cantAngle = 0;
// cantAngle = tubes.getCantAngle();
// precompute geometry. This will be the geometry of a single tube, since BarrowmanCalculator
// iterates across them. Doesn't consider interference between them; that should only be relevant for
@ -149,11 +151,19 @@ public class TubeFinSetCalc extends TubeCalc {
double x = calculateCPPos(conditions) * chord;
// log.debug("CP position " + x);
// We aren't allowing tube fins to have any cant angle at present, so no roll force
forces.setCrollForce(0);
// Roll forces
// This isn't really tested, since the cant angle is required to be 0.
forces.setCrollForce((bodyRadius + outerRadius) * cna * cantAngle /
conditions.getRefLength());
if (conditions.getAOA() > STALL_ANGLE) {
// log.debug("Tube stalling in roll");
forces.setCrollForce(forces.getCrollForce() *
MathUtil.clamp(1 - (conditions.getAOA() - STALL_ANGLE) / (STALL_ANGLE / 2), 0, 1));
}
// Worry about roll damping later
forces.setCrollDamp(0);
forces.setCrollDamp((bodyRadius + outerRadius) * conditions.getRollRate()/conditions.getVelocity() * cna / conditions.getRefLength());
forces.setCroll(forces.getCrollForce() - forces.getCrollDamp());
forces.setCNa(cna);