27 uncertainty->nbands=
nbands;
28 uncertainty->nbands_ac=nbands_ac;
29 uncertainty->npix=
npix;
41 len = (len / 4 + 1)*4;
43 if ((
p = (
char *) malloc(len)) ==
NULL) {
45 "-E- %s line %d: Memory allocation failure.\n",
54 uncertainty->data =
p;
55 uncertainty->length=len;
61 uncertainty->dwv =(
float *)
p;
p+=
sizeof(
float)*
npix;
62 uncertainty->dmw =(
float *)
p;
p+=
sizeof(
float)*
npix;
63 uncertainty->dzw =(
float *)
p;
p+=
sizeof(
float)*
npix;
64 uncertainty->dws =(
float *)
p;
p+=
sizeof(
float)*
npix;
65 uncertainty->dwd =(
float *)
p;
p+=
sizeof(
float)*
npix;
66 uncertainty->doz =(
float *)
p;
p+=
sizeof(
float)*
npix;
67 uncertainty->dpr =(
float *)
p;
p+=
sizeof(
float)*
npix;
68 uncertainty->drh =(
float *)
p;
p+=
sizeof(
float)*
npix;
69 uncertainty->dmodrat =(
float *)
p;
p+=
sizeof(
float)*
npix;
70 uncertainty->dno2_tropo =(
float *)
p;
p+=
sizeof(
float)*
npix;
71 uncertainty->dno2_strat =(
float *)
p;
p+=
sizeof(
float)*
npix;
83 uncertainty->derv_La_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
84 uncertainty->derv_La_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
87 uncertainty->derv_taua_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
88 uncertainty->derv_taua_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
89 uncertainty->derv_taua_rh =(
float *)
p;
p+=
sizeof(
float)*
nbands;
91 uncertainty->derv_tsen_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
92 uncertainty->derv_tsen_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
93 uncertainty->derv_tsen_rh =(
float *)
p;
p+=
sizeof(
float)*
nbands;
95 uncertainty->derv_tsol_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
96 uncertainty->derv_tsol_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
97 uncertainty->derv_tsol_rh =(
float *)
p;
p+=
sizeof(
float)*
nbands;
99 uncertainty->derv_taua_min_rhorc_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
100 uncertainty->derv_taua_min_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
101 uncertainty->derv_taua_min_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
102 uncertainty->derv_taua_max_rhorc_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
103 uncertainty->derv_taua_max_taua_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
104 uncertainty->derv_taua_max_rhow_l=(
float *)
p;
p+=
sizeof(
float)*
nbands;
107 uncertainty->derv_Lg_taua=(
float *)
p;
p+=
sizeof(
float)*
nbands;
108 uncertainty->drhown_nir =(
float *)
p;
p+=
sizeof(
float)*
nbands;
114 if ((len - (int32_t) (
p - uncertainty->data)) < 0) {
115 printf(
"%s Line %d: bad allocation on error record\n", __FILE__, __LINE__);
119 printf(
"Allocated %d bytes in error record.\n", (
int) (
p - uncertainty->data));
121 uncertainty->derv_La_rhorc =(
float **)malloc(
nbands*
sizeof(
float *));
122 uncertainty->derv_taua_rhorc=(
float **)malloc(
nbands*
sizeof(
float *));
123 uncertainty->derv_tsen_rhorc=(
float **)malloc(
nbands*
sizeof(
float *));
124 uncertainty->derv_tsol_rhorc=(
float **)malloc(
nbands*
sizeof(
float *));
127 uncertainty->derv_La_rhorc[
i]=(
float *)malloc(nbands_ac*
sizeof(
float));
128 uncertainty->derv_taua_rhorc[
i]=(
float *)malloc(nbands_ac*
sizeof(
float));
129 uncertainty->derv_tsen_rhorc[
i]=(
float *)malloc(nbands_ac*
sizeof(
float));
130 uncertainty->derv_tsol_rhorc[
i]=(
float *)malloc(nbands_ac*
sizeof(
float));
132 uncertainty->derv_modrat_rhorc=(
float *)malloc(nbands_ac*
sizeof(
float));
133 uncertainty->ratio_rhow =(
float *)malloc(nbands_ac*
sizeof(
float));
135 uncertainty->corr_coef_rhot =(
float *)malloc(
nbands*
nbands*
sizeof(
float));
142 int32_t
nbands=oldrec->nbands;
143 int32_t nbands_ac=oldrec->nbands_ac;
145 int32_t ipb = ip *
nbands;
146 memcpy(&newrec->dsensor[ipb], &oldrec->dsensor[ipb],
sizeof(
float)*
nbands);
147 memcpy(&newrec->dsyst[ipb], &oldrec->dsyst[ipb],
sizeof(
float)*
nbands);
148 memcpy(&newrec->dLr[ipb], &oldrec->dLr[ipb],
sizeof(
float)*
nbands);
149 memcpy(&newrec->dtg_sol[ipb], &oldrec->dtg_sol[ipb],
sizeof(
float)*
nbands);
150 memcpy(&newrec->dtg_sen[ipb], &oldrec->dtg_sen[ipb],
sizeof(
float)*
nbands);
151 memcpy(&newrec->dt_sol[ipb], &oldrec->dt_sol[ipb],
sizeof(
float)*
nbands);
152 memcpy(&newrec->dt_sen[ipb], &oldrec->dt_sen[ipb],
sizeof(
float)*
nbands);
153 memcpy(&newrec->dTLg[ipb], &oldrec->dTLg[ipb],
sizeof(
float)*
nbands);
155 memcpy(newrec->ratio_rhow, oldrec->ratio_rhow,
sizeof(
float)*nbands_ac);
157 newrec->dwv[ip] = oldrec->dwv[ip];
158 newrec->dws[ip] = oldrec->dws[ip];
159 newrec->doz[ip] = oldrec->doz[ip];
160 newrec->dpr[ip] = oldrec->dpr[ip];
161 newrec->drh[ip] = oldrec->drh[ip];
163 newrec->derv_eps_Lrc_l=oldrec->derv_eps_Lrc_l;
164 newrec->derv_eps_Lrc_s=oldrec->derv_eps_Lrc_s;
165 newrec->derv_eps_taua_l=oldrec->derv_eps_taua_l;
166 newrec->derv_eps_taua_s=oldrec->derv_eps_taua_s;
167 newrec->derv_eps_rhow_l=oldrec->derv_eps_rhow_l;
178 int32_t ip, ib, ipb,inir;
180 int32_t
npix = uncertainty->npix;
181 int32_t
nbands = uncertainty->nbands;
182 int32_t nbands_ac = uncertainty->nbands_ac;
186 for(ip=0;ip<
npix;ip++){
187 uncertainty->dwv[ip]=0.;
188 uncertainty->dmw[ip]=0.;
189 uncertainty->dzw[ip]=0.;
190 uncertainty->dws[ip]=0.;
191 uncertainty->dwd[ip]=0.;
192 uncertainty->doz[ip]=0.;
193 uncertainty->dpr[ip]=0.;
194 uncertainty->drh[ip]=0.;
195 uncertainty->dmodrat[ip]=0.;
196 uncertainty->dno2_tropo[ip]=0.;
197 uncertainty->dno2_strat[ip]=0.;
201 uncertainty->dsensor[ipb]=0.0;
202 uncertainty->dsyst [ipb]=0.0;
203 uncertainty->dvc [ipb]=0.0;
205 uncertainty->dLr [ipb]=0.0;
206 uncertainty->dtg_sol[ipb]=0.0;
207 uncertainty->dtg_sen [ipb]=0.0;
208 uncertainty->dt_sol [ipb]=0.0;
209 uncertainty->dt_sen [ipb]=0.0;
210 uncertainty->dTLg [ipb]=0.0;
211 uncertainty->derv_pol[ipb]=0.0;
217 uncertainty->derv_modrat_taua_l=0.;
218 uncertainty->derv_eps_Lrc_s = 0.;
219 uncertainty->derv_eps_Lrc_l = 0.;
220 uncertainty->derv_eps_taua_l = 0;
221 uncertainty->derv_eps_rhow_l = 0;
222 uncertainty->derv_eps_taua_s = 0;
225 for(inir=0;inir<nbands_ac;inir++){
226 uncertainty->derv_modrat_rhorc[inir]=0.;
227 uncertainty->ratio_rhow[inir]=0.;
231 uncertainty->derv_Lg_taua[ib]=0.;
233 uncertainty->derv_taua_min_rhorc_l[ib]=0.;
234 uncertainty->derv_taua_max_rhorc_l[ib]=0.;
235 uncertainty->derv_taua_min_taua_l[ib]=0.;
236 uncertainty->derv_taua_max_taua_l[ib]=0.;
238 uncertainty->derv_La_taua_l[ib]=0.0;
239 uncertainty->derv_taua_taua_l[ib]=0.0;
240 uncertainty->derv_tsen_taua_l[ib]=0.0;
241 uncertainty->derv_tsol_taua_l[ib]=0.0;
243 for(inir=0;inir<nbands_ac;inir++){
244 uncertainty->derv_La_rhorc[ib][inir]=0.;
245 uncertainty->derv_taua_rhorc[ib][inir]=0.;
246 uncertainty->derv_tsen_rhorc[ib][inir]=0.;
247 uncertainty->derv_tsol_rhorc[ib][inir]=0.;
250 uncertainty->derv_La_rhow_l[ib]=0.0;
251 uncertainty->derv_taua_rhow_l[ib]=0.0;
252 uncertainty->derv_tsen_rhow_l[ib]=0.0;
253 uncertainty->derv_tsol_rhow_l[ib]=0.0;
254 uncertainty->derv_taua_min_rhow_l [ib]=0.0;
255 uncertainty->derv_taua_max_rhow_l [ib]=0.0;
257 uncertainty->derv_La_rh[ib]=0.0;
258 uncertainty->derv_taua_rh[ib]=0.0;
259 uncertainty->derv_tsen_rh[ib]=0.0;
260 uncertainty->derv_tsol_rh[ib]=0.0;
262 uncertainty->drhown_nir [ib]=0.0;
263 uncertainty->dbrdf [ib]=0.0;
267 uncertainty->pixel_covariance[ib]=0.;
273 for(
i=0;
i<uncertainty->nbands;
i++){
274 free(uncertainty->derv_La_rhorc[
i]);
275 free(uncertainty->derv_taua_rhorc[
i]);
276 free(uncertainty->derv_tsen_rhorc[
i]);
277 free(uncertainty->derv_tsol_rhorc[
i]);
279 free(uncertainty->derv_La_rhorc);
280 free(uncertainty->derv_taua_rhorc);
281 free(uncertainty->derv_tsen_rhorc);
282 free(uncertainty->derv_tsol_rhorc);
284 free(uncertainty->derv_modrat_rhorc);
285 free(uncertainty->ratio_rhow);
286 free(uncertainty->corr_coef_rhot);
288 free((
void *) uncertainty->data);