14const double rad_wsgg::cCoefs[100]={7.412956e-001, -5.244441e-001, 5.822860e-001, -2.096994e-001, 2.420312e-002,
15 -9.412652e-001, 2.799577e-001, -7.672319e-001, 3.204027e-001, -3.910174e-002,
16 8.531866e-001, 8.230754e-002, 5.289430e-001, -2.468463e-001, 3.109396e-002,
17 -3.342806e-001, 1.474987e-001, -4.160689e-001, 1.697627e-001, -2.040660e-002,
18 4.314362e-002, -6.886217e-002, 1.109773e-001, -4.208608e-002, 4.918817e-003,
19 1.552073e-001, -4.862117e-001, 3.668088e-001, -1.055508e-001, 1.058568e-002,
20 6.755648e-001, 1.409271e+000, -1.383449e+000, 4.575210e-001, -5.019760e-002,
21 -1.125394e+000, -5.913199e-001, 9.085441e-001, -3.334201e-001, 3.842361e-002,
22 6.040543e-001, -5.533854e-002, -1.733014e-001, 7.916083e-002, -9.893357e-003,
23 -1.105453e-001, 4.646634e-002, -1.612982e-003, -3.539835e-003, 6.121277e-004,
24 2.550242e-001, 3.805403e-001, -4.249709e-001, 1.429446e-001, -1.574075e-002,
25 -6.065428e-001, 3.494024e-001, 1.853509e-001, -1.013694e-001, 1.302441e-002,
26 8.123855e-001, -1.102009e+000, 4.046178e-001, -8.118223e-002, 6.298101e-003,
27 -4.532290e-001, 6.784475e-001, -3.432603e-001, 8.830883e-002, -8.415221e-003,
28 8.693093e-002, -1.306996e-001, 7.414464e-002, -2.029294e-002, 2.010969e-003,
29 -3.451994e-002, 2.656726e-001, -1.225365e-001, 3.001508e-002, -2.820525e-003,
30 4.112046e-001, -5.728350e-001, 2.924490e-001, -7.980766e-002, 7.996603e-003,
31 -5.055995e-001, 4.579559e-001, -2.616436e-001, 7.648413e-002, -7.908356e-003,
32 2.317509e-001, -1.656759e-001, 1.052608e-001, -3.219347e-002, 3.386965e-003,
33 -3.754908e-002, 2.295193e-002, -1.600472e-002, 5.046318e-003, -5.364326e-004};
35const double rad_wsgg::dCoefs[20]={3.404288e-002, 6.523048e-002, -4.636852e-002, 1.386835e-002, -1.444993e-003,
36 3.509457e-001, 7.465138e-001, -5.293090e-001, 1.594423e-001, -1.663261e-002,
37 4.570740e+000, 2.168067e+000, -1.498901e+000, 4.917165e-001, -5.429990e-002,
38 1.098169e+002, -5.092359e+001, 2.343236e+001, -5.163892e+000, 4.393889e-001};
42const double rad_wsgg::bco2[20]={ 8.425766e-001, -1.442229e+000, 1.286974e+000, -5.202712e-001, 7.581559e-002,
43 -3.023864e-002, 5.264245e-001, -6.209696e-001, 2.704755e-001, -4.090690e-002,
44 1.070243e-001, -1.989596e-001, 3.101602e-001, -1.737230e-001, 3.081180e-002,
45 3.108972e-002, 1.981489e-001, -2.543676e-001, 1.061331e-001, -1.498231e-002 };
47const double rad_wsgg::bh2o[20]={ 7.129509e-001, -1.378353e+000, 1.555028e+000, -6.636291e-001, 9.773674e-002,
48 1.589917e-001, 5.635578e-002, 2.666874e-001, -2.040335e-001, 3.742408e-002,
49 -1.196373e-001, 1.349665e+000, -1.544797e+000, 6.397595e-001, -9.153650e-002,
50 3.078250e-001, -6.003555e-001, 4.441261e-001, -1.468813e-001, 1.824702e-002 };
52const double rad_wsgg::kco2[5]={0.000000e+000, 3.388079e-002, 4.544269e-001, 4.680226e+000, 1.038439e+002};
54const double rad_wsgg::kh2o[5]={0.000000e+000, 7.703541e-002, 8.242941e-001, 6.854761e+000, 6.593653e+001};
101 const double xCO_not_used,
102 const double xCH4_not_used){
104 if(iband < 0 || iband >=
nGGa) {
105 cerr <<
"\n\n***** rad_wsgg::get_k_a_oneband: iband out of range *****\n" << endl;
111 double Mr = xH2O/(xCO2+1E-10);
113 if(Mr < 0.01) Mr = 0.01;
114 if(Mr > 4.0) Mr = 4.0;
115 if(MrOrig > 1E8) MrOrig = 1E8;
139 kabs *= (P/101325)*(xH2O+xCO2);
148 vector<double> b(nj,0.0);
149 for(
int i=0; i<ni; i++) {
151 for(
int j=0; j<nj; j++){
155 awts -= b[0] + Tr*(b[1] + Tr*(b[2] + Tr*(b[3] + Tr*(b[4]))));
159 injnk = (iband-1)*njnk;
160 vector<double> b(nj,0.0);
161 for(
int j=0; j<nj; j++){
165 awts = b[0] + Tr*(b[1] + Tr*(b[2] + Tr*(b[3] + Tr*(b[4]))));
172 double f = (0.01-MrOrig)/0.01;
173 double pfac = P/101325*xCO2;
177 kabs =
kco2[iband]*pfac*(f) + kabs*(1.0-f);
184 for(
int i=1; i<
nGGa; i++){
186 aco2 -=
bco2[off+0] + Tr*(
bco2[off+1] + Tr*(
bco2[off+2] + Tr*(
bco2[off+3] + Tr*(
bco2[off+4]))));
193 awts = aco2*(f) + awts*(1.0-f);
200 double f = (1E8-MrOrig)/(1E8-4.0);
201 double pfac = P/101325*xH2O;
205 kabs = kabs*(f) +
kh2o[iband]*pfac*(1.0-f);
212 for(
int i=1; i<
nGGa; i++){
214 ah2o -=
bh2o[off+0] + Tr*(
bh2o[off+1] + Tr*(
bh2o[off+2] + Tr*(
bh2o[off+3] + Tr*(
bh2o[off+4]))));
221 awts = awts*(f) + ah2o*(1.0-f);
227 double ksoot= 1817 * fvsoot*T;
271 vector<double> &awts,
277 const double xCO_not_used,
278 const double xCH4_not_used){
287 for(
int i=0; i<
nGGa; i++){
288 get_k_a_oneband(k, a, i, T_dmb, P, fvsoot, xH2O, xCO2, xCO_not_used, xCH4_not_used);
static const double dCoefs[]
void get_k_a(std::vector< double > &kabs, std::vector< double > &awts, const double T_dmb, const double P, const double fvsoot, const double xH2O, const double xCO2, const double xCO_not_used, const double xCH4_not_used)
absorption coefficients for pure h2o (size 5 = nGGa)
static const double bh2o[]
map to [i,j] of size ni,nj = 4,5
void get_k_a_oneband(double &kabs, double &awts, const int iband, const double T, const double P, const double fvsoot, const double xH2O, const double xCO2, const double xCO_not_used, const double xCH4_not_used)
static const double kco2[]
map to [i,j] of size ni,nj = 4,5
static const double cCoefs[]
map to [i,j,k] of size ni,nj,nk = 4,5,5
static const double bco2[]
map to [i,k] of size ni,nk = 4,5
static const double kh2o[]
absorption coefficients for pure co2 (size 5 = nGGa)
int nGGa
number of grey gases including the clear gas
Header file for child class rad_wsgg.