NASA Logo
Ocean Color Science Software

ocssw V2022
prodgen.c
Go to the documentation of this file.
1 /* =========================================================== */
2 /* Module prodgen.c */
3 /* */
4 /* Function prodgen returns a pointer to the geophysical */
5 /* product associated with the input product catalog entry and */
6 /* the input level-2 record. The specific product will be */
7 /* extracted from the level-2 record or computed using the */
8 /* information in the level-2 record and knowledge of the */
9 /* required algorithm to be called. The output is stored in */
10 /* a static array, and a pointer is returned to the caller. */
11 /* */
12 /* Written By: */
13 /* Bryan A. Franz, NASA/OBPG, August 2008. */
14 /* =========================================================== */
15 
16 #include "l12_proto.h"
17 
18 #include <stdint.h>
19 #include <inttypes.h>
20 
21 static int32 numScans;
22 static int32 numPixels;
23 static int32 numBands;
24 static int32 numBandsIR;
25 
26 
27 /* ----------------------------------------------------------- */
28 /* extract_band() - extracts a product from a BIL array */
29 
30 /* ----------------------------------------------------------- */
31 VOIDP extract_band(float *fbuf, l2prodstr *p, int32 nbands) {
32  static float32 *fbuf2 = NULL;
33 
34  int32 band = MIN(MAX(p->prod_ix, 0), nbands - 1);
35  static int32 npix = 0;
36  int32 ip;
37 
38  if (fbuf2 == NULL) {
39  npix = p->dim[1];
40  if ((fbuf2 = calloc(npix, sizeof (float32))) == NULL) {
41  fprintf(stderr,
42  "-E- %s line %d: Unable to allocate buffer space.\n",
43  __FILE__, __LINE__);
44  exit(1);
45  }
46  } else if (npix != p->dim[1]) {
47  npix = p->dim[1];
48  free(fbuf2);
49  // this is put here for l3gen which varies the number of pixels on each line
50 
51  if ((fbuf2 = (float32 *) calloc(npix, sizeof (float32)))
52  == NULL) {
53  fprintf(stderr,
54  "-E- %s line %d: Unable to allocate buffer space.\n",
55  __FILE__, __LINE__);
56  exit(1);
57  }
58  }
59 
60  for (ip = 0; ip < npix && ip < numPixels; ip++) {
61  fbuf2[ip] = fbuf[ip * nbands + band];
62  }
63 
64  return ((VOIDP) fbuf2);
65 }
66 
67 float *extract_band_3d(float *in_buf, float *out_buf) {
68  float * out_ptr = out_buf;
69  for (int pix = 0; pix < numPixels; pix++) {
70  float *in_ptr = in_buf + pix * numBands;
71  for (int band_3d = 0; band_3d < input->nwavelengths_3d; band_3d++) {
72  int band = input->wavelength_3d_index[band_3d];
73  *out_ptr = in_ptr[band];
74  out_ptr++;
75  }
76  }
77  return out_buf;
78 }
87 void applyMultiplier(float* in, float* out, int count, float multiplier) {
88  int i;
89  for (i = 0; i < count; i++) {
90  if (in[i] == BAD_FLT)
91  out[i] = BAD_FLT;
92  else
93  out[i] = in[i] * multiplier;
94  }
95 }
96 
97 /* ----------------------------------------------------------- */
98 /* prodgen() - returns pointer the the requested product */
99 
100 /* ----------------------------------------------------------- */
101 VOIDP prodgen(l2prodstr *p, l2str *l2rec) {
102  static int firstCall = 1;
103 
104  static float32 *fbuf = NULL;
105 
106  VOIDP pbuf = NULL;
107 
108  if (firstCall) {
109  firstCall = 0;
110  numPixels = l2rec->l1rec->npix;
111  numScans = l2rec->l1rec->l1file->nscan;
112  numBands = l2rec->l1rec->l1file->nbands;
113  numBandsIR = l2rec->l1rec->l1file->nbandsir;
114  if ((fbuf = (float32 *) calloc(numBands*numPixels,sizeof(float32))) == NULL) {
115  fprintf(stderr,
116  "-E- %s line %d: Unable to allocate buffer space.\n",
117  __FILE__, __LINE__);
118  exit(1);
119  }
120  } else if (l2rec->l1rec->npix != numPixels) {
121 
122  // this is put here for l3gen which varies the number of pixels on each line
123  if (l2rec->l1rec->npix > numPixels) {
124 
125  free(fbuf);
126  if ((fbuf = (float32 *) calloc(l2rec->l1rec->npix, sizeof (float32)))
127  == NULL) {
128  fprintf(stderr,
129  "-E- %s line %d: Unable to allocate buffer space.\n",
130  __FILE__, __LINE__);
131  exit(1);
132  }
133 
134  }
135  numPixels = l2rec->l1rec->npix;
136  }
137 
138  l1str* l1rec = l2rec->l1rec;
139  switch (p->cat_ix) {
140 
141  //
142  // Band-dependent, precomputed products
143  //
144  case CAT_nLw:
145  if (p->rank == 3)
146  applyMultiplier(extract_band_3d(l2rec->nLw, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
147  else
148  applyMultiplier(extract_band(l2rec->nLw, p, numBands), fbuf, numPixels, 10.0);
149  pbuf = fbuf;
150  break;
151  case CAT_Lw:
152  if (p->rank == 3)
153  applyMultiplier(extract_band_3d(l2rec->Lw, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
154  else
155  applyMultiplier(extract_band(l2rec->Lw, p, numBands), fbuf, numPixels, 10.0);
156  pbuf = fbuf;
157  break;
158  case CAT_Rrs:
159  pbuf = p->rank == 3 ? extract_band_3d(l2rec->Rrs, fbuf) : extract_band(l2rec->Rrs, p, numBands);
160  break;
161  case CAT_Rrs_unc:
162  if(!input->proc_uncertainty) {
163  printf("-E- Can not produce product Rrs_unc without setting proc_uncertainty\n");
164  exit(EXIT_FAILURE);
165  }
166  pbuf = p->rank == 3 ? extract_band_3d(l2rec->Rrs_unc, fbuf) : extract_band(l2rec->Rrs_unc, p, numBands);
167  break;
168  case CAT_Taua:
169  pbuf = p->rank == 3 ? extract_band_3d(l2rec->taua, fbuf) : extract_band(l2rec->taua, p, numBands);
170  break;
171  case CAT_Lr:
172  if (p->rank == 3)
173  applyMultiplier(extract_band_3d(l1rec->Lr, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
174  else
175  applyMultiplier(extract_band(l1rec->Lr, p, numBands), fbuf, numPixels, 10.0);
176  pbuf = fbuf;
177  break;
178  case CAT_L_q:
179  if (p->rank == 3)
180  applyMultiplier(extract_band_3d(l1rec->L_q, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
181  else
182  applyMultiplier(extract_band(l1rec->L_q, p, numBands), fbuf, numPixels, 10.0);
183  pbuf = fbuf;
184  break;
185  case CAT_L_u:
186  if (p->rank == 3)
187  applyMultiplier(extract_band_3d(l1rec->L_u, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
188  else
189  applyMultiplier(extract_band(l1rec->L_u, p, numBands), fbuf, numPixels, 10.0);
190  pbuf = fbuf;
191  break;
192  case CAT_polcor:
193  pbuf = p->rank == 3 ? extract_band_3d(l1rec->polcor, fbuf) : extract_band(l1rec->polcor, p, numBands);
194  break;
195  case CAT_La:
196  if (p->rank == 3)
197  applyMultiplier(extract_band_3d(l2rec->La, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
198  else
199  applyMultiplier(extract_band(l2rec->La, p, numBands), fbuf, numPixels, 10.0);
200  pbuf = fbuf;
201  break;
202  case CAT_TLg:
203  if (p->rank == 3)
204  applyMultiplier(extract_band_3d(l1rec->TLg, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
205  else
206  applyMultiplier(extract_band(l1rec->TLg, p, numBands), fbuf, numPixels, 10.0);
207  pbuf = fbuf;
208  break;
209  case CAT_tLf:
210  if (p->rank == 3)
211  applyMultiplier(extract_band_3d(l1rec->tLf, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
212  else
213  applyMultiplier(extract_band(l1rec->tLf, p, numBands), fbuf, numPixels, 10.0);
214  pbuf = fbuf;
215  break;
216  case CAT_brdf:
217  pbuf = p->rank == 3 ? extract_band_3d(l2rec->brdf, fbuf) : extract_band(l2rec->brdf, p, numBands);
218  break;
219  case CAT_Lt:
220  if (p->rank == 3) {
221  applyMultiplier(extract_band_3d(l1rec->Lt, fbuf), fbuf, numPixels * input->nwavelengths_3d, 10.0);
222  pbuf = fbuf;
223  } else {
224  if (p->prod_ix < numBands) {
225  applyMultiplier(extract_band(l2rec->l1rec->Lt, p, numBands), fbuf, numPixels, 10.0);
226  pbuf = fbuf;
227  } else {
228  // first subtract the num of visible bands
229  p->prod_ix -= numBands;
230  applyMultiplier(extract_band(l1rec->Ltir, p, NBANDSIR), fbuf, numPixels, 10.0);
231  pbuf = fbuf;
232  p->prod_ix += numBands;
233  }
234  }
235  break;
236  case CAT_BT:
237  // first subtract the num of visible bands
238  p->prod_ix -= numBands;
239  pbuf = extract_band(l1rec->Bt, p, NBANDSIR);
240  p->prod_ix += numBands;
241  break;
242  case CAT_rhos:
243  pbuf = p->rank == 3 ? extract_band_3d(l1rec->rhos, fbuf) : extract_band(l1rec->rhos, p, numBands);
244  break;
245  case CAT_nw:
246  pbuf = extract_band(l1rec->sw_n, p, numBands);
247  break;
248  case CAT_aw:
249  pbuf = extract_band(l1rec->sw_a, p, numBands);
250  break;
251  case CAT_bbw:
252  pbuf = extract_band(l1rec->sw_bb, p, numBands);
253  break;
254  case CAT_bbws:
255  get_bbws(l2rec, p, fbuf);
256  pbuf = (VOIDP) fbuf;
257  break;
258  case CAT_a:
259  pbuf = p->rank == 3 ? extract_band_3d(l2rec->a, fbuf) : extract_band(l2rec->a, p, numBands);
260  break;
261  case CAT_bb:
262  pbuf = p->rank == 3 ? extract_band_3d(l2rec->bb, fbuf) : extract_band(l2rec->bb, p, numBands);
263  break;
264  case CAT_t_sol:
265  pbuf = p->rank == 3 ? extract_band_3d(l1rec->t_sol, fbuf) : extract_band(l1rec->t_sol, p, numBands);
266  break;
267  case CAT_t_sen:
268  pbuf = p->rank == 3 ? extract_band_3d(l1rec->t_sen, fbuf) : extract_band(l1rec->t_sen, p, numBands);
269  break;
270  case CAT_tg_sol:
271  pbuf = p->rank == 3 ? extract_band_3d(l1rec->tg_sol, fbuf) : extract_band(l1rec->tg_sol, p, numBands);
272  break;
273  case CAT_tg_sen:
274  pbuf = p->rank == 3 ? extract_band_3d(l1rec->tg_sen, fbuf) : extract_band(l1rec->tg_sen, p, numBands);
275  break;
276  case CAT_t_h2o:
277  pbuf = p->rank == 3 ? extract_band_3d(l1rec->t_h2o, fbuf) : extract_band(l1rec->t_h2o, p, numBands);
278  break;
279  case CAT_t_o2:
280  pbuf = p->rank == 3 ? extract_band_3d(l1rec->t_o2, fbuf) : extract_band(l1rec->t_o2, p, numBands);
281  break;
282  case CAT_dpol:
283  pbuf = p->rank == 3 ? extract_band_3d(l1rec->dpol, fbuf) : extract_band(l1rec->dpol, p, numBands);
284  break;
285  case CAT_BT_39:
286  pbuf = extract_band(l1rec->Bt, p, NBANDSIR);
287  break;
288  case CAT_BT_40:
289  pbuf = extract_band(l1rec->Bt, p, NBANDSIR);
290  break;
291  case CAT_BT_11:
292  pbuf = extract_band(l1rec->Bt, p, NBANDSIR);
293  break;
294  case CAT_BT_12:
295  pbuf = extract_band(l1rec->Bt, p, NBANDSIR);
296  break;
297  //
298  // Band independent or dependent, precomputed products
299  // for the view angles and related values
300  //
301  case CAT_senz:
302  case CAT_solz:
303  case CAT_sola:
304  case CAT_sena:
305  case CAT_relaz:
306  case CAT_scattang:
307  if ((p->prod_ix >= 0) && (l1rec->geom_per_band == NULL)) {
308  fprintf(stderr,
309  "-E- %s, %d: Geometry-dependent view angle information",
310  __FILE__, __LINE__);
311  fprintf(stderr, " is unavailable for product catalog ID %d.\n",
312  p->cat_ix);
313  fprintf(stderr, "or, geometry-dependent view angle information was specifically not requested\n");
314  exit(1);
315  }
316  switch (p->cat_ix) {
317  case CAT_senz:
318  if (p->prod_ix < 0) {
319  pbuf = (VOIDP) l1rec->senz;
320  } else {
321  pbuf = extract_band(l1rec->geom_per_band->senz, p, numBands);
322  }
323  break;
324  case CAT_solz:
325  if (p->prod_ix < 0) {
326  pbuf = (VOIDP) l1rec->solz;
327  } else {
328  pbuf = extract_band(l1rec->geom_per_band->solz, p, numBands);
329  }
330  break;
331  case CAT_sena:
332  if (p->prod_ix < 0) {
333  pbuf = (VOIDP) l1rec->sena;
334  } else {
335  pbuf = extract_band(l1rec->geom_per_band->sena, p, numBands);
336  }
337  break;
338  case CAT_sola:
339  if (p->prod_ix < 0) {
340  pbuf = (VOIDP) l1rec->sola;
341  } else {
342  pbuf = extract_band(l1rec->geom_per_band->sola, p, numBands);
343  }
344  break;
345  case CAT_relaz:
346  if (p->prod_ix < 0) {
347  pbuf = (VOIDP) l1rec->delphi;
348  } else {
349  pbuf = extract_band(l1rec->geom_per_band->delphi, p, numBands);
350  }
351  break;
352  case CAT_scattang:
353  if (p->prod_ix < 0) {
354  pbuf = (VOIDP) l1rec->scattang;
355  } else {
356  pbuf = extract_band(l1rec->geom_per_band->scattang, p, numBands);
357  }
358  break;
359  }
360  break;
361 
362  //
363  // Band independent, precomputed products
364  //
365  case CAT_epsilon:
366  pbuf = (VOIDP) l2rec->eps;
367  break;
368  case CAT_chisqr_mbac:
369  pbuf = (VOIDP) l2rec->chi2;
370  break;
371  case CAT_alpha:
372  pbuf = (VOIDP) l1rec->alpha;
373  break;
374  case CAT_ozone:
375  pbuf = (VOIDP) l1rec->oz;
376  break;
377  case CAT_no2_tropo:
378  pbuf = (VOIDP) l1rec->no2_tropo;
379  break;
380  case CAT_no2_strat:
381  pbuf = (VOIDP) l1rec->no2_strat;
382  break;
383  case CAT_no2_frac:
384  pbuf = (VOIDP) l1rec->no2_frac;
385  break;
386  case CAT_windspeed:
387  pbuf = (VOIDP) l1rec->ws;
388  break;
389  case CAT_windangle:
390  pbuf = (VOIDP) l1rec->wd;
391  break;
392  case CAT_zwind:
393  pbuf = (VOIDP) l1rec->zw;
394  break;
395  case CAT_mwind:
396  pbuf = (VOIDP) l1rec->mw;
397  break;
398  case CAT_pressure:
399  pbuf = (VOIDP) l1rec->pr;
400  break;
401  case CAT_water_vapor:
402  pbuf = (VOIDP) l1rec->wv;
403  break;
404  case CAT_humidity:
405  pbuf = (VOIDP) l1rec->rh;
406  break;
407  case CAT_sfc_pressure:
408  pbuf = (VOIDP) l1rec->sfcp;
409  break;
410  case CAT_sfc_humidity:
411  pbuf = (VOIDP) l1rec->sfcrh;
412  break;
413  case CAT_sfc_temp:
414  pbuf = (VOIDP) l1rec->sfct;
415  break;
416  case CAT_T_prof:
417  case CAT_RH_prof:
418  case CAT_HGT_prof:
419  case CAT_Q_prof:
420  case CAT_O3_prof:
421  if( p->rank == 3 ) {
422  switch (p->cat_ix) {
423  case CAT_T_prof:
424  pbuf = (VOIDP) l1rec->anc_add->prof_temp;
425  break;
426  case CAT_RH_prof:
427  pbuf = (VOIDP) l1rec->anc_add->prof_rh;
428  break;
429  case CAT_HGT_prof:
430  pbuf = (VOIDP) l1rec->anc_add->prof_height;
431  break;
432  case CAT_Q_prof:
433  pbuf = (VOIDP) l1rec->anc_add->prof_q;
434  break;
435  case CAT_O3_prof:
436  pbuf = (VOIDP) l1rec->anc_add->prof_o3;
437  break;
438  }
439  } else {
440  fprintf( stderr,
441  "-I- %s %d: Single-level profile output not implemented yet\n",
442  __FILE__, __LINE__ );
443  }
444  break;
445  case CAT_height:
446  pbuf = (VOIDP) l1rec->height;
447  break;
448  case CAT_sstref:
449  pbuf = (VOIDP) l1rec->sstref;
450  break;
451  case CAT_sssref:
452  pbuf = (VOIDP) l1rec->sssref;
453  break;
454  case CAT_glint_coef:
455  pbuf = (VOIDP) l1rec->glint_coef;
456  break;
457  case CAT_cloud_albedo:
458  pbuf = (VOIDP) l1rec->cloud_albedo;
459  break;
460  case CAT_rho_cirrus:
461  pbuf = (VOIDP) l1rec->rho_cirrus;
462  break;
463  case CAT_aerindex:
464  pbuf = (VOIDP) l2rec->aerindex;
465  break;
466  case CAT_aer_ratio:
467  if (p->prod_ix == 1)
468  pbuf = (VOIDP) l2rec->aerratio;
469  else
470  pbuf = (VOIDP) l2rec->aerratio2;
471  break;
472 
473  //
474  // Integer, precomputed products
475  //
476  case CAT_l2_flags:
477  pbuf = (VOIDP) l2rec->l1rec->flags;
478  break;
479  case CAT_num_iter:
480  pbuf = (VOIDP) l2rec->num_iter;
481  break;
482  case CAT_slot:
483  pbuf = (VOIDP) l2rec->l1rec->slot;
484  break;
485  case CAT_aer_model:
486  switch (p->prod_ix) {
487  case 1:
488  pbuf = l2rec->aermodmin;
489  break;
490  case 2:
491  pbuf = l2rec->aermodmax;
492  break;
493  case 3:
494  pbuf = l2rec->aermodmin2;
495  break;
496  case 4:
497  pbuf = l2rec->aermodmax2;
498  break;
499  }
500  break;
501 
502  //
503  // 1-dimensional, precomputed products
504  //
505  case CAT_fsol:
506  pbuf = (VOIDP) & l1rec->fsol;
507  break;
508  case CAT_pixnum:
509  pbuf = (VOIDP) l1rec->pixnum;
510  break;
511  case CAT_detnum:
512  pbuf = (VOIDP) & l1rec->detnum;
513  break;
514  case CAT_mside:
515  pbuf = (VOIDP) & l1rec->mside;
516  break;
517 
518  //
519  // Derived products
520  //
521  case CAT_angstrom:
522  get_angstrom(l2rec, p->prod_ix, fbuf);
523  pbuf = (VOIDP) fbuf;
524  break;
525  case CAT_ms_epsilon:
526  get_ms_epsilon(l2rec, fbuf);
527  pbuf = (VOIDP) fbuf;
528  break;
529  case CAT_Es:
530  get_es(l2rec, p->prod_ix, fbuf);
531  pbuf = (VOIDP) fbuf;
532  break;
533  case CAT_rhot:
534  get_toa_refl(l2rec, p->prod_ix, fbuf);
535  pbuf = (VOIDP) fbuf;
536  break;
537  case CAT_rhom:
538  get_rho_mumm(l2rec, -1, p->prod_ix, fbuf);
539  pbuf = (VOIDP) fbuf;
540  break;
541  case CAT_depth_class:
542  get_depth_classification(l2rec, fbuf);
543  pbuf = (VOIDP) fbuf;
544  break;
545  case CAT_fqy:
546  get_fqy(l2rec, fbuf);
547  pbuf = (VOIDP) fbuf;
548  break;
549  case CAT_fsat:
550  get_fsat(l2rec, fbuf);
551  applyMultiplier(fbuf, fbuf, numPixels, 10.0);
552  pbuf = (VOIDP) fbuf;
553  break;
554  case CAT_ipar:
555  get_ipar(l2rec, fbuf);
556  pbuf = (VOIDP) fbuf;
557  break;
558  case CAT_par_scalar:
559  get_par_scalar(l2rec, fbuf);
560  pbuf = (VOIDP) fbuf;
561  break;
562  case CAT_mu_0:
563  get_mu_cosine(l2rec, fbuf);
564  pbuf = (VOIDP) fbuf;
565  break;
567  get_par_below_surface(l2rec, fbuf);
568  pbuf = (VOIDP) fbuf;
569  break;
570  case CAT_BSi:
571  get_bsi(l2rec, fbuf);
572  pbuf = (VOIDP) fbuf;
573  break;
574  case CAT_Kd_mueller:
575  case CAT_Kd_532:
576  case CAT_Kd_obpg:
577  case CAT_Kd_lee:
578  case CAT_Kd_unc_lee:
579  case CAT_Kd_morel:
580  case CAT_Kd_KD2:
581  case CAT_Kd_unc_KD2:
582  case CAT_KPAR_morel:
583  case CAT_KPAR_lee:
584  case CAT_Zhl_morel:
585  case CAT_Kd_jamet:
586  case CAT_Kd_rhos:
587  case CAT_nKd_lin:
588  get_Kd(l2rec, p, fbuf);
589  pbuf = (VOIDP) fbuf;
590  break;
591  case CAT_Zphotic_lee:
592  case CAT_Zeu_morel:
593  case CAT_Zsd_morel:
594  case CAT_Zsd_gbr:
595  get_photic_depth(l2rec, p, fbuf);
596  pbuf = (VOIDP) fbuf;
597  break;
598  case CAT_tindx_morel:
599  tindx_morel(l2rec, -1, fbuf);
600  pbuf = (VOIDP) fbuf;
601  break;
602  case CAT_tindx_shi:
603  tindx_shi(l2rec, -1, fbuf);
604  pbuf = (VOIDP) fbuf;
605  break;
606  case CAT_iCDOM_morel:
607  case CAT_pCDOM_morel:
608  case CAT_adg_morel:
609  case CAT_chl_morel:
611  get_cdom_morel(l2rec, p, fbuf);
612  pbuf = (VOIDP) fbuf;
613  break;
614  case CAT_owt:
615  case CAT_owtn:
616  case CAT_chl_owterr:
617  optical_water_type(l2rec, p, fbuf);
618  pbuf = (VOIDP) fbuf;
619  break;
620  case CAT_owtd:
621  optical_water_type(l2rec, p, fbuf);
622  pbuf = (VOIDP) fbuf;
623  break;
624  case CAT_ndvi:
625  case CAT_evi:
626  case CAT_evi2:
627  case CAT_evi3:
628  get_ndvi_evi(l1rec, p->cat_ix, fbuf);
629  pbuf = (VOIDP) fbuf;
630  break;
631  case CAT_smoke:
632  get_smoke(l2rec, fbuf);
633  pbuf = (VOIDP) fbuf;
634  break;
635  case CAT_par:
636  get_par(l2rec, fbuf);
637  pbuf = (VOIDP) fbuf;
638  break;
639  case CAT_par2:
640  get_par2(l2rec, fbuf);
641  pbuf = (VOIDP) fbuf;
642  break;
643  case CAT_taucld:
644  get_taucld(l2rec,fbuf);
645  pbuf = (VOIDP) fbuf;
646  break;
647  case CAT_clfr:
648  get_clfr(l2rec,fbuf);
649  pbuf = (VOIDP) fbuf;
650  break;
651  case CAT_ipar2:
652  get_ipar2(l2rec,fbuf);
653  pbuf = (VOIDP) fbuf;
654  break;
656  get_ipar_below_surface(l2rec,fbuf);
657  pbuf = (VOIDP) fbuf;
658  break;
659  case CAT_ipar_scalar:
660  get_ipar_scalar(l2rec,fbuf);
661  pbuf = (VOIDP) fbuf;
662  break;
663  case CAT_chl_oc2:
664  case CAT_chl_oc3:
665  case CAT_chl_oc3c:
666  case CAT_chl_oc4:
667  case CAT_chl_hu:
668  case CAT_chl_oci:
669  case CAT_chl_oci2:
670  case CAT_chl_cdr:
671  case CAT_chl_abi:
672  get_chl(l2rec, p->cat_ix, fbuf);
673  pbuf = (VOIDP) fbuf;
674  break;
675  case CAT_chl_unc:
676  pbuf=l2rec->chl_unc;
677  break;
678  case CAT_chl_mgiop:
679  case CAT_bbp_mgiop:
680  case CAT_adg_mgiop:
681  case CAT_aph_mgiop:
682  case CAT_npix_mgiop:
683  case CAT_crat_mgiop:
684  case CAT_fitpar_mgiop:
685  get_mgiop(l2rec, p, fbuf);
686  pbuf = (VOIDP) fbuf;
687  break;
688  case CAT_a_pml:
689  case CAT_aph_pml:
690  case CAT_adg_pml:
691  case CAT_bb_pml:
692  case CAT_bbp_pml:
693  get_pml(l2rec, p, fbuf);
694  pbuf = (VOIDP) fbuf;
695  break;
696  case CAT_a_qaa:
697  case CAT_aph_qaa:
698  case CAT_adg_qaa:
699  case CAT_bb_qaa:
700  case CAT_bbp_qaa:
701  case CAT_mod_rrs_qaa:
702  get_qaa(l2rec, p, fbuf);
703  pbuf = (VOIDP) fbuf;
704  break;
705  case CAT_flags_qaa:
706  pbuf = (VOIDP) get_flags_qaa(l2rec);
707  break;
708  case CAT_chl_carder:
709  case CAT_a_carder:
710  case CAT_bb_carder:
711  case CAT_aph_carder:
712  case CAT_adg_carder:
713  case CAT_bbp_carder:
714  get_carder(l2rec, p, fbuf);
715  pbuf = (VOIDP) fbuf;
716  break;
717  case CAT_chl_carder_emp:
718  chl_carder_empirical(l2rec, fbuf);
719  pbuf = (VOIDP) fbuf;
720  break;
721  case CAT_flags_carder:
722  pbuf = (VOIDP) get_flags_carder(l2rec);
723  break;
724  case CAT_flags_giop:
725  pbuf = (VOIDP) get_flags_giop(l2rec);
726  break;
727  case CAT_iter_giop:
728  pbuf = (VOIDP) get_iter_giop(l2rec);
729  break;
730  case CAT_chl_giop:
731  case CAT_a_giop:
732  case CAT_bb_giop:
733  case CAT_aph_giop:
734  case CAT_adg_giop:
735  case CAT_bbp_giop:
736  case CAT_chl_unc_giop:
737  case CAT_a_unc_giop:
738  case CAT_bb_unc_giop:
739  case CAT_aph_unc_giop:
740  case CAT_adg_unc_giop:
741  case CAT_bbp_unc_giop:
742  case CAT_aphs_giop:
743  case CAT_adgs_giop:
744  case CAT_bbps_giop:
745  case CAT_rrsdiff_giop:
746  case CAT_mRrs_giop:
747  case CAT_chisqr_giop:
748  case CAT_fitpar_giop:
749  case CAT_acdom_giop:
750  case CAT_anap_giop:
751  case CAT_bbph_giop:
752  case CAT_bbnap_giop:
753  case CAT_acdom_unc_giop:
754  case CAT_anap_unc_giop:
755  case CAT_bbph_unc_giop:
756  case CAT_bbnap_unc_giop:
757  case CAT_opt_siop_giop:
758  get_giop(l2rec, p, fbuf);
759  pbuf = (VOIDP) fbuf;
760  break;
761  case CAT_iter_gsm:
762  pbuf = (VOIDP) get_iter_gsm(l2rec);
763  break;
764  case CAT_chl_gsm:
765  case CAT_a_gsm:
766  case CAT_bb_gsm:
767  case CAT_aph_gsm:
768  case CAT_adg_gsm:
769  case CAT_bbp_gsm:
770  get_gsm(l2rec, p, fbuf);
771  pbuf = (VOIDP) fbuf;
772  break;
773  case CAT_a_las:
774  case CAT_b_las:
775  case CAT_c_las:
776  case CAT_bb_las:
777  case CAT_bbp_las:
778  case CAT_bbps_las:
779  get_las(l2rec, p, fbuf);
780  pbuf = (VOIDP) fbuf;
781  break;
782  case CAT_a_niwa:
783  case CAT_bb_niwa:
784  get_niwa(l2rec, p, fbuf);
785  pbuf = (VOIDP) fbuf;
786  break;
787  case CAT_flags_niwa:
788  pbuf = (VOIDP) get_flags_niwa(l2rec);
789  break;
790 // case CAT_chl_soa:
791 // case CAT_adg_soa:
792 // case CAT_bbp_soa:
793 // case CAT_pcentcdm_soa:
794 // case CAT_w0_soa:
795 // case CAT_v_soa:
796 // get_soa(l2rec, p->cat_ix, fbuf);
797 // pbuf = (VOIDP) fbuf;
798 // break;
799 // case CAT_chl_sma:
800 // case CAT_adg_sma:
801 // case CAT_bbp_sma:
802 // case CAT_w0_sma:
803 // case CAT_dom_sma:
804 // get_sma(l2rec, p->cat_ix, fbuf);
805 // pbuf = (VOIDP) fbuf;
806 // break;
810  get_poc(l2rec, p, fbuf);
811  pbuf = (VOIDP) fbuf;
812  break;
813  case CAT_ag_412_mlrc:
814  case CAT_Sg_275_295_mlrc:
815  case CAT_Sg_300_600_mlrc:
816  cdom_mannino(l2rec, p->cat_ix, fbuf);
817  pbuf = (VOIDP) fbuf;
818  break;
819  case CAT_calcite:
820  case CAT_calcite_2b:
821  case CAT_calcite_3b:
822  case CAT_calcite_ci2:
823  case CAT_calcite_ci748:
824  case CAT_calcite_ci869:
825  calcite(l2rec, p, fbuf);
826  pbuf = (VOIDP) fbuf;
827  break;
828  case CAT_Rrs_vc:
829  if (input->band_shift_opt == 1)
830  bioOptBandShift(l2rec, p, fbuf);
831  else
832  virtual_constellation(l2rec, p, fbuf);
833  pbuf = (VOIDP) fbuf;
834  break;
835  case CAT_chl_vc:
836  virtual_constellation(l2rec, p, fbuf);
837  pbuf = (VOIDP) fbuf;
838  break;
839  case CAT_sst:
840  pbuf = (VOIDP) get_sst(l2rec);
841  break;
842  case CAT_sst4:
843  pbuf = (VOIDP) get_sst4(l2rec);
844  break;
845  case CAT_sst3:
846  pbuf = (VOIDP) get_sst_triple(l2rec);
847  break;
848  case CAT_dsdi:
849  pbuf = (VOIDP) get_sst_dust_correction(l2rec);
850  break;
851  case CAT_bias_sst:
852  pbuf = (VOIDP) get_bias_sst(l2rec);
853  break;
854  case CAT_bias_sst4:
855  pbuf = (VOIDP) get_bias_sst4(l2rec);
856  break;
857  case CAT_bias_sst3:
858  pbuf = (VOIDP) get_bias_sst_triple(l2rec);
859  break;
860  case CAT_bias_mean_sst:
861  pbuf = (VOIDP) get_bias_mean_sst(l2rec);
862  break;
863  case CAT_bias_mean_sst4:
864  pbuf = (VOIDP) get_bias_mean_sst4(l2rec);
865  break;
866  case CAT_bias_mean_sst3:
867  pbuf = (VOIDP) get_bias_mean_sst_triple(l2rec);
868  break;
869  case CAT_counts_sst:
870  pbuf = (VOIDP) get_counts_sst(l2rec);
871  break;
872  case CAT_counts_sst4:
873  pbuf = (VOIDP) get_counts_sst4(l2rec);
874  break;
875  case CAT_counts_sst3:
876  pbuf = (VOIDP) get_counts_sst_triple(l2rec);
877  break;
878  case CAT_stdv_sst:
879  pbuf = (VOIDP) get_stdv_sst(l2rec);
880  break;
881  case CAT_stdv_sst4:
882  pbuf = (VOIDP) get_stdv_sst4(l2rec);
883  break;
884  case CAT_stdv_sst3:
885  pbuf = (VOIDP) get_stdv_sst_triple(l2rec);
886  break;
887  case CAT_flags_sst:
888  pbuf = (VOIDP) get_flags_sst(l2rec);
889  break;
890  case CAT_flags_sst4:
891  pbuf = (VOIDP) get_flags_sst4(l2rec);
892  break;
893  case CAT_flags_sst3:
894  pbuf = (VOIDP) get_flags_sst_triple(l2rec);
895  break;
896  case CAT_qual_sst:
897  pbuf = (VOIDP) get_qual_sst(l2rec);
898  break;
899  case CAT_qual_sst4:
900  pbuf = (VOIDP) get_qual_sst4(l2rec);
901  break;
902  case CAT_qual_sst3:
903  pbuf = (VOIDP) get_qual_sst_triple(l2rec);
904  break;
905  case CAT_vLt:
906  case CAT_vtLw:
907  case CAT_vLw:
908  case CAT_vnLw:
909  vcal(l2rec, p, fbuf);
910  applyMultiplier(fbuf, fbuf, numPixels, 10.0);
911  pbuf = (VOIDP) fbuf;
912  break;
913  case CAT_vgain:
914  case CAT_vbsat:
915  case CAT_vbtgt:
916  vcal(l2rec, p, fbuf);
917  pbuf = (VOIDP) fbuf;
918  break;
919  case CAT_ice_frac:
920  get_ice_frac(l2rec, fbuf);
921  pbuf = (VOIDP) fbuf;
922  break;
923  case CAT_class_ward_owmc:
924  pbuf = get_class_ward_owmc(l2rec);
925  break;
926  case CAT_class_k_owmc:
927  pbuf = get_class_k_owmc(l2rec);
928  break;
930  pbuf = get_class_34k_w_owmc(l2rec);
931  break;
932  case CAT_a_swim:
933  case CAT_bb_swim:
934  case CAT_adg_swim:
935  case CAT_aph_swim:
936  case CAT_bbp_swim:
937  get_swim(l2rec, p, fbuf);
938  pbuf = (VOIDP) fbuf;
939  break;
940  case CAT_elev:
941  pbuf = (VOIDP) l1rec->dem;
942  break;
944  case CAT_diatoms_hirata:
953  get_pft_hirata(l2rec, p, fbuf);
954  pbuf = (VOIDP) fbuf;
955  break;
959  get_pft_uitz(l2rec, p, fbuf);
960  pbuf = (VOIDP) fbuf;
961  break;
962  case CAT_npp_vgpm:
963  case CAT_npp_eppley:
964  case CAT_npp_cbpm2:
965  case CAT_npp_mld:
966  case CAT_npp_zno3:
967  case CAT_npp_bbp:
968  case CAT_npp_par:
969  case CAT_npp_cafe:
970  get_npp(l2rec, p->cat_ix, fbuf);
971  pbuf = (VOIDP) fbuf;
972  break;
973  case CAT_CI_stumpf:
974  case CAT_CI_cyano:
975  case CAT_CI_noncyano:
976  case CAT_MCI_stumpf:
977  get_habs_ci(l2rec, p, fbuf);
978  pbuf = (VOIDP) fbuf;
979  break;
980  case CAT_MPH_chl:
981  get_habs_mph(l2rec, p, fbuf);
982  pbuf = (VOIDP) fbuf;
983  break;
984  case CAT_flags_habs_mph:
985  pbuf = (VOIDP) get_flags_habs_mph(l2rec);
986  break;
987  case CAT_flags_habs:
988  pbuf = (VOIDP) get_flags_habs(l2rec);
989  break;
990 
1000  get_psd_ksm(l2rec, p, fbuf);
1001  pbuf = (VOIDP) fbuf;
1002  break;
1003 
1004  case CAT_nitrate:
1005  get_nitrate(l2rec,p,fbuf);
1006  pbuf = (VOIDP) fbuf;
1007  break;
1008  case CAT_avw:
1009  get_avw(l2rec,fbuf);
1010  pbuf=(VOIDP) fbuf;
1011  break;
1012  case CAT_Rrs_brightness:
1013  get_Rrs_brightness(l2rec,fbuf);
1014  pbuf=(VOIDP) fbuf;
1015  break;
1016  case CAT_lambda_max:
1017  get_lambda_max(l2rec,fbuf);
1018  pbuf=(VOIDP) fbuf;
1019  break;
1020  case CAT_Cphyt:
1021  get_Cphyt(l2rec,fbuf);
1022  pbuf=(VOIDP) fbuf;
1023  break;
1024  case CAT_Cphyt_unc:
1025  get_Cphyt_unc(l2rec,fbuf);
1026  pbuf=(VOIDP) fbuf;
1027  break;
1028  case CAT_prochlorococcus:
1029  case CAT_synechococcus:
1031  get_Cpicophyt(l2rec,p,fbuf);
1032  pbuf=(VOIDP)fbuf;
1033  break;
1034 
1035  case CAT_iparb:
1036  case CAT_parb:
1037  get_bpar(l2rec,p,fbuf);
1038  pbuf = (VOIDP) fbuf;
1039  break;
1040 #ifdef BUILD_CLOUD
1041  /* Chimaera cloud products */
1042  case CAT_CER_2100:
1043  case CAT_CER_2200:
1044  case CAT_CER_1600:
1045  case CAT_COT_2100:
1046  case CAT_COT_2200:
1047  case CAT_COT_1600:
1048  case CAT_CER_1621:
1049  case CAT_COT_1621:
1050  case CAT_CWP_2100:
1051  case CAT_CWP_2200:
1052  case CAT_CWP_1621:
1053  case CAT_CWP_1600:
1054  case CAT_Cld_Top_Refl_650:
1055  case CAT_Cld_Top_Refl_860:
1056  case CAT_Cld_Top_Refl_1200:
1057  case CAT_Cld_Top_Refl_1600:
1058  case CAT_Cld_Top_Refl_2100:
1059  case CAT_Cld_Top_Refl_2200:
1060 
1061  case CAT_COT_fail_2100:
1062  case CAT_COT_fail_2200:
1063  case CAT_COT_fail_1600:
1064  case CAT_COT_fail_1621:
1065  case CAT_CER_fail_2100:
1066  case CAT_CER_fail_2200:
1067  case CAT_CER_fail_1600:
1068  case CAT_CER_fail_1621:
1069  case CAT_CMP_fail_pct_2100:
1070  case CAT_CMP_fail_pct_2200:
1071  case CAT_CMP_fail_pct_1600:
1072  case CAT_CMP_fail_pct_1621:
1073  case CAT_refl_loc_1600:
1074  case CAT_refl_loc_2100:
1075  case CAT_refl_loc_2200:
1076  case CAT_refl_loc_1621:
1077 /* initial albedo */
1084  get_cmp(l2rec, p->cat_ix, fbuf);
1085  pbuf = (VOIDP) fbuf;
1086  break;
1087  case CAT_Cld_Sfc_Type:
1088  case CAT_Cld_Phase_2100:
1089  case CAT_Cld_Phase_2200:
1090  case CAT_Cld_Non_Abs_Band:
1091  case CAT_Cld_Phase_1600:
1092  case CAT_Cld_Phase_1621:
1093  case CAT_Cld_water_cloud:
1094  case CAT_Cld_ice_cloud:
1095  pbuf = (VOIDP)get_cmp_byt( l2rec, p->cat_ix );
1096  break;
1097 #endif
1098 /* WDR cloud top height parameters, we just get the values from the record */
1099  case CAT_cth_alb_init:
1100  pbuf = (VOIDP) l1rec->cld_dat->cth_alb_init;
1101  break;
1102  case CAT_cth_alb_unc_init:
1103  pbuf = (VOIDP) l1rec->cld_dat->cth_alb_unc_init;
1104  break;
1105 /* WDR cloud top height parameters to be computed */
1106  case CAT_Cld_p:
1107  case CAT_Cld_t:
1108  case CAT_Cld_h:
1109  case CAT_cth_cod:
1110  case CAT_cth_alb:
1111  case CAT_cth_phase:
1112  case CAT_cth_cod_all:
1113  case CAT_cth_alb_all:
1114  case CAT_cth_lcod_all:
1115  case CAT_cth_cth_all:
1116  case CAT_cth_ctp_all:
1117  case CAT_cth_cost_all:
1118  case CAT_cth_acost_all:
1119  case CAT_cth_iter_all:
1120  case CAT_cth_cth_raw_all:
1121  case CAT_cth_ctt_all:
1122  case CAT_cth_lcod:
1123  case CAT_cth_cost:
1124  case CAT_cth_acost:
1125  case CAT_cth_iter:
1126  case CAT_cth_cth_raw:
1127  case CAT_cth_dcod_all:
1128  case CAT_cth_dlcod_all:
1129  case CAT_cth_dcth_all:
1130  case CAT_cth_dctp_all:
1131  case CAT_cth_dctt_all:
1132  case CAT_cth_dalb_all:
1133  case CAT_cth_dcod:
1134  case CAT_cth_dlcod:
1135  case CAT_cth_dcth:
1136  case CAT_cth_dctp:
1137  case CAT_cth_dctt:
1138  case CAT_cth_dalb:
1139  pbuf = (VOIDP) get_ctht_lin( l2rec, p->cat_ix );
1140  break;
1141  case CAT_ndii:
1142  get_ndii( l1rec, fbuf);
1143  pbuf = (VOIDP) fbuf;
1144  break;
1145  case CAT_ndwi:
1146  get_ndwi( l1rec, fbuf);
1147  pbuf = (VOIDP) fbuf;
1148  break;
1149  case CAT_ndsi:
1150  get_ndsi( l1rec, fbuf);
1151  pbuf = (VOIDP) fbuf;
1152  break;
1153  case CAT_cci :
1154  get_cci ( l1rec, fbuf);
1155  pbuf = (VOIDP) fbuf;
1156  break;
1157  // Hyperspectral vegetation indices
1158  case CAT_pri: // Photochemical Reflectance Index
1159  case CAT_cire: // Chlorophyll Index Red Edge
1160  case CAT_car: // Chlorophyll-Carotenoid Index
1161  case CAT_ari: // Anthocyanin Rreflectance Index
1162  get_hyper_vi ( l1rec, p->cat_ix, fbuf);
1163  pbuf = (VOIDP) fbuf;
1164  break;
1165 
1166  //SDP pigments products
1167  case CAT_tchl_sdp:
1168  case CAT_zea_sdp:
1169  case CAT_dvchla_sdp:
1170  case CAT_butfuco_sdp:
1171  case CAT_hexfuco_sdp:
1172  case CAT_allo_sdp:
1173  case CAT_mvchlb_sdp:
1174  case CAT_neo_sdp:
1175  case CAT_viola_sdp:
1176  case CAT_fuco_sdp:
1177  case CAT_chlc12_sdp:
1178  case CAT_chlc3_sdp:
1179  case CAT_perid_sdp:
1180  case CAT_flags_sdp:
1181  case CAT_mRrs_sdp:
1182  case CAT_mRrs_diff_sdp:
1183  case CAT_d2Rrs_diff_sdp:
1184  get_sdp(l2rec,p,fbuf);
1185  pbuf=(VOIDP) fbuf;
1186  break;
1187 
1188 
1189  default:
1190  fprintf(stderr, "-E- %s Line %d: Unknown product catalogue ID %d.\n",
1191  __FILE__, __LINE__, p->cat_ix);
1192  exit(1);
1193  }
1194 
1195  return (pbuf);
1196 }
1197 
#define CAT_Taua
Definition: l2prod.h:10
#define CAT_chl_morel
Definition: l2prod.h:231
#define CAT_rhot
Definition: l2prod.h:56
#define CAT_senz
Definition: l2prod.h:20
int8_t * get_qual_sst_triple(l2str *l2rec)
Retrive Qual level for SST3.
Definition: sst.c:166
#define CAT_bb_gsm
Definition: l2prod.h:94
#define CAT_ms_epsilon
Definition: l2prod.h:235
#define CAT_chl_carder_emp
Definition: l2prod.h:159
#define CAT_stdv_sst4
Definition: l2prod.h:140
#define CAT_npp_vgpm
Definition: l2prod.h:316
#define CAT_hexfuco_sdp
Definition: l2prod.h:567
#define MAX(A, B)
Definition: swl0_utils.h:25
#define CAT_aw
Definition: l2prod.h:261
#define CAT_adgs_giop
Definition: l2prod.h:205
#define CAT_prochlorococcus_hirata
Definition: l2prod.h:296
void get_fqy(l2str *l2rec, float fqy[])
Definition: fluorescence.c:258
#define CAT_Surface_Albedo_2200
Definition: l2prod.h:478
#define MIN(x, y)
Definition: rice.h:169
#define CAT_Cld_Phase_2200
Definition: l2prod.h:476
#define CAT_Cld_Top_Refl_1600
Definition: l2prod.h:417
#define CAT_picoplankton_abundanceksm
Definition: l2prod.h:338
void get_habs_mph(l2str *l2rec, l2prodstr *p, float chl_mph[])
Definition: get_habs.c:275
#define CAT_clfr
Definition: l2prod.h:491
#define CAT_par
Definition: l2prod.h:35
void get_bsi(l2str *l2rec, float *BSi)
Definition: get_bsi.c:20
#define CAT_COT_fail_2200
Definition: l2prod.h:479
#define CAT_prymnesiophytes_hirata
Definition: l2prod.h:300
#define CAT_prochlorococcus
Definition: l2prod.h:424
#define CAT_cth_cost
Definition: l2prod.h:522
#define CAT_calcite_ci2
Definition: l2prod.h:374
void get_rho_mumm(l2str *l2rec, int32_t ip, int32_t iw, float *rhom)
Definition: mumm.c:25
#define CAT_Cld_Top_Refl_1200
Definition: l2prod.h:416
#define CAT_adg_gsm
Definition: l2prod.h:64
#define CAT_class_ward_owmc
Definition: l2prod.h:243
#define CAT_mside
Definition: l2prod.h:79
#define CAT_ndsi
Definition: l2prod.h:555
#define CAT_CER_fail_1621
Definition: l2prod.h:432
#define CAT_counts_sst4
Definition: l2prod.h:310
#define CAT_CI_noncyano
Definition: l2prod.h:368
#define CAT_counts_sst3
Definition: l2prod.h:334
#define CAT_npp_cafe
Definition: l2prod.h:391
#define CAT_rhos
Definition: l2prod.h:44
#define CAT_mRrs_giop
Definition: l2prod.h:212
#define CAT_ari
Definition: l2prod.h:560
#define CAT_cth_cost_all
Definition: l2prod.h:504
#define CAT_chl_giop
Definition: l2prod.h:197
#define CAT_cth_dctp_all
Definition: l2prod.h:515
#define CAT_no2_tropo
Definition: l2prod.h:27
void get_par_below_surface(l2str *l2rec, float par[])
Definition: get_par.c:51
#define CAT_O3_prof
Definition: l2prod.h:395
#define CAT_d2Rrs_diff_sdp
Definition: l2prod.h:579
#define CAT_neo_sdp
Definition: l2prod.h:570
#define CAT_BT_40
Definition: l2prod.h:167
#define NBANDSIR
Definition: filehandle.h:23
void get_ndii(l1str *l1rec, float prod[])
Main entry point for getting ndii.
Definition: get_ndii.c:81
#define CAT_CER_fail_1600
Definition: l2prod.h:431
#define CAT_aph_gsm
Definition: l2prod.h:95
void get_Kd(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_Kd.c:1246
#define CAT_KPAR_lee
Definition: l2prod.h:164
#define CAT_owtn
Definition: l2prod.h:240
#define CAT_perid_sdp
Definition: l2prod.h:575
#define CAT_MCI_stumpf
Definition: l2prod.h:324
float * get_ctht_lin(l2str *l2rec, int prodnum)
Definition: get_ctht.c:14
#define CAT_evi2
Definition: l2prod.h:73
#define CAT_bbp_unc_giop
Definition: l2prod.h:200
#define CAT_CER_1600
Definition: l2prod.h:401
#define CAT_L_u
Definition: l2prod.h:70
#define CAT_a_pml
Definition: l2prod.h:179
#define CAT_Surface_Albedo_650
Definition: l2prod.h:419
int16 * get_flags_carder(l2str *l2rec)
Definition: carder.c:948
#define CAT_no2_frac
Definition: l2prod.h:82
#define CAT_bias_mean_sst3
Definition: l2prod.h:333
float * extract_band_3d(float *in_buf, float *out_buf)
Definition: prodgen.c:67
#define CAT_owtd
Definition: l2prod.h:241
#define CAT_npp_mld
Definition: l2prod.h:350
unsigned char * get_flags_qaa(l2str *l2rec)
Definition: get_qaa.c:253
void get_Cpicophyt(l2str *l2rec, l2prodstr *p, float *cell_abundance)
Definition: get_Cpicophyt.c:38
#define CAT_bbw
Definition: l2prod.h:262
#define CAT_aphs_giop
Definition: l2prod.h:204
#define CAT_Zsd_gbr
Definition: l2prod.h:248
#define CAT_picoplankton_hirata
Definition: l2prod.h:294
#define CAT_CER_fail_2100
Definition: l2prod.h:430
#define CAT_taucld
Definition: l2prod.h:490
#define CAT_aer_ratio
Definition: l2prod.h:30
#define CAT_chl_oc3c
Definition: l2prod.h:256
#define CAT_npix_mgiop
Definition: l2prod.h:269
#define CAT_adg_giop
Definition: l2prod.h:196
int get_hyper_vi(l1str *l1rec, int product_number, float product[])
#define CAT_aph_giop
Definition: l2prod.h:195
#define CAT_nanoplankton_volumeksm
Definition: l2prod.h:341
void get_smoke(l2str *l2rec, float smoke[])
Definition: get_smoke.c:20
#define CAT_CER_1621
Definition: l2prod.h:404
#define CAT_Sg_300_600_mlrc
Definition: l2prod.h:314
#define NULL
Definition: decode_rs.h:63
#define CAT_bb_carder
Definition: l2prod.h:85
no change in intended resolving MODur00064 Corrected handling of bad ephemeris attitude resolving resolving GSFcd00179 Corrected handling of fill values for[Sensor|Solar][Zenith|Azimuth] resolving MODxl01751 Changed to validate LUT version against a value retrieved from the resolving MODxl02056 Changed to calculate Solar Diffuser angles without adjustment for estimated post launch changes in the MODIS orientation relative to incidentally resolving defects MODxl01766 Also resolves MODxl01947 Changed to ignore fill values in SCI_ABNORM and SCI_STATE rather than treating them as resolving MODxl01780 Changed to use spacecraft ancillary data to recognise when the mirror encoder data is being set by side A or side B and to change calculations accordingly This removes the need for seperate LUTs for Side A and Side B data it makes the new LUTs incompatible with older versions of the and vice versa Also resolves MODxl01685 A more robust GRing algorithm is being which will create a non default GRing anytime there s even a single geolocated pixel in a granule Removed obsolete messages from seed as required for compatibility with version of the SDP toolkit Corrected test output file names to end in out
Definition: HISTORY.txt:422
void get_lambda_max(l2str *l2rec, float lambda_max[])
Definition: get_avw.c:228
#define CAT_Cld_h
Definition: l2prod.h:484
void get_psd_ksm(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_psd_ksm.c:432
void get_avw(l2str *l2rec, float avw[])
Definition: get_avw.c:80
#define CAT_chl_hu
Definition: l2prod.h:250
#define CAT_adg_qaa
Definition: l2prod.h:106
#define CAT_iter_gsm
Definition: l2prod.h:110
#define CAT_diatoms_hirata
Definition: l2prod.h:292
#define CAT_nanoplankton_ratioksm
Definition: l2prod.h:345
void get_photic_depth(l2str *l2rec, l2prodstr *p, float Z[])
Definition: photic_depth.c:303
#define CAT_ipar_scalar
Definition: l2prod.h:542
read l1rec
#define CAT_chl_cdr
Definition: l2prod.h:284
#define CAT_qual_sst
Definition: l2prod.h:122
void get_par_scalar(l2str *l2rec, float par[])
Definition: get_par.c:40
PARAM_TYPE_NONE Default value No parameter is buried in the product name name_prefix is case insensitive string compared to the product name PARAM_TYPE_VIS_WAVE The visible wavelength bands from the sensor are buried in the product name The product name is compared by appending and name_suffix ie aph_412_giop where prod_ix will be set to PARAM_TYPE_IR_WAVE same search method as PARAM_TYPE_VIS_WAVE except only wavelength above are looped through but prod_ix is still based ie aph_2_giop for the second band
#define CAT_flags_giop
Definition: l2prod.h:213
#define CAT_stdv_sst3
Definition: l2prod.h:332
#define CAT_CMP_fail_pct_1600
Definition: l2prod.h:434
void get_cci(l1str *l1rec, float cci[])
Definition: get_cci.c:73
#define CAT_counts_sst
Definition: l2prod.h:309
#define CAT_Lw
Definition: l2prod.h:7
#define CAT_bbp_swim
Definition: l2prod.h:280
int16_t * get_flags_sst(l2str *l2rec)
Retrive Cloud Mask Flags for SST.
Definition: sst.c:179
#define CAT_mRrs_sdp
Definition: l2prod.h:577
void tindx_shi(l2str *l2rec, int32_t ip, float *tindx)
Definition: turbid.c:4
#define CAT_cth_dlcod_all
Definition: l2prod.h:510
#define CAT_CWP_2100
Definition: l2prod.h:406
#define CAT_BSi
Definition: l2prod.h:273
#define CAT_windspeed
Definition: l2prod.h:22
#define CAT_microplankton_volumeksm
Definition: l2prod.h:340
unsigned char * get_cmp_byt(l2str *l2rec, int prodnum)
Definition: get_cmp.c:128
void get_Cphyt(l2str *l2rec, float cphyt[])
Definition: get_Cphyt.c:19
#define CAT_bb_las
Definition: l2prod.h:189
void get_cdom_morel(l2str *l2rec, l2prodstr *p, float prod[])
Definition: cdom_morel.c:319
#define CAT_bbp_giop
Definition: l2prod.h:194
#define CAT_cth_alb_unc_init
Definition: l2prod.h:494
#define CAT_rrsdiff_giop
Definition: l2prod.h:208
#define CAT_acdom_giop
Definition: l2prod.h:356
#define CAT_aph_pml
Definition: l2prod.h:183
#define CAT_cth_dctt
Definition: l2prod.h:536
#define CAT_cth_lcod_all
Definition: l2prod.h:500
#define CAT_sena
Definition: l2prod.h:19
#define CAT_water_vapor
Definition: l2prod.h:25
#define CAT_CER_2100
Definition: l2prod.h:400
#define CAT_no2_strat
Definition: l2prod.h:48
float * get_bias_mean_sst(l2str *l2rec)
Get the means SSES bias for SST.
Definition: sst.c:259
#define CAT_ag_412_mlrc
Definition: l2prod.h:312
void get_habs_ci(l2str *l2rec, l2prodstr *p, float ci[])
Definition: get_habs.c:85
#define CAT_calcite_2b
Definition: l2prod.h:91
#define CAT_synechococcus
Definition: l2prod.h:425
#define CAT_chl_oc2
Definition: l2prod.h:32
int8_t * get_qual_sst4(l2str *l2rec)
Retrive Qual level for SST4.
Definition: sst.c:153
void get_gsm(l2str *l2rec, l2prodstr *p, float prod[])
Definition: gsm.c:803
#define CAT_bias_sst4
Definition: l2prod.h:138
#define CAT_anap_giop
Definition: l2prod.h:357
#define CAT_Surface_Albedo_1600
Definition: l2prod.h:422
#define CAT_fsol
Definition: l2prod.h:55
#define CAT_glint_coef
Definition: l2prod.h:40
#define CAT_flags_habs_mph
Definition: l2prod.h:326
float * get_sst_dust_correction(l2str *l2rec)
Retrive the dust SST correction for MODIS and product SST *.
Definition: sst.c:9
#define CAT_vLw
Definition: l2prod.h:154
#define CAT_CWP_2200
Definition: l2prod.h:475
#define CAT_nanoplankton_abundanceksm
Definition: l2prod.h:337
void get_clfr(l2str *l2rec, float clfr[])
Definition: get_par.c:315
#define CAT_sfc_temp
Definition: l2prod.h:381
#define CAT_bbps_giop
Definition: l2prod.h:206
#define CAT_cire
Definition: l2prod.h:558
#define CAT_Cld_t
Definition: l2prod.h:425
void get_pft_uitz(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_pft_uitz.c:387
#define CAT_aph_carder
Definition: l2prod.h:86
#define CAT_CER_2200
Definition: l2prod.h:473
#define CAT_Cld_Phase_1600
Definition: l2prod.h:412
This should be set to the NetCDF standard name if exists for this product Create a function that computes your product edit get_myprod c add prototype to l12_proto h add get_myprod c to L2GEN_PRODUCT_FILES in CMakeLists txt Add an entry to the output routine to call your function edit prodgen c edit function prodgen() case CAT_myprod pbuf
#define CAT_a_swim
Definition: l2prod.h:276
void get_taucld(l2str *l2rec, float taucld[])
Definition: get_par.c:292
void get_carder(l2str *l2rec, l2prodstr *p, float prod[])
Definition: carder.c:957
#define CAT_num_iter
Definition: l2prod.h:41
#define CAT_avw
Definition: l2prod.h:392
#define CAT_CWP_1600
Definition: l2prod.h:408
#define CAT_nanoplankton_uitz
Definition: l2prod.h:303
#define CAT_COT_fail_1600
Definition: l2prod.h:428
#define CAT_anap_unc_giop
Definition: l2prod.h:361
#define CAT_aph_qaa
Definition: l2prod.h:105
#define CAT_cth_ctp_all
Definition: l2prod.h:502
#define CAT_COT_2100
Definition: l2prod.h:402
#define CAT_flags_qaa
Definition: l2prod.h:215
#define CAT_pressure
Definition: l2prod.h:23
void get_bbws(l2str *l2rec, l2prodstr *p, float prod[])
Definition: seawater.c:254
#define CAT_poc_stramski_490
Definition: l2prod.h:173
#define CAT_dsdi
Definition: l2prod.h:389
#define CAT_bb_giop
Definition: l2prod.h:193
#define CAT_COT_1621
Definition: l2prod.h:405
float * get_class_34k_w_owmc(l2str *l2rec)
Definition: get_owmc.c:214
#define CAT_cth_dctp
Definition: l2prod.h:535
#define CAT_flags_habs
Definition: l2prod.h:348
#define CAT_smoke
Definition: l2prod.h:46
void get_Rrs_brightness(l2str *l2rec, float Rrs_brightness[])
Definition: get_avw.c:172
void get_bpar(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_bpar.c:482
#define CAT_chl_vc
Definition: l2prod.h:260
void get_par2(l2str *l2rec, float par[])
Definition: get_par.c:69
instr * input
#define CAT_Surface_Albedo_2100
Definition: l2prod.h:423
character(len=1000) if
Definition: names.f90:13
#define CAT_adg_pml
Definition: l2prod.h:184
#define CAT_calcite_3b
Definition: l2prod.h:59
#define CAT_chl_carder
Definition: l2prod.h:88
#define CAT_aph_unc_giop
Definition: l2prod.h:201
#define CAT_cth_dalb
Definition: l2prod.h:537
#define CAT_Rrs_brightness
Definition: l2prod.h:393
#define CAT_qual_sst4
Definition: l2prod.h:123
#define CAT_bbp_qaa
Definition: l2prod.h:107
#define CAT_mod_rrs_qaa
Definition: l2prod.h:185
#define CAT_ndwi
Definition: l2prod.h:554
uint8_t * get_flags_habs(l2str *l2rec)
Definition: get_habs.c:694
#define CAT_cth_ctt_all
Definition: l2prod.h:514
int16 * get_iter_gsm(l2str *l2rec)
Definition: gsm.c:873
#define CAT_fsat
Definition: l2prod.h:83
#define CAT_chlc3_sdp
Definition: l2prod.h:574
#define CAT_par_scalar
Definition: l2prod.h:486
#define CAT_aph_mgiop
Definition: l2prod.h:268
#define CAT_a_las
Definition: l2prod.h:186
#define CAT_Cld_Non_Abs_Band
Definition: l2prod.h:411
#define CAT_refl_loc_1600
Definition: l2prod.h:436
#define CAT_cloud_albedo
Definition: l2prod.h:53
#define CAT_nitrate
Definition: l2prod.h:388
void get_fsat(l2str *l2rec, float flh[])
Definition: fluorescence.c:168
#define CAT_vnLw
Definition: l2prod.h:155
#define CAT_calcite
Definition: l2prod.h:124
#define CAT_aerindex
Definition: l2prod.h:43
#define CAT_height
Definition: l2prod.h:57
#define CAT_bias_mean_sst4
Definition: l2prod.h:308
#define CAT_npp_cbpm2
Definition: l2prod.h:318
#define CAT_Cphyt_unc
Definition: l2prod.h:548
#define CAT_picoplankton_volumeksm
Definition: l2prod.h:342
#define CAT_tchl_sdp
Definition: l2prod.h:563
#define CAT_cth_alb
Definition: l2prod.h:496
#define CAT_flags_sdp
Definition: l2prod.h:576
#define CAT_Cld_Phase_1621
Definition: l2prod.h:413
#define CAT_angstrom
Definition: l2prod.h:37
#define CAT_bias_sst
Definition: l2prod.h:137
#define CAT_refl_loc_2100
Definition: l2prod.h:437
#define CAT_windangle
Definition: l2prod.h:50
void get_pml(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_pml.c:268
#define CAT_aph_swim
Definition: l2prod.h:279
void get_ndvi_evi(l1str *l1rec, int prodnum, float prod[])
Main entry point for getting NDVI/EVI producs.
Definition: get_ndvi.c:269
#define CAT_bbp_carder
Definition: l2prod.h:99
#define CAT_fqy
Definition: l2prod.h:98
#define CAT_dpol
Definition: l2prod.h:90
#define CAT_chl_cdomcorr_morel
Definition: l2prod.h:249
#define CAT_Kd_unc_lee
Definition: l2prod.h:547
#define CAT_chisqr_giop
Definition: l2prod.h:209
#define CAT_Rrs
Definition: l2prod.h:61
int get_cmp(l2str *l2rec, int prodnum, float prod[])
Definition: get_cmp.c:41
#define CAT_tg_sen
Definition: l2prod.h:16
#define CAT_KPAR_morel
Definition: l2prod.h:144
#define CAT_cth_cth_raw
Definition: l2prod.h:521
#define CAT_sola
Definition: l2prod.h:18
#define CAT_COT_fail_1621
Definition: l2prod.h:429
#define CAT_a_unc_giop
Definition: l2prod.h:198
int16_t * get_flags_sst_triple(l2str *l2rec)
Retrive Cloud Mask Flags for SST3.
Definition: sst.c:206
#define CAT_class_34k_w_owmc
Definition: l2prod.h:246
#define CAT_fitpar_giop
Definition: l2prod.h:210
#define CAT_adg_swim
Definition: l2prod.h:278
#define CAT_cth_dalb_all
Definition: l2prod.h:519
#define CAT_microplankton_uitz
Definition: l2prod.h:302
void get_depth_classification(l2str *l2rec, float depth[])
#define CAT_sssref
Definition: l2prod.h:119
#define CAT_owt
Definition: l2prod.h:239
#define CAT_calcite_ci869
Definition: l2prod.h:376
#define CAT_bbp_mgiop
Definition: l2prod.h:266
#define CAT_picoplankton_ratioksm
Definition: l2prod.h:346
#define CAT_microplankton_hirata
Definition: l2prod.h:291
#define CAT_a_qaa
Definition: l2prod.h:102
#define CAT_evi
Definition: l2prod.h:45
#define CAT_calcite_ci748
Definition: l2prod.h:375
#define CAT_chl_unc_giop
Definition: l2prod.h:203
#define CAT_adg_carder
Definition: l2prod.h:87
#define CAT_a_niwa
Definition: l2prod.h:217
#define CAT_dvchla_sdp
Definition: l2prod.h:565
void chl_carder_empirical(l2str *l2rec, float prod[])
Definition: carder.c:1168
#define CAT_npp_bbp
Definition: l2prod.h:353
void get_ice_frac(l2str *l2rec, float ice[])
Definition: get_ice_frac.c:17
#define CAT_evi3
Definition: l2prod.h:74
#define CAT_vgain
Definition: l2prod.h:151
void get_ndsi(l1str *l1rec, float ndsi[])
Definition: get_ndsi.c:73
#define CAT_Zsd_morel
Definition: l2prod.h:148
#define CAT_CI_stumpf
Definition: l2prod.h:323
#define CAT_fitpar_mgiop
Definition: l2prod.h:271
float * get_bias_sst_triple(l2str *l2rec)
Retrive the bias SSES for SST3 (VIIRS)
Definition: sst.c:48
int16_t * get_counts_sst4(l2str *l2rec)
Retrive Counts SSES for SST4.
Definition: sst.c:87
#define CAT_cci
Definition: l2prod.h:556
void get_chl(l2str *l2rec, int prodnum, float prod[])
Definition: get_chl.c:749
#define CAT_chl_oc4
Definition: l2prod.h:49
#define CAT_vbtgt
Definition: l2prod.h:157
#define CAT_t_sen
Definition: l2prod.h:13
float * get_sst(l2str *l2rec)
Get the sst for SST.
Definition: sst.c:219
#define CAT_bb_pml
Definition: l2prod.h:181
#define CAT_aer_model
Definition: l2prod.h:29
#define CAT_Cphyt
Definition: l2prod.h:397
#define CAT_ipar
Definition: l2prod.h:97
VOIDP extract_band(float *fbuf, l2prodstr *p, int32 nbands)
Definition: prodgen.c:31
#define CAT_car
Definition: l2prod.h:559
#define CAT_cth_dcod
Definition: l2prod.h:539
void get_mu_cosine(l2str *l2rec, float mu[])
Definition: get_par.c:59
#define CAT_cth_dcod_all
Definition: l2prod.h:509
float * get_sst4(l2str *l2rec)
Get the sst for SST4.
Definition: sst.c:233
void get_angstrom(l2str *l2rec, int band, float angst[])
Definition: aerosol.c:6296
#define CAT_ice_frac
Definition: l2prod.h:236
#define CAT_Q_prof
Definition: l2prod.h:386
float * get_sst_triple(l2str *l2rec)
Get the sst for SST3.
Definition: sst.c:246
void optical_water_type(l2str *l2rec, l2prodstr *p, void *vptr)
Definition: owt.c:325
#define CAT_npp_zno3
Definition: l2prod.h:351
#define CAT_nw
Definition: l2prod.h:263
#define CAT_sst4
Definition: l2prod.h:111
#define CAT_Kd_morel
Definition: l2prod.h:142
#define CAT_cth_cth_all
Definition: l2prod.h:501
void get_ipar_scalar(l2str *l2rec, float ipar[])
Definition: get_par.c:501
#define CAT_iCDOM_morel
Definition: l2prod.h:229
#define CAT_npp_par
Definition: l2prod.h:352
#define CAT_refl_loc_2200
Definition: l2prod.h:482
#define CAT_relaz
Definition: l2prod.h:214
#define CAT_vbsat
Definition: l2prod.h:156
#define CAT_Cld_Sfc_Type
Definition: l2prod.h:409
#define CAT_T_prof
Definition: l2prod.h:383
float * get_stdv_sst4(l2str *l2rec)
Retrive the STD bias SSES for SST4.
Definition: sst.c:113
#define CAT_lambda_max
Definition: l2prod.h:394
void get_poc(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_poc.c:225
#define CAT_detnum
Definition: l2prod.h:78
#define CAT_CMP_fail_pct_1621
Definition: l2prod.h:435
void get_Cphyt_unc(l2str *l2rec, float cphyt_unc[])
Definition: get_Cphyt.c:86
#define CAT_Surface_Albedo_860
Definition: l2prod.h:420
#define CAT_autotrophic_picoeukaryotes
Definition: l2prod.h:426
#define CAT_iparb
Definition: l2prod.h:287
#define CAT_brdf
Definition: l2prod.h:42
void get_nitrate(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_nitrate.c:70
#define CAT_opt_siop_giop
Definition: l2prod.h:364
#define CAT_Kd_mueller
Definition: l2prod.h:38
int16 * get_iter_giop(l2str *l2rec)
Definition: giop.c:3717
#define CAT_flags_sst4
Definition: l2prod.h:121
#define CAT_rhom
Definition: l2prod.h:141
#define CAT_iter_giop
Definition: l2prod.h:207
#define CAT_Cld_Top_Refl_2100
Definition: l2prod.h:418
#define CAT_bb
Definition: l2prod.h:101
void get_ndwi(l1str *l1rec, float prod[])
Main entry point for getting NDWI.
Definition: get_ndwi.c:79
#define CAT_cth_iter
Definition: l2prod.h:523
#define CAT_sstref
Definition: l2prod.h:67
float * get_bias_sst(l2str *l2rec)
Retrive the bias SSES for SST (both VIIRS and MODIS)
Definition: sst.c:22
#define CAT_bbws
Definition: l2prod.h:274
#define CAT_bb_unc_giop
Definition: l2prod.h:199
#define CAT_adg_mgiop
Definition: l2prod.h:267
#define CAT_chl_oc3
Definition: l2prod.h:72
#define CAT_BT_39
Definition: l2prod.h:166
#define CAT_BT
Definition: l2prod.h:165
void get_par(l2str *l2rec, float par[])
Definition: get_par.c:338
#define CAT_nanoplankton_hirata
Definition: l2prod.h:298
#define CAT_prokaryotes_hirata
Definition: l2prod.h:295
void bioOptBandShift(l2str *l2rec, l2prodstr *p, float prod[])
#define CAT_bias_mean_sst
Definition: l2prod.h:307
#define CAT_Es
Definition: l2prod.h:11
#define CAT_Sg_275_295_mlrc
Definition: l2prod.h:313
#define CAT_Lt
Definition: l2prod.h:4
#define CAT_solz
Definition: l2prod.h:17
#define CAT_t_sol
Definition: l2prod.h:12
#define CAT_sfc_humidity
Definition: l2prod.h:380
void get_es(l2str *l2rec, int band, float Es[])
Definition: get_es.c:24
#define CAT_bbp_pml
Definition: l2prod.h:182
#define CAT_Cld_Top_Refl_2200
Definition: l2prod.h:477
#define CAT_BT_12
Definition: l2prod.h:170
#define CAT_nLw
Definition: l2prod.h:8
#define CAT_crat_mgiop
Definition: l2prod.h:270
#define CAT_tLf
Definition: l2prod.h:9
float * get_bias_mean_sst_triple(l2str *l2rec)
Get the means SSES bias for SST3.
Definition: sst.c:285
#define CAT_Cld_ice_cloud
Definition: l2prod.h:432
#define CAT_mRrs_diff_sdp
Definition: l2prod.h:578
#define CAT_L_q
Definition: l2prod.h:68
#define CAT_cth_lcod
Definition: l2prod.h:520
#define CAT_par2
Definition: l2prod.h:489
#define CAT_CMP_fail_pct_2100
Definition: l2prod.h:433
#define CAT_Kd_KD2
Definition: l2prod.h:150
#define CAT_Kd_jamet
Definition: l2prod.h:283
#define CAT_adg_morel
Definition: l2prod.h:232
#define CAT_humidity
Definition: l2prod.h:24
#define CAT_mvchlb_sdp
Definition: l2prod.h:569
#define CAT_par_below_surface
Definition: l2prod.h:488
#define CAT_bbph_unc_giop
Definition: l2prod.h:362
#define CAT_Cld_Phase_2100
Definition: l2prod.h:410
#define CAT_Kd_532
Definition: l2prod.h:163
#define CAT_sst3
Definition: l2prod.h:328
#define CAT_Zphotic_lee
Definition: l2prod.h:160
#define CAT_chl_unc
Definition: l2prod.h:423
#define CAT_chisqr_mbac
Definition: l2prod.h:217
#define BAD_FLT
Definition: jplaeriallib.h:19
#define CAT_Lr
Definition: l2prod.h:5
#define CAT_COT_2200
Definition: l2prod.h:474
#define CAT_adg_unc_giop
Definition: l2prod.h:202
#define CAT_flags_niwa
Definition: l2prod.h:219
#define CAT_poc_stramski_443
Definition: l2prod.h:172
#define CAT_a_gsm
Definition: l2prod.h:93
#define CAT_COT_1600
Definition: l2prod.h:403
#define CAT_CER_fail_2200
Definition: l2prod.h:480
#define CAT_sfc_pressure
Definition: l2prod.h:379
#define CAT_flags_sst3
Definition: l2prod.h:329
#define CAT_chl_abi
Definition: l2prod.h:320
#define CAT_greenalgae_hirata
Definition: l2prod.h:293
#define CAT_HGT_prof
Definition: l2prod.h:385
#define CAT_Rrs_vc
Definition: l2prod.h:259
#define CAT_bbnap_unc_giop
Definition: l2prod.h:363
#define CAT_bb_qaa
Definition: l2prod.h:104
#define CAT_stdv_sst
Definition: l2prod.h:139
float * get_bias_mean_sst4(l2str *l2rec)
Get the means SSES bias for SST4.
Definition: sst.c:272
int32_t nbands
int8_t * get_qual_sst(l2str *l2rec)
Retrive Qual level (0-5) for SST.
Definition: sst.c:139
#define CAT_flags_carder
Definition: l2prod.h:89
#define CAT_vtLw
Definition: l2prod.h:153
#define CAT_rho_cirrus
Definition: l2prod.h:220
#define CAT_tindx_morel
Definition: l2prod.h:149
void vcal(l2str *l2rec, l2prodstr *p, float vcal[])
Definition: vcal.c:25
#define CAT_a_giop
Definition: l2prod.h:192
#define CAT_bbph_giop
Definition: l2prod.h:358
#define CAT_La
Definition: l2prod.h:6
#define CAT_poc_stramski_hybrid
Definition: l2prod.h:421
float * get_stdv_sst(l2str *l2rec)
Retrive the STD bias SSES for SST.
Definition: sst.c:61
#define CAT_slot
Definition: l2prod.h:76
#define CAT_ndii
Definition: l2prod.h:553
#define CAT_microplankton_abundanceksm
Definition: l2prod.h:336
#define CAT_cth_dlcod
Definition: l2prod.h:540
int16 * get_flags_giop(l2str *l2rec)
Definition: giop.c:3729
#define CAT_picoplankton_uitz
Definition: l2prod.h:304
void get_ipar(l2str *l2rec, float ipar[])
Definition: ipar.c:18
int16_t * get_counts_sst(l2str *l2rec)
Retrive Counts SSES for SST.
Definition: sst.c:74
#define CAT_cth_dcth
Definition: l2prod.h:529
#define CAT_cth_acost_all
Definition: l2prod.h:506
#define CAT_cth_alb_init
Definition: l2prod.h:493
#define CAT_microplankton_ratioksm
Definition: l2prod.h:344
#define CAT_epsilon
Definition: l2prod.h:28
#define CAT_sst
Definition: l2prod.h:62
#define CAT_bbp_las
Definition: l2prod.h:190
#define CAT_butfuco_sdp
Definition: l2prod.h:566
void get_toa_refl(l2str *l2rec, int band, float rhot[])
Definition: get_toa_refl.c:19
#define CAT_tg_sol
Definition: l2prod.h:15
#define CAT_t_o2
Definition: l2prod.h:54
VOIDP prodgen(l2prodstr *p, l2str *l2rec)
Definition: prodgen.c:101
#define CAT_npp_eppley
Definition: l2prod.h:317
#define CAT_cth_dctt_all
Definition: l2prod.h:518
#define CAT_bbp_gsm
Definition: l2prod.h:65
#define CAT_ipar2
Definition: l2prod.h:525
#define CAT_polcor
Definition: l2prod.h:71
void get_pft_hirata(l2str *l2rec, l2prodstr *p, float prod[])
#define CAT_parb
Definition: l2prod.h:288
#define CAT_COT_fail_2100
Definition: l2prod.h:427
#define CAT_chl_oci
Definition: l2prod.h:254
int16_t * get_counts_sst_triple(l2str *l2rec)
Retrive Counts SSES for SST3.
Definition: sst.c:100
#define CAT_Cld_water_cloud
Definition: l2prod.h:431
#define CAT_TLg
Definition: l2prod.h:34
#define CAT_tindx_shi
Definition: l2prod.h:143
#define CAT_dinoflagellates_hirata
Definition: l2prod.h:297
void get_mgiop(l2str *l2rec, l2prodstr *p, float prod[])
Definition: mgiop.c:10
#define CAT_l2_flags
Definition: l2prod.h:31
#define CAT_Kd_obpg
Definition: l2prod.h:109
#define CAT_zwind
Definition: l2prod.h:52
#define CAT_CMP_fail_pct_2200
Definition: l2prod.h:481
#define CAT_bbps_las
Definition: l2prod.h:216
#define CAT_bias_sst3
Definition: l2prod.h:331
#define CAT_ndvi
Definition: l2prod.h:39
void applyMultiplier(float *in, float *out, int count, float multiplier)
Definition: prodgen.c:87
#define CAT_cth_acost
Definition: l2prod.h:524
#define CAT_b_las
Definition: l2prod.h:187
void get_ipar2(l2str *l2rec, float ipar[])
Definition: get_par.c:480
#define CAT_Kd_unc_KD2
Definition: l2prod.h:543
void get_swim(l2str *l2rec, l2prodstr *p, float prod[])
Definition: swim.c:741
#define CAT_flags_sst
Definition: l2prod.h:120
#define CAT_class_k_owmc
Definition: l2prod.h:245
float * get_stdv_sst_triple(l2str *l2rec)
Retrive the STD bias SSES for SST3.
Definition: sst.c:126
#define CAT_viola_sdp
Definition: l2prod.h:571
#define CAT_ipar_below_surface
Definition: l2prod.h:526
#define CAT_cth_phase
Definition: l2prod.h:497
#define CAT_cth_cod_all
Definition: l2prod.h:498
#define CAT_depth_class
Definition: l2prod.h:33
#define CAT_chl_oci2
Definition: l2prod.h:257
float * get_bias_sst4(l2str *l2rec)
Retrive the bias SSES for SST4 (MODIS)
Definition: sst.c:35
#define CAT_Zhl_morel
Definition: l2prod.h:145
void cdom_mannino(l2str *l2rec, int prodnum, float prod[])
Definition: cdom_mannino.c:7
#define CAT_chlc12_sdp
Definition: l2prod.h:573
void virtual_constellation(l2str *l2rec, l2prodstr *p, float prod[])
#define CAT_bb_swim
Definition: l2prod.h:277
#define CAT_acdom_unc_giop
Definition: l2prod.h:360
void get_sdp(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_sdp.c:1273
#define CAT_alpha
Definition: l2prod.h:80
#define CAT_a
Definition: l2prod.h:100
#define CAT_bbnap_giop
Definition: l2prod.h:359
#define CAT_c_las
Definition: l2prod.h:188
void get_niwa(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_niwa_iop.c:67
#define CAT_CI_cyano
Definition: l2prod.h:367
#define CAT_Cld_Top_Refl_650
Definition: l2prod.h:414
#define CAT_BT_11
Definition: l2prod.h:168
#define CAT_nKd_lin
Definition: l2prod.h:372
#define CAT_chl_gsm
Definition: l2prod.h:63
int i
Definition: decode_rs.h:71
int16_t * get_flags_sst4(l2str *l2rec)
Retrive Cloud Mask Flags for SST4.
Definition: sst.c:193
void get_npp(l2str *l2rec, int prodnum, float prod[])
Definition: get_npp.c:35
#define CAT_pri
Definition: l2prod.h:557
int16 * get_flags_niwa(l2str *l2rec)
Definition: get_niwa_iop.c:99
#define CAT_Kd_lee
Definition: l2prod.h:108
#define CAT_Cld_p
Definition: l2prod.h:424
#define CAT_Kd_rhos
Definition: l2prod.h:322
uint8_t * get_flags_habs_mph(l2str *l2rec)
Definition: get_habs.c:370
#define CAT_allo_sdp
Definition: l2prod.h:568
#define CAT_scattang
Definition: l2prod.h:233
void get_las(l2str *l2rec, l2prodstr *p, float prod[])
Definition: las_iop.c:492
#define CAT_bb_niwa
Definition: l2prod.h:218
#define CAT_pixnum
Definition: l2prod.h:77
#define CAT_RH_prof
Definition: l2prod.h:384
#define CAT_cth_cth_raw_all
Definition: l2prod.h:513
#define CAT_mu_0
Definition: l2prod.h:487
void get_ms_epsilon(l2str *l2rec, float eps[])
Definition: aerosol.c:6344
#define CAT_zea_sdp
Definition: l2prod.h:564
#define CAT_refl_loc_1621
Definition: l2prod.h:438
#define CAT_qual_sst3
Definition: l2prod.h:330
#define CAT_vLt
Definition: l2prod.h:152
#define CAT_cth_dcth_all
Definition: l2prod.h:512
int npix
Definition: get_cmp.c:28
#define CAT_Rrs_unc
Definition: l2prod.h:253
#define CAT_t_h2o
Definition: l2prod.h:66
#define CAT_chl_owterr
Definition: l2prod.h:242
void get_ipar_below_surface(l2str *l2rec, float ipar[])
Definition: get_par.c:490
#define CAT_CWP_1621
Definition: l2prod.h:407
#define CAT_Cld_Top_Refl_860
Definition: l2prod.h:415
#define CAT_a_carder
Definition: l2prod.h:84
#define CAT_cth_iter_all
Definition: l2prod.h:507
#define CAT_ozone
Definition: l2prod.h:21
float p[MODELMAX]
Definition: atrem_corl1.h:131
#define CAT_Zeu_morel
Definition: l2prod.h:146
#define CAT_Surface_Albedo_1200
Definition: l2prod.h:421
#define CAT_elev
Definition: l2prod.h:282
float * get_class_k_owmc(l2str *l2rec)
Definition: get_owmc.c:209
#define CAT_cth_alb_all
Definition: l2prod.h:503
#define CAT_MPH_chl
Definition: l2prod.h:325
void get_giop(l2str *l2rec, l2prodstr *p, float prod[])
Definition: giop.c:3454
#define CAT_pCDOM_morel
Definition: l2prod.h:230
#define CAT_fuco_sdp
Definition: l2prod.h:572
void calcite(l2str *l2rec, l2prodstr *p, float prod[])
Definition: calcite.c:541
void get_qaa(l2str *l2rec, l2prodstr *p, float prod[])
Definition: get_qaa.c:260
void tindx_morel(l2str *l2rec, int32_t ip, float *tindx)
Definition: turbid.c:65
#define CAT_picoeukaryotes_hirata
Definition: l2prod.h:299
float * get_class_ward_owmc(l2str *l2rec)
Definition: get_owmc.c:204
#define CAT_cth_cod
Definition: l2prod.h:495
#define CAT_chl_mgiop
Definition: l2prod.h:265
#define CAT_mwind
Definition: l2prod.h:51
int count
Definition: decode_rs.h:79