LCOV - code coverage report
Current view: top level - atmosphere/ATM - ATMRefractiveIndexProfile.h (source / functions) Hit Total Coverage
Test: casacpp_coverage.info Lines: 17 18 94.4 %
Date: 2025-08-21 08:01:32 Functions: 8 9 88.9 %

          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*/

Generated by: LCOV version 1.16