Refinements to calculation of tube drag
This commit is contained in:
parent
a3aebadcff
commit
d5291d7b52
@ -59,22 +59,19 @@ public abstract class TubeCalc extends RocketComponentCalc {
|
|||||||
double f = 0.25/MathUtil.pow2(Math.log10((epsilon / (3.7 * diameter) + 5.74/Math.pow(Re, 0.9))));
|
double f = 0.25/MathUtil.pow2(Math.log10((epsilon / (3.7 * diameter) + 5.74/Math.pow(Re, 0.9))));
|
||||||
|
|
||||||
// If we're supersonic, apply a correction
|
// If we're supersonic, apply a correction
|
||||||
// if (conditions.getMach() > 1) {
|
if (conditions.getMach() > 1) {
|
||||||
// f = f / conditions.getBeta();
|
f = f / conditions.getBeta();
|
||||||
// }
|
}
|
||||||
|
|
||||||
// pressure drop using Darcy-Weissbach equation
|
// pressure drop using Darcy-Weissbach equation
|
||||||
deltap = f * (length * rho * MathUtil.pow2(v)) / (2 * diameter);
|
deltap = f * (length * rho * MathUtil.pow2(v)) / (2 * diameter);
|
||||||
System.out.println(tube + ", v " + v + ", Re " + Re + ", p " + p + ": " + "deltap " + deltap);
|
|
||||||
|
|
||||||
// drag coefficient of tube interior from pressure drop
|
// drag coefficient of tube interior from pressure drop
|
||||||
tubeCD = 2 * (deltap * innerArea) / (rho * MathUtil.pow2(v) * innerArea);
|
tubeCD = 2 * (deltap * innerArea) / (rho * MathUtil.pow2(v) * innerArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
// convert to CD and return
|
// convert to CD and return
|
||||||
System.out.println(tube + " tube CD " + tubeCD + ", stagnationCD " + stagnationCD + ", baseCD " + baseCD + ", inner area " + innerArea + ", frontal area " + frontalArea);
|
final double cd = (tubeCD * innerArea + 0.7*(stagnationCD + baseCD) * frontalArea) / conditions.getRefArea();
|
||||||
final double cd = (tubeCD * innerArea + (stagnationCD + baseCD) * frontalArea) / conditions.getRefArea();
|
|
||||||
System.out.println(tube + " cd " + cd);
|
|
||||||
return cd;
|
return cd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,6 @@ public class TubeFinSetCalc extends TubeCalc {
|
|||||||
|
|
||||||
// angle between bodyRadius+outerRadius and d
|
// angle between bodyRadius+outerRadius and d
|
||||||
final double theta2 = Math.PI/2.0 - theta1;
|
final double theta2 = Math.PI/2.0 - theta1;
|
||||||
System.out.println("theta2 " + theta2);
|
|
||||||
|
|
||||||
// area of arc from body tube. Doubled so we have area to remove from diamond
|
// area of arc from body tube. Doubled so we have area to remove from diamond
|
||||||
final double a2 = MathUtil.pow2(bodyRadius) * theta2;
|
final double a2 = MathUtil.pow2(bodyRadius) * theta2;
|
||||||
@ -118,18 +117,13 @@ public class TubeFinSetCalc extends TubeCalc {
|
|||||||
|
|
||||||
// Area of the outer surface of a tube, not including portion masked by interstice
|
// Area of the outer surface of a tube, not including portion masked by interstice
|
||||||
final double outerArea = chord * 2.0 * (Math.PI - theta1) * outerRadius;
|
final double outerArea = chord * 2.0 * (Math.PI - theta1) * outerRadius;
|
||||||
|
|
||||||
// Area of inner surface of a tube
|
|
||||||
final double innerArea = chord * 2.0 * Math.PI * innerRadius;
|
|
||||||
|
|
||||||
// Surface area of the portion of the body tube masked by the tube fin. We'll subtract it from
|
// Surface area of the portion of the body tube masked by the tube fin. We'll subtract it from
|
||||||
// the tube fin area rather than go in and change the body tube surface area calculation. If tube
|
// the tube fin area rather than go in and change the body tube surface area calculation. If tube
|
||||||
// fin and body tube roughness aren't the same this will result in an inaccuracy.
|
// fin and body tube roughness aren't the same this will result in an inaccuracy.
|
||||||
final double maskedArea = chord * 2.0 * theta2 * bodyRadius;
|
final double maskedArea = chord * 2.0 * theta2 * bodyRadius;
|
||||||
|
|
||||||
wettedArea = innerArea + outerArea - maskedArea;
|
wettedArea = outerArea - maskedArea;
|
||||||
System.out.println(tubes + " outer " + outerArea + ", masked " + maskedArea);
|
|
||||||
log.debug("wetted area of tube fin " + wettedArea);
|
|
||||||
|
|
||||||
// Precompute most of CNa. Equation comes from Ribner, "The ring airfoil in nonaxial
|
// Precompute most of CNa. Equation comes from Ribner, "The ring airfoil in nonaxial
|
||||||
// flow", Journal of the Aeronautical Sciences 14(9) pp 529-530 (1947) equation (5).
|
// flow", Journal of the Aeronautical Sciences 14(9) pp 529-530 (1947) equation (5).
|
||||||
@ -270,9 +264,8 @@ public class TubeFinSetCalc extends TubeCalc {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double calculateFrictionCD(FlightConditions conditions, double componentCf, WarningSet warnings) {
|
public double calculateFrictionCD(FlightConditions conditions, double componentCf, WarningSet warnings) {
|
||||||
System.out.println(tubes + "wetted area " + wettedArea);
|
|
||||||
final double frictionCD = componentCf * wettedArea / conditions.getRefArea();
|
final double frictionCD = componentCf * wettedArea / conditions.getRefArea();
|
||||||
|
|
||||||
return frictionCD;
|
return frictionCD;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,11 +274,10 @@ public class TubeFinSetCalc extends TubeCalc {
|
|||||||
double stagnationCD, double baseCD, WarningSet warnings) {
|
double stagnationCD, double baseCD, WarningSet warnings) {
|
||||||
|
|
||||||
warnings.addAll(geometryWarnings);
|
warnings.addAll(geometryWarnings);
|
||||||
System.out.println(tubes + " stag CD " + stagnationCD + ", base CD " + baseCD);
|
|
||||||
|
|
||||||
final double cd = super.calculatePressureCD(conditions, stagnationCD, baseCD, warnings) +
|
final double cd = super.calculatePressureCD(conditions, stagnationCD, baseCD, warnings) +
|
||||||
(stagnationCD + baseCD) * intersticeArea / conditions.getRefArea();
|
(stagnationCD + baseCD) * intersticeArea / conditions.getRefArea();
|
||||||
|
|
||||||
return cd;
|
return cd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user