/* wave drag in terms of froude number 2 / sin(Pi - F^-2) \ Drag = | ----------------------- | \ (Pi - F^-2) (1 + Pi F^2) / ___ V = F * \/g l F = sqrt(g * l) / V; g = 9.8 (gravity constant) l is length of vessel in meters V is meters per second Reaches a peak at F=Pi^-.5 which is about .56 The huge increase starts at F = .4 (normal hull speed setting) Also interesting to note that at 80% of normal hull speed, the wave drag is zero as well, but the first hump occurs from .32 to .4 This works for the full range from displacement to planing mode. */ double Boat::WakeDrag(double VB) { #if 0 // this may be theoretically correct in flat water, but is complex and not practical if(VB == 0) return 0; const double G = 9.8; double L = ft2m(lwl_ft); double F = knots2m_s(VB) / sqrt(G * L); double F2 = square(F), invF2 = 1/F2; double D = square(sin(M_PI - invF2) / (M_PI - invF2) / (1 + M_PI * F2)); return wake_drag * wake_drag * D * VB * VB; /* D is max of .25 (at F=.56) so normalize to 1 */ #else // classic hull speed exponential without planing possible // double hull_speed = 1.34*sqrt(lwl_ft); // double our_wave_drag = 2 * wake_drag * (pow(8, VB / sqrt(lwl_ft)) - 1); double coeff = VB / 1.34 / sqrt(lwl_ft); if(coeff < 1) return 0; double drag = (pow(32, coeff - 1) - 1) * wake_drag * 10; if(drag > VB) drag = VB; return drag; #endif }
/* wave drag in terms of froude number 2 / sin(Pi - F^-2) \ Drag = | ----------------------- | \ (Pi - F^-2) (1 + Pi F^2) / ___ V = F * \/g l F = sqrt(g * l) / V; g = 9.8 (gravity constant) l is length of vessel in meters V is meters per second Reaches a peak at F=Pi^-.5 which is about .56 The huge increase starts at F = .4 (normal hull speed setting) Also interesting to note that at 80% of normal hull speed, the wave drag is zero as well, but the first hump occurs from .32 to .4 This works for the full range from displacement to planing mode. */ double Boat::WakeDrag(double VB) { if(VB == 0) return 0; const double G = 9.8; double L = ft2m(lwl_ft); double F = knots2m_s(VB) / sqrt(G * L); double F2 = square(F), invF2 = 1/F2; double D = square(sin(M_PI - invF2) / (M_PI - invF2) / (1 + M_PI * F2)); return wake_drag * wake_drag * D * VB * VB * 4; /* D is max of .25 (at F=.56) so normalize to 1 */ }