Due to the lapse in federal government funding, NASA is not updating this website. We sincerely regret this inconvenience.
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