9 static double dx[
L1_NXTRACK], x0[3], x1[3], x2[3];
15 ERRMSG(
"Give parameters: <ctl> <pert.nc>");
30 for (
int itrack = 0; itrack < pert->
ntrack; itrack++) {
31 geo2cart(0, pert->
lon[itrack][0][4], pert->
lat[itrack][0][4], x0);
32 geo2cart(0, pert->
lon[itrack][pert->
nxtrack - 1][4],
34 const double d = 2. * RE * asin(DIST(x0, x1) / (2. * RE));
35 dmin = GSL_MIN(dmin, d);
36 dmax = GSL_MAX(dmax, d);
42 printf(
"\nmean_swath_width= %.1f km\n", dmu / n);
43 printf(
"minimum_swath_width= %.1f km\n", dmin);
44 printf(
"maximum_swath_width= %.1f km\n", dmax);
53 for (
int itrack = 0; itrack < pert->
ntrack; itrack++) {
54 for (
int ixtrack = 0; ixtrack < pert->
nxtrack - 1; ixtrack++) {
55 geo2cart(0, pert->
lon[itrack][ixtrack][4],
56 pert->
lat[itrack][ixtrack][4], x0);
57 geo2cart(0, pert->
lon[itrack][ixtrack + 1][4],
58 pert->
lat[itrack][ixtrack + 1][4], x1);
59 const double d = 2. * RE * asin(DIST(x0, x1) / (2. * RE));
60 dmin = GSL_MIN(dmin, d);
61 dmax = GSL_MAX(dmax, d);
68 printf(
"\nmean_across_track_sampling_distance= %.1f km | %.1f km\n",
69 dmu / n, dmu / n / 3.);
70 printf(
"minimum_across_track_sampling_distance= %.1f km | %.1f km\n", dmin,
72 printf(
"maximum_across_track_sampling_distance= %.1f km | %.1f km\n", dmax,
82 for (
int itrack = 0; itrack < pert->
ntrack - 1; itrack++) {
83 for (
int ixtrack = 0; ixtrack < pert->
nxtrack; ixtrack++) {
84 geo2cart(0, pert->
lon[itrack][ixtrack][4],
85 pert->
lat[itrack][ixtrack][4], x0);
86 geo2cart(0, pert->
lon[itrack + 1][ixtrack][4],
87 pert->
lat[itrack + 1][ixtrack][4], x1);
88 const double d = 2. * RE * asin(DIST(x0, x1) / (2. * RE));
89 dmin = GSL_MIN(dmin, d);
90 dmax = GSL_MAX(dmax, d);
97 printf(
"\nmean_along_track_sampling_distance= %.1f km | %.1f km\n",
98 dmu / n, dmu / n / 3.);
99 printf(
"minimum_along_track_sampling_distance= %.1f km | %.1f km\n", dmin,
101 printf(
"maximum_along_track_sampling_distance= %.1f km | %.1f km\n", dmax,
111 for (
int itrack = 0; itrack < pert->
ntrack - 1; itrack++) {
112 geo2cart(0, pert->
lon[itrack][pert->
nxtrack / 2][4],
114 geo2cart(0, pert->
lon[itrack][pert->
nxtrack / 2 + 1][4],
115 pert->
lat[itrack][pert->
nxtrack / 2 + 1][4], x1);
116 geo2cart(0, pert->
lon[itrack + 1][pert->
nxtrack / 2][4],
117 pert->
lat[itrack + 1][pert->
nxtrack / 2][4], x2);
118 for (
int i = 0; i < 3; i++) {
122 const double d = acos(DOTP(x1, x2) / (NORM(x1) * NORM(x2))) * 180. / M_PI;
123 dmin = GSL_MIN(dmin, d);
124 dmax = GSL_MAX(dmax, d);
130 printf(
"\nmean_across_track_angle= %.1f deg\n", dmu / n);
131 printf(
"minimum_across_track_angle= %.1f deg\n", dmin);
132 printf(
"maximum_across_track_angle= %.1f deg\n", dmax);
135 for (
int itrack = 0; itrack < pert->
ntrack; itrack++) {
136 for (
int ixtrack = 0; ixtrack < pert->
nxtrack; ixtrack++) {
137 geo2cart(0, pert->
lon[itrack][0][4], pert->
lat[itrack][0][4], x0);
138 geo2cart(0, pert->
lon[itrack][ixtrack][4],
139 pert->
lat[itrack][ixtrack][4], x1);
140 const double d = 2. * RE * asin(DIST(x0, x1) / (2. * RE));
148 for (
int ixtrack = 0; ixtrack < pert->
nxtrack; ixtrack++)
149 printf(
"ixtrack= %2d | dx= %.1f km | cx= %.1f km\n", ixtrack,
150 dx[ixtrack] / nx[ixtrack],
152 dx[ixtrack] / nx[ixtrack]);
void read_pert(char *filename, char *pertname, int dc, pert_t *pert)
Read radiance perturbation data.
CrIS library declarations.
#define L1_NXTRACK
Across-track size of CrIS radiance granule.
int main(int argc, char *argv[])
double lat[PERT_NTRACK][PERT_NXTRACK][PERT_NFOV]
Latitude [deg].
int ntrack
Number of along-track values.
int nxtrack
Number of across-track values.
double lon[PERT_NTRACK][PERT_NXTRACK][PERT_NFOV]
Longitude [deg].