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.