38 static double mu, nesr, sigma;
40 static int ichan, itrack, ix, iy, format;
44 ERRMSG(
"Give parameters: <ctl> <iasi_l1_file> <noise.tab>");
47 format = (int) scan_ctl(argc, argv,
"FORMAT", -1,
"1", NULL);
53 printf(
"Read IASI data: %s\n", argv[2]);
57 printf(
"Write noise data: %s\n", argv[3]);
58 if (!(out = fopen(argv[3],
"w")))
59 ERRMSG(
"Cannot create file!");
63 "# $1 = track index\n"
64 "# $2 = channel index\n"
65 "# $3 = wavenumber [1/cm]\n"
66 "# $4 = mean BT [K]\n"
67 "# $5 = NEDT [K]\n" "# $6 = NESR [W/(m^2 sr cm^-1)]\n");
70 for (itrack = 0; itrack < iasi_rad->
ntrack; itrack += 60) {
81 for (iy = itrack; iy < GSL_MIN(itrack + 60, iasi_rad->
ntrack); iy++) {
82 for (ix = 0; ix < wave.
nx; ix++)
83 wave.
temp[ix][wave.
ny] = BRIGHT(iasi_rad->
Rad[iy][ix][ichan],
84 iasi_rad->
freq[ichan]);
92 noise(&wave, &mu, &sigma);
95 nesr = PLANCK(mu + sigma, iasi_rad->
freq[ichan])
96 - PLANCK(mu, iasi_rad->
freq[ichan]);
99 if (gsl_finite(sigma))
100 fprintf(out,
"%d %d %.4f %g %g %g\n", itrack, ichan,
101 iasi_rad->
freq[ichan], mu, sigma, nesr);
void iasi_read(int format, char *filename, iasi_rad_t *iasi_rad)
Read IASI Level-1 data.
void noise(wave_t *wave, double *mu, double *sig)
Estimate noise.
IASI Code Collection library declarations.
#define L1_NXTRACK
Across-track size of IASI radiance granule (don't change).
#define IASI_L1_NCHAN
Number of channels of IASI radiance granule.
int main(int argc, char *argv[])
IASI converted Level-1 radiation data.
double freq[IASI_L1_NCHAN]
channel wavenumber [cm^-1]
int ntrack
Number of along-track samples.
float Rad[L1_NTRACK][L1_NXTRACK][IASI_L1_NCHAN]
Radiance [W/(m^2 sr cm^-1)].
int nx
Number of across-track values.
int ny
Number of along-track values.
double temp[WX][WY]
Temperature [K].