10 #include <boost/parameter/keyword.hpp>    11 #include <boost/parameter/name.hpp>    12 #include <boost/parameter/preprocessor.hpp>    13 #include <boost/lexical_cast.hpp>    14 #include "../units/units.hpp"    16 #include "../optionsForwards.hpp"    24             BOOST_PARAMETER_NAME(frequency)
    25             BOOST_PARAMETER_NAME(temperature)
    26             BOOST_PARAMETER_NAME(salinity)
    27             BOOST_PARAMETER_NAME(temp_units)
    28             BOOST_PARAMETER_NAME(freq_units)
    29             BOOST_PARAMETER_NAME(salinity_units)
    30             BOOST_PARAMETER_NAME(m)
    31             BOOST_PARAMETER_NAME(provider)
    34 #define standardGenericProvider(name) \    35         BOOST_PARAMETER_FUNCTION( \    40                 (frequency, (double)) \    41                 (temperature, (double)) \    44                 (freq_units, *, std::string("GHz")) \    45                 (temp_units, *, std::string("K")) \    46                 (provider, (const char*), "")) \    49                 double freq = rtmath::units::conv_spec(freq_units, "GHz").convert(frequency); \    50                 double temp = rtmath::units::converter(temp_units, "degK").convert(temperature); \    51                 implementations:: name(freq, temp, m, provider); \    58 #define standardFTmProvider(name) \    59         BOOST_PARAMETER_FUNCTION( \    64                 (frequency, (double)) \    65                 (temperature, (double)) \    68                 (freq_units, *, std::string("GHz")) \    69                 (temp_units, *, std::string("degK"))) \    72                 double freq = rtmath::units::conv_spec(freq_units, "GHz").convert(frequency); \    73                 double temp = rtmath::units::converter(temp_units, "degK").convert(temperature); \    74                 implementations:: name(freq, temp, m); \    82 #define standardLmProvider(name) \    83         BOOST_PARAMETER_FUNCTION( \    88                     (frequency, (double)) \    91                     (temperature, (double), 0) \    92                     (freq_units, *, std::string("GHz")) \    93                     (temp_units, *, std::string("degK")) ) \    96                 double lambda = rtmath::units::conv_spec(freq_units, "um").convert(frequency); \    97                 double temp = rtmath::units::converter(temp_units, "degK").convert(temperature); \    98                 implementations:: name(lambda, m); \ void mIceWarren(double f, double t, std::complex< double > &m)
Ice complex refractive index for microwave/uv. 
void mWaterHanel(double lambda, std::complex< double > &m)
Water complex refractive index for ir/vis. 
void mIceMatzler(double f, double t, std::complex< double > &m)
void mNaClHanel(double lambda, std::complex< double > &m)
Sodium chloride refractive index for ir/vis. 
void mSandEHanel(double lambda, std::complex< double > &m)
Sand E-ray refractive index for ir/vis (birefringent) 
void mSandOHanel(double lambda, std::complex< double > &m)
Sand O-ray refractvie index for ir/vis (birefringent) 
standardFTmProvider(mWaterLiebe)
standardLmProvider(mWaterHanel)
void mDustHanel(double lambda, std::complex< double > &m)
Dust-like particle refractive index for ir/vis. 
void mWaterLiebe(double f, double t, std::complex< double > &m)
void mWaterFreshMeissnerWentz(double f, double t, std::complex< double > &m)
standardGenericProvider(mWater)
void mIceHanel(double lambda, std::complex< double > &m)
Ice complex refractive index for ir/vis. 
void mSeaSaltHanel(double lambda, std::complex< double > &m)
Sea salt refractive index for ir/vis.