Line data Source code
1 : /******************************************************************************* 2 : * ALMA - Atacama Large Millimeter Array 3 : * (c) Instituto de Estructura de la Materia, 2011 4 : * (in the framework of the ALMA collaboration). 5 : * All rights reserved. 6 : * 7 : * This library is free software; you can redistribute it and/or 8 : * modify it under the terms of the GNU Lesser General Public 9 : * License as published by the Free Software Foundation; either 10 : * version 2.1 of the License, or (at your option) any later version. 11 : * 12 : * This library is distributed in the hope that it will be useful, 13 : * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 : * Lesser General Public License for more details. 16 : * 17 : * You should have received a copy of the GNU Lesser General Public 18 : * License along with this library; if not, write to the Free Software 19 : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 : *******************************************************************************/ 21 : 22 : #include <string> 23 : #include <vector> 24 : #include <iostream> 25 : #include <fstream> 26 : using namespace std; 27 : 28 : #include <atmosphere/ATM/ATMPercent.h> 29 : #include <atmosphere/ATM/ATMPressure.h> 30 : #include <atmosphere/ATM/ATMNumberDensity.h> 31 : #include <atmosphere/ATM/ATMMassDensity.h> 32 : #include <atmosphere/ATM/ATMTemperature.h> 33 : #include <atmosphere/ATM/ATMLength.h> 34 : #include <atmosphere/ATM/ATMInverseLength.h> 35 : #include <atmosphere/ATM/ATMOpacity.h> 36 : #include <atmosphere/ATM/ATMAngle.h> 37 : #include <atmosphere/ATM/ATMHumidity.h> 38 : #include <atmosphere/ATM/ATMFrequency.h> 39 : #include <atmosphere/ATM/ATMWaterVaporRadiometer.h> 40 : #include <atmosphere/ATM/ATMWVRMeasurement.h> 41 : #include <atmosphere/ATM/ATMProfile.h> 42 : #include <atmosphere/ATM/ATMSpectralGrid.h> 43 : #include <atmosphere/ATM/ATMRefractiveIndex.h> 44 : #include <atmosphere/ATM/ATMRefractiveIndexProfile.h> 45 : #include <atmosphere/ATM/ATMSkyStatus.h> 46 : using namespace atm; 47 : /** \brief A C++ main code to test the <a href="classatm_1_1SkyStatus.html">SkyStatus</a> Class 48 : * 49 : * The test 1 is structured as follows: 50 : * - Creates an object called "myProfile" belonging to the <a href="classatm_1_1AtmProfile.html">AtmProfile</a> Class. This object 51 : * is the same created in <a href="AtmProfileTest_8cpp.html">AtmProfileTest.cpp</a> 52 : * - A single frequency is defined (850 GHz). 53 : * - A refractive index profile, called "myRefractiveIndexProfile", for 850 GHz and "myProfile" 54 : * is constructed using a constructor in the form 55 : * <a href="classatm_1_1RefractiveIndexProfile.html#z8_0">RefractiveIndexProfile (Frequency frequency, AtmProfile atmProfile)</a>. 56 : * - An object of the <a href="classatm_1_1SkyStatus.html">SkyStatus</a> class is created using 57 : * <a href="classatm_1_1SkyStatus.html#z12_0">the basic constructor</a> of this class. This object is called "mySky_siglefreq" 58 : * - Radiative transfer results are obtained for "mySky_siglefreq" forcing some parameters (such as the water vapor column) to different 59 : * values external to the object. 60 : * - Several parameters are changed internally in the object "mySky_siglefreq" using setters, e.g. 61 : * <a href="classatm_1_1SkyStatus.html#z13_1">setUserWH2O</a> and 62 : * <a href="classatm_1_1SkyStatus.html#z13_3">setAirMass</a>, and new radiative transfer results are obtained. 63 : * - In the final part of this test, a new object, called "mySky_1band_8channels", of the 64 : * <a href="classatm_1_1SkyStatus.html">SkyStatus</a> class is 65 : * created with again the <a href="classatm_1_1SkyStatus.html#z12_0">the basic constructor</a> but with an object 66 : * of the <a href="classatm_1_1RefractiveIndexProfile.html">RefractiveIndexProfile</a> class that has a 67 : * <a href="classatm_1_1SpectralGrid.html">SpectralGrid</a> with one band and eight frequecy channels. 68 : * - Radiative transfer results are obtained for the eight frequency channels under different conditions specified by setters. 69 : * 70 : * The output of this test is the following: 71 : * 72 : * <b> 73 : * SkyStatusTest: BASIC ATMOSPHERIC PARAMETERS TO GENERATE REFERENCE ATMOSPHERIC PROFILE 74 : * SkyStatusTest: <br> 75 : * SkyStatusTest: Ground temperature T: 270 K<br> 76 : * SkyStatusTest: Ground pressure P: 560 mb<br> 77 : * SkyStatusTest: Relative humidity rh: 20 %<br> 78 : * SkyStatusTest: Scale height h0: 2 km<br> 79 : * SkyStatusTest: Pressure step dp: 5 mb<br> 80 : * SkyStatusTest: Altitude alti: 5000 m<br> 81 : * SkyStatusTest: Attitude top atm profile atmh:48 km<br> 82 : * SkyStatusTest: Pressure step factordp1: 1.1 <br> 83 : * SkyStatusTest: Tropospherique lapse rate: -5.6 K/km<br> 84 : * SkyStatusTest: Atmospheric type: tropical<br> 85 : * SkyStatusTest: <br> 86 : * SkyStatusTest: <br> 87 : * SkyStatusTest: Object myProfile built with the AtmProfile CONSTRUCTOR and the above entries<br> 88 : * SkyStatusTest: <br> 89 : * SkyStatusTest: Number of layers returned: 22<br> 90 : * SkyStatusTest: Layer parameters: <br> 91 : * SkyStatusTest: size of Temperature Profile: 22<br> 92 : * SkyStatusTest: P: 554.977 mb T: 269.598 K Thickness: 143.444 m WaterVapor: 0.000762199 kg m-3 WaterVapor: 2.5504e+22 m-3 CO: 1.93876e+18 m-3 O3: 5.62901e+17 m-3 N2O: 4.76212e+18 m-3<br> 93 : * SkyStatusTest: P: 543.967 mb T: 268.706 K Thickness: 175.101 m WaterVapor: 0.000703854 kg m-3 WaterVapor: 2.35517e+22 m-3 CO: 1.90629e+18 m-3 O3: 5.58954e+17 m-3 N2O: 4.68575e+18 m-3<br> 94 : * SkyStatusTest: P: 530.751 mb T: 267.615 K Thickness: 214.579 m WaterVapor: 0.000638519 kg m-3 WaterVapor: 2.13656e+22 m-3 CO: 1.86583e+18 m-3 O3: 5.54106e+17 m-3 N2O: 4.59355e+18 m-3<br> 95 : * SkyStatusTest: P: 514.888 mb T: 266.275 K Thickness: 264.252 m WaterVapor: 0.000566481 kg m-3 WaterVapor: 1.89551e+22 m-3 CO: 1.81512e+18 m-3 O3: 5.48123e+17 m-3 N2O: 4.48208e+18 m-3<br> 96 : * SkyStatusTest: P: 495.844 mb T: 264.618 K Thickness: 327.475 m WaterVapor: 0.000488584 kg m-3 WaterVapor: 1.63486e+22 m-3 CO: 1.75116e+18 m-3 O3: 5.40691e+17 m-3 N2O: 4.34711e+18 m-3<br> 97 : * SkyStatusTest: P: 472.979 mb T: 262.555 K Thickness: 409.147 m WaterVapor: 0.000406408 kg m-3 WaterVapor: 1.35988e+22 m-3 CO: 1.66905e+18 m-3 O3: 5.31317e+17 m-3 N2O: 4.18305e+18 m-3<br> 98 : * SkyStatusTest: P: 445.521 mb T: 259.963 K Thickness: 516.736 m WaterVapor: 0.00032243 kg m-3 WaterVapor: 1.07889e+22 m-3 CO: 1.56532e+18 m-3 O3: 5.19589e+17 m-3 N2O: 3.98414e+18 m-3<br> 99 : * SkyStatusTest: P: 412.536 mb T: 256.662 K Thickness: 662.272 m WaterVapor: 0.000240119 kg m-3 WaterVapor: 8.03464e+21 m-3 CO: 1.43556e+18 m-3 O3: 5.01384e+17 m-3 N2O: 3.74538e+18 m-3<br> 100 : * SkyStatusTest: P: 372.891 mb T: 252.381 K Thickness: 866.58 m WaterVapor: 0.000163845 kg m-3 WaterVapor: 5.48243e+21 m-3 CO: 1.26268e+18 m-3 O3: 4.89541e+17 m-3 N2O: 3.44722e+18 m-3<br> 101 : * SkyStatusTest: P: 325.19 mb T: 246.68 K Thickness: 1169.46 m WaterVapor: 9.84855e-05 kg m-3 WaterVapor: 3.29543e+21 m-3 CO: 1.03631e+18 m-3 O3: 4.87238e+17 m-3 N2O: 3.07023e+18 m-3<br> 102 : * SkyStatusTest: P: 267.67 mb T: 238.76 K Thickness: 1658.92 m WaterVapor: 4.85606e-05 kg m-3 WaterVapor: 1.62489e+21 m-3 CO: 7.6885e+17 m-3 O3: 5.03793e+17 m-3 N2O: 2.58146e+18 m-3<br> 103 : * SkyStatusTest: P: 256.935 mb T: 230.765 K Thickness: 1000 m WaterVapor: 2.49802e-05 kg m-3 WaterVapor: 8.35865e+20 m-3 CO: 5.53847e+17 m-3 O3: 5.37164e+17 m-3 N2O: 2.16403e+18 m-3<br> 104 : * SkyStatusTest: P: 257.26 mb T: 224.015 K Thickness: 1000 m WaterVapor: 1.51513e-05 kg m-3 WaterVapor: 5.06978e+20 m-3 CO: 3.99903e+17 m-3 O3: 5.63587e+17 m-3 N2O: 1.87717e+18 m-3<br> 105 : * SkyStatusTest: P: 211.112 mb T: 215.315 K Thickness: 1625 m WaterVapor: 7.86037e-06 kg m-3 WaterVapor: 2.63017e+20 m-3 CO: 2.48942e+17 m-3 O3: 5.7276e+17 m-3 N2O: 1.56008e+18 m-3<br> 106 : * SkyStatusTest: P: 158.866 mb T: 203.315 K Thickness: 2000 m WaterVapor: 3.17588e-06 kg m-3 WaterVapor: 1.06268e+20 m-3 CO: 1.23924e+17 m-3 O3: 5.91703e+17 m-3 N2O: 1.1682e+18 m-3<br> 107 : * SkyStatusTest: P: 114.088 mb T: 191.865 K Thickness: 2000 m WaterVapor: 1.16834e-06 kg m-3 WaterVapor: 3.90939e+19 m-3 CO: 5.57264e+16 m-3 O3: 1.47198e+18 m-3 N2O: 7.62395e+17 m-3<br> 108 : * SkyStatusTest: P: 81.0467 mb T: 190.615 K Thickness: 2000 m WaterVapor: 4.29808e-07 kg m-3 WaterVapor: 1.43819e+19 m-3 CO: 2.61142e+16 m-3 O3: 2.77652e+18 m-3 N2O: 4.64509e+17 m-3<br> 109 : * SkyStatusTest: P: 50.4577 mb T: 201.065 K Thickness: 3750 m WaterVapor: 1.02088e-07 kg m-3 WaterVapor: 3.41599e+18 m-3 CO: 1.54239e+16 m-3 O3: 3.93168e+18 m-3 N2O: 2.3445e+17 m-3<br> 110 : * SkyStatusTest: P: 27.4549 mb T: 212.515 K Thickness: 4000 m WaterVapor: 1.47072e-08 kg m-3 WaterVapor: 4.9212e+17 m-3 CO: 1.04872e+16 m-3 O3: 4.55929e+18 m-3 N2O: 1.03582e+17 m-3<br> 111 : * SkyStatusTest: P: 15.0592 mb T: 221.315 K Thickness: 4000 m WaterVapor: 1.99041e-09 kg m-3 WaterVapor: 6.66012e+16 m-3 CO: 7.05928e+15 m-3 O3: 3.23216e+18 m-3 N2O: 4.5226e+16 m-3<br> 112 : * SkyStatusTest: P: 8.2977 mb T: 230.215 K Thickness: 4250 m WaterVapor: 2.53052e-10 kg m-3 WaterVapor: 8.46739e+15 m-3 CO: 4.4967e+15 m-3 O3: 1.76311e+18 m-3 N2O: 1.69912e+16 m-3<br> 113 : * SkyStatusTest: P: 4.09633 mb T: 241.315 K Thickness: 6000 m WaterVapor: 1.95133e-11 kg m-3 WaterVapor: 6.52935e+14 m-3 CO: 2.56843e+15 m-3 O3: 6.47884e+17 m-3 N2O: 3.88669e+15 m-3<br> 114 : * SkyStatusTest: First guess precipitable water vapor content: 1.57182mm<br> 115 : * SkyStatusTest: (This value is estimated from the relative humidity at ground level and the water vapor scale height)<br> 116 : * SkyStatusTest: <br> 117 : * SkyStatusTest: <br> 118 : * SkyStatusTest: TEST FOR JUST 1 FREQUENCY <br> 119 : * SkyStatusTest: ========================= <br> 120 : * SkyStatusTest: <br> 121 : * SkyStatusTest: Frequency : 850 GHz<br> 122 : * SkyStatusTest: Wet opacity : 1.09385 nepers, for 1 mm H2O<br> 123 : * SkyStatusTest: Dry opacity : 0.12149 nepers <br> 124 : * SkyStatusTest: Sky brightness : 189.623 K<br> 125 : * SkyStatusTest: (EXTERNAL CHANGE) water vapor column: 0.4 mm<br> 126 : * SkyStatusTest: (NEW OUTPUT) T_EBB = 121.052 K <br> 127 : * SkyStatusTest: Current water vapor column in Radiance Class:1 mm<br> 128 : * SkyStatusTest: <br> 129 : * SkyStatusTest: (INTERNAL CHANGE) Air mass: 2 <br> 130 : * SkyStatusTest: (NEW OUTPUT) T_EBB = 242.61 K <br> 131 : *<br> 132 : * SkyStatusTest: (INTERNAL CHANGE) water vapor column: 0.8 mm<br> 133 : * SkyStatusTest: (NEW OUTPUT) T_EBB = 229.859 K <br> 134 : *<br> 135 : * SkyStatusTest: TEST FOR ONE SPECTRAL WINDOW WITH SEVERAL CHANNELS <br> 136 : * SkyStatusTest: ===================================================== <br> 137 : * SkyStatusTest: <br> 138 : * SkyStatusTest: water vapor column: 1 mm<br> 139 : * SkyStatusTest: Air mass : 1<br> 140 : * <br> 141 : * SkyStatusTest: Freq: 847 GHz / T_EBB=190.099 K <br> 142 : * SkyStatusTest: Freq: 848 GHz / T_EBB=189.865 K <br> 143 : * SkyStatusTest: Freq: 849 GHz / T_EBB=196.705 K <br> 144 : * SkyStatusTest: Freq: 850 GHz / T_EBB=189.623 K <br> 145 : * SkyStatusTest: Freq: 851 GHz / T_EBB=189.39 K <br> 146 : * SkyStatusTest: Freq: 852 GHz / T_EBB=189.422 K <br> 147 : * SkyStatusTest: Freq: 853 GHz / T_EBB=189.933 K <br> 148 : * SkyStatusTest: Freq: 854 GHz / T_EBB=189.59 K <br> 149 : * SkyStatusTest: <br> 150 : * SkyStatusTest: water vapor column: 1 mm<br> 151 : * SkyStatusTest: Air mass : 1.2<br> 152 : * <br> 153 : * SkyStatusTest: Freq: 847 GHz / T_EBB=206.063 K <br> 154 : * SkyStatusTest: Freq: 848 GHz / T_EBB=205.841 K <br> 155 : * SkyStatusTest: Freq: 849 GHz / T_EBB=212.186 K <br> 156 : * SkyStatusTest: Freq: 850 GHz / T_EBB=205.61 K <br> 157 : * SkyStatusTest: Freq: 851 GHz / T_EBB=205.389 K <br> 158 : * SkyStatusTest: Freq: 852 GHz / T_EBB=205.419 K <br> 159 : * SkyStatusTest: Freq: 853 GHz / T_EBB=205.9 K <br> 160 : * SkyStatusTest: Freq: 854 GHz / T_EBB=205.578 K <br> 161 : * </b> 162 : */ 163 : 164 1 : int main() 165 : { 166 : // double h_div_k=0.04799274551; // plank/boltz in un of K/GHz 167 : 168 : // Atmospheretype atmType = tropical; // Atmospheric type (to reproduce behavior above the tropopause) 169 1 : unsigned int atmType = 1; // TROPICAL 170 3 : Temperature T( 270.0,"K" ); // Ground temperature 171 3 : Pressure P( 560.0,"mb"); // Ground Pressure 172 3 : Humidity H( 20.0,"%" ); // Ground Relative Humidity (indication) 173 3 : Length Alt( 5000,"m" ); // Altitude of the site 174 3 : Length WVL( 2.0,"km"); // Water vapor scale height 175 1 : double TLR= -5.6 ; // Tropospheric lapse rate (must be in K/km) 176 3 : Length topAtm( 48.0,"km"); // Upper atm. boundary for calculations 177 3 : Pressure Pstep( 5.0,"mb"); // Primary pressure step (10.0 mb) 178 1 : double PstepFact= 1.1; // Pressure step ratio between two consecutive layers 179 : 180 : 181 1 : cout<<" SkyStatusTest: BASIC ATMOSPHERIC PARAMETERS TO GENERATE REFERENCE ATMOSPHERIC PROFILE"<<endl; 182 1 : cout<<" SkyStatusTest: "<<endl; 183 1 : cout<<" SkyStatusTest: Ground temperature T: " << T.get() << " K" <<endl; 184 1 : cout<<" SkyStatusTest: Ground pressure P: " << P.get("mb") << " mb" <<endl; 185 1 : cout<<" SkyStatusTest: Relative humidity rh: " << H.get("%") << " %" <<endl; 186 1 : cout<<" SkyStatusTest: Scale height h0: " << WVL.get("km") << " km" <<endl; 187 1 : cout<<" SkyStatusTest: Pressure step dp: " << Pstep.get("mb") << " mb" <<endl; 188 1 : cout<<" SkyStatusTest: Altitude alti: " << Alt.get() << " m" <<endl; 189 1 : cout<<" SkyStatusTest: Attitude top atm profile atmh:" << topAtm.get("km")<< " km" <<endl; 190 1 : cout<<" SkyStatusTest: Pressure step factordp1: " << PstepFact << " " <<endl; 191 1 : cout<<" SkyStatusTest: Tropospherique lapse rate: " << TLR << " K/km" <<endl; 192 : 193 2 : AtmProfile myProfile( Alt, P, T, TLR, H, WVL, Pstep, PstepFact, topAtm, atmType ); 194 : 195 1 : cout<<" SkyStatusTest: Atmospheric type: " << myProfile.getAtmosphereType() <<endl; 196 1 : cout<<" SkyStatusTest: "<<endl; 197 1 : cout<<" SkyStatusTest: "<<endl; 198 : 199 1 : cout<<" SkyStatusTest: Object myProfile built with the AtmProfile CONSTRUCTOR and the above entries"<<endl; 200 1 : cout<<" SkyStatusTest: "<<endl; 201 1 : cout<<" SkyStatusTest: Number of layers returned: " << myProfile.getNumLayer() <<endl; 202 1 : cout<<" SkyStatusTest: Layer parameters: " <<endl; 203 : 204 : 205 1 : cout << " SkyStatusTest: size of Temperature Profile: " << myProfile.getTemperatureProfile().size() << endl; 206 31 : for(unsigned int i=0; i<myProfile.getNumLayer(); i++){ 207 60 : cout << " SkyStatusTest: P: " << myProfile.getLayerPressure(i).get("mb") << " mb" 208 60 : << " T: " << myProfile.getLayerTemperature(i).get("K") << " K" 209 60 : << " Thickness: " << myProfile.getLayerThickness(i).get("m") << " m" 210 60 : << " WaterVapor: " << myProfile.getLayerWaterVaporMassDensity(i).get("kgm**-3") << " kg m-3" 211 60 : << " WaterVapor: " << myProfile.getLayerWaterVaporNumberDensity(i).get("m**-3") << " m-3" 212 60 : << " CO: " << myProfile.getLayerCO(i).get("m**-3") << " m-3" 213 60 : << " O3: " << myProfile.getLayerO3(i).get("m**-3") << " m-3" 214 30 : << " N2O: " << myProfile.getLayerN2O(i).get("m**-3") << " m-3" << endl; 215 : } 216 : 217 1 : cout << " SkyStatusTest: First guess precipitable water vapor content: " << myProfile.getGroundWH2O().get("mm") << "mm" << endl; 218 1 : cout << " SkyStatusTest: (This value is estimated from the relative humidity at ground level and the water vapor scale height)" << endl; 219 1 : cout<<" SkyStatusTest: "<<endl; 220 1 : cout<<" SkyStatusTest: "<<endl; 221 : 222 1 : cout << " SkyStatusTest: TEST FOR JUST 1 FREQUENCY " << endl; 223 1 : cout << " SkyStatusTest: ========================= " << endl; 224 1 : cout << " SkyStatusTest: " << endl; 225 : 226 3 : Frequency mySingleFreq(850,"GHz"); 227 : 228 2 : RefractiveIndexProfile myRefractiveIndexProfile(mySingleFreq, myProfile); 229 : 230 2 : SkyStatus mySky_siglefreq(myRefractiveIndexProfile); 231 : 232 3 : Length new_wh2o0(1.0,"mm"); 233 1 : mySky_siglefreq.setUserWH2O(new_wh2o0); 234 : 235 : 236 2 : for(unsigned int i=0; i<mySky_siglefreq.getNumSpectralWindow(); i++){ 237 : 238 2 : for(unsigned int j=0; j<mySky_siglefreq.getNumChan(i); j++){ 239 : 240 1 : cout << " SkyStatusTest: Frequency : " << mySky_siglefreq.getChanFreq(j).get("GHz") << " GHz" << endl; 241 : 242 1 : cout << " SkyStatusTest: Wet opacity : " << mySky_siglefreq.getWetOpacity(j).get() << " nepers, for " << mySky_siglefreq.getUserWH2O().get("mm") << " mm H2O" << endl; 243 : 244 1 : cout << " SkyStatusTest: Dry opacity : " << mySky_siglefreq.getDryOpacity(j).get() << " nepers " << endl; 245 : 246 1 : cout << " SkyStatusTest: Sky brightness : " << mySky_siglefreq.getAverageTebbSky(j).get("K") << " K" << endl; 247 : 248 : } 249 : 250 : } 251 : 252 3 : Length new_wh2o(0.45,"mm"); 253 1 : cout << " SkyStatusTest: (EXTERNAL CHANGE) water vapor column: " << new_wh2o.get("mm") << " mm" << endl; 254 1 : cout << " SkyStatusTest: (NEW OUTPUT) T_EBB = " << mySky_siglefreq.getAverageTebbSky(new_wh2o).get("K") << " K " << endl; 255 1 : cout << " SkyStatusTest: Current water vapor column in Radiance Class:" << mySky_siglefreq.getUserWH2O().get("mm") << " mm" << endl; 256 1 : cout << " SkyStatusTest: " <<endl; 257 : 258 : 259 1 : mySky_siglefreq.setAirMass(2.0); 260 : 261 1 : cout << " SkyStatusTest: (INTERNAL CHANGE) Air mass: " << mySky_siglefreq.getAirMass() << " " <<endl; 262 1 : cout << " SkyStatusTest: (NEW OUTPUT) T_EBB = " << mySky_siglefreq.getAverageTebbSky().get("K") << " K " <<endl; 263 1 : cout << endl; 264 : 265 3 : Length new_wh2o1(0.8,"mm" ); 266 : 267 1 : mySky_siglefreq.setUserWH2O(new_wh2o1); 268 : 269 1 : cout<< " SkyStatusTest: (INTERNAL CHANGE) water vapor column: " << mySky_siglefreq.getUserWH2O().get("mm") << " mm" <<endl; 270 1 : cout<< " SkyStatusTest: (NEW OUTPUT) T_EBB = " << mySky_siglefreq.getAverageTebbSky().get("K") << " K " <<endl; 271 1 : cout<<endl; 272 : 273 1 : cout << " SkyStatusTest: TEST FOR ONE SPECTRAL WINDOW WITH SEVERAL CHANNELS " << endl; 274 1 : cout << " SkyStatusTest: ===================================================== " << endl; 275 1 : cout << " SkyStatusTest: " << endl; 276 : 277 : // unsigned int numchan=4; /* 400; */ /* 500; */ /* 64; */ 278 : // unsigned int refchan=2; /* 200; */ /* 250; */ /* 32; */ 279 : 280 : // Frequency reffreq(899.55,"GHz"); 281 : // Frequency chansep( 0.5,"GHz"); 282 : 283 : 284 1 : unsigned int numchan=5; /* 400; */ /* 500; */ /* 64; */ 285 1 : unsigned int refchan=3; /* 200; */ /* 250; */ /* 32; */ 286 : 287 3 : Frequency reffreq(616.50,"GHz"); 288 3 : Frequency chansep( 0.01,"GHz"); 289 : 290 : 291 2 : SpectralGrid band(numchan, refchan, reffreq, chansep); 292 2 : RefractiveIndexProfile abs_band(band, myProfile); 293 1 : SkyStatus mySky_1band_8channels(abs_band); 294 : 295 : 296 1 : cout << " SkyStatusTest: water vapor column: " << mySky_1band_8channels.getUserWH2O().get("mm") << " mm" << endl; 297 1 : cout << " SkyStatusTest: Air mass : " << mySky_1band_8channels.getAirMass() << endl; 298 1 : cout << " " << endl; 299 6 : for(unsigned int i=0; i<mySky_1band_8channels.getNumChan(0); i++){ 300 : 301 5 : cout << " SkyStatusTest: Freq: " << mySky_1band_8channels.getChanFreq(i).get("GHz") << " GHz / T_EBB=" << mySky_1band_8channels.getTebbSky(i).get("K") << " K " <<endl; 302 : 303 : } 304 1 : cout << " SkyStatusTest: " << endl; 305 : 306 1 : mySky_1band_8channels.setAirMass(1.0); 307 1 : mySky_1band_8channels.setUserWH2O(0.45,"mm"); 308 1 : mySky_siglefreq.setUserWH2O(0.45,"mm"); 309 : 310 1 : cout << " SkyStatusTest: water vapor column: " << mySky_1band_8channels.getUserWH2O().get("mm") << " mm" << endl; 311 1 : cout << " SkyStatusTest: Air mass : " << mySky_1band_8channels.getAirMass() << endl; 312 1 : cout << " " << endl; 313 : 314 6 : for(unsigned int i=0; i<mySky_1band_8channels.getNumChan(0); i++){ 315 : 316 10 : cout << " SkyStatusTest: Freq: " << mySky_1band_8channels.getChanFreq(i).get("GHz") << " GHz / T_EBB=" << mySky_1band_8channels.getTebbSky(i).get("K") << " Dry opacity: " << mySky_1band_8channels.getDryOpacity(i).get ("np") << " np " 317 10 : << " Wet opacity: " << mySky_1band_8channels.getWetOpacity(i).get ("np") << " np " 318 10 : << " Total opacity: " << mySky_1band_8channels.getTotalOpacity(i).get ("np") << " np " 319 5 : <<endl; 320 : 321 : } 322 : 323 : 324 6 : for(unsigned int i=0; i<mySky_1band_8channels.getNumChan(0); i++){ 325 : 326 : // cout << " SkyStatusTest: Freq: " << mySky_1band_8channels.getChanFreq(i).get("GHz") << " GHz / T_EBB=" << mySky_1band_8channels.getTebbSky(i).get("K") << " K " <<endl; 327 : /* cout << mySky_1band_8channels.getChanFreq(i).get("GHz") << " " << mySky_1band_8channels.getTebbSky(i).get("K") << " " << 328 : mySky_1band_8channels.getH2OLinesOpacity(i).get() << " " << 329 : mySky_1band_8channels.getH2OContOpacity(i).get() << " " << 330 : mySky_1band_8channels.getO2LinesOpacity(i).get() << " " << 331 : mySky_1band_8channels.getDryContOpacity(i).get() << " " << 332 : mySky_1band_8channels.getO3LinesOpacity(i).get() << " " << 333 : endl; */ 334 : 335 : } 336 : 337 1 : return 0; 338 : 339 : } 340 : 341 : 342 : 343 : 344 : 345 : 346 :