Line data Source code
1 : #ifndef _ATM_REFRACTIVEINDEXPROFILE_H
2 : #define _ATM_REFRACTIVEINDEXPROFILE_H
3 : /*******************************************************************************
4 : * ALMA - Atacama Large Millimiter Array
5 : * (c) Instituto de Estructura de la Materia, 2009
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 : * "@(#) $Id: ATMRefractiveIndexProfile.h Exp $"
22 : *
23 : * who when what
24 : * -------- -------- ----------------------------------------------
25 : * pardo 24/03/09 created
26 : */
27 :
28 : #ifndef __cplusplus
29 : #error This is a C++ include file and cannot be used from plain C
30 : #endif
31 :
32 : #include "ATMAngle.h"
33 : #include "ATMCommon.h"
34 : #include "ATMInverseLength.h"
35 : #include "ATMOpacity.h"
36 : #include "ATMProfile.h"
37 : #include "ATMSpectralGrid.h"
38 : #include "ATMRefractiveIndex.h"
39 :
40 : #include <complex>
41 :
42 : ATM_NAMESPACE_BEGIN
43 :
44 : /** \brief Profile of the absorption and Phase coefficient(s) at given frequency(ies) for an
45 : * atmospheric profile (P/T/gas densities).
46 : *
47 : * Using the ATM library the vertical profile of the absorption
48 : * coefficient corresponding to an atmospheric P/T/gas profile are build
49 : * The absorption coefficient in each layer can be used
50 : * later for radiative transfer purposes. The atmospheric P/T/gas profile is inherited
51 : * from an object of type AtmProfile. The absorption coefficient profile
52 : * is provided separately for O2 lines, H2O lines, CO lines, O3 lines, N2O lines, NO2, HCl, HCN lines,
53 : * SO2 lines dry and wet continuum. The total absorption coefficient profile (addition of
54 : * those just described) is also available, since it is the only profile really needed
55 : * for the WaterVaporRetrieval class which derives from this
56 : * RefractiveIndexProfile class.
57 : */
58 : class RefractiveIndexProfile: public AtmProfile, public SpectralGrid
59 : {
60 : public:
61 :
62 : //@{
63 : /** A full constructor for the case of a profile of absorption coefficients
64 : * at a single frequency
65 : */
66 : RefractiveIndexProfile(const Frequency &frequency,
67 : const AtmProfile &atmProfile);
68 :
69 : /** A full constructor for the case of a profile of absorption coefficients
70 : * for a set of frequency points.
71 : */
72 : RefractiveIndexProfile(const SpectralGrid &spectralGrid,
73 : const AtmProfile &atmProfile);
74 :
75 : /** A copy constructor for deep copy
76 : */
77 : RefractiveIndexProfile(const RefractiveIndexProfile &);
78 :
79 : RefractiveIndexProfile();
80 :
81 : virtual ~RefractiveIndexProfile();
82 :
83 : //@}
84 :
85 : //@{
86 : /** Setter to update the AtmProfile and RefractiveIndexProfile if some basic atmospheric parameter has changed.
87 : * @pre an RefractiveIndexProfile already exists
88 : * @param altitude the new altitude, a Length
89 : * @param groundPressure the Pressure at the ground level
90 : * @param groundTemperature the Temperature at the ground level
91 : * @param tropoLapseRate the tropospheric lapse rate
92 : * @param relativeHumidity the relative Humidity
93 : * @param wvScaleHeight the scale height of the water vapor, a Length
94 : * @return true if the atmospheric profile has been updated, else false because the basic parameters have not changed
95 : * @post the atmospheric profile, and accordingly the absorption phase profile, have been updated, unless none
96 : * of all the input basic parameters correspond to new values.
97 : *
98 : * \note there is an overriding on this method in the sub-class in WaterVaporRadiance sub-class. Hence this method
99 : * must not be overloaded in this RefractiveIndexProfile class.
100 : */
101 : bool setBasicAtmosphericParameters(const Length &altitude,
102 : const Pressure &groundPressure,
103 : const Temperature &groundTemperature,
104 : double tropoLapseRate,
105 : const Humidity &relativeHumidity,
106 : const Length &wvScaleHeight);
107 : //@}
108 :
109 : //@{
110 :
111 : /** Setter of new spectral windows (adds frequencies to the SpectralGrid and calculates the corresponding absorption coefficients) */
112 : inline void addNewSpectralWindow(unsigned int numChan,
113 : unsigned int refChan,
114 : const Frequency &refFreq,
115 : const Frequency &chanSep)
116 : {
117 : SpectralGrid::add(numChan, refChan, refFreq, chanSep);
118 : mkRefractiveIndexProfile();
119 : }
120 : /** Setter of new spectral windows (adds frequencies to the SpectralGrid and calculates the corresponding absorption coefficients) */
121 : inline void addNewSpectralWindow(unsigned int numChan,
122 : unsigned int refChan,
123 : double* chanFreq,
124 : Frequency::Units freqUnits)
125 : {
126 : SpectralGrid::add(numChan, refChan, chanFreq, freqUnits);
127 : mkRefractiveIndexProfile();
128 : }
129 : /** Setter of new spectral windows (adds frequencies to the SpectralGrid and calculates the corresponding absorption coefficients) */
130 : inline void addNewSpectralWindow(unsigned int numChan,
131 : double refFreq,
132 : double* chanFreq,
133 : Frequency::Units freqUnits)
134 : {
135 : SpectralGrid::add(numChan, refFreq, chanFreq, freqUnits);
136 : mkRefractiveIndexProfile();
137 : }
138 : /** Setter of new spectral windows (adds frequencies to the SpectralGrid and calculates the corresponding absorption coefficients) */
139 : inline void addNewSpectralWindow(unsigned int numChan,
140 : double refFreq,
141 : const vector<double> &chanFreq,
142 : Frequency::Units freqUnits)
143 : {
144 : SpectralGrid::add(numChan, refFreq, chanFreq, freqUnits);
145 : mkRefractiveIndexProfile();
146 : }
147 : /** Setter of new spectral windows (adds frequencies to the SpectralGrid and calculates the corresponding absorption coefficients) */
148 : inline void addNewSpectralWindow(unsigned int numChan,
149 : unsigned int refChan,
150 : const Frequency &refFreq,
151 : const Frequency &chanSep,
152 : const Frequency &intermediateFreq,
153 : const SidebandSide &sbSide,
154 : const SidebandType &sbType)
155 : {
156 : SpectralGrid::add(numChan,
157 : refChan,
158 : refFreq,
159 : chanSep,
160 : intermediateFreq,
161 : sbSide,
162 : sbType);
163 : mkRefractiveIndexProfile();
164 : }
165 : inline void addNewSpectralWindow(const vector<Frequency> &chanFreq)
166 : {
167 : SpectralGrid::add(chanFreq);
168 : mkRefractiveIndexProfile();
169 : }
170 :
171 : /** Accessor to total number of Frequency points in the SpectralGrid object */
172 : inline unsigned int getNumIndividualFrequencies() const
173 : {
174 : return v_chanFreq_.size();
175 : }
176 :
177 : /** Accessor to the single frequency (or the frequency of the first grid point
178 : * in case of a spectrum) in Hz (SI default unit)*/
179 : inline double getFrequency() const
180 : {
181 : return getChanFreq(0).get();
182 : }
183 :
184 : /** Accessor to the single frequency (or the frequency of the first grid point
185 : * in case of a spectrum) in specified unit
186 : */
187 : inline double getFrequency(Frequency::Units freqUnits) const
188 : {
189 : return getChanFreq(0).get(freqUnits);
190 : }
191 : //@}
192 :
193 : //@{
194 : /** Accessor to get H2O lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
195 : InverseLength getAbsH2OLines(unsigned int nl) const
196 : {
197 : return InverseLength(imag((vv_N_H2OLinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
198 : }
199 : /** Accessor to get H2O lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
200 : InverseLength getAbsH2OLines(unsigned int nf, unsigned int nl) const
201 : {
202 : return InverseLength(imag((vv_N_H2OLinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
203 : }
204 : /** Accessor to get H2O Continuum Absorption Coefficient at layer nl, spectral window spwid and channel nf */
205 : InverseLength getAbsH2OLines(unsigned int spwid,
206 : unsigned int nf,
207 : unsigned int nl) const
208 : {
209 : unsigned int j = v_transfertId_[spwid] + nf;
210 : return InverseLength(imag((vv_N_H2OLinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
211 : }
212 :
213 : /** Accessor to get H2O Continuum Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
214 : InverseLength getAbsH2OCont(unsigned int nl) const
215 : {
216 : return InverseLength(imag((vv_N_H2OContPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
217 : }
218 : /** Accessor to get H2O Continuum Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
219 : InverseLength getAbsH2OCont(unsigned int nf, unsigned int nl) const
220 : {
221 : return InverseLength(imag((vv_N_H2OContPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
222 : }
223 : /** Accessor to get H2O Continuum Absorption Coefficient at layer nl, spectral window spwid and channel nf */
224 : InverseLength getAbsH2OCont(unsigned int spwid,
225 : unsigned int nf,
226 : unsigned int nl) const
227 : {
228 : unsigned int j = v_transfertId_[spwid] + nf;
229 : return InverseLength(imag((vv_N_H2OContPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
230 : }
231 :
232 : /** Function to retrieve O2 lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
233 : InverseLength getAbsO2Lines(unsigned int nl) const
234 : {
235 : return InverseLength(imag((vv_N_O2LinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
236 : }
237 : /** Function to retrieve O2 lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
238 : InverseLength getAbsO2Lines(unsigned int nf, unsigned int nl) const
239 : {
240 : return InverseLength(imag((vv_N_O2LinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
241 : }
242 : /** Function to retrieve O2 lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
243 : InverseLength getAbsO2Lines(unsigned int spwid,
244 : unsigned int nf,
245 : unsigned int nl) const
246 : {
247 : unsigned int j = v_transfertId_[spwid] + nf;
248 : return InverseLength(imag((vv_N_O2LinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
249 : }
250 :
251 : /** Function to retrieve Dry continuum Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
252 : InverseLength getAbsDryCont(unsigned int nl) const
253 : {
254 : return InverseLength(imag((vv_N_DryContPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
255 : }
256 : /** Function to retrieve Dry continuum Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
257 : InverseLength getAbsDryCont(unsigned int nf, unsigned int nl) const
258 : {
259 : return InverseLength(imag((vv_N_DryContPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
260 : }
261 : /** Function to retrieve Dry continuum Absorption Coefficient at layer nl, spectral window spwid and channel nf */
262 : InverseLength getAbsDryCont(unsigned int spwid,
263 : unsigned int nf,
264 : unsigned int nl) const
265 : {
266 : unsigned int j = v_transfertId_[spwid] + nf;
267 : return InverseLength(imag((vv_N_DryContPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
268 : }
269 :
270 : /** Function to retrieve O3 lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
271 : InverseLength getAbsO3Lines(unsigned int nl) const
272 : {
273 : return InverseLength(imag((vv_N_O3LinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
274 : }
275 : /** Function to retrieve O3 lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
276 : InverseLength getAbsO3Lines(unsigned int nf, unsigned int nl) const
277 : {
278 : return InverseLength(imag((vv_N_O3LinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
279 : }
280 : /** Function to retrieve O3 lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
281 : InverseLength getAbsO3Lines(unsigned int spwid,
282 : unsigned int nf,
283 : unsigned int nl) const
284 : {
285 : unsigned int j = v_transfertId_[spwid] + nf;
286 : return InverseLength(imag((vv_N_O3LinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
287 : }
288 :
289 : /** Function to retrieve CO lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
290 : InverseLength getAbsCOLines(unsigned int nl) const
291 : {
292 : return InverseLength(imag((vv_N_COLinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
293 : }
294 : /** Function to retrieve CO lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
295 : InverseLength getAbsCOLines(unsigned int nf, unsigned int nl) const
296 : {
297 : return InverseLength(imag((vv_N_COLinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
298 : }
299 : /** Function to retrieve CO lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
300 : InverseLength getAbsCOLines(unsigned int spwid,
301 : unsigned int nf,
302 : unsigned int nl) const
303 : {
304 : unsigned int j = v_transfertId_[spwid] + nf;
305 : return InverseLength(imag((vv_N_COLinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
306 : }
307 :
308 :
309 :
310 : /** Function to retrieve N2O lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
311 : InverseLength getAbsN2OLines(unsigned int nl) const
312 : {
313 : return InverseLength(imag((vv_N_N2OLinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
314 : }
315 : /** Function to retrieve N2O lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
316 : InverseLength getAbsN2OLines(unsigned int nf, unsigned int nl) const
317 : {
318 : return InverseLength(imag((vv_N_N2OLinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
319 : }
320 : /** Function to retrieve N2O lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
321 : InverseLength getAbsN2OLines(unsigned int spwid,
322 : unsigned int nf,
323 : unsigned int nl) const
324 : {
325 : unsigned int j = v_transfertId_[spwid] + nf;
326 : return InverseLength(imag((vv_N_N2OLinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
327 : }
328 :
329 :
330 : /** Function to retrieve NO2 lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
331 : InverseLength getAbsNO2Lines(unsigned int nl) const
332 : {
333 : return InverseLength(imag((vv_N_NO2LinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
334 : }
335 : /** Function to retrieve NO2 lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
336 : InverseLength getAbsNO2Lines(unsigned int nf, unsigned int nl) const
337 : {
338 : return InverseLength(imag((vv_N_NO2LinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
339 : }
340 : /** Function to retrieve NO2 lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
341 : InverseLength getAbsNO2Lines(unsigned int spwid,
342 : unsigned int nf,
343 : unsigned int nl) const
344 : {
345 : unsigned int j = v_transfertId_[spwid] + nf;
346 : return InverseLength(imag((vv_N_NO2LinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
347 : }
348 :
349 :
350 : /** Function to retrieve SO2 lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
351 : InverseLength getAbsSO2Lines(unsigned int nl) const
352 : {
353 : return InverseLength(imag((vv_N_SO2LinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
354 : }
355 : /** Function to retrieve SO2 lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
356 : InverseLength getAbsSO2Lines(unsigned int nf, unsigned int nl) const
357 : {
358 : return InverseLength(imag((vv_N_SO2LinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
359 : }
360 : /** Function to retrieve SO2 lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
361 : InverseLength getAbsSO2Lines(unsigned int spwid,
362 : unsigned int nf,
363 : unsigned int nl) const
364 : {
365 : unsigned int j = v_transfertId_[spwid] + nf;
366 : return InverseLength(imag((vv_N_SO2LinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
367 : }
368 :
369 :
370 :
371 : /** Function to retrieve HCl lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
372 : InverseLength getAbsHClLines(unsigned int nl) const
373 : {
374 : return InverseLength(imag((vv_N_HClLinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
375 : }
376 : /** Function to retrieve HCl lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
377 : InverseLength getAbsHClLines(unsigned int nf, unsigned int nl) const
378 : {
379 : return InverseLength(imag((vv_N_HClLinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
380 : }
381 : /** Function to retrieve HCl lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
382 : InverseLength getAbsHClLines(unsigned int spwid,
383 : unsigned int nf,
384 : unsigned int nl) const
385 : {
386 : unsigned int j = v_transfertId_[spwid] + nf;
387 : return InverseLength(imag((vv_N_HClLinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
388 : }
389 :
390 :
391 :
392 : /** Function to retrieve HCN lines Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
393 : InverseLength getAbsHCNLines(unsigned int nl) const
394 : {
395 : return InverseLength(imag((vv_N_HCNLinesPtr_[0]->at(nl))), InverseLength::UnitInverseMeter);
396 : }
397 : /** Function to retrieve HCN lines Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
398 : InverseLength getAbsHCNLines(unsigned int nf, unsigned int nl) const
399 : {
400 : return InverseLength(imag((vv_N_HCNLinesPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
401 : }
402 : /** Function to retrieve HCN lines Absorption Coefficient at layer nl, spectral window spwid and channel nf */
403 : InverseLength getAbsHCNLines(unsigned int spwid,
404 : unsigned int nf,
405 : unsigned int nl) const
406 : {
407 : unsigned int j = v_transfertId_[spwid] + nf;
408 : return InverseLength(imag((vv_N_HCNLinesPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
409 : }
410 :
411 :
412 :
413 : /** Function to retrieve total Dry Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
414 : InverseLength getAbsTotalDry(unsigned int nl) const
415 : {
416 : return getAbsTotalDry(nl, 0);
417 : }
418 : /** Function to retrieve total Dry Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
419 : InverseLength getAbsTotalDry(unsigned int nf, unsigned int nl) const
420 : {
421 : return InverseLength(imag(
422 : vv_N_O2LinesPtr_[nf]->at(nl)
423 : + vv_N_DryContPtr_[nf]->at(nl) + vv_N_O3LinesPtr_[nf]->at(nl)
424 : + vv_N_COLinesPtr_[nf]->at(nl) + vv_N_N2OLinesPtr_[nf]->at(nl)
425 : + vv_N_NO2LinesPtr_[nf]->at(nl) + vv_N_SO2LinesPtr_[nf]->at(nl)
426 : + vv_N_HClLinesPtr_[nf]->at(nl) + vv_N_HCNLinesPtr_[nf]->at(nl)), InverseLength::UnitInverseMeter);
427 : }
428 : /** Function to retrieve total Dry Absorption Coefficient at layer nl, spectral window spwid and channel nf */
429 4116 : InverseLength getAbsTotalDry(unsigned int spwid,
430 : unsigned int nf,
431 : unsigned int nl) const
432 : {
433 4116 : unsigned int j = v_transfertId_[spwid] + nf;
434 : return InverseLength(imag(
435 4116 : vv_N_O2LinesPtr_[j]->at(nl)
436 8232 : + vv_N_DryContPtr_[j]->at(nl) + vv_N_O3LinesPtr_[j]->at(nl)
437 8232 : + vv_N_COLinesPtr_[j]->at(nl) + vv_N_N2OLinesPtr_[j]->at(nl)
438 8232 : + vv_N_NO2LinesPtr_[j]->at(nl) + vv_N_SO2LinesPtr_[j]->at(nl)
439 12348 : + vv_N_HClLinesPtr_[j]->at(nl) + vv_N_HCNLinesPtr_[j]->at(nl)), InverseLength::UnitInverseMeter);
440 : }
441 :
442 : /** Function to retrieve total Wet Absorption Coefficient at layer nl, for single frequency RefractiveIndexProfile object */
443 : InverseLength getAbsTotalWet(unsigned int nl) const
444 : {
445 : return getAbsTotalWet(nl, 0);
446 : }
447 : /** Function to retrieve total Wet Absorption Coefficient at layer nl and frequency channel nf, for RefractiveIndexProfile object with a spectral grid */
448 : InverseLength getAbsTotalWet(unsigned int nf, unsigned int nl) const
449 : {
450 : return InverseLength(imag((vv_N_H2OLinesPtr_[nf]->at(nl)
451 : + vv_N_H2OContPtr_[nf]->at(nl))), InverseLength::UnitInverseMeter);
452 : }
453 : /** Function to retrieve total Wet Absorption Coefficient at layer nl, spectral window spwid and channel nf */
454 4116 : InverseLength getAbsTotalWet(unsigned int spwid,
455 : unsigned int nf,
456 : unsigned int nl) const
457 : {
458 4116 : unsigned int j = v_transfertId_[spwid] + nf;
459 4116 : return InverseLength(imag((vv_N_H2OLinesPtr_[j]->at(nl)
460 12348 : + vv_N_H2OContPtr_[j]->at(nl))), InverseLength::UnitInverseMeter);
461 : }
462 :
463 : Opacity getAverageO2LinesOpacity(unsigned int spwid);
464 : Opacity getAverageO3LinesOpacity(unsigned int spwid);
465 : Opacity getAverageN2OLinesOpacity(unsigned int spwid);
466 : Opacity getAverageNO2LinesOpacity(unsigned int spwid);
467 : Opacity getAverageSO2LinesOpacity(unsigned int spwid);
468 : Opacity getAverageHClLinesOpacity(unsigned int spwid);
469 : Opacity getAverageHCNLinesOpacity(unsigned int spwid);
470 : Opacity getAverageCOLinesOpacity(unsigned int spwid);
471 : Opacity getAverageDryContOpacity(unsigned int spwid);
472 :
473 : /** Function to retrieve the integrated Dry Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
474 1 : Opacity getDryOpacity(){return getDryOpacity(0);}
475 : Opacity getDryOpacityUpTo(Length refalti){return getDryOpacityUpTo(0,refalti);}
476 : /** Function to retrieve the integrated Dry Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
477 : Opacity getDryOpacity(unsigned int nc);
478 : Opacity getDryOpacityUpTo(unsigned int nc, Length refalti);
479 0 : Opacity getDryOpacity(unsigned int spwid, unsigned int nc){ if(!spwidAndIndexAreValid(spwid, nc)) return Opacity(-999.0); return getDryOpacity(v_transfertId_[spwid] + nc);}
480 : Opacity getDryOpacityUpTo(unsigned int spwid, unsigned int nc, Length refalti)
481 : {
482 : if(!spwidAndIndexAreValid(spwid, nc))return Opacity(-999.0);
483 : return getDryOpacityUpTo(v_transfertId_[spwid] + nc, refalti);
484 : }
485 : Opacity getAverageDryOpacity(unsigned int spwid);
486 :
487 : /** Function to retrieve the integrated Dry Continuum Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
488 : Opacity getDryContOpacity();
489 : /** Function to retrieve the integrated Dry Continuum Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
490 : Opacity getDryContOpacity(unsigned int nc);
491 : Opacity getDryContOpacity(unsigned int spwid, unsigned int nc);
492 :
493 : /** Function to get the integrated O2 (all isotopic and vib. species) line opacity along the atmospheric path for a single frequency in a RefractiveIndexProfile object */
494 : Opacity getO2LinesOpacity();
495 : /** Function to get the integrated O2 (all isotopic and vib. species) line opacity along the atmospheric path for channel nc in a RefractiveIndexProfile object with a spectral grid */
496 : Opacity getO2LinesOpacity(unsigned int nc);
497 : Opacity getO2LinesOpacity(unsigned int spwid, unsigned int nc);
498 :
499 : /** Function to get the integrated 16O16O Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
500 : Opacity get16O16OLinesOpacity();
501 : /** Function to get the integrated 16O16O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
502 : Opacity get16O16OLinesOpacity(unsigned int nc);
503 : Opacity get16O16OLinesOpacity(unsigned int spwid, unsigned int nc);
504 :
505 : /** Function to get the integrated 16O16OVIB Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
506 : Opacity get16O16OVIBLinesOpacity();
507 : /** Function to get the integrated 16O16OVIB Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
508 : Opacity get16O16OVIBLinesOpacity(unsigned int nc);
509 : Opacity get16O16OVIBLinesOpacity(unsigned int spwid, unsigned int nc);
510 :
511 : /** Function to get the integrated 16O18O Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
512 : Opacity get16O18OLinesOpacity();
513 : /** Function to get the integrated 16O18O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
514 : Opacity get16O18OLinesOpacity(unsigned int nc);
515 : Opacity get16O18OLinesOpacity(unsigned int spwid, unsigned int nc);
516 :
517 : /** Function to get the integrated 16O17O Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
518 : Opacity get16O17OLinesOpacity();
519 : /** Function to get the integrated 16O17O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
520 : Opacity get16O17OLinesOpacity(unsigned int nc);
521 : Opacity get16O17OLinesOpacity(unsigned int spwid, unsigned int nc);
522 :
523 : /** Function to retrieve the integrated O3 Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
524 : Opacity getO3LinesOpacity();
525 : /** Function to retrieve the integrated O3 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
526 : Opacity getO3LinesOpacity(unsigned int nc);
527 : Opacity getO3LinesOpacity(unsigned int spwid, unsigned int nc);
528 :
529 : Opacity get16O16O16OLinesOpacity();
530 : /** Function to retrieve the integrated 16O16O16O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
531 : Opacity get16O16O16OLinesOpacity(unsigned int nc);
532 : Opacity get16O16O16OLinesOpacity(unsigned int spwid, unsigned int nc);
533 : Opacity get16O16O16OV1LinesOpacity();
534 : /** Function to retrieve the integrated 16O16O16O V1=1 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
535 : Opacity get16O16O16OV1LinesOpacity(unsigned int nc);
536 : Opacity get16O16O16OV1LinesOpacity(unsigned int spwid, unsigned int nc);
537 : Opacity get16O16O16OV2LinesOpacity();
538 : /** Function to retrieve the integrated 16O16O16O V2=1 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
539 : Opacity get16O16O16OV2LinesOpacity(unsigned int nc);
540 : Opacity get16O16O16OV2LinesOpacity(unsigned int spwid, unsigned int nc);
541 : Opacity get16O16O16OV3LinesOpacity();
542 : /** Function to retrieve the integrated 16O16O16O V3=1 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
543 : Opacity get16O16O16OV3LinesOpacity(unsigned int nc);
544 : Opacity get16O16O16OV3LinesOpacity(unsigned int spwid, unsigned int nc);
545 :
546 : Opacity get16O16O17OLinesOpacity();
547 : /** Function to retrieve the integrated 16O16O17O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
548 : Opacity get16O16O17OLinesOpacity(unsigned int nc);
549 : Opacity get16O16O17OLinesOpacity(unsigned int spwid, unsigned int nc);
550 : Opacity get16O16O18OLinesOpacity();
551 : /** Function to retrieve the integrated 16O16O18O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
552 : Opacity get16O16O18OLinesOpacity(unsigned int nc);
553 : Opacity get16O16O18OLinesOpacity(unsigned int spwid, unsigned int nc);
554 : Opacity get16O17O16OLinesOpacity();
555 : /** Function to retrieve the integrated 16O17O16O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
556 : Opacity get16O17O16OLinesOpacity(unsigned int nc);
557 : Opacity get16O17O16OLinesOpacity(unsigned int spwid, unsigned int nc);
558 : Opacity get16O18O16OLinesOpacity();
559 : /** Function to retrieve the integrated 16O18O16O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
560 : Opacity get16O18O16OLinesOpacity(unsigned int nc);
561 : Opacity get16O18O16OLinesOpacity(unsigned int spwid, unsigned int nc);
562 :
563 :
564 : /** Function to retrieve the integrated CO Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
565 : Opacity getCOLinesOpacity();
566 : /** Function to retrieve the integrated CO Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
567 : Opacity getCOLinesOpacity(unsigned int nc);
568 : Opacity getCOLinesOpacity(unsigned int spwid, unsigned int nc);
569 : /** Function to retrieve the integrated N2O Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
570 : Opacity getN2OLinesOpacity();
571 : /** Function to retrieve the integrated N2O Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
572 : Opacity getN2OLinesOpacity(unsigned int nc);
573 : Opacity getN2OLinesOpacity(unsigned int spwid, unsigned int nc);
574 : /** Function to retrieve the integrated NO2 Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
575 : Opacity getNO2LinesOpacity();
576 : /** Function to retrieve the integrated NO2 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
577 : Opacity getNO2LinesOpacity(unsigned int nc);
578 : Opacity getNO2LinesOpacity(unsigned int spwid, unsigned int nc);
579 : /** Function to retrieve the integrated SO2 Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
580 : Opacity getSO2LinesOpacity();
581 : /** Function to retrieve the integrated SO2 Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
582 : Opacity getSO2LinesOpacity(unsigned int nc);
583 : Opacity getSO2LinesOpacity(unsigned int spwid, unsigned int nc);
584 : /** Function to retrieve the integrated HCl Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
585 : Opacity getHClLinesOpacity();
586 : /** Function to retrieve the integrated HCl Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
587 : Opacity getHClLinesOpacity(unsigned int nc);
588 : Opacity getHClLinesOpacity(unsigned int spwid, unsigned int nc);
589 : /** Function to retrieve the integrated HCN Lines Opacity along the atmospheric path for single frequency RefractiveIndexProfile object */
590 : Opacity getHCNLinesOpacity();
591 : /** Function to retrieve the integrated HCN Lines Opacity along the atmospheric path for channel nc in an RefractiveIndexProfile object with a spectral grid */
592 : Opacity getHCNLinesOpacity(unsigned int nc);
593 : Opacity getHCNLinesOpacity(unsigned int spwid, unsigned int nc);
594 :
595 : /** Function to retrieve the integrated Wet Opacity along the atmospheric path
596 : corresponding to the 1st guess water column (from AtmProfile object) or the
597 : for single frequency RefractiveIndexProfile object */
598 2 : Opacity getWetOpacity() {return getWetOpacity(getGroundWH2O());}
599 : /** Function to retrieve the integrated Wet Opacity along the atmospheric path
600 : for a given integratedwatercolumn */
601 : Opacity getWetOpacity(const Length &integratedwatercolumn);
602 : /** Function to retrieve the integrated Wet Opacity along the atmospheric path
603 : corresponding to a given water vapor column
604 : for channel nc in an RefractiveIndexProfile
605 : object with a spectral grid */
606 : Opacity getWetOpacity(const Length &integratedwatercolumn, unsigned int nc);
607 : /** Function to retrieve the integrated Wet Opacity along the atmospheric path
608 : corresponding to a given water vapor column
609 : for channel nc in an RefractiveIndexProfile
610 : object with a spectral grid */
611 : Opacity getWetOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
612 : /** Function to retrieve the integrated H2O Lines Opacity along the atmospheric path
613 : corresponding to a given water vapor column
614 : for single frequency RefractiveIndexProfile object */
615 :
616 :
617 : /** Function to retrieve the integrated H2O Lines Opacity along the atmospheric path
618 : corresponding to the 1st guess water column (from AtmProfile object) */
619 2 : Opacity getH2OLinesOpacity() {return getH2OLinesOpacity(getGroundWH2O());}
620 : /** Function to retrieve the integrated H2O Lines Opacity along the atmospheric path
621 : corresponding to a given water vapor column */
622 : Opacity getH2OLinesOpacity(const Length &integratedwatercolumn);
623 : /** Function to retrieve the integrated H2O Lines Opacity along the atmospheric path
624 : corresponding to a given water vapor column
625 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
626 : Opacity getH2OLinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
627 : /** Function to retrieve the integrated H2O Lines Opacity along the atmospheric path
628 : corresponding to a given water vapor column
629 : for channel nc in an RefractiveIndexProfile object of a spectral window */
630 : Opacity getH2OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
631 : /** Function to retrieve the integrated H2O Continuum Opacity along the atmospheric path
632 : corresponding to a given water vapor column
633 : for single frequency RefractiveIndexProfile object */
634 :
635 :
636 :
637 :
638 :
639 : /** Function to retrieve the integrated HH16O Lines Opacity along the atmospheric path
640 : corresponding to the 1st guess water column (from AtmProfile object) */
641 : Opacity getHH16OLinesOpacity() {return getHH16OLinesOpacity(getGroundWH2O());}
642 : /** Function to retrieve the integrated HH16O Lines Opacity along the atmospheric path
643 : corresponding to a given water vapor column */
644 : Opacity getHH16OLinesOpacity(const Length &integratedwatercolumn);
645 : /** Function to retrieve the integrated HH16O Lines Opacity along the atmospheric path
646 : corresponding to a given water vapor column
647 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
648 : Opacity getHH16OLinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
649 : /** Function to retrieve the integrated HH16O Lines Opacity along the atmospheric path
650 : corresponding to a given water vapor column
651 : for channel nc in an RefractiveIndexProfile object of a spectral window */
652 : Opacity getHH16OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
653 : /** Function to retrieve the integrated HH16O Continuum Opacity along the atmospheric path
654 : corresponding to a given water vapor column
655 : for single frequency RefractiveIndexProfile object */
656 :
657 :
658 : /** Function to retrieve the integrated HH16OV2 Lines Opacity along the atmospheric path
659 : corresponding to the 1st guess water column (from AtmProfile object) */
660 : //Opacity getHH16OV2LinesOpacity() {return getHH16OV2LinesOpacity(getGroundWH2O());}
661 : /** Function to retrieve the integrated HH16OV2 Lines Opacity along the atmospheric path
662 : corresponding to a given water vapor column */
663 : //Opacity getHH16OV2LinesOpacity(const Length &integratedwatercolumn);
664 : /** Function to retrieve the integrated HH16OV2 Lines Opacity along the atmospheric path
665 : corresponding to a given water vapor column
666 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
667 : //Opacity getHH16OV2LinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
668 : /** Function to retrieve the integrated HH16OV2 Lines Opacity along the atmospheric path
669 : corresponding to a given water vapor column
670 : for channel nc in an RefractiveIndexProfile object of a spectral window */
671 : //Opacity getHH16OV2LinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
672 : /** Function to retrieve the integrated HH16OV2 Continuum Opacity along the atmospheric path
673 : corresponding to a given water vapor column
674 : for single frequency RefractiveIndexProfile object */
675 :
676 : /** Function to retrieve the integrated HH17O Lines Opacity along the atmospheric path
677 : corresponding to the 1st guess water column (from AtmProfile object) */
678 : //Opacity getHH17OLinesOpacity() {return getHH17OLinesOpacity(getGroundWH2O());}
679 : /** Function to retrieve the integrated HH17O Lines Opacity along the atmospheric path
680 : corresponding to a given water vapor column */
681 : //Opacity getHH17OLinesOpacity(const Length &integratedwatercolumn);
682 : /** Function to retrieve the integrated HH17O Lines Opacity along the atmospheric path
683 : corresponding to a given water vapor column
684 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
685 : //Opacity getHH17OLinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
686 : /** Function to retrieve the integrated HH17O Lines Opacity along the atmospheric path
687 : corresponding to a given water vapor column
688 : for channel nc in an RefractiveIndexProfile object of a spectral window */
689 : //Opacity getHH17OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
690 : /** Function to retrieve the integrated HH17O Continuum Opacity along the atmospheric path
691 : corresponding to a given water vapor column
692 : for single frequency RefractiveIndexProfile object */
693 :
694 : /** Function to retrieve the integrated HH18O Lines Opacity along the atmospheric path
695 : corresponding to the 1st guess water column (from AtmProfile object) */
696 : //Opacity getHH18OLinesOpacity() {return getHH18OLinesOpacity(getGroundWH2O());}
697 : /** Function to retrieve the integrated HH18O Lines Opacity along the atmospheric path
698 : corresponding to a given water vapor column */
699 : //Opacity getHH18OLinesOpacity(const Length &integratedwatercolumn);
700 : /** Function to retrieve the integrated HH18O Lines Opacity along the atmospheric path
701 : corresponding to a given water vapor column
702 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
703 : //Opacity getHH18OLinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
704 : /** Function to retrieve the integrated HH18O Lines Opacity along the atmospheric path
705 : corresponding to a given water vapor column
706 : for channel nc in an RefractiveIndexProfile object of a spectral window */
707 : //Opacity getHH18OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
708 : /** Function to retrieve the integrated HH18O Continuum Opacity along the atmospheric path
709 : corresponding to a given water vapor column
710 : for single frequency RefractiveIndexProfile object */
711 :
712 :
713 : /** Function to retrieve the integrated HDO Lines Opacity along the atmospheric path
714 : corresponding to the 1st guess water column (from AtmProfile object) */
715 : //Opacity getHDOLinesOpacity() {return getHDOLinesOpacity(getGroundWH2O());}
716 : /** Function to retrieve the integrated HDO Lines Opacity along the atmospheric path
717 : corresponding to a given water vapor column */
718 : //Opacity getHDOLinesOpacity(const Length &integratedwatercolumn);
719 : /** Function to retrieve the integrated HDO Lines Opacity along the atmospheric path
720 : corresponding to a given water vapor column
721 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
722 : //Opacity getHDOLinesOpacity(const Length &integratedwatercolumn, unsigned int nc);
723 : /** Function to retrieve the integrated HHDO Lines Opacity along the atmospheric path
724 : corresponding to a given water vapor column
725 : for channel nc in an RefractiveIndexProfile object of a spectral window */
726 : //Opacity getHDOLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
727 : /** Function to retrieve the integrated HDO Continuum Opacity along the atmospheric path
728 : corresponding to a given water vapor column
729 : for single frequency RefractiveIndexProfile object */
730 :
731 :
732 :
733 :
734 :
735 :
736 : /** Function to retrieve the integrated HH16O Continuum Opacity along the atmospheric path
737 : corresponding to the 1st guess water column (from AtmProfile object) */
738 2 : Opacity getH2OContOpacity() {return getH2OContOpacity(getGroundWH2O());}
739 : /** Function to retrieve the integrated H2O Continuum Opacity along the atmospheric path
740 : corresponding to a given water vapor column */
741 : Opacity getH2OContOpacity(const Length &integratedwatercolumn);
742 : /** Function to retrieve the integrated H2O Continuum Opacity along the atmospheric path
743 : corresponding to a given water vapor column
744 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
745 : Opacity getH2OContOpacity(const Length &integratedwatercolumn, unsigned int nc);
746 : /** Function to retrieve the integrated H2O Continuum Opacity along the atmospheric path
747 : corresponding to a given water vapor column
748 : for channel nc in an RefractiveIndexProfile object of a spectral window */
749 : Opacity getH2OContOpacity(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
750 :
751 :
752 :
753 :
754 :
755 : Opacity getAverageWetOpacity(const Length &integratedwatercolumn, unsigned int spwid);
756 : Opacity getAverageH2OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid);
757 : Opacity getAverageHH16OLinesOpacity(const Length &integratedwatercolumn, unsigned int spwid);
758 : Opacity getAverageH2OContOpacity(const Length &integratedwatercolumn, unsigned int spwid);
759 :
760 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
761 : corresponding to a given water vapor column
762 : for single frequency RefractiveIndexProfile object */
763 : Angle getNonDispersiveDryPhaseDelay();
764 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
765 : corresponding to a given water vapor column
766 : for single frequency RefractiveIndexProfile object */
767 : Length getNonDispersiveDryPathLength();
768 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
769 : corresponding to a given water vapor column
770 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
771 : Angle getNonDispersiveDryPhaseDelay(unsigned int nc);
772 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
773 : corresponding to a given water vapor column
774 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
775 : Length getNonDispersiveDryPathLength(unsigned int nc);
776 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
777 : corresponding to a given water vapor column
778 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
779 : Angle getNonDispersiveDryPhaseDelay(unsigned int spwid, unsigned int nc);
780 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
781 : corresponding to a given water vapor column
782 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
783 : Length getNonDispersiveDryPathLength(unsigned int spwid, unsigned int nc);
784 :
785 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
786 : corresponding to a given water vapor column
787 : for single frequency RefractiveIndexProfile object */
788 : Angle getDispersiveDryPhaseDelay();
789 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
790 : corresponding to a given water vapor column
791 : for single frequency RefractiveIndexProfile object */
792 : Length getDispersiveDryPathLength();
793 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
794 : corresponding to a given water vapor column
795 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
796 : Angle getDispersiveDryPhaseDelay(unsigned int nc);
797 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
798 : corresponding to a given water vapor column
799 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
800 : Length getDispersiveDryPathLength(unsigned int nc);
801 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dry part) along the atmospheric path
802 : corresponding to a given water vapor column
803 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
804 : Angle getDispersiveDryPhaseDelay(unsigned int spwid, unsigned int nc);
805 : /** Function to retrieve the integrated Atmospheric Path length (Dry part) along the atmospheric path
806 : corresponding to a given water vapor column
807 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
808 : Length getDispersiveDryPathLength(unsigned int spwid, unsigned int nc);
809 :
810 : /** Function to retrieve the average integrated Atmospheric Path Length (Dry part) in spectral Window spwid */
811 : Length getAverageNonDispersiveDryPathLength(unsigned int spwid);
812 : /** Function to retrieve the average integrated Atmospheric Path Length (Dry part) in spectral Window spwid */
813 : Length getAverageDispersiveDryPathLength(unsigned int spwid);
814 : /** Function to retrieve the average integrated Atmospheric Phase Delay (Dry part) in spectral Window spwid */
815 : Angle getAverageNonDispersiveDryPhaseDelay(unsigned int spwid);
816 : /** Function to retrieve the average integrated Atmospheric Phase Delay (Dry part) in spectral Window spwid */
817 : Angle getAverageDispersiveDryPhaseDelay(unsigned int spwid);
818 :
819 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O2 lines) along the atmospheric path
820 : corresponding to a given water vapor column
821 : for single frequency RefractiveIndexProfile object */
822 : Angle getO2LinesPhaseDelay();
823 : /** Function to retrieve the integrated Atmospheric Path length (due to O2 Lines) along the atmospheric path
824 : corresponding to a given water vapor column
825 : for single frequency RefractiveIndexProfile object */
826 : Length getO2LinesPathLength();
827 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O2 Lines) along the atmospheric path
828 : corresponding to a given water vapor column
829 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
830 : Angle getO2LinesPhaseDelay(unsigned int nc);
831 : /** Function to retrieve the integrated Atmospheric Path length (due to O2 Lines) along the atmospheric path
832 : corresponding to a given water vapor column
833 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
834 : Length getO2LinesPathLength(unsigned int nc);
835 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O2 Lines) along the atmospheric path
836 : corresponding to a given water vapor column
837 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
838 : Angle getO2LinesPhaseDelay(unsigned int spwid, unsigned int nc);
839 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to O2 Lines) in spectral Window spwid */
840 : Angle getAverageO2LinesPhaseDelay(unsigned int spwid);
841 : /** Function to retrieve the integrated Atmospheric Path length (due to O2 Lines) along the atmospheric path
842 : corresponding to a given water vapor column
843 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
844 : Length getO2LinesPathLength(unsigned int spwid, unsigned int nc);
845 : /** Function to retrieve the average integrated Atmospheric Path Length (due to O2 Lines) in spectral Window spwid */
846 : Length getAverageO2LinesPathLength(unsigned int spwid);
847 :
848 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O3 lines) along the atmospheric path
849 : corresponding to a given water vapor column
850 : for single frequency RefractiveIndexProfile object */
851 : Angle getO3LinesPhaseDelay();
852 : /** Function to retrieve the integrated Atmospheric Path length (due to O3 Lines) along the atmospheric path
853 : corresponding to a given water vapor column
854 : for single frequency RefractiveIndexProfile object */
855 : Length getO3LinesPathLength();
856 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O3 Lines) along the atmospheric path
857 : corresponding to a given water vapor column
858 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
859 : Angle getO3LinesPhaseDelay(unsigned int nc);
860 : /** Function to retrieve the integrated Atmospheric Path length (due to O3 Lines) along the atmospheric path
861 : corresponding to a given water vapor column
862 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
863 : Length getO3LinesPathLength(unsigned int nc);
864 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to O3 Lines) along the atmospheric path
865 : corresponding to a given water vapor column
866 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
867 : Angle getO3LinesPhaseDelay(unsigned int spwid, unsigned int nc);
868 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to O3 Lines) in spectral Window spwid */
869 : Angle getAverageO3LinesPhaseDelay(unsigned int spwid);
870 : /** Function to retrieve the integrated Atmospheric Path length (due to O3 Lines) along the atmospheric path
871 : corresponding to a given water vapor column
872 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
873 : Length getO3LinesPathLength(unsigned int spwid, unsigned int nc);
874 : /** Function to retrieve the average integrated Atmospheric Path Length (due to O3 Lines) in spectral Window spwid */
875 : Length getAverageO3LinesPathLength(unsigned int spwid);
876 :
877 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to CO lines) along the atmospheric path
878 : corresponding to a given water vapor column
879 : for single frequency RefractiveIndexProfile object */
880 : Angle getCOLinesPhaseDelay();
881 : /** Function to retrieve the integrated Atmospheric Path length (due to CO Lines) along the atmospheric path
882 : corresponding to a given water vapor column
883 : for single frequency RefractiveIndexProfile object */
884 : Length getCOLinesPathLength();
885 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to CO Lines) along the atmospheric path
886 : corresponding to a given water vapor column
887 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
888 : Angle getCOLinesPhaseDelay(unsigned int nc);
889 : /** Function to retrieve the integrated Atmospheric Path length (due to CO Lines) along the atmospheric path
890 : corresponding to a given water vapor column
891 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
892 : Length getCOLinesPathLength(unsigned int nc);
893 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to CO Lines) along the atmospheric path
894 : corresponding to a given water vapor column
895 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
896 : Angle getCOLinesPhaseDelay(unsigned int spwid, unsigned int nc);
897 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to CO Lines) in spectral Window spwid */
898 : Angle getAverageCOLinesPhaseDelay(unsigned int spwid);
899 : /** Function to retrieve the integrated Atmospheric Path length (due to CO Lines) along the atmospheric path
900 : corresponding to a given water vapor column
901 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
902 : Length getCOLinesPathLength(unsigned int spwid, unsigned int nc);
903 : /** Function to retrieve the average integrated Atmospheric Path Length (due to CO Lines) in spectral Window spwid */
904 : Length getAverageCOLinesPathLength(unsigned int spwid);
905 :
906 :
907 :
908 :
909 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to N2O lines) along the atmospheric path
910 : corresponding to a given water vapor column
911 : for single frequency RefractiveIndexProfile object */
912 : Angle getN2OLinesPhaseDelay();
913 : /** Function to retrieve the integrated Atmospheric Path length (due to N2O Lines) along the atmospheric path
914 : corresponding to a given water vapor column
915 : for single frequency RefractiveIndexProfile object */
916 : Length getN2OLinesPathLength();
917 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to N2O Lines) along the atmospheric path
918 : corresponding to a given water vapor column
919 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
920 : Angle getN2OLinesPhaseDelay(unsigned int nc);
921 : /** Function to retrieve the integrated Atmospheric Path length (due to N2O Lines) along the atmospheric path
922 : corresponding to a given water vapor column
923 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
924 : Length getN2OLinesPathLength(unsigned int nc);
925 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to N2O Lines) along the atmospheric path
926 : corresponding to a given water vapor column
927 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
928 : Angle getN2OLinesPhaseDelay(unsigned int spwid, unsigned int nc);
929 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to N2O Lines) in spectral Window spwid */
930 : Angle getAverageN2OLinesPhaseDelay(unsigned int spwid);
931 : /** Function to retrieve the integrated Atmospheric Path length (due to N2O Lines) along the atmospheric path
932 : corresponding to a given water vapor column
933 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
934 : Length getN2OLinesPathLength(unsigned int spwid, unsigned int nc);
935 : /** Function to retrieve the average integrated Atmospheric Path Length (due to N2O Lines) in spectral Window spwid */
936 : Length getAverageN2OLinesPathLength(unsigned int spwid);
937 :
938 :
939 :
940 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to NO2 lines) along the atmospheric path
941 : corresponding to a given water vapor column
942 : for single frequency RefractiveIndexProfile object */
943 : Angle getNO2LinesPhaseDelay();
944 : /** Function to retrieve the integrated Atmospheric Path length (due to NO2 Lines) along the atmospheric path
945 : corresponding to a given water vapor column
946 : for single frequency RefractiveIndexProfile object */
947 : Length getNO2LinesPathLength();
948 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to NO2 Lines) along the atmospheric path
949 : corresponding to a given water vapor column
950 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
951 : Angle getNO2LinesPhaseDelay(unsigned int nc);
952 : /** Function to retrieve the integrated Atmospheric Path length (due to NO2 Lines) along the atmospheric path
953 : corresponding to a given water vapor column
954 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
955 : Length getNO2LinesPathLength(unsigned int nc);
956 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to NO2 Lines) along the atmospheric path
957 : corresponding to a given water vapor column
958 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
959 : Angle getNO2LinesPhaseDelay(unsigned int spwid, unsigned int nc);
960 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to NO2 Lines) in spectral Window spwid */
961 : Angle getAverageNO2LinesPhaseDelay(unsigned int spwid);
962 : /** Function to retrieve the integrated Atmospheric Path length (due to NO2 Lines) along the atmospheric path
963 : corresponding to a given water vapor column
964 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
965 : Length getNO2LinesPathLength(unsigned int spwid, unsigned int nc);
966 : /** Function to retrieve the average integrated Atmospheric Path Length (due to NO2 Lines) in spectral Window spwid */
967 : Length getAverageNO2LinesPathLength(unsigned int spwid);
968 :
969 :
970 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to SO2 lines) along the atmospheric path
971 : corresponding to a given water vapor column
972 : for single frequency RefractiveIndexProfile object */
973 : Angle getSO2LinesPhaseDelay();
974 : /** Function to retrieve the integrated Atmospheric Path length (due to SO2 Lines) along the atmospheric path
975 : corresponding to a given water vapor column
976 : for single frequency RefractiveIndexProfile object */
977 : Length getSO2LinesPathLength();
978 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to SO2 Lines) along the atmospheric path
979 : corresponding to a given water vapor column
980 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
981 : Angle getSO2LinesPhaseDelay(unsigned int nc);
982 : /** Function to retrieve the integrated Atmospheric Path length (due to SO2 Lines) along the atmospheric path
983 : corresponding to a given water vapor column
984 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
985 : Length getSO2LinesPathLength(unsigned int nc);
986 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to SO2 Lines) along the atmospheric path
987 : corresponding to a given water vapor column
988 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
989 : Angle getSO2LinesPhaseDelay(unsigned int spwid, unsigned int nc);
990 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to SO2 Lines) in spectral Window spwid */
991 : Angle getAverageSO2LinesPhaseDelay(unsigned int spwid);
992 : /** Function to retrieve the integrated Atmospheric Path length (due to SO2 Lines) along the atmospheric path
993 : corresponding to a given water vapor column
994 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
995 : Length getSO2LinesPathLength(unsigned int spwid, unsigned int nc);
996 : /** Function to retrieve the average integrated Atmospheric Path Length (due to SO2 Lines) in spectral Window spwid */
997 : Length getAverageSO2LinesPathLength(unsigned int spwid);
998 :
999 :
1000 :
1001 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCl lines) along the atmospheric path
1002 : corresponding to a given water vapor column
1003 : for single frequency RefractiveIndexProfile object */
1004 : Angle getHClLinesPhaseDelay();
1005 : /** Function to retrieve the integrated Atmospheric Path length (due to HCl Lines) along the atmospheric path
1006 : corresponding to a given water vapor column
1007 : for single frequency RefractiveIndexProfile object */
1008 : Length getHClLinesPathLength();
1009 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCl Lines) along the atmospheric path
1010 : corresponding to a given water vapor column
1011 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1012 : Angle getHClLinesPhaseDelay(unsigned int nc);
1013 : /** Function to retrieve the integrated Atmospheric Path length (due to HCl Lines) along the atmospheric path
1014 : corresponding to a given water vapor column
1015 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1016 : Length getHClLinesPathLength(unsigned int nc);
1017 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCl Lines) along the atmospheric path
1018 : corresponding to a given water vapor column
1019 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
1020 : Angle getHClLinesPhaseDelay(unsigned int spwid, unsigned int nc);
1021 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to HCl Lines) in spectral Window spwid */
1022 : Angle getAverageHClLinesPhaseDelay(unsigned int spwid);
1023 : /** Function to retrieve the integrated Atmospheric Path length (due to HCl Lines) along the atmospheric path
1024 : corresponding to a given water vapor column
1025 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
1026 : Length getHClLinesPathLength(unsigned int spwid, unsigned int nc);
1027 : /** Function to retrieve the average integrated Atmospheric Path Length (due to HCl Lines) in spectral Window spwid */
1028 : Length getAverageHClLinesPathLength(unsigned int spwid);
1029 :
1030 :
1031 :
1032 :
1033 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCN lines) along the atmospheric path
1034 : corresponding to a given water vapor column
1035 : for single frequency RefractiveIndexProfile object */
1036 : Angle getHCNLinesPhaseDelay();
1037 : /** Function to retrieve the integrated Atmospheric Path length (due to HCN Lines) along the atmospheric path
1038 : corresponding to a given water vapor column
1039 : for single frequency RefractiveIndexProfile object */
1040 : Length getHCNLinesPathLength();
1041 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCN Lines) along the atmospheric path
1042 : corresponding to a given water vapor column
1043 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1044 : Angle getHCNLinesPhaseDelay(unsigned int nc);
1045 : /** Function to retrieve the integrated Atmospheric Path length (due to HCN Lines) along the atmospheric path
1046 : corresponding to a given water vapor column
1047 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1048 : Length getHCNLinesPathLength(unsigned int nc);
1049 : /** Function to retrieve the integrated Atmospheric Phase Delay (due to HCN Lines) along the atmospheric path
1050 : corresponding to a given water vapor column
1051 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
1052 : Angle getHCNLinesPhaseDelay(unsigned int spwid, unsigned int nc);
1053 : /** Function to retrieve the average integrated Atmospheric Phase Delay (due to HCN Lines) in spectral Window spwid */
1054 : Angle getAverageHCNLinesPhaseDelay(unsigned int spwid);
1055 : /** Function to retrieve the integrated Atmospheric Path length (due to HCN Lines) along the atmospheric path
1056 : corresponding to a given water vapor column
1057 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
1058 : Length getHCNLinesPathLength(unsigned int spwid, unsigned int nc);
1059 : /** Function to retrieve the average integrated Atmospheric Path Length (due to HCN Lines) in spectral Window spwid */
1060 : Length getAverageHCNLinesPathLength(unsigned int spwid);
1061 :
1062 :
1063 :
1064 :
1065 :
1066 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dispersive part) along the atmospheric path
1067 : corresponding to the 1st guess water column (from AtmProfile object)
1068 : for single frequency RefractiveIndexProfile object */
1069 : Angle getDispersiveH2OPhaseDelay() {return getDispersiveH2OPhaseDelay(getGroundWH2O());}
1070 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dispersive part) along the atmospheric path
1071 : corresponding to a given water vapor column
1072 : for single frequency RefractiveIndexProfile object */
1073 : Angle getDispersiveH2OPhaseDelay(const Length &integratedwatercolumn);
1074 : /** Function to retrieve the integrated Atmospheric Path length (Dispersive part) along the atmospheric path
1075 : corresponding to the 1st guess water column (from AtmProfile object)
1076 : for single frequency RefractiveIndexProfile object */
1077 4 : Length getDispersiveH2OPathLength() {return getDispersiveH2OPathLength(getGroundWH2O());}
1078 : /** Function to retrieve the integrated Atmospheric Path length (Dispersive part) along the atmospheric path
1079 : corresponding to a given water vapor column
1080 : for single frequency RefractiveIndexProfile object */
1081 : Length getDispersiveH2OPathLength(const Length &integratedwatercolumn);
1082 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dispersive part) along the atmospheric path
1083 : corresponding to a given water vapor column
1084 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1085 : Angle getDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int nc);
1086 : /** Function to retrieve the integrated Atmospheric Path length (Dispersive part) along the atmospheric path
1087 : corresponding to a given water vapor column
1088 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1089 : Length getDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int nc);
1090 : /** Function to retrieve the integrated Atmospheric Phase Delay (Dispersive part) along the atmospheric path
1091 : corresponding to a given water vapor column
1092 : for single frequency RefractiveIndexProfile object with several Spectral Grids */
1093 : Angle getDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
1094 : /** Function to retrieve the average integrated Atmospheric Phase Delay (Dispersive part) in spectral Window spwid */
1095 : Angle getAverageDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int spwid);
1096 : /** Function to retrieve the integrated Atmospheric Path length (Dispersive part) along the atmospheric path
1097 : corresponding to a given water vapor column
1098 : for channel nc in an RefractiveIndexProfile object with everal Spectral Grids */
1099 : Length getDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
1100 : /** Function to retrieve the average integrated Atmospheric Path Length (Dispersive part) in spectral Window spwid */
1101 : Length getAverageDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int spwid);
1102 : /** Function to retrieve the integrated Atmospheric Phase Delay (Non-Dispersive part) along the atmospheric path
1103 : corresponding to the 1st guess water column (from AtmProfile object)
1104 : for single frequency RefractiveIndexProfile object */
1105 : Angle getNonDispersiveH2OPhaseDelay() {return getNonDispersiveH2OPhaseDelay(getGroundWH2O());}
1106 : /** Function to retrieve the integrated Atmospheric Phase Delay (Non-Dispersive part) along the atmospheric path
1107 : corresponding to a given water vapor column
1108 : for single frequency RefractiveIndexProfile object */
1109 : Angle getNonDispersiveH2OPhaseDelay(const Length &integratedwatercolumn);
1110 : /** Function to retrieve the integrated Atmospheric Path Length (Non-Dispersive part) along the atmospheric path
1111 : corresponding to the 1st guess water column (from AtmProfile object)
1112 : for single frequency RefractiveIndexProfile object */
1113 4 : Length getNonDispersiveH2OPathLength() {return getNonDispersiveH2OPathLength(getGroundWH2O());}
1114 : /** Function to retrieve the integrated Atmospheric Path Length (Non-Dispersive part) along the atmospheric path
1115 : corresponding to a given water vapor column
1116 : for single frequency RefractiveIndexProfile object */
1117 : Length getNonDispersiveH2OPathLength(const Length &integratedwatercolumn);
1118 : /** Function to retrieve the integrated Atmospheric Phase Delay (Non-Dispersive part) along the atmospheric path
1119 : corresponding to a given water vapor column
1120 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1121 : Angle getNonDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int nc);
1122 : /** Function to retrieve the integrated Atmospheric Path Length (Non-Dispersive part) along the atmospheric path
1123 : corresponding to a given water vapor column
1124 : for channel nc in an RefractiveIndexProfile object with a spectral grid */
1125 : Length getNonDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int nc);
1126 : /** Function to retrieve the integrated Atmospheric Phase Delay (Non-Dispersive part) along the atmospheric path
1127 : corresponding to a given water vapor column
1128 : for channel nc in an RefractiveIndexProfile object with several spectral grids */
1129 : Angle getNonDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
1130 : /** Function to retrieve the average integrated Atmospheric Path Length (Non-Dispersive part) in spectral Window spwid */
1131 : Length getAverageNonDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int spwid);
1132 : /** Function to retrieve the average integrated Atmospheric Phase Delay (Non-Dispersive part) in spectral Window spwid */
1133 : Angle getAverageNonDispersiveH2OPhaseDelay(const Length &integratedwatercolumn, unsigned int spwid);
1134 : /** Function to retrieve the integrated Atmospheric Path Length (Non-Dispersive part) along the atmospheric path
1135 : corresponding to a given water vapor column
1136 : for channel nc in an RefractiveIndexProfile object with several spectral grids */
1137 : Length getNonDispersiveH2OPathLength(const Length &integratedwatercolumn, unsigned int spwid, unsigned int nc);
1138 :
1139 : void updateNewSpectralWindows();
1140 :
1141 : //@}
1142 :
1143 : protected:
1144 :
1145 : vector<vector<std::complex<double> >*> vv_N_H2OLinesPtr_; //!< H2O lines (all species with their weights) absorption coefficient and delay term (rad m^-1,m^-1)
1146 : vector<vector<std::complex<double> >*> vv_N_HH16OLinesPtr_; //!< HH16O lines absorption coefficient and delay term (rad m^-1,m^-1)
1147 : vector<vector<std::complex<double> >*> vv_N_HH16OV2LinesPtr_; //!< HH16OV2 lines absorption coefficient and delay term (rad m^-1,m^-1)
1148 : vector<vector<std::complex<double> >*> vv_N_HH17OLinesPtr_; //!< HH17O lines absorption coefficient and delay term (rad m^-1,m^-1)
1149 : vector<vector<std::complex<double> >*> vv_N_HH18OLinesPtr_; //!< HH18O lines absorption coefficient and delay term (rad m^-1,m^-1)
1150 : vector<vector<std::complex<double> >*> vv_N_HDOLinesPtr_; //!< HDO lines absorption coefficient and delay term (rad m^-1,m^-1)
1151 : vector<vector<std::complex<double> >*> vv_N_H2OContPtr_; //!< H2O continuum absorption coefficient and delay term (rad m^-1,m^-1)
1152 : vector<vector<std::complex<double> >*> vv_N_O2LinesPtr_; //!< O2 lines (all species with their weights) absorption coefficient and delay term (rad m^-1,m^-1)
1153 : vector<vector<std::complex<double> >*> vv_N_16O16OLinesPtr_; //!< 16O16O lines (all species with their weights) absorption coefficient and delay term (rad m^-1,m^-1)
1154 : vector<vector<std::complex<double> >*> vv_N_16O16OVIBLinesPtr_; //!< 16O16OVIB lines absorption coefficient and delay term (rad m^-1,m^-1)
1155 : vector<vector<std::complex<double> >*> vv_N_16O18OLinesPtr_; //!< 16O18O lines absorption coefficient and delay term (rad m^-1,m^-1)
1156 : vector<vector<std::complex<double> >*> vv_N_16O17OLinesPtr_; //!< 16O17O lines absorption coefficient and delay term (rad m^-1,m^-1)
1157 : vector<vector<std::complex<double> >*> vv_N_DryContPtr_; //!< Dry continuum absorption coefficient and delay term (rad m^-1,m^-1)
1158 : vector<vector<std::complex<double> >*> vv_N_O3LinesPtr_; //!< O3 lines (all especies with their weights) absorption coefficient and delay term (rad m^-1,m^-1)
1159 : vector<vector<std::complex<double> >*> vv_N_16O16O16OLinesPtr_; //!< 16O16O16O v=0 lines absorption coefficient and delay term (rad m^-1,m^-1)
1160 : vector<vector<std::complex<double> >*> vv_N_16O16O16OV1LinesPtr_; //!< 16O16O16O v1=1 lines absorption coefficient and delay term (rad m^-1,m^-1)
1161 : vector<vector<std::complex<double> >*> vv_N_16O16O16OV2LinesPtr_; //!< 16O16O16O v2=1 lines absorption coefficient and delay term (rad m^-1,m^-1)
1162 : vector<vector<std::complex<double> >*> vv_N_16O16O16OV3LinesPtr_; //!< 16O16O16O v3=1 lines absorption coefficient and delay term (rad m^-1,m^-1)
1163 : vector<vector<std::complex<double> >*> vv_N_16O16O17OLinesPtr_; //!< 16O16O17O v=0 lines absorption coefficient and delay term (rad m^-1,m^-1)
1164 : vector<vector<std::complex<double> >*> vv_N_16O16O18OLinesPtr_; //!< 16O16O18O v=0 lines absorption coefficient and delay term (rad m^-1,m^-1)
1165 : vector<vector<std::complex<double> >*> vv_N_16O17O16OLinesPtr_; //!< 16O17O16O v=0 lines absorption coefficient and delay term (rad m^-1,m^-1)
1166 : vector<vector<std::complex<double> >*> vv_N_16O18O16OLinesPtr_; //!< 16O18O16O v=0 lines absorption coefficient and delay term (rad m^-1,m^-1)
1167 : vector<vector<std::complex<double> >*> vv_N_COLinesPtr_; //!< CO lines absorption coefficient and delay term (rad m^-1,m^-1)
1168 : vector<vector<std::complex<double> >*> vv_N_N2OLinesPtr_; //!< N2O lines absorption coefficient and delay term (rad m^-1,m^-1)
1169 : vector<vector<std::complex<double> >*> vv_N_NO2LinesPtr_; //!< NO2 lines absorption coefficient and delay term (rad m^-1,m^-1)
1170 : vector<vector<std::complex<double> >*> vv_N_SO2LinesPtr_; //!< SO2 lines absorption coefficient and delay term (rad m^-1,m^-1)
1171 : vector<vector<std::complex<double> >*> vv_N_HClLinesPtr_; //!< HCl lines absorption coefficient and delay term (rad m^-1,m^-1)
1172 : vector<vector<std::complex<double> >*> vv_N_HCNLinesPtr_; //!< HCN lines absorption coefficient and delay term (rad m^-1,m^-1)
1173 :
1174 : /* vecteur de vecteurs ???? */
1175 :
1176 : /**
1177 : * Method to build the profile of the absorption coefficients,
1178 : */
1179 : void mkRefractiveIndexProfile(); //!< builds the absorption profiles, returns error code: <0 unsuccessful
1180 : void rmRefractiveIndexProfile(); //!< deletes all the layer profiles for all the frequencies
1181 :
1182 : bool updateRefractiveIndexProfile(const Length &altitude,
1183 : const Pressure &groundPressure,
1184 : const Temperature &groundTemperature,
1185 : double tropoLapseRate,
1186 : const Humidity &relativeHumidity,
1187 : const Length &wvScaleHeight);
1188 :
1189 : /** Method to assess if a channel frequency index is valid. A spectral grid has a certain number of
1190 : * frequency points. Hence the index is not valid if it is equal or greater than this number. Would
1191 : * the spectral grid correspond to a single spectral window this index is the channel frequency index of
1192 : * that window. When ther are more than a single spectral window in the spectral grid it is recommended
1193 : * to use the method which include a spectral window identifier.
1194 : * @param nc channel frequency index in the spectral grid.
1195 : * @ret true if the index is smaller than the number of grid points, else false.
1196 : * @post update the state of the RefractiveIndexProfile object for ALL the frequency grid points
1197 : * which have not yet their profiles determined, then return true, else return true
1198 : * directly, the object being already up-to-date.
1199 : */
1200 : bool chanIndexIsValid(unsigned int nc);
1201 : /** Method to assess if a channel frequency index of a given spectral window is valid.
1202 : * @param spwid spectral window identifier
1203 : * @param nc channel frequency index relative to that spectral window (e.g. if a spectral window has
1204 : * 1024 frequency channels then the index nc must be in the range 0 to 1023 in order to return
1205 : * true).
1206 : * @ret true if the index is smaller than the number of grid points for that spectral window, else false.
1207 : * @post update the state of the RefractiveIndexProfile object for all the frequency grid points if
1208 : * there was not yet profiles determined for that index, then return true, else return true
1209 : * directly, the object being already up-to-date.
1210 : */
1211 : bool spwidAndIndexAreValid(unsigned int spwid, unsigned int idx);
1212 : }; // class RefractiveIndexProfile
1213 :
1214 : ATM_NAMESPACE_END
1215 :
1216 : #endif /*!_ATM_REFRACTIVEINDEXPROFILE_H*/
|