71 Numeric temp_c = surface_temp - 273.15;
72 Numeric temp_cc = temp_c * temp_c;
73 Numeric temp_ccc = temp_cc * temp_c;
75 if ( (temp_c < -5.0) || (temp_c > 100.0) ||
76 (freq < 10e+9) || (freq > 500e+9) )
80 os <<
"Severe warning from dclamkaouchi: "
81 <<
"The accepted temperature range in centigrade is "
82 <<
"[-5,100],\nbut a value of " << temp_c
83 <<
"degree C was found. Also the allowed frequency range is "
84 <<
"[10 GHz,500 GHz],\nbut a value of " << freq
87 throw runtime_error( os.str() );
90 if ( (freq < 20e+9) || (freq > 200e+9) )
94 os <<
"Warning from dclamkaouchi: "
95 <<
"The accepted temperature range in centigrade is "
96 <<
"[-5,100],\nbut a value of " << temp_c
97 <<
"degree C was found. Also the allowed frequency range is "
98 <<
"[10 GHz,500 GHz],\nbut a value of " << freq
99 <<
" was found."<< surface_wind;
105 throw runtime_error( os.str() );
109 Numeric tau1 = surface_fastem_constants[0] + surface_fastem_constants[1]* temp_c +
110 surface_fastem_constants[2] * temp_cc;
112 Numeric tau2 = surface_fastem_constants[3] + surface_fastem_constants[4]* temp_c +
113 surface_fastem_constants[5] * temp_cc + surface_fastem_constants[6] * temp_ccc;
116 Numeric del1 = surface_fastem_constants[7] + surface_fastem_constants[8]* temp_c +
117 surface_fastem_constants[9] * temp_cc + surface_fastem_constants[10] * temp_ccc;
119 Numeric del2 = surface_fastem_constants[11] + surface_fastem_constants[12]* temp_c +
120 surface_fastem_constants[13] * temp_cc + surface_fastem_constants[14] * temp_ccc;
122 Numeric einf = surface_fastem_constants[17] + surface_fastem_constants[18] * temp_c;
125 Numeric fen = 2.0 * surface_fastem_constants[19] * freq/1e+9 * 0.001;
127 Numeric den1 = 1.0 + fen2 * tau1 * tau1;
128 Numeric den2 = 1.0 + fen2 * tau2 * tau2;
129 Numeric perm_real1 = del1/den1;
130 Numeric perm_real2 = del2/den2;
131 Numeric perm_imag1 = del1 * fen * tau1/den1;
132 Numeric perm_imag2 = del2 * fen * tau2/den2;
133 Numeric perm_real = perm_real1 + perm_real2 + einf;
134 Numeric perm_imag = perm_imag1 + perm_imag2;
136 Complex xperm (perm_real, perm_imag);
148 Numeric sin_2 = pow(sin_theta, 2);
150 Complex perm1 = sqrt(xperm - sin_2);
151 Complex perm2 = xperm * cos_theta;
153 Complex rhth = (cos_theta - perm1)/(cos_theta + perm1);
154 Complex rvth = (perm2 - perm1)/(perm2 + perm1);
161 Numeric rverts = pow(rvertsr, 2) + pow(rvertsi, 2);
167 Numeric rhorzs = pow(rhorzsr, 2) + pow(rhorzsi, 2);
169 surface_emiss[0] = rverts;
170 surface_emiss[1] = rhorzs;
171 surface_emiss[2] = 0;
172 surface_emiss[3] = 0;