42 std::ifstream ifs(filename, std::ifstream::in);
47 name =
"ssmi_mean_emis_climato";
71 if (is.fail())
throw std::runtime_error(
"Error reading cellnum.");
72 for (
Index nssmi = 0; nssmi < 2 *
nchan; nssmi++) {
74 if (is.fail())
throw std::runtime_error(
"Error reading emissivity.");
77 is >> class1 >> class2;
78 if (is.fail())
throw std::runtime_error(
"Error reading classes.");
79 if (class1 > 0 && class2 > 0 && ipos <
ndat) {
82 emis(ipos, i) = ssmi[i];
108 for (
Index i = 0; i < maxlat / 2; ++i) {
117 Numeric rcells = azone / aecell;
118 Index icellr =
static_cast<Index>(rcells + 0.5);
120 totcel += 2 * icellr;
122 Index lat1 = i + maxlat / 2;
123 Index lat2 = maxlat / 2 - 1 - i;
129 for (
Index i = 1; i < maxlat; ++i) {
143 if ((
lat < -90.0) || (
lat > 90.0)) {
144 throw std::runtime_error(
145 "Latitude input must be within the range [-90.0, 90.0].");
148 if ((
lon < 0.0) || (
lon > 360.0)) {
149 throw std::runtime_error(
150 "Longitude input must be within the range [0.0, 360.0].");
167 for (
Index i = 0; i < ilat; ++i) {
186 for (
Numeric i = -di; i < di; i += 1.0) {
196 for (
Numeric i = -di; i < di; i += 1.0) {
206 for (
Numeric i = -di; i < di; i += 1.0) {
216 for (
Numeric i = -di; i < di; i += 1.0) {
231 Index index_lat = -1;
232 Index index_lon = -1;
233 if (cellnum >=
firstcells[index_lat_max - 1]) {
234 index_lat = index_lat_max;
235 index_lon = cellnum -
firstcells[index_lat_max];
237 for (
Index i = 0; i < index_lat_max; ++i) {
247 return std::make_pair(
lat,
lon);
254 Index class2)
const {
258 }
else if ((19.35 < f) && (f <= 37.0)) {
259 const Numeric a = (37.0 - f) / (37.0 - 19.35);
260 const Numeric b = (f - 19.35) / (37.0 - 19.35);
261 emiss = a * emiss19 + b * emiss37;
262 }
else if ((f > 37.0) && (f < 85.5)) {
263 const Numeric b = (85.5 - f) / (85.5 - 37.0);
264 const Numeric c = (f - 37.0) / (85.5 - 37.0);
265 emiss = b * emiss37 + c * emiss85;
266 }
else if (85.5 <= f) {
268 if ((class2 > 9) && (class2 < 14) && (emiss85 > emiss37)) {
270 emiss = emiss85 + (f - 85.5) * (emiss85 - emiss37) / (85.5 - 37.0) *
272 }
else if ((f > 150.0) && (f <= 190.0)) {
273 emiss = emiss85 + (150.0 - 85.5) * (emiss85 - emiss37) / (85.5 - 37.0) *
275 emiss += (f - 150.0) * (emiss - emiss85) / (150.0 - 85.5) *
277 }
else if (f > 190.0) {
278 emiss = emiss85 + (150.0 - 85.5) * (emiss85 - emiss37) / (85.5 - 37.0) *
280 emiss += (190.0 - 150.0) * (emiss - emiss85) / (150.0 - 85.5) *
301 for (
Index i = 0; i < 3; ++i) {
303 a0_k1[i + (class1 - 1) * 3] * ev[i] +
304 a0_k2[i + (class1 - 1) * 3] * eh[i];
315 Numeric s1_v = (theta - 53.0) / -53.0 * (e0 - a0) / a0;
317 Numeric s2_v = theta / 53.0 * (ev[i] - em53_v) / em53_v;
318 Numeric s_v = 1.0 + s1_v + s2_v;
321 a3 *
pow(theta, 3) +
a2 *
pow(theta, 2) +
a1 * theta + a0;
322 emiss_scal_v[i] = s_v * emtheta_v;
324 Numeric s1_h = (theta - 53.0) / -53.0 * (e0 -
b0) /
b0;
326 Numeric s2_h = theta / 53.0 * (eh[i] - em53_h) / em53_h;
327 Numeric s_h = 1.0 + s1_h + s2_h;
330 b3 *
pow(theta, 3) +
b2 *
pow(theta, 2) +
b1 * theta +
b0;
331 emiss_scal_h[i] = s_h * emtheta_h;
335 emiss_scal_h[0], emiss_scal_h[1], emiss_scal_h[2], freq, class2);
337 emiss_scal_v[0], emiss_scal_v[1], emiss_scal_v[2], freq, class2);
339 if (emiss_v < emiss_h) {
340 emiss_v = 0.5 * (emiss_v + emiss_h);
343 return std::make_pair(emiss_v, emiss_h);
347 os << ta.
name << std::endl;
356 0.11509, 0.091535, 0.34796, 0.10525, 0.16627, 0.24434,
357 0.29217, 0.23809, 0.28954, 0.17516, 0.19459, 0.28697,
358 0.10521, 0.12126, 0.30278, 0.18212, 0.19625, 0.14551,
359 -0.19202, 0.5411, 0.03739, 0.10292, 0.5486, -0.058937,
360 -0.022672, 0.44492, -0.058448, -0.33894, -0.17621, 0.14742};
363 0.61168, 0.59095, 0.7918, 0.60271, 0.69213, 0.62218, 0.32728, 0.34334,
364 0.37062, 0.51217, 0.4491, 0.50101, 0.48913, 0.41932, 0.29734, 0.64474,
365 0.30637, 0.031107, 1.0405, 0.17538, 1.3215, 0.61819, 0.31298, 1.7218,
366 0.87761, 0.47583, 1.2583, 1.0959, 0.92842, 0.51033};
369 0.26726, 0.32033, -0.14778, 0.28547, 0.13592, 0.13193, 0.37178, 0.41813,
370 0.33875, 0.30203, 0.35479, 0.20189, 0.40663, 0.47493, 0.40668, 0.14811,
371 0.52382, 0.86634, 0.14286, 0.27164, -0.37947, 0.2737, 0.12001, -0.67315,
372 0.13492, 0.065463, -0.19316, 0.24905, 0.25475, 0.34637};
375 0.9592599869E+00, 0.9565299749E+00, 0.9511899948E+00, 0.9560700059E+00,
376 0.9541199803E+00, 0.9483199716E+00, 0.9461100101E+00, 0.9439799786E+00,
377 0.9387800097E+00, 0.9317600131E+00, 0.9289000034E+00, 0.9236800075E+00,
378 0.9208700061E+00, 0.9190599918E+00, 0.9105200171E+00, 0.9162799716E+00,
379 0.8937299848E+00, 0.8014699817E+00, 0.9570500255E+00, 0.9213600159E+00,
380 0.7893999815E+00, 0.9639400244E+00, 0.9530599713E+00, 0.8850200176E+00,
381 0.9685299993E+00, 0.9622600079E+00, 0.9118800163E+00, 0.8997200131E+00,
382 0.9012699723E+00, 0.9107499719E+00};
385 0.3627802414E-07, -0.7778328204E-08, 0.4396108011E-07, 0.2503205394E-06,
386 0.1996262995E-06, 0.2929977541E-06, 0.4190530660E-06, 0.3655744649E-06,
387 0.3519195673E-06, 0.5574374313E-06, 0.5273076340E-06, 0.5376484182E-06,
388 0.1026844529E-05, 0.9679998811E-06, 0.8616486866E-06, 0.3180800832E-06,
389 0.2886778532E-06, 0.2310362675E-06, -0.1118036366E-06, -0.1502856577E-06,
390 0.4842232926E-07, -0.8410978580E-08, -0.3478669441E-07, 0.2209441590E-06,
391 0.2485776633E-06, 0.1800235907E-06, 0.2510202251E-06, 0.2687000915E-06,
392 0.1740325644E-06, 0.3562134339E-06};
395 0.3067140824E-05, 0.2520012231E-05, 0.4831396382E-05, 0.8213598448E-05,
396 0.7378375358E-05, 0.1022081960E-04, 0.1225889173E-04, 0.1165553113E-04,
397 0.1188659007E-04, 0.1693615741E-04, 0.1648317448E-04, 0.1715818144E-04,
398 0.2744720041E-04, 0.2642072104E-04, 0.2671847506E-04, 0.1349592094E-04,
399 0.1261523357E-04, 0.5447756394E-05, 0.2064244654E-05, 0.1919016057E-06,
400 0.5940860319E-06, 0.5334760772E-05, 0.4130339221E-05, 0.4104662821E-05,
401 0.6530796327E-05, 0.5727014013E-05, 0.7451782039E-05, 0.1071246970E-04,
402 0.9539280654E-05, 0.1034286015E-04};
405 -0.2004991551E-07, -0.6895366056E-07, -0.2047409282E-06, -0.7322448425E-07,
406 -0.1273002681E-06, -0.2729916844E-06, -0.9421125213E-07, -0.1683332300E-06,
407 -0.2726891637E-06, -0.1317753799E-06, -0.2107972250E-06, -0.3556060904E-06,
408 -0.1889465580E-06, -0.2757958271E-06, -0.4909850304E-06, 0.7339644004E-08,
409 -0.4058669560E-06, -0.4146343997E-06, 0.6170279931E-07, -0.1998567996E-06,
410 -0.4713119139E-07, -0.1361754887E-07, -0.1765622955E-06, -0.2348146637E-06,
411 -0.3901189061E-07, -0.1305666189E-06, -0.1533838798E-06, -.2679148992E-07,
412 -0.4441960044E-07, -0.1815613899E-06};
415 0.9592599869E+00, 0.9565299749E+00, 0.9511899948E+00, 0.9560700059E+00,
416 0.9541199803E+00, 0.9483199716E+00, 0.9461100101E+00, 0.9439799786E+00,
417 0.9387800097E+00, 0.9317600131E+00, 0.9289000034E+00, 0.9236800075E+00,
418 0.9208700061E+00, 0.9190599918E+00, 0.9105200171E+00, 0.9162799716E+00,
419 0.8937299848E+00, 0.8014699817E+00, 0.9570500255E+00, 0.9213600159E+00,
420 0.7893999815E+00, 0.9639400244E+00, 0.9530599713E+00, 0.8850200176E+00,
421 0.9685299993E+00, 0.9622600079E+00, 0.9118800163E+00, 0.8997200131E+00,
422 0.9012699723E+00, 0.9107499719E+00};
425 0.3626608347E-07, -0.7786279177E-08, 0.4393379172E-07, 0.2502746099E-06,
426 0.1995944388E-06, 0.2929554341E-06, 0.4189516289E-06, 0.3655020180E-06,
427 0.3518483140E-06, 0.5572838404E-06, 0.5271903092E-06, 0.5375342766E-06,
428 0.1026605219E-05, 0.9677979733E-06, 0.8614680951E-06, 0.3179358714E-06,
429 0.2884899004E-06, 0.2308632219E-06, -0.1118781370E-06, -0.1503948681E-06,
430 0.4834672396E-07, -0.8455684153E-08, -0.3485171618E-07, 0.2208606134E-06,
431 0.2485595019E-06, 0.1799959364E-06, 0.2509846695E-06, 0.2686167306E-06,
432 0.1739760478E-06, 0.3561317214E-06};
435 0.3065537157E-05, 0.2518960400E-05, 0.4829731552E-05, 0.8209894986E-05,
436 0.7375769655E-05, 0.1021809931E-04, 0.1225203869E-04, 0.1165053800E-04,
437 0.1188218721E-04, 0.1692612022E-04, 0.1647546378E-04, 0.1715117833E-04,
438 0.2743142431E-04, 0.2640772436E-04, 0.2670711910E-04, 0.1348545720E-04,
439 0.1260529825E-04, 0.5439695997E-05, 0.2058213340E-05, 0.1860650656E-06,
440 0.5898303925E-06, 0.5330772183E-05, 0.4126528893E-05, 0.4100859314E-05,
441 0.6528573977E-05, 0.5725009032E-05, 0.7449450095E-05, 0.1070590315E-04,
442 0.9534271157E-05, 0.1033751869E-04};
445 -0.1370247134E-06, -0.1436897747E-06, -0.2954870411E-06, -0.3118435643E-06,
446 -0.2916583242E-06, -0.4311032171E-06, -0.5048401022E-06, -0.4662823869E-06,
447 -0.5206445053E-06, -0.7210980471E-06, -0.6662896794E-06, -0.7548637200E-06,
448 -0.1110204039E-05, -0.1030801400E-05, -0.1140921199E-05, -0.6330818110E-06,
449 -0.9186441048E-06, -0.7947813856E-06, -0.3242539890E-06, -0.5027602583E-06,
450 -0.2777987334E-06, -0.2747250676E-06, -0.3811997260E-06, -0.4102405455E-06,
451 -0.1994112324E-06, -0.2555484855E-06, -0.2842682534E-06, -0.4413041665E-06,
452 -0.3717419474E-06, -0.4975536854E-06};
455 0.62, 0.37, 0.46, 0.63};
457 0.30, 0.60, 0.47, 0.35};