ocssw
V2022
|
nr.h
void sncndn(float uu, float emmc, float *sn, float *cn, float *dn)
void svdvar(float **v, int ma, float w[], float **cvm)
void qrupdt(float **r, float **qt, int n, float u[], float v[])
void quadmx(float **a, int n)
float gasdev(long *idum)
an array had not been initialized Several spelling and grammar corrections were which is read from the appropriate MCF the above metadata values were hard coded A problem calculating the average background DN for SWIR bands when the moon is in the space view port was corrected The new algorithm used to calculate the average background DN for all reflective bands when the moon is in the space view port is now the same as the algorithm employed by the thermal bands For non SWIR changes in the averages are typically less than Also for non SWIR the black body DNs remain a backup in case the SV DNs are not available For SWIR the changes in computed averages were larger because the old which used the black body suffered from contamination by the micron leak As a consequence of the if SV DNs are not available for the SWIR the EV pixels will not be the granule time is used to identify the appropriate tables within the set given for one LUT the first two or last two tables respectively will be used for the interpolation If there is only one LUT in the set of it will be treated as a constant LUT The manner in which Earth View data is checked for saturation was changed Previously the raw Earth View DNs and Space View DNs were checked against the lookup table values contained in the table dn_sat The change made is to check the raw Earth and Space View DNs to be sure they are less than the maximum saturation value and to check the Space View subtracted Earth View dns against a set of values contained in the new lookup table dn_sat_ev The metadata configuration and ASSOCIATEDINSTRUMENTSHORTNAME from the MOD02HKM product The same metatdata with extensions and were removed from the MOD021KM and MOD02OBC products ASSOCIATEDSENSORSHORTNAME was set to MODIS in all products These changes are reflected in new File Specification which users may consult for exact the pow functions were eliminated in Emissive_Cal and Emissive bands replaced by more efficient code Other calculations throughout the code were also made more efficient Aside from a few round off there was no difference to the product The CPU time decreased by about for a day case and for a night case A minor bug in calculating the uncertainty index for emissive bands was corrected The frame index(0-based) was previously being used the frame number(1-based) should have been used. There were only a few minor changes to the uncertainty index(maximum of 1 digit). 3. Some inefficient arrays(Sigma_RVS_norm_sq) were eliminated and some code lines in Preprocess_L1A_Data were moved into Process_OBCEng_Emiss. There were no changes to the product. Required RAM was reduced by 20 MB. Now
void period(float x[], float y[], int n, float ofac, float hifac, float px[], float py[], int np, int *nout, int *jmax, float *prob)
float bessj0(float x)
void jacobi(float **a, int n, float d[], float **v, int *nrot)
void dsvbksb(double **u, double w[], double **v, int m, int n, double b[], double x[])
float rf(float x, float y, float z)
float rtsec(float(*func)(float), float x1, float x2, float xacc)
void red(int iz1, int iz2, int jz1, int jz2, int jm1, int jm2, int jmf, int ic1, int jc1, int jcf, int kc, float ***c, float **s)
void machar(int *ibeta, int *it, int *irnd, int *ngrd, int *machep, int *negep, int *iexp, int *minexp, int *maxexp, float *eps, float *epsneg, float *xmin, float *xmax)
void addint(double **uf, double **uc, double **res, int nf)
void fourn(float data[], unsigned long nn[], int ndim, int isign)
void hqr(float **a, int n, float wr[], float wi[])
void poldiv(float u[], int n, float v[], int nv, float q[], float r[])
void covsrt(float **covar, int ma, int ia[], int mfit)
void svbksb(float **u, float w[], float **v, int m, int n, float b[], float x[])
void mpmul(unsigned char w[], unsigned char u[], unsigned char v[], int n, int m)
float midsqu(float(*funk)(float), float aa, float bb, int n)
void dsprstx(double sa[], unsigned long ija[], double x[], double b[], unsigned long n)
float rtnewt(void(*funcd)(float, float *, float *), float x1, float x2, float xacc)
void rlft3(float ***data, float **speq, unsigned long nn1, unsigned long nn2, unsigned long nn3, int isign)
void rzextr(int iest, float xest, float yest[], float yz[], float dy[], int nv)
void banmul(float **a, unsigned long n, int m1, int m2, float x[], float b[])
void pzextr(int iest, float xest, float yest[], float yz[], float dy[], int nv)
float bessi1(float x)
void mgfas(double **u, int n, int maxcyc)
void fasper(float x[], float y[], unsigned long n, float ofac, float hifac, float wk1[], float wk2[], unsigned long nwk, unsigned long *nout, unsigned long *jmax, float *prob)
void scrsho(float(*fx)(float))
===========================================================================V4.1.3 12/18/2002============================================================================Changes which do not affect scientific output:1. The R *LUT was eliminated and the equivalent formulation for R *, i.e. 1/(m1 *e_sun_over_pi), was substituted for it in the only instance of its use, which is in the calculation of the RSB uncertainty index. This reduces the size of the Reflective LUT HDF file by approximately 1/4 to 1/3. The equivalent formulation of R *differed from the new by at most 0.056% in test granules and uncertainty differences of at most 1 count(out of a range of 0-15) were found in no more than 1 in 100, 000 pixels. 2. In Preprocess.c, a small error where the trailing dropped scan counter was incremented when the leading dropped scan counter should have been was fixed. This counter is internal only and is not yet used for any purpose. 3. NEW MYD02OBC Metadata Configuration Files. MCST wishes to have the OBC files archived even when the Orbit Number is recorded as "-1". Accordingly, ECS has delivered new MCF files for OBC output having all elements in the OrbitCalculatedSpatialDomain container set to "MANDATORY=FALSE". 4. pgs_in.version is now reset to "1" in Metadata.c before the call to look up the geolocation gringpoint information.============================================================================V4.1.1 CODE SPECIFIC TO MODIS/AQUA(FM1) 10/03/2002============================================================================Two changes were made to the code which do not affect scientific output:1. A bug which caused PGE02 to fail when scans were dropped between granules was fixed.(The length of the error message generated was shortened.) 2. Messages regarding an invalid MCST LUT Version or an invalid Write High Resolution Night Mode Output value in the PCF file were added.==============================================================================V4.1.0 CODE SPECIFIC TO MODIS/AQUA(FM1)(NEVER USED IN PRODUCTION) 07/30/2002==============================================================================Changes which impact scientific output of code:1. The LUT type of the RVS corrections was changed to piecewise linear. In addition the RVS LUTs were changed from listing the RVS corrections to listing the quadratic coefficients necessary to make the RVS corrections. The coefficients are now calculated by interpolating on the granule collection time and the RVS corrections are then generated using the interpolated coefficients. Previously used Emissive and Reflective RVS LUT tables were eliminated and new ones introduced. Several changes were made to the code which should not affect scientific output. They are:1. The ADC correction algorithm and related LUTs were stripped from the code.(The ADC correction has always been set to "0" so this has no scientific impact.) 2. Some small changes to the code, chiefly to casting of variables, were added to make it LINUX-compatible. Output of code run on LINUX machines displays differences of at most 1 scaled integer(SI) from output of code run on IRIX machines. The data type of the LUT "dn_sat_ev" was changed to float64 to avoid discrepancies seen between MOD_PR02 run on LINUX systems and IRIX systems where values were flagged under one operating system but not the other. 3. Checking for non-functioning detectors, sector rotation, incalculable values of the Emissive calibration factor "b1", and incalculable values of SV or BB averages was moved outside the loop over frames in Emissive_Cal.c since none of these quantities are frame-dependent. 4. The code was altered so that if up to five scans are dropped between the leading/middle or middle/trailing granules, the leading or trailing granule will still be used in emissive calibration to form a cross-granule average. QA bits 25 and 26 are set for a gap between the leading/middle and middle/trailing granules respectively. This may in rare instances lead to a change in emissive calibration coefficients for scans at the beginning or end of a granule. 5.(MODIS/AQUA ONLY) The name of the seed(error message) file was changed from "MODIS_36100.h" to "MODIS_36110.h". 6. Metadata.c was changed so that the source of the geolocation metadata is the input geolocation file rather than the L1A granule. 7. To reduce to overall size of the reflective LUT HDF files, fill values were eliminated from all LUTs previously dimensioned "BDSM"([NUM_REFLECTIVE_BANDS] *[MAX_DETECTORS_PER_BAND] *[MAX_SAMPLES_PER_BAND] *[NUM_MIRROR_SIDES]) in the LUT HDF files. Each table piece is stored in the HDF file with dimensions NUM_REFLECTIVE_INDICES, where NUM_REFLECTIVE_INDICES=[NUM_250M_BANDS *DETECTORS_PER_250M_BAND *SAMPLES_PER_250M_BAND *NUM_MIRROR_SIDES]+[NUM_500M_BANDS *DETECTORS_PER_500M_BAND *SAMPLES_PER_500M_BAND *NUM_MIRROR_SIDES]+[NUM_1000M_BANDS *DETECTORS_PER_1KM_BAND *SAMPLES_PER_1KM_BAND *NUM_MIRROR_SIDES] with SAMPLES_PER_250M_BAND=4, SAMPLES_PER_500M_BAND=2, and SAMPLES_PER_1KM_BAND=1. Values within each table piece appear in the order listed above. The overall dimensions of time dependent BDSM LUTs are now[NUM_TIMES] *[NUM_REFLECTIVE_INDICES], where NUM_TIMES is the number of time dependent table pieces. 8. Checking for non-functioning detectors, sector rotation, incalculable values of the Emissive calibration factor "b1", and incalculable values of SV or BB averages was moved outside the loop over frames in Emissive_Cal.c since none of these quantities are frame-dependent. 9. The code was altered so that if up to five scans are dropped between the leading/middle or middle/trailing granules, the leading or trailing granule will still be used in emissive calibration to form a cross-granule average. QA bits 25 and 26 are set for a gap between the leading/middle and middle/trailing granules respectively. This may in rare instances lead to a change in emissive calibration coefficients for scans at the beginning or end of a granule. 10. The array of b1s in Preprocess.c was being initialized to -1 outside the loop over bands, which meant that if b1 could not be computed, the value of b1 from the previous band for that scan/detector combination was used. The initialization was moved inside the band loop.============================================================================V3.1.0(Original Aqua-specific code version) 02/06/2002============================================================================AQUA-Specific changes made:1. A correction to a problem with blackbody warmup on bands 33, 35, and 36 was inserted. PC Bands 33, 35, and 36 on MODIS Aqua saturate on BB warmup before 310K, which means current code will not provide correct b1 calibration coefficients when the BB temperatures are above the saturation threshold. A LUT with default b1s and band-dependent temperature thresholds will be inserted in code. If the BB temperature is over the saturation threshold for the band, the default b1 from the table is used. 2. The number of possible wavelengths in the Emissive LUT RSR file was changed to 67 in order to accommodate the Aqua RSR tables. 3. Several changes to the upper and lower bound limits on LUT values were inserted. Changes to both Aqua and Terra Code:1. A check was put into Emissive_Cal.c to see whether the value of b1 being used to calibrate a pixel is negative. If so, the pixel is flagged with the newly created flag TEB_B1_NOT_CALCULATED, value 65526, and the number of pixels for which this occurs is counted in the QA_common table. 2. The array of b1s in Preprocess.c was being initialized to -1 outside the loop over bands, which meant that if b1 could not be computed, the value of b1 from the previous band for that scan/detector combination was used. The initialization was moved inside the band loop. 3. Minor code changes were made to eliminate compiler warnings when the code is compiled in 64-bit mode. 4. Temperature equations were upgraded to be MODIS/Aqua or MODIS/Terra specific and temperature conversion coefficients for Aqua were inserted.========================================================================================================================================================ALL CHANGES BELOW ARE TO COMMON TERRA/AQUA CODE USED BEFORE 02/06/2002========================================================================================================================================================v3.0.1 11/26/2001============================================================================Several small changes to the code were made, none of which changes the scientific output:1. The code was changed so that production of 250m and 500m resolution data when all scans of a granule are in night mode may be turned off/on through the PCF file. 2. A check on the times of the leading and trailing granules was inserted. If a leading or trailing granule does not immediately precede or follow(respectively) the middle granule, it is treated as a missing granule and a warning message is printed. 3. The code now reads the "MCST Version Number"(e.g. "3.0.1.0_Terra") from the PCF file and checks it against the MCST Version number contained in the LUT HDF files. This was done to allow the user to make sure the code is being run using the correct LUT files.(The designators "0_Terra", "1_Terra", etc.) refer to the LUT versions.) 4. A small bug in Preprocess.c was corrected code
Definition: HISTORY.txt:661
void chebft(float a, float b, float c[], int n, float(*func)(float))
void slvsml(double **u, double **rhs)
unsigned short icrc(unsigned short crc, unsigned char *bufptr, unsigned long len, short jinit, int jrev)
void qrdcmp(float **a, int n, float *c, float *d, int *sing)
void vander(double x[], double w[], double q[], int n)
void shell(unsigned long n, float a[])
float bessk0(float x)
void rkdumb(float vstart[], int nvar, float x1, float x2, int nstep, void(*derivs)(float, float[], float[]))
float f1dim(float x)
unsigned long igray(unsigned long n, int is)
void rebin(float rc, int nd, float r[], float xin[], float xi[])
void cholsl(float **a, int n, float p[], float b[], float x[])
void wwghts(float wghts[], int n, float h, void(*kermom)(double[], double, int))
float midexp(float(*funk)(float), float aa, float bb, int n)
void sprstm(float sa[], unsigned long ija[], float sb[], unsigned long ijb[], float thresh, unsigned long nmax, float sc[], unsigned long ijc[])
void ks2d2s(float x1[], float y1[], unsigned long n1, float x2[], float y2[], unsigned long n2, float *d, float *prob)
void twofft(float data1[], float data2[], float fft1[], float fft2[], unsigned long n)
float chebev(float a, float b, float c[], int m, float x)
void chstwo(float bins1[], float bins2[], int nbins, int knstrn, float *df, float *chsq, float *prob)
float f1(float x)
void sprstp(float sa[], unsigned long ija[], float sb[], unsigned long ijb[])
void correl(float data1[], float data2[], unsigned long n, float ans[])
void fgauss(float x, float a[], float *y, float dyda[], int na)
void gaulag(float x[], float w[], int n, float alf)
void pwt(float a[], unsigned long n, int isign)
void splin2(float x1a[], float x2a[], float **ya, float **y2a, int m, int n, float x1, float x2, float *y)
void medfit(float x[], float y[], int ndata, float *a, float *b, float *abdev)
void miser(float(*func)(float[]), float regn[], int ndim, unsigned long npts, float dith, float *ave, float *var)
int irbit1(unsigned long *iseed)
float dbrent(float ax, float bx, float cx, float(*f)(float), float(*df)(float), float tol, float *xmin)
void eigsrt(float d[], float **v, int n)
void sinft(float y[], int n)
void beschb(double x, double *gam1, double *gam2, double *gampl, double *gammi)
void solvde(int itmax, float conv, float slowc, float scalv[], int indexv[], int ne, int nb, int m, float **y, float ***c, float **s)
float erfcc(float x)
float pythag(float a, float b)
void hufdec(unsigned long *ich, unsigned char *code, unsigned long lcode, unsigned long *nb, huffcode *hcode)
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 out
Definition: HISTORY.txt:422
void polin2(float x1a[], float x2a[], float **ya, int m, int n, float x1, float x2, float *y, float *dy)
void ddpoly(float c[], int nc, float x, float pd[], int nd)
void eclazz(int nf[], int n, int(*equiv)(int, int))
float gammp(float a, float x)
void quadvl(float x, float y, float *fa, float *fb, float *fc, float *fd)
float rtflsp(float(*func)(float), float x1, float x2, float xacc)
void amebsa(float **p, float y[], int ndim, float pb[], float *yb, float ftol, float(*funk)(float[]), int *iter, float temptr)
void ratint(float xa[], float ya[], int n, float x, float *y, float *dy)
float ran2(long *idum)
void jacobn(float x, float y[], float dfdx[], float **dfdy, int n)
void asolve(unsigned long n, double b[], double x[], int itrnsp)
void sort3(unsigned long n, float ra[], float rb[], float rc[])
void hpsort(unsigned long n, float ra[])
void mpdiv(unsigned char q[], unsigned char r[], unsigned char u[], unsigned char v[], int n, int m)
float plgndr(int l, int m, float x)
void broydn(float x[], int n, int *check, void(*vecfunc)(int, float[], float[]))
void fitexy(float x[], float y[], int ndat, float sigx[], float sigy[], float *a, float *b, float *siga, float *sigb, float *chi2, float *q)
void fleg(float x, float pl[], int nl)
void quadct(float x, float y, float xx[], float yy[], unsigned long nn, float *fa, float *fb, float *fc, float *fd)
void ratlsq(double(*fn)(double), double a, double b, int mm, int kk, double cof[], double *dev)
void mmid(float y[], float dydx[], int nvar, float xs, float htot, int nstep, float yout[], void(*derivs)(float, float[], float[]))
float rtbis(float(*func)(float), float x1, float x2, float xacc)
float ellpi(float phi, float en, float ak)
float revcst(float x[], float y[], int iorder[], int ncity, int n[])
void sobseq(int *n, float x[])
float f3(float z)
void slvsm2(double **u, double **rhs)
float ran0(long *idum)
void dsvdcmp(double **a, int m, int n, double w[], double **v)
float factrl(int n)
float erff(float x)
void crank(unsigned long n, float w[], float *s)
void mppi(int n)
void gaucof(int n, float a[], float b[], float amu0, float x[], float w[])
void kstwo(float data1[], unsigned long n1, float data2[], unsigned long n2, float *d, float *prob)
float qsimp(float(*func)(float), float a, float b)
void score(float xf, float y[], float f[])
void locate(float xx[], unsigned long n, float x, unsigned long *j)
float midinf(float(*funk)(float), float aa, float bb, int n)
void fourew(FILE *file[5], int *na, int *nb, int *nc, int *nd)
void mrqmin(float x[], float y[], float sig[], int ndata, float a[], int ia[], int ma, float **covar, float **alpha, float *chisq, void(*funcs)(float, float[], float *, float[], int), float *alamda)
void fit(float x[], float y[], int ndata, float sig[], int mwt, float *a, float *b, float *siga, float *sigb, float *chi2, float *q)
void load2(float x2, float v2[], float y[])
void drealft(double data[], unsigned long n, int isign)
float ran4(long *idum)
float trapzd(float(*func)(float), float a, float b, int n)
float golden(float ax, float bx, float cx, float(*f)(float), float tol, float *xmin)
void polcof(float xa[], float ya[], int n, float cof[])
void mglin(double **u, int n, int ncycle)
void hunt(float xx[], unsigned long n, float x, unsigned long *jlo)
fcomplex hypgeo(fcomplex a, fcomplex b, fcomplex c, fcomplex z)
this program makes no use of any feature of the SDP Toolkit that could generate such a then geolocation is calculated at that and then aggregated up to Resolved feature request Bug by adding three new int8 SDSs for each high resolution offsets between the high resolution geolocation and a bi linear interpolation extrapolation of the positions This can be used to reconstruct the high resolution geolocation Resolved Bug by delaying cumulation of gflags until after validation of derived products Resolved Bug by setting Latitude and Longitude to the correct fill resolving to support Near Real Time because they may be unnecessary if use of entrained ephemeris and attitude data is turned resolving bug report Corrected to filter out Aqua attitude records with missing status helping resolve bug MOD_PR03 will still correctly write scan and pixel data that does not depend upon the start thereby resolving MODur00108 Changed header guard macro names to avoid reserved name resolving MODur00104 Maneuver list file for Terra satellite was updated to include data from Jecue DuChateu Maneuver list files for both Terra and Aqua were updated to include two maneuvers from recent IOT weekly reports The limits for Z component of angular momentum was and to set the fourth GEO scan quality flag for a scan depending upon whether or not it occurred during one of them Added _FillValue attributes to many and changed the fill value for the sector start times from resolving MODur00072 Writes boundingcoordinate metadata to L1A archived metadata For PERCENT *ECS change to treat rather resolving GSFcd01518 Added a LogReport Changed to create the Average Temperatures vdata even if the number of scans is
Definition: HISTORY.txt:301
void sphbes(int n, float x, float *sj, float *sy, float *sjp, float *syp)
void shoot(int n, float v[], float f[])
void zrhqr(float a[], int m, float rtr[], float rti[])
void pccheb(float d[], float c[], int n)
float df1dim(float x)
void chebpc(float c[], float d[], int n)
float expint(int n, float x)
void predic(float data[], int ndata, float d[], int m, float future[], int nfut)
void tutest(float data1[], unsigned long n1, float data2[], unsigned long n2, float *t, float *prob)
float brent(float ax, float bx, float cx, float(*f)(float), float tol, float *xmin)
Definition: numerical.c:240
void derivs(float x, float y[], float dydx[])
float erffc(float x)
void rk4(float y[], float dydx[], int n, float x, float h, float yout[], void(*derivs)(float, float[], float[]))
void spctrm(FILE *fp, float p[], int m, int k, int ovrlap)
float ran1(long *idum)
void simplx(float **a, int m, int n, int m1, int m2, int m3, int *icase, int izrov[], int iposv[])
int decchk(char string[], int n, char *ch)
void avevar(float data[], unsigned long n, float *ave, float *var)
void psdes(unsigned long *lword, unsigned long *irword)
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 file
Definition: HISTORY.txt:413
void fpoly(float x, float p[], int np)
void mpsub(int *is, unsigned char w[], unsigned char u[], unsigned char v[], int n)
float bessk1(float x)
float betai(float a, float b, float x)
void chsone(float bins[], float ebins[], int nbins, int knstrn, float *df, float *chsq, float *prob)
void dlinmin(float p[], float xi[], int n, float *fret, float(*func)(float[]), void(*dfunc)(float[], float[]))
float fredin(float x, int n, float a, float b, float t[], float f[], float w[], float(*g)(float), float(*ak)(float, float))
void wt1(float a[], unsigned long n, int isign, void(*wtstep)(float[], unsigned long, int))
float bessi(int n, float x)
void stifbs(float y[], float dydx[], int nv, float *xx, float htry, float eps, float yscal[], float *hdid, float *hnext, void(*derivs)(float, float[], float[]))
float f2(float y)
void qroot(float p[], int n, float *b, float *c, float eps)
void dftint(float(*func)(float), float a, float b, float w, float *cosint, float *sinint)
void linbcg(unsigned long n, double b[], double x[], int itol, double tol, int itmax, int *iter, double *err)
float zriddr(float(*func)(float), float x1, float x2, float xacc)
void mpsad(unsigned char w[], unsigned char u[], int n, int iv)
void savgol(float c[], int np, int nl, int nr, int ld, int m)
void atimes(unsigned long n, double x[], double r[], int itrnsp)
void hpsel(unsigned long m, unsigned long n, float arr[], float heap[])
void pade(double cof[], int n, float *resid)
float zbrent(float(*func)(float), float x1, float x2, float tol)
void mpsqrt(unsigned char w[], unsigned char u[], unsigned char v[], int n, int m)
float midsql(float(*funk)(float), float aa, float bb, int n)
void rstrct(double **uc, double **uf, int nc)
void lnsrch(int n, float xold[], float fold, float g[], float p[], float x[], float *f, float stpmax, int *check, float(*func)(float[]))
float betacf(float a, float b, float x)
void relax2(double **u, double **rhs, int n)
void mpinv(unsigned char u[], unsigned char v[], int n, int m)
void sprsax(float sa[], unsigned long ija[], float x[], float b[], unsigned long n)
Definition: sprsax.c:1
void stiff(float y[], float dydx[], int n, float *x, float htry, float eps, float yscal[], float *hdid, float *hnext, void(*derivs)(float, float[], float[]))
void lop(double **out, double **u, int n)
void fixrts(float d[], int m)
void svdfit(float x[], float y[], float sig[], int ndata, float a[], int ma, float **u, float **v, float w[], float *chisq, void(*funcs)(float, float[], int))
void bandec(float **a, unsigned long n, int m1, int m2, float **al, unsigned long indx[], float *d)
void bcucof(float y[], float y1[], float y2[], float y12[], float d1, float d2, float **c)
void rkck(float y[], float dydx[], int n, float x, float h, float yout[], float yerr[], void(*derivs)(float, float[], float[]))
void sort(unsigned long n, float arr[])
float bessy(int n, float x)
void simp3(float **a, int i1, int k1, int ip, int kp)
void mpsmu(unsigned char w[], unsigned char u[], int n, int iv)
void eclass(int nf[], int n, int lista[], int listb[], int m)
float rofunc(float b)
void anneal(float x[], float y[], int iorder[], int ncity)
void sor(double **a, double **b, double **c, double **d, double **e, double **f, double **u, int jmax, double rjac)
void matadd(double **a, double **b, double **c, int n)
void arcode(unsigned long *ich, unsigned char **codep, unsigned long *lcode, unsigned long *lcd, int isign, arithcode *acode)
void memcof(float data[], int n, int m, float *xms, float d[])
void gauleg(float x1, float x2, float x[], float w[], int n)
float rd(float x, float y, float z)
void interp(double **uf, double **uc, int nf)
void load(float x1, float v[], float y[])
void difeq(int k, int k1, int k2, int jsf, int is1, int isf, int indexv[], int ne, float **s, float **y)
void daub4(float a[], unsigned long n, int isign)
void bksub(int ne, int nb, int jf, int k1, int k2, float ***c)
void fill0(double **u, int n)
void frenel(float x, float *s, float *c)
subroutine func(x, conec, n, bconecno, bn, units, u, inno, i, outno, o, Input, Targ, p, sqerr)
Definition: ffnet.f:287
float dawson(float x)
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 already in place for MODIS TERRA was implemented for MODIS AQUA A time dependent LUT was added which gives coefficients for a detector specific crosstalk correction based on the aggregated Band radiances The Band scaled integers are adjusted by the Band correction term
Definition: HISTORY.txt:439
int metrop(float de, float t)
void tqli(float d[], float e[], int n, float **z)
void gauher(float x[], float w[], int n)
float poidev(float xm, long *idum)
void load1(float x1, float v1[], float y[])
double ratval(double x, double cof[], int mm, int kk)
void mnewt(int ntrial, float x[], int n, float tolx, float tolf)
int irbit2(unsigned long *iseed)
void simp2(float **a, int m, int n, int *ip, int kp)
int zbrac(float(*func)(float), float *x1, float *x2)
float bessj(int n, float x)
void zbrak(float(*fx)(float), float x1, float x2, int n, float xb1[], float xb2[], int *nb)
void gaussj(float **a, int n, float **b, int m)
void four1(float data[], unsigned long nn, int isign)
void kendl2(float **tab, int i, int j, float *tau, float *z, float *prob)
void laguer(fcomplex a[], int m, fcomplex *x, int *its)
void zroots(fcomplex a[], int m, fcomplex roots[], int polish)
float qtrap(float(*func)(float), float a, float b)
float rc(float x, float y)
float gammq(float a, float x)
void qrsolv(float **a, int n, float c[], float d[], float b[])
void convlv(float data[], unsigned long n, float respns[], unsigned long m, int isign, float ans[])
void mpneg(unsigned char u[], int n)
void pcshft(float a, float b, float d[], int n)
float expdev(long *idum)
void rsolv(float **a, int n, float d[], float b[])
void fourfs(FILE *file[5], unsigned long nn[], int ndim, int isign)
void powell(float p[], float **xi, int n, float ftol, int *iter, float *fret, float(*func)(float[]))
float dfridr(float(*func)(float), float x, float h, float *err)
void realft(float data[], unsigned long n, int isign)
void simp1(float **a, int mm, int ll[], int nll, int iabf, int *kp, float *bmax)
void cntab2(int **nn, int ni, int nj, float *h, float *hx, float *hy, float *hygx, float *hxgy, float *uygx, float *uxgy, float *uxy)
void tridag(float a[], float b[], float c[], float r[], float u[], unsigned long n)
void fred2(int n, float a, float b, float t[], float f[], float w[], float(*g)(float), float(*ak)(float, float))
void mplsh(unsigned char u[], int n)
unsigned short icrc1(unsigned short crc, unsigned char onech)
void reverse(int iorder[], int ncity, int n[])
void cosft2(float y[], int n, int isign)
void svdcmp(float **a, int m, int n, float w[], float **v)
void rkqs(float y[], float dydx[], int n, float *x, float htry, float eps, float yscal[], float *hdid, float *hnext, void(*derivs)(float, float[], float[]))
float ran3(long *idum)
void bessjy(float x, float xnu, float *rj, float *ry, float *rjp, float *ryp)
void arcsum(unsigned long iin[], unsigned long iout[], unsigned long ja, int nwk, unsigned long nrad, unsigned long nc)
void bcuint(float y[], float y1[], float y2[], float y12[], float x1l, float x1u, float x2l, float x2u, float x1, float x2, float *ansy, float *ansy1, float *ansy2)
no change in intended resolving MODur00064 Corrected handling of bad ephemeris attitude data
Definition: HISTORY.txt:356
float bessk(int n, float x)
void eulsum(float *sum, float term, int jterm, float wksp[])
void ranpt(float pt[], float regn[], int n)
float amotry(float **p, float y[], float psum[], int ndim, float(*funk)(float[]), int ihi, float fac)
void mp2dfr(unsigned char a[], unsigned char s[], int n, int *m)
void piksrt(int n, float arr[])
float selip(unsigned long k, unsigned long n, float arr[])
void hufenc(unsigned long ich, unsigned char **codep, unsigned long *lcode, unsigned long *nb, huffcode *hcode)
void cosft(float y[], int n, int isign)
void iindexx(unsigned long n, long arr[], unsigned long indx[])
void ksone(float data[], unsigned long n, float(*func)(float), float *d, float *prob)
void mpmov(unsigned char u[], unsigned char v[], int n)
float qromb(float(*func)(float), float a, float b)
float evlmem(float fdt, float d[], int m, float xms)
float ei(float x)
float chixy(float bang)
void cosft1(float y[], int n)
float bico(int n, int k)
void sort2(unsigned long n, float arr[], float brr[])
void tred2(float **a, int n, float d[], float e[])
void mpsdv(unsigned char w[], unsigned char u[], int n, int iv, int *ir)
void pwtset(int n)
void hypdrv(float s, float yy[], float dyyds[])
void mpadd(unsigned char w[], unsigned char u[], unsigned char v[], int n)
void bessik(float x, float xnu, float *ri, float *rk, float *rip, float *rkp)
an array had not been initialized Several spelling and grammar corrections were which is read from the appropriate MCF the above metadata values were hard coded A problem calculating the average background DN for SWIR bands when the moon is in the space view port was corrected The new algorithm used to calculate the average background DN for all reflective bands when the moon is in the space view port is now the same as the algorithm employed by the thermal bands For non SWIR changes in the averages are typically less than Also for non SWIR the black body DNs remain a backup in case the SV DNs are not available For SWIR the changes in computed averages were larger because the old which used the black body suffered from contamination by the micron leak As a consequence of the if SV DNs are not available for the SWIR the EV pixels will not be the granule time is used to identify the appropriate tables within the set given for one LUT the first two or last two tables respectively will be used for the interpolation If there is only one LUT in the set of it will be treated as a constant LUT The manner in which Earth View data is checked for saturation was changed Previously the raw Earth View DNs and Space View DNs were checked against the lookup table values contained in the table dn_sat The change made is to check the raw Earth and Space View DNs to be sure they are less than the maximum saturation value and to check the Space View subtracted Earth View dns against a set of values contained in the new lookup table dn_sat_ev The metadata configuration and ASSOCIATEDINSTRUMENTSHORTNAME from the MOD02HKM product The same metatdata with extensions and were removed from the MOD021KM and MOD02OBC products ASSOCIATEDSENSORSHORTNAME was set to MODIS in all products These changes are reflected in new File Specification which users may consult for exact the pow functions were eliminated in Emissive_Cal and Emissive bands replaced by more efficient code Other calculations throughout the code were also made more efficient Aside from a few round off there was no difference to the product The CPU time decreased by about for a day case and for a night case A minor bug in calculating the uncertainty index for emissive bands was corrected The frame the required RAM for each execution is MB on the DEC ALPHA and MB on the SGI Octane v2
Definition: HISTORY.txt:728
void polcoe(float x[], float y[], int n, float cof[])
void choldc(float **a, int n, float p[])
void caldat(long julian, int *mm, int *id, int *iyyy)
void bsstep(float y[], float dydx[], int nv, float *xx, float htry, float eps, float yscal[], float *hdid, float *hnext, void(*derivs)(float, float[], float[]))
void linmin(float p[], float xi[], int n, float *fret, float(*func)(float[]))
void hufapp(unsigned long index[], unsigned long nprob[], unsigned long n, unsigned long i)
void mrqcof(float x[], float y[], float sig[], int ndata, float a[], int ia[], int ma, float **alpha, float beta[], float *chisq, void(*funcs)(float, float[], float *, float[], int))
float bessy0(float x)
void vegas(float regn[], int ndim, float(*fxn)(float[], float), int init, unsigned long ncall, int itmx, int nprn, float *tgral, float *sd, float *chi2a)
void wtn(float a[], unsigned long nn[], int ndim, int isign, void(*wtstep)(float[], unsigned long, int))
float quad3d(float(*func)(float, float, float), float x1, float x2)
void dftcor(float w, float delta, float a, float b, float endpts[], float *corre, float *corim, float *corfac)
void frprmn(float p[], int n, float ftol, int *iter, float *fret, float(*func)(float[]), void(*dfunc)(float[], float[]))
float amotsa(float **p, float y[], float psum[], int ndim, float pb[], float *yb, float(*funk)(float[]), int ihi, float *yhi, float fac)
double dpythag(double a, double b)
void copy(double **aout, double **ain, int n)
float rtsafe(void(*funcd)(float, float *, float *), float x1, float x2, float xacc)
void ftest(float data1[], unsigned long n1, float data2[], unsigned long n2, float *f, float *prob)
void odeint(float ystart[], int nvar, float x1, float x2, float eps, float h1, float hmin, int *nok, int *nbad, void(*derivs)(float, float[], float[]), void(*rkqs)(float[], float[], int, float *, float, float, float[], float *, float *, void(*)(float, float[], float[])))
void chder(float a, float b, float c[], float cder[], int n)
float factln(int n)
void pearsn(float x[], float y[], unsigned long n, float *r, float *prob, float *z)
void voltra(int n, int m, float t0, float h, float *t, float **f, float(*g)(int, float), float(*ak)(int, int, float, float))
void kendl1(float data1[], float data2[], unsigned long n, float *tau, float *z, float *prob)
void balanc(float **a, int n)
void amoeba(float **p, float y[], int ndim, float ftol, float(*funk)(float[]), int *iter)
void flmoon(int n, int nph, long *jd, float *frac)
void trnspt(int iorder[], int ncity, int n[])
void kermom(double w[], double y, int m)
void simpr(float y[], float dydx[], float dfdx[], float **dfdy, int n, float xs, float htot, int nstep, float yout[], void(*derivs)(float, float[], float[]))
void newt(float x[], int n, int *check, void(*vecfunc)(int, float[], float[]))
void mnbrak(float *ax, float *bx, float *cx, float *fa, float *fb, float *fc, float(*func)(float))
Definition: numerical.c:176
float ellf(float phi, float ak)
void sprspm(float sa[], unsigned long ija[], float sb[], unsigned long ijb[], float sc[], unsigned long ijc[])
float elle(float phi, float ak)
float bessy1(float x)
void gaujac(float x[], float w[], int n, float alf, float bet)
void toeplz(float r[], float x[], float y[], int n)
float bnldev(float pp, int n, long *idum)
void lfit(float x[], float y[], float sig[], int ndat, float a[], int ia[], int ma, float **covar, float *chisq, void(*funcs)(float, float[], int))
void ttest(float data1[], unsigned long n1, float data2[], unsigned long n2, float *t, float *prob)
void cyclic(float a[], float b[], float c[], float alpha, float beta, float r[], float x[], unsigned long n)
float probks(float alam)
void dfpmin(float p[], int n, float gtol, int *iter, float *fret, float(*func)(float[]), void(*dfunc)(float[], float[]))
void mprove(float **a, float **alud, int n, int indx[], float b[], float x[])
float beta(float z, float w)
float midpnt(float(*func)(float), float a, float b, int n)
void cntab1(int **nn, int ni, int nj, float *chisq, float *df, float *prob, float *cramrv, float *ccc)
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
void sprsin(float **a, int n, float thresh, unsigned long nmax, float sa[], unsigned long ija[])
Definition: sprsin.c:3
float bessi0(float x)
void spear(float data1[], float data2[], unsigned long n, float *d, float *zd, float *probd, float *rs, float *probrs)
void sprstx(float sa[], unsigned long ija[], float x[], float b[], unsigned long n)
void stoerm(float y[], float d2y[], int nv, float xs, float htot, int nstep, float yout[], void(*derivs)(float, float[], float[]))
void relax(double **u, double **rhs, int n)
void rank(unsigned long n, unsigned long indx[], unsigned long irank[])
float trncst(float x[], float y[], int iorder[], int ncity, int n[])
void spread(float y, float yy[], unsigned long n, float x, int m)
void hufmak(unsigned long nfreq[], unsigned long nchin, unsigned long *ilong, unsigned long *nlong, huffcode *hcode)
void chint(float a, float b, float c[], float cint[], int n)
void piksr2(int n, float arr[], float brr[])
float gamdev(int ia, long *idum)
float rj(float x, float y, float z, float p)
float qromo(float(*func)(float), float a, float b, float(*choose)(float(*)(float), float, float, int))
void indexx(unsigned long n, float arr[], unsigned long indx[])
void hypser(fcomplex a, fcomplex b, fcomplex c, fcomplex z, fcomplex *series, fcomplex *deriv)
void dsprsax(double sa[], unsigned long ija[], double x[], double b[], unsigned long n)
void moment(float data[], int n, float *ave, float *adev, float *sdev, float *var, float *skew, float *curt)
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 shootf(int n, float v[], float f[])
float qgaus(float(*func)(float), float a, float b)
void dfour1(double data[], unsigned long nn, int isign)
void rotate(float **r, float **qt, int n, int i, float a, float b)
void fdjac(int n, float x[], float fvec[], float **df, void(*vecfunc)(int, float[], float[]))
double anorm2(double **a, int n)
void resid(double **res, double **u, double **rhs, int n)
void cisi(float x, float *ci, float *si)
float bessj1(float x)
void elmhes(float **a, int n)
double snrm(unsigned long n, double sx[], int itol)
void tptest(float data1[], float data2[], unsigned long n, float *t, float *prob)
void pinvs(int ie1, int ie2, int je1, int jsf, int jc1, int k, float ***c, float **s)
void splie2(float x1a[], float x2a[], float **ya, int m, int n, float **y2a)
void banbks(float **a, unsigned long n, int m1, int m2, float **al, unsigned long indx[], float b[])
void orthog(int n, float anu[], float alpha[], float beta[], float a[], float b[])
void ks2d1s(float x1[], float y1[], unsigned long n1, void(*quadvl)(float, float, float *, float *, float *, float *), float *d1, float *prob)
void polint(float xa[], float ya[], int n, float x, float *y, float *dy)
void arcmak(unsigned long nfreq[], unsigned long nchh, unsigned long nradd, arithcode *acode)
void airy(float x, float *ai, float *bi, float *aip, float *bip)
void matsub(double **a, double **b, double **c, int n)