Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: Notesfiles; site hpcnof.UUCP Path: utzoo!linus!decvax!ittatc!dcdwest!sdcsvax!sdcrdcf!hplabs!hpfcdc!hpfcla!hpcnof!barrett From: barrett@hpcnof.UUCP Newsgroups: net.aviation Subject: Re: Orphaned Response Message-ID: <42000006@hpcnof.UUCP> Date: Mon, 30-Dec-85 13:52:00 EST Article-I.D.: hpcnof.42000006 Posted: Mon Dec 30 13:52:00 1985 Date-Received: Wed, 8-Jan-86 07:31:37 EST References: <3089@sun.UUCP> Organization: 30 Dec 85 11:52:00 MST Lines: 101 /* * alt.c - Written by Dave Barrett Dec 29, 1985 * * Program to play with density altitude computations * * NOTE: Formulas for density altitude here won't work above 35000 ft or * so because the standard lapse rate is not linear. * * cc -o alt alt.c -lm */ #include #include #define AbsZero (-273.16) /* or is it -273.15? definition of C is funny */ #define cent(Kelvin) ((Kelvin) + AbsZero) /* kelvin to Centigrade */ #define kelvin(Cent) ((Cent) - AbsZero) /* Centigrade to kelvin */ #define meters(feet) ((feet) * 12.0*2.54/100.0) /* meters to feet conversion */ #define feet(meters) ((meters) * 100.0/(2.54*12.0)) #define FtoC(F) (5.0/9.0 * ((F) - 32.0)) /* Farinheit to Centigrode */ #define CtoF(C) ((C) * 9.0/5.0 + 32.0) #define LapseRate (-0.0065) /* C/m */ /* Standard free air lapse rate */ #define T0 (288.16) /* K */ /* Standard Temperature at sea level */ #define g (-9.80655) /* m / s^2 */ /* Earth's gravitational const */ #define R 8.31432 /* kg m^2 / s^2*mol*K */ /* Universal Gas Const */ #define M 0.028966 /* kg / mol */ /* Molar weight of air */ #define P0 1013.25 /* mb=kg / 100*m*s^2 *//* pressure at sea level */ #define y0 0 /* m */ /* true altitude at sea lavel */ #define StdTemp(y) (T0 + LapseRate*(y)) /* K */ /* Standard temperature */ #define StdAlt(T) (((T)-T0)/LapseRate) /* m */ /* Inverse of above */ #define Q (g*M/(LapseRate*R)) /* dimensionless */ #define k (P0/pow(StdTemp(y0), Q)) /* mb / K */ /* d P / dy */ #define mu (100*k*M/R) /* kg / m^3 */ /* d rho / dy */ main() { double alt, temp, press; double DensityAltitude(), stddensity(), stdpressure(), PressureAltitude(); /* printf("y0 = %.6f\n", y0); printf("b = %.6f\n", LapseRate); printf("a = %.6f\n", T0); printf("g = %.6f\n", g); printf("M = %.6f\n", M); printf("R = %.6f\n", R); printf("P0 = %.6f\n", P0); printf("y0 = %.6f\n", y0); printf("Q = %.6f\n", Q); printf("k = %.6e\n", k); printf("mu = %.6e\n", mu); */ printf(" Input alt(ft), Temp(C)?"); scanf("%lf %lf", &alt, &temp); alt = meters(alt); printf(" alt = %.6f m\n", alt); printf(" temp = %.6f C\n", temp); printf(" Std Temp = %.2f C\n", cent(StdTemp(alt))); printf(" Density = %.4f kg / m^3\n", stddensity(alt)); printf(" Pressure = %.2f mb\n", stdpressure(alt, temp)); printf(" Density alt = %.2f ft\n", feet(DensityAltitude(alt, temp))); } double stddensity(altitude) double altitude; { return(mu*pow(StdTemp(altitude), Q-1)); } double stddensityalt(density) double density; { return(StdAlt(pow(density/mu, 1/(Q-1)))); } double stdpressure(altitude) double altitude; { return(k*pow(StdTemp(altitude), Q)); } double stdpressalt(pressure) double pressure; { return(StdAlt(pow(pressure/k, 1/Q))); } double DensityAltitude(altitude, temperature) double altitude, temperature; { return( stddensityalt( M/R * 100 * stdpressure(altitude) / kelvin(temperature) ) ); }