ocssw
V2022
|
calc_par.c
Go to the documentation of this file.
107 const float F0_5nm[] = {163.33, 167.94, 174.72, 175.26, 170.75, 159.98, 163.31, 177.76, 186.23, 199.60,
114 const float wl_5nm[] = {402.5, 407.5, 412.5, 417.5, 422.5, 427.5, 432.5, 437.5, 442.5, 447.5, 452.5, 457.5,
138 cf_planar_grid[i] = interp3d(dims, point, grid_scalar_inst_par, luts_data.scalar_inst_luts.cf_pard_p);
139 cf_scalar_grid[i] = interp3d(dims, point, grid_scalar_inst_par, luts_data.scalar_inst_luts.cf_pard_m);
145 float inst_PARd_c = interpnd(2, dims, point, grid_scalar_inst_par, luts_data.scalar_inst_luts.pard_p_cs);
146 float inst_PARo_c = interpnd(2, dims, point, grid_scalar_inst_par, luts_data.scalar_inst_luts.pard_m_cs);
147 float inst_PARo_o = interpnd(2, dims, point, grid_scalar_inst_par, luts_data.scalar_inst_luts.pard_m_oc);
150 splint(cf_planar_grid, cf_scalar_grid, second_derivative_cf_scalar_par, dim_cot, inst_cf_obs, &inst_cf_obs_spline);
160 void calc_scalar_par_mean_cosine(l2str *l2rec, int ip, float par_above, float par_c, float *scalar_par,
192 float calc_par(l2str *l2rec, int ip, int nbands, float *Lt, float taua, float angstrom, float *wl, float *fo,
369 (expf(-tau[band] / csolz)) * (expf((0.52f * taumol[band] + beta * tauaer[band]) / csolz) - 1.f);
374 sa = expf(-(taumol[band] + gamma * tauaer[band])) * (0.92f * taumol[band] + gamma * tauaer[band]);
613 float calc_par_impl_of_2023(l2str *l2rec, int ip, int nbands, float *Lt, float taua, float angstrom,
660 weight_5nm[N_5nm - 1] = (700.0 - wl_5nm[N_5nm - 1]) + (wl_5nm[N_5nm - 1] - wl_5nm[N_5nm - 2]) / 2.0;
794 getcldalbe(l1rec->cld_rad->taucld[ip], l1rec->cld_rad->cfcld[ip], csolz, observed_time, t_range, albe_obs,
891 Func_inst = CosSZ * Tg_bar_inst * Td_bar_inst * (1. - Abar) / (1.0 - As_bar) / (1.0 - Abar * Sa_bar);
892 Funcb_inst= CosSZ * Tg_bar_inst * Td_bar_inst * (1. - Abar) / (1.0 - Abar * Sa_bar); // # below surface
903 float Func_spectral[t_step][nbands], Funcb_spectral[t_step][nbands], Funcc_spectral[t_step][nbands];
1057 IntegTrans += min_shift * Func[time_point_start] / 2.0 + max_shift * Func[time_point_end] / 2.0;
1058 IntegTransb += min_shift * Funcb[time_point_start] / 2.0 + max_shift * Funcb[time_point_end] / 2.0;
void * allocateMemory(size_t numBytes, const char *name)
Definition: allocateMemory.c:7
float calc_par(l2str *l2rec, int ip, int nbands, float *Lt, float taua, float angstrom, float *wl, float *fo, float *ko3, float *taumolbar)
Definition: calc_par.c:192
float interp3d(const size_t *dims, const float *point, float **grid, const float *lut)
3-dimensional interpolation
Definition: par_utils.c:1795
void calc_scalar_inst_par(l2str *l2rec, int ip, float par_above_ins, float *par_scalar_ins)
Definition: calc_par.c:123
float interp6d(const size_t *dims, const float *point, float **grid, const float *lut)
6-dimensional interpolation
Definition: par_utils.c:1675
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
Definition: HOWTO_Add_a_product.txt:42
void unix2ymds(double usec, int16_t *year, int16_t *mon, int16_t *day, double *secs)
Definition: unix2ymds.c:8
void GetAerPhase(l2str *l2rec, int ip, int32_t nbands, float angstrom, float *aerphasefunc, float *omega, float *modelAngstrom)
Definition: par_utils.c:680
const double F
float calc_par_impl_of_2023(l2str *l2rec, int ip, int nbands, float *Lt, float taua, float angstrom, float *wl, float *fo, float *ko3, float *taumolbar, float *parb, float *parc)
Definition: calc_par.c:613
void sunangs_(int *, int *, float *, float *, float *, float *, float *)
Definition: sunangs.c:25
float getosa(float wl, float sza, float wind, float chl, float fr, const luts_par *luts_data)
Definition: par_utils.c:1544
void get_luts_data(l2str *l2rec, luts_par *luts_data)
Get the luts data object For now it includes the MERRA data. Should be moved after the merra data is ...
Definition: par_utils.c:244
void getcldalbe(float *TauCld, float *CF, float cosSZ, float t_obs, float *t_range, float *albe_obs, float *TauCld_obs, float *CF_obs, size_t t_step, float *wl, size_t bands_num)
//
Definition: par_utils.c:1384
subroutine func(x, conec, n, bconecno, bn, units, u, inno, i, outno, o, Input, Targ, p, sqerr)
Definition: ffnet.f:287
float rc(float x, float y)
void unix2yds(double usec, short *year, short *day, double *secs)
void triseset(int32_t jday, float xlon, float xlat, float *trise, float *tset)
Definition: par_utils.c:1131
float EstimateWatVap(int32_t year, int32_t month, int32_t day, float lat)
Definition: par_utils.c:1002
float interp4d(const size_t *dims, const float *point, float **grid, const float *lut)
4-dimensional interpolation
Definition: par_utils.c:1749
float EstimateDobson(int32_t year, int32_t month, int32_t day, float lat)
Definition: par_utils.c:876
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 per delivery and then split off a new MYD_PR03 pcf file for Aqua Added AssociatedPlatformInstrumentSensor to the inventory metadata in MOD01 mcf and MOD03 mcf Created new versions named MYD01 mcf and MYD03 where AssociatedPlatformShortName is rather than Terra The program itself has been changed to read the Satellite Instrument validate it against the input L1A and LUT and to use it determine the correct files to retrieve the ephemeris and attitude data from Changed to produce a LocalGranuleID starting with MYD03 if run on Aqua data Added the Scan Type file attribute to the Geolocation copied from the L1A and attitude_angels to radians rather than degrees The accumulation of Cumulated gflags was moved from GEO_validate_earth_location c to GEO_locate_one_scan c
Definition: HISTORY.txt:464
float interpnd(size_t n_dims, const size_t *dims, const float *point, float **grid, const float *lut)
N-dimensional interpolation.
Definition: par_utils.c:158
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
Definition: HISTORY.txt:424
void calc_scalar_par_mean_cosine(l2str *l2rec, int ip, float par_above, float par_c, float *scalar_par, float *mean_cosine)
Definition: calc_par.c:160