NASA Logo
Ocean Color Science Software

ocssw V2022
uncertainty.h
Go to the documentation of this file.
1 /*
2  * uncertainty.h
3  *
4  * Created on: Mar 8, 2021
5  * Author: mzhang11
6  */
7 
8 #ifndef OEL_HDF4_LIBL1_UNCERTAINTY_H_
9 #define OEL_HDF4_LIBL1_UNCERTAINTY_H_
10 
11 #include <stdint.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 typedef struct uncertainty_struct{
18 
19  char *data;
20  int32_t length;
21 
22  int32_t nbands;
23  int32_t nbands_ac;
24  int32_t npix;
25  /* error attributes*/
26 
27  float *dsensor;
28  float *dsyst;
29  float *dvc;
30 
31  float *drh;
32  float *doz;
33  float *dpr;
34  float *dwv;
35  float *dmw;
36  float *dzw;
37  float *dws;
38  float *dwd;
39  float *dno2_tropo;
40  float *dno2_strat;
41 
42  // error in temporary products during L1->L2
43  float *dtg_sol;
44  float *dtg_sen;
45  float *dt_sol;
46  float *dt_sen;
47  float *dLr;
48  float *dTLg;
49  float *dmodrat;
50  //float *deps;
51 
52  // delta polcor [pixels][bands]
53  float *derv_pol;
54 
55  float **derv_La_rhorc; //derivative of La[wave] to rhorc[aer_s to aer_l]=rhot-rhor 1st dimesion:nwave, 2nd: aer_l-aer_s+1
56  float *derv_La_taua_l; //derivative of La[wave] to taua[aer_l], which is calculated from last iteration
57  float *derv_La_rhow_l; //derivative of La[wave] to t_sen.t_sol.rhow[aer_l]
58  float *derv_La_rh ; //derivative of La[wave] to rh
59 
60  float **derv_taua_rhorc; //derivative of taua[wave] to rhorc[aer_s to aer_l]=rhot-rhor 1st dimesion:nwave, 2nd: aer_l-aer_s+1
61  float *derv_taua_taua_l; //derivative of taua[wave] to taua[aer_l], which is calculated from last iteration
62  float *derv_taua_rhow_l; //derivative of taua[wave] to t_sen.t_sol.rhow[aer_l]
63  float *derv_taua_rh ; //derivative of taua[wave] to rh
64 
65  float **derv_tsen_rhorc; //derivative of tsen[wave] to rhorc[aer_s to aer_l]=rhot-rhor 1st dimesion:nwave, 2nd: aer_l-aer_s+1
66  float *derv_tsen_taua_l; //derivative of tsen[wave] to taua[aer_l], which is calculated from last iteration
67  float *derv_tsen_rhow_l; //derivative of tsen[wave] to t_sen.t_sol.rhow[aer_l]
68  float *derv_tsen_rh ; //derivative of tsen[wave] to rh
69 
70  float **derv_tsol_rhorc; //derivative of tsol[wave] to rhorc[aer_s to aer_l]=rhot-rhor 1st dimesion:nwave, 2nd: aer_l-aer_s+1
71  float *derv_tsol_taua_l; //derivative of tsol[wave] to taua[aer_l], which is calculated from last iteration
72  float *derv_tsol_rhow_l; //derivative of tsol[wave] to t_sen.t_sol.rhow[aer_l]
73  float *derv_tsol_rh ; //derivative of tsol[wave] to rh
74 
75  float *derv_Lg_taua; //derivative of TLg[wave] to taua[aer_l]
76  float *drhown_nir; //uncertainty in rhown(NIR)
77  float *dbrdf; //uncertainty in brdf correction
78 
79  float derv_eps_Lrc_l;//derivative of observed eps to rhorc[aer_l]
80  float derv_eps_Lrc_s;//derivative of observed eps to rhorc[aer_s]
81  float derv_eps_taua_l;//derivative of observed eps to taua[aer_l]
82  float derv_eps_taua_s;//derivative of observed eps to taua[aer_s]
83  float derv_eps_rhow_l;//derivative of observed eps to t_sen*t_sol*rhow[aer_l]
84  float *ratio_rhow; //ratio of tLw[aer_s to aer_l].to tLw[aer_l]
85 
86  float *derv_modrat_rhorc;//derivative of modrat to rhorc[nbands_ac]
87  float derv_modrat_taua_l;//derivative of mwt to taua[aer_l], which is calculated from last iteration
88  float derv_modrat_rhow_l;//derivative of mwt to t_sen*t_sol*rhow[aer_l]
89  float dchl; //uncertainty in chla
90  float dkd490; //uncertainty in kd490
91 
92  float *derv_taua_min_rhorc_l; //derivative of tauamin[nwave] to rhorc[aer_l]=rhot-rhor
93  float *derv_taua_min_taua_l; //derivative of tauamin[nwave] to taua[aer_l], which is calculated from last iteration
94  float *derv_taua_min_rhow_l; //derivative of tauamin[nwave] to t_sen.t_sol.rhow[aer_l]
95  float *derv_taua_max_rhorc_l; //derivative of tauamax[nwave] to rhorc[aer_l]=rhot-rhor
96  float *derv_taua_max_taua_l; //derivative of tauamax[nwave] to taua[aer_l], which is calculated from last iteration
97  float *derv_taua_max_rhow_l; //derivative of tauamax[nwave] to t_sen.t_sol.rhow[aer_l]
98 
99  float *dRrs; // just a pointer pointing to Rrs_unc[ip*nbands] in l2rec, don't need to allocate memory
100 
103 
104  float *corr_coef_rhot;//correlation coefficient matrix for rhot (nwave*nwave)
105 
106  int *acbands_index;// index for the AC bands
107 
108 } uncertainty_t;
109 
110 int alloc_uncertainty(int32_t nbands, int32_t nbands_ac, int32_t npix, uncertainty_t *uncertainty);
111 int cp_uncertainty(uncertainty_t *oldrec, uncertainty_t *newrec, int32_t ip);
112 void init_uncertainty(uncertainty_t *uncertainty, int ifscan);
113 void free_uncertainty(uncertainty_t *uncertainty);
114 
115 #ifdef __cplusplus
116 }
117 #endif
118 
119 #endif /* OEL_HDF4_LIBL1_UNCERTAINTY_H_ */
float * pixel_covariance
Definition: uncertainty.h:102
float * corr_coef_rhot
Definition: uncertainty.h:104
float * derv_tsol_rh
Definition: uncertainty.h:73
float ** derv_La_rhorc
Definition: uncertainty.h:55
float * derv_taua_min_taua_l
Definition: uncertainty.h:93
float * derv_Lg_taua
Definition: uncertainty.h:75
float * derv_tsen_rh
Definition: uncertainty.h:68
float * derv_tsen_rhow_l
Definition: uncertainty.h:67
int cp_uncertainty(uncertainty_t *oldrec, uncertainty_t *newrec, int32_t ip)
Definition: uncertainty.c:140
float * derv_modrat_rhorc
Definition: uncertainty.h:86
float * derv_tsol_taua_l
Definition: uncertainty.h:71
float * derv_tsen_taua_l
Definition: uncertainty.h:66
float * derv_La_rhow_l
Definition: uncertainty.h:57
float * derv_taua_taua_l
Definition: uncertainty.h:61
float * derv_tsol_rhow_l
Definition: uncertainty.h:72
void free_uncertainty(uncertainty_t *uncertainty)
Definition: uncertainty.c:270
float * derv_taua_min_rhorc_l
Definition: uncertainty.h:92
float ** derv_taua_rhorc
Definition: uncertainty.h:60
float * derv_taua_max_taua_l
Definition: uncertainty.h:96
float ** derv_tsol_rhorc
Definition: uncertainty.h:70
float ** derv_tsen_rhorc
Definition: uncertainty.h:65
float * derv_taua_max_rhow_l
Definition: uncertainty.h:97
float * covaraince_matrix
Definition: uncertainty.h:101
float * derv_taua_min_rhow_l
Definition: uncertainty.h:94
float * derv_taua_max_rhorc_l
Definition: uncertainty.h:95
int32_t nbands
void init_uncertainty(uncertainty_t *uncertainty, int ifscan)
Definition: uncertainty.c:177
float * derv_taua_rhow_l
Definition: uncertainty.h:62
float * derv_La_taua_l
Definition: uncertainty.h:56
float derv_modrat_taua_l
Definition: uncertainty.h:87
int alloc_uncertainty(int32_t nbands, int32_t nbands_ac, int32_t npix, uncertainty_t *uncertainty)
Definition: uncertainty.c:21
int npix
Definition: get_cmp.c:28
float derv_modrat_rhow_l
Definition: uncertainty.h:88
float * derv_taua_rh
Definition: uncertainty.h:63