package net.sf.openrocket.aerodynamics.barrowman; import net.sf.openrocket.aerodynamics.AerodynamicForces; import net.sf.openrocket.aerodynamics.FlightConditions; import net.sf.openrocket.aerodynamics.WarningSet; import net.sf.openrocket.rocketcomponent.LaunchLug; import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.util.MathUtil; public class LaunchLugCalc extends RocketComponentCalc { private double CDmul; private double refArea; public LaunchLugCalc(RocketComponent component) { super(component); LaunchLug lug = (LaunchLug)component; double ld = lug.getLength() / (2*lug.getOuterRadius()); CDmul = Math.max(1.3 - ld, 1); refArea = Math.PI * MathUtil.pow2(lug.getOuterRadius()) - Math.PI * MathUtil.pow2(lug.getInnerRadius()) * Math.max(1 - ld, 0); } @Override public void calculateNonaxialForces(FlightConditions conditions, AerodynamicForces forces, WarningSet warnings) { // Nothing to be done } @Override public double calculatePressureDragForce(FlightConditions conditions, double stagnationCD, double baseCD, WarningSet warnings) { return CDmul*stagnationCD * refArea / conditions.getRefArea(); } }