1 #ifndef SZA_UTIL_ATMOSPHERE_H
2 #define SZA_UTIL_ATMOSPHERE_H
19 #include "carma/szautil/Angle.h"
20 #include "carma/szautil/Length.h"
21 #include "carma/szautil/Pressure.h"
22 #include "carma/szautil/Temperature.h"
23 #include "carma/szautil/Rx.h"
42 ALLREFRAC = TEMP|PRESSURE|HUMIDITY|ALTITUDE|LATITUDE|WAVE,
43 ALLOPTICAL = TEMP|PRESSURE|HUMIDITY|ALTITUDE|LATITUDE,
44 ALLPATH = TEMP|PRESSURE|HUMIDITY|ALTITUDE
47 struct RefractionCoefficients {
54 static const double tropoLapseRate_;
59 static Angle refracAccuracy_;
64 static Wavelength opticalWavelength_;
72 virtual ~Atmosphere();
76 static RefractionCoefficients
77 refractionCoefficients(Length altitude, Temperature airTemp,
78 double pressure,
double humidity,
79 Wavelength wavelength,
81 double tropoLapseRate=tropoLapseRate_,
82 Angle accuracy=refracAccuracy_);
88 setRefractionCoefficients(Length altitude, Temperature airTemp,
89 double pressure,
double humidity,
90 Wavelength wavelength,
92 double tropoLapseRate=tropoLapseRate_,
93 Angle accuracy=refracAccuracy_);
97 void setRefractionCoefficients();
102 static Angle offset(Angle& elevation,
103 Atmosphere::RefractionCoefficients& coeff);
104 Angle offset(Angle& elevation);
108 RefractionCoefficients
109 refractionCoefficients();
111 RefractionCoefficients
112 opticalRefractionCoefficients();
114 void setAirTemperature(Temperature airTemp);
116 void setPressure(
double pressure);
118 void setHumidity(
double humidity);
120 void setFrequency(sza::util::Frequency frequency);
122 void setRx(sza::util::Rx::Id rxId);
124 void setAltitude(Length altitude);
126 void setLatitude(Angle latitude);
128 void setWavelength(Wavelength wavelength);
132 bool canComputeRefraction();
134 bool canComputeOpticalRefraction();
138 void computeRefraction();
142 bool canComputePathlength();
144 Pressure saturatedVaporPressure(Temperature airTemp);
145 double refractivityTotal(Temperature airTemp, Pressure pressure,
double relHumid);
146 double refractivityDry(Temperature airTemp, Pressure pressure,
double relHumid);
147 double refractivityWet(Temperature airTemp, Pressure pressure,
double relHumid);
149 Length excessPathlength(
double refractivity, Length scaleHeight, Length altitude, Angle elevation);
150 Length excessPathlengthTotal(Temperature airTemp, Pressure pressure,
double relHumid, Length altitude, Angle elevation);
151 Length excessPathlengthTotal(Angle elevation);
153 static const Length dryScaleHeight_;
154 static const Length wetScaleHeight_;
155 static const Angle pathlengthElevationLimit_;
158 RefractionCoefficients coeff_;
159 bool coefficientsAreSet_;
161 Temperature airTemperature_;
164 Wavelength wavelength_;
179 #endif // End #ifndef SZA_UTIL_ATMOSPHERE_H
Tagged: Wed Dec 1 11:58:54 PST 2004.