30 {
31
33
35
36 FILE *out;
37
38 double mu, mu2, nedt, nedt2;
39
40
41 if (argc < 4)
42 ERRMSG(
"Give parameters: <ctl> <airs.nc> <noise.tab>");
43
44
47
48
50
51
52 printf("Write noise data: %s\n", argv[3]);
53 if (!(out = fopen(argv[3], "w")))
54 ERRMSG(
"Cannot create file!");
55
56
57 fprintf(out,
58 "# $1 = altitude [km]\n"
59 "# $2 = longitude [deg]\n"
60 "# $3 = latitude [deg]\n"
61 "# $4 = mean temperature (retrieval) [K]\n"
62 "# $5 = noise estimate (retrieval) [K]\n"
63 "# $6 = mean temperature (a priori) [K]\n"
64 "# $7 = noise estimate (a priori) [K]\n\n");
65
66
67 for (
int ip = 0; ip < ret.
np; ip++) {
68
69
72
73
74 noise(wave, &mu, &nedt);
75 noise(wave2, &mu2, &nedt2);
76
77
78 fprintf(out, "%g %g %g %g %g %g %g\n",
80 wave->
lon[wave->
nx / 2][wave->
ny / 2],
81 wave->
lat[wave->
nx / 2][wave->
ny / 2], mu, nedt, mu2, nedt2);
82 }
83
84
85 fclose(out);
86
87
88 free(wave);
89 free(wave2);
90
91 return EXIT_SUCCESS;
92}
#define ERRMSG(...)
Print error message and quit program.
#define ALLOC(ptr, type, n)
Allocate memory.
void noise(wave_t *wave, double *mu, double *sig)
Estimate noise.
void ret2wave(ret_t *ret, wave_t *wave, int dataset, int ip)
Convert AIRS retrieval results to wave analysis struct.
void read_retr(char *filename, ret_t *ret)
Read AIRS retrieval data.
int np
Number of data points.
int nx
Number of across-track values.
int ny
Number of along-track values.
double lon[WX][WY]
Longitude [deg].
double lat[WX][WY]
Latitude [deg].