Go to the documentation of this file.
17 static float a[] = {-1.0796, 9.0481e-2, -6.8452e-3};
18 return (1.0 + pow(10.0,
a[0] + airmass *
a[1] + airmass * airmass *
a[2]));
28 static float a[] = {-1.3491, 0.1155, -7.0218e-3};
29 return (1.0 / (1.0 + pow(10.0,
a[0] + airmass *
a[1] + airmass * airmass *
a[2])));
39 static float p0 =
STDPR;
42 int32_t nwave =
l1rec->l1file->nbands;
46 float raz =
l1rec->delphi[ip];
50 float ws =
l1rec->ws[ip];
52 float wv =
l1rec->wv[ip];
54 float *Fo =
l1rec->Fo;
55 float *Tau_r =
l1rec->l1file->Tau_r;
66 airmass = 1.0 /
mu0 + 1.0 /
mu;
70 for (ib = 0; ib < nwave; ib++) {
72 l1rec->Lr [ipb + ib] = 0.0;
73 l1rec->L_q [ipb + ib] = 0.0;
74 l1rec->L_u [ipb + ib] = 0.0;
75 l1rec->tLf [ipb + ib] = 0.0;
76 l1rec->tg_sol[ipb + ib] = 1.0;
77 l1rec->tg_sen[ipb + ib] = 1.0;
78 l1rec->t_h2o [ipb + ib] = 1.0;
79 l1rec->t_o2 [ipb + ib] = 1.0;
80 l1rec->t_sol [ipb + ib] = exp(-0.5 *
pr / p0 * Tau_r[ib] /
mu0);
81 l1rec->t_sen [ipb + ib] = exp(-0.5 *
pr / p0 * Tau_r[ib] /
mu);
82 l1rec->tg_sol[ipb + ib] = 1.0;
83 l1rec->tg_sen[ipb + ib] = 1.0;
87 if (
input->oxaband_opt == 1 &&
l1rec->l1file->iwave[ib] == 765) {
105 for (ib = 0; ib < nwave; ib++) {
115 if (
input->oxaband_opt == 1 && ib765 > -1) {
117 l1rec->Lr [ipb + ib765] *= a_o2;
118 l1rec->L_q[ipb + ib765] *= a_o2;
119 l1rec->L_u[ipb + ib765] *= a_o2;
123 if (
l1rec->alt > 0) {
125 scaleRayleigh = 1.0 - exp(-
l1rec->alt / 10);
127 for (ib = 0; ib < nwave; ib++) {
128 l1rec->Lr [ipb + ib] *= scaleRayleigh;
129 l1rec->L_q[ipb + ib] *= scaleRayleigh;
130 l1rec->L_u[ipb + ib] *= scaleRayleigh;
141 &
l1rec->glint_coef[ip], &glint_coef_q, &glint_coef_u);
143 for (ib = 0; ib < nwave; ib++) {
144 l1rec->TLg[ipb + ib] =
l1rec->glint_coef[ip] * exp(-(Tau_r[ib] + 0.1) * airmass) * Fo[ib];
145 l1rec->L_q[ipb + ib] += (glint_coef_q *
l1rec->TLg[ipb + ib]);
146 l1rec->L_u[ipb + ib] += (glint_coef_u *
l1rec->TLg[ipb + ib]);
float oxygen_ray(float airmass)
void rayleigh(l1str *l1rec, int32_t ip)
void atmocor1(l1str *l1rec, int32_t ip)
void gaseous_transmittance(l1str *l1rec, int32_t ip)
void whitecaps(int32_t sensorID, int32_t evalmask, int32_t nwave, float ws, float ws_max, float rhof[])
int getglint_iqu_(float *, float *, float *, float *, float *, float *, float *, float *)
float oxygen_aer(float airmass)
#define GAS_TRANS_TBL_BIT
PGE01 indicating that PGE02 PGE01 V6 for and PGE01 V2 for MOD03 were used to produce the granule By convention adopted in all MODIS Terra PGE02 code versions are The fourth digit of the PGE02 version denotes the LUT version used to produce the granule The source of the metadata environment variable ProcessingCenter was changed from a QA LUT value to the Process Configuration A sign used in error in the second order term was changed to a
int32_t sensorID[MAXNFILES]