OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
viirs_sim_sdr.h
Go to the documentation of this file.
1 /*******************************************************************
2 
3  viirs_sim_sdr.h
4 
5  purpose: include file for the viirs sdr simulation program
6 
7  Parameters:
8  Type Name I/O Description
9  ---- ---- --- -----------
10 
11  Modification history:
12  Programmer Date Description of change
13  ---------- ---- ---------------------
14  W. Robinson, SAIC 23-Sep-2008 Original development
15  W. Robinson, SAIC 20 Nov 2008 modify for line-by-line I/O,
16  structure seperation for in, out,
17  and info
18 
19  *******************************************************************/
20 
21 /*
22  * Note that hdf5.h is needed for this
23  */
24 #include "h5io.h"
25 #include "readL2scan.h"
26 #include <stdio.h>
27 #include <string.h>
28 #include <math.h>
29 
30 #define NDET 16
31 #define N_VNIR_BND 7
32 #define N_IR_BND 9
33 /* assume 1 geo file */
34 #define MAX_BND N_VNIR_BND + N_IR_BND
35 #define MAX_FILES MAX_BND + 1
36 #define RAD_CGS_2_MKS 10.
37 #define SEC_PER_SCAN 1.7864
38 #define PI 3.141592654
39 /*
40  * some needed missing data fill value indicators
41  */
42 #define ONBOARD_PT_FLOAT32_FILL -999.7
43 #define ONBOARD_PT_UINT16_FILL 65533
44 #define SOUB_UINT16_FILL 65528
45 #define ERR_UINT16_FILL 65531
46 #define MISS_UINT16_FILL 65534
47 #define MISS_FLOAT32_FILL -999.8
48 /*
49  * VIIRS scan angle types
50  */
51 #define VIR_SCAN_AGSMP 0 /* aggregated sample # */
52 #define VIR_SCAN_UASMP 1 /* unaggregated sample # */
53 #define VIR_SCAN_ANG 2 /* scan angle, degrees */
54 #define VIR_SCAN_AOI 3 /* AOI on HAM mirror, degrees */
55 
56 /*
57  * input controls to program
58  */
59 struct ctl_struc_d {
60  char in_geo_file[500]; /* 1st arg, the geo data file with basic
61  data in it */
62  char out_loc[500]; /* output SDR location. Files will be named
63  VYYYYDDDHHMMSS_GEO.h5 for geo and
64  VYYYYDDDHHMMSS_SDRMXX.h5 for the band files,
65  XX is the band number */
66  int l2_use; /* flag for existance (1) or absence (0) of an L2 file with
67  TOA radiances needed for the SDR */
68  char l2_file[500]; /* name of the input L2 file */
69  int meta_use; /* 1 if metadata output is desired, otherwise 0 */
70  char meta_file[500]; /* name of file to put metadata in */
71  int rhos_use; /* flag for existance (1) or absence (0) of a surface
72  reflectance file for filling gaps in TOA data*/
73  char rhos_file[500]; /* name of surface reflectance file */
74  int rhos_opt; /* reflectance data use option: 0 - replace where Lt
75  from ocean color is missing, 1 - replace everywhere */
76  int bowtie_opt; /* include the bow tie deletion if 1, not if 0 */
77  int any_artifact; /* are there any artifacts? 0 = no, 1 = yes */
78  int out_scn_fmt; /* switch to modify scan format: 2 = default - do not
79  change input data format, 1 - if unaggregated with margin, remove the
80  margin, 0 - make output aggregated = standard SDR format */
81  int oxt_mode; /* optical crosstalk (OXT) mode: 0 (default) no Xtalk applied,
82  1 apply it */
83  char oxt_coef[500]; /* OXT influence coefficients, default is
84  $VIIRS_SIM_DATA/oxt_default.h5 */
85  char inter_band[500]; /* Inter-band data table, default is
86  $VIIRS_SIM_DATA/inter_band_default.dat */
87  int make_m; /* control to make M bands: 0 - do the NIV NIR 1-7,
88  1 - do all 16 bands */
89  int sdr_overwrite; /* control to allow overwrite of an existing SDR file:
90  0 - (default) do not allow, 1 - allow overwrite */
91  /* for removing vicarious gain and offset from the TOA from l2gen_inv
92  if ever needed */
93  int vic_cal_chg; /* 0 if no change, 1 if a change in gain or offset */
94  /* from default of gain 1, offset 0 */
95  float gain[MAX_BND]; /* gains */
96  float offset[MAX_BND]; /* offset, eq: Lt = ( Lt0 * gain ) + offset */
97  /* create time control */
98  char cre_time[23]; /* create time in form YYYYMMDD/HHMMSS.FFFFFF */
99  int fname_opt; /* file name option: 0 to make std name,
100  1 to omit create time */
101  /* for the count conversion and electronic crosstalk */
102  int count_cal_opt; /* cal option: 0 - no count calibration, 1 - do cal
103  and de-cal (set if electronic Xtalk is set),
104  2 - as (1), but also integerize the dn value */
105  char count_cal_gain_file[500]; /* file containing the gain and dark
106  for count to radiance conversion */
107  char count_cal_rvs_file[500]; /* file containing the RVS for count
108  to radiance conversion */
109  char count_decal_gain_file[500]; /* as above, but for de-calibration
110  if different from the cal */
111  char count_decal_rvs_file[500]; /* as count_cal_rvs_file, but for de-cal */
112  int count_dark_opt; /* set to 0 for no dark subtraction, 1 to do subtract */
113  int ext_opt; /* electronic crosstalk mode: 0(default) - no crosstalk, */
114  /* 1 - perform the crosstalk */
115  char ext_coeff_file[500]; /* name of ext file or 'Unspecified' for */
116  /* use of trivial coefficients (zero values) */
117  char id_domain[500]; /* domain designator in dataset and attributes */
118  char id_origin[500]; /* origin designator in dataset and attributes */
119  /* noise controls - an option and a file of coeffs */
120  int noise_mode; /* 0 if not adding noise, 1 if adding it */
121  char noise_coef[500]; /* noise coeff file */
122  /* stray light controls - an option and a file of coeffs */
123  int stray_opt; /* stray light use option 0 - no, 1 - yes */
124  char stray_tbl[500]; /* stray light PSF coeff file */
125 };
126 
127 typedef struct ctl_struc_d ctl_struc;
128 
129 typedef long long int64;
130 typedef unsigned long long uint64;
131 
132 /*
133  * general data information from the simulated geo file and synthesized L2
134  */
136  char origin[50]; /* Originator of the data, for file name create and attr */
137  char domain[50]; /* Domain - for file name create */
138  int year; /* information about the geo data - 4 digit year*/
139  int day; /* day of year */
140  double start_sec; /* data start second */
141  char ofile_base[200]; /* storage for the output file base with time */
142  char sdr_files[MAX_FILES][200]; /* fil names of SDR files */
143  /* Some derived values that are convienient to carry here */
144  int64 t58_day; /* time of start of the day in microsec past 1/1/1958 */
145  char cre_date[10]; /* string of the create data of file: YYYYMMDD */
146  char cre_time[20]; /* string of the create time of file: HHMMSS.SSSSSSZ */
147  int64 st_58_t; /* data start in micro sec > 1958 */
148  int64 en_58_t; /* data end in micro sec > 1958 */
149  char st_date[10]; /* data start as variable cre... (cre_date... above) */
150  char st_time[20]; /* data start time as cre... */
151  char en_date[10]; /* data end as cre... */
152  char en_time[20]; /* data end time as cre... */
153  float *geo_pos; /* position data from geolocation file, in km */
154  float *geo_vel; /* velocity data from geolocation file, in km/s */
155  float *geo_att; /* sensor attitude data from geolocation file,
156  in degrees */
157  unsigned char *ham_side; /* HAM half angle mirror side storage,
158  just set to 0 on 1st scan 1 on next ... */
159  double *scan_time; /* read from the geo file, scan time in sec of day */
160 };
161 
162 typedef struct sdr_info_struc_d sdr_info_struc;
163 
165  int year; /* year of data */
166  int yday; /* day of year */
167  int msec; /* millisec of day for the scan */
168  int nbnd; /* # bands */
169  int npix; /* # pixels */
170  int nlin; /* # lines in whole file */
171  int nscan; /* # scans should be nlin / 16 */
172  /* input format info read from the geo file */
173  int scn_fmt; /* input scan format, found from geo file: 0 aggregated,
174  1 unaggregated - 6304 pix, 2 unaggregated with margin */
175  int margin[2]; /* along-track and -scan margins around std scan */
176  int ndet_scan; /* convenience - NDET + 2 * margin[0] = # det in a scan */
177  unsigned char ham_side; /* HAM half angle mirror side for the scan */
178  /* */
179  h5io_str geo_fid; /* file id for geo file */
180  h5io_str geo_dat_id[6]; /* dataset ids for the input geo info:
181  lat, lon, sena, senz, sola, solz */
182  float *lat; /* the line[s] storage arrays */
183  float *lon;
184  float *sena;
185  float *senz;
186  float *sola;
187  float *solz;
188  float *bnd_lt[MAX_BND]; /* for the radiances (reflectances made on
189  output) in W m^-2 sr^-1 or BBT in K */
190  unsigned char *bnd_q[MAX_BND]; /* flags for bad values in radiances, */
191  /* see bnd_q in out_rec */
192  float *dn[MAX_BND]; /* if needed, storage for the count data in float */
193  unsigned char *gain_bit[MAX_BND]; /* seperate gain state bit for counts */
194  char *dn_sat[MAX_BND]; /* indicator that the dn resulting from the radiance
195  would have been saturated in VIIRS if 1 */
196  float ll_lims[6]; /* These are latitude, longitude limits for the
197  input geo data: low lat, high, low (-)lon, high
198  low (+)lon, high */
199  int lam_band[MAX_BND]; /* the band wavelength in nm */
200  float f0[MAX_BND]; /* the season corrected F0 value for the bands */
201  /* info for the input L2 file with TOA rads (and atmos info for rhos work) */
202  l2_prod l2_str; /* The information structure for reading a l2 file */
203 };
204 typedef struct in_rec_struc_d in_rec_struc;
205 
207  int year; /* year of data */
208  int yday; /* day of year */
209  int msec; /* millisec of day for the scan */
210  int nbnd; /* # bands */
211  int npix; /* # pixels */
212  int nlin; /* # lines */
213  int nscan; /* # scans should be nlin / 16 */
214  /* input format info read from the geo file */
215  int scn_fmt; /* input scan format, found from geo file: 0 aggregated,
216  1 unaggregated - 6304 pix, 2 unaggregated with margin */
217  int margin[2]; /* along-track and -scan margins around std scan */
218  int ndet_scan; /* convenience - NDET + 2 * margin[0] = # det in a scan */
219  /* */
220  h5io_str sdr_fid[MAX_FILES]; /* file id for sdr files making output SDR */
221  h5io_str sdr_dat_gid[2][MAX_FILES]; /* 2 groups under which lies the
222  geo or band datasets */
223  h5io_str geo_dat_id[6]; /* dataset ids for the output geo info:
224  lat, lon, sena, senz, sola, solz */
225  h5io_str bnd_dat_id[2][MAX_BND]; /* dataset ids for the output band
226  info: radiance, refl / BBT values */
227  h5io_str qual1_m_id[MAX_BND]; /* QF1_VIIRSMBANDSDR dataset id */
228  float *lat; /* the line[s] storage arrays */
229  float *lon; /* NOTE that for now, these will point to the input arrays */
230  float *sena;
231  float *senz;
232  float *sola;
233  float *solz;
234  float *bnd_lt[MAX_BND]; /* for the radiances (reflectances made on
235  output) in W m^-2 sr^-1 or BBT in K */
236  unsigned char *bnd_q[MAX_BND]; /* flags for bad values in radiances, 0 if */
237  /* none and 1 if bow tie deletion on this pixel */
238  /* 2 if bad value resultant from rads and refl fill */
239  unsigned char *qual1_m[MAX_BND]; /* This is the QF1_VIIRSMBANDSDR dataset
240  information for the current scan. For an aggregated output
241  (scn_fmt = 0) it is std def of bits 2 and 3 having saturatio:
242  0 no samples saturated, 1 some, 2 all saturated. For unaggregated,
243  (scn_fmt = 1, 2) bit 2 is gain state: 0 hi, 1 low and bit 3 is
244  saturation: 0 unsat, 1 saturated */
245  float *f0; /* the season corrected F0 value for the bands */
246  int *lam_band; /* the band wavelength in microns = nm / 10^3 */
247  float scale[MAX_BND]; /* scale and offset for the VIIRS output radiance */
248  float offset[MAX_BND];
249  float refl_scale[MAX_BND]; /* as above but for reflectivity (reflective
250  bands) or BBT (emissive bands) */
252  char out_bnd_typ[MAX_BND]; /* 0 if this band stored as unsigned short, 1
253  for float */
254  char meas_typ[MAX_BND]; /* measurement type: 0 - rad + refl,
255  1 - BBT and rad */
256 };
257 typedef struct out_rec_struc_d out_rec_struc;
258 
259 /*
260  * This is an attribute description storage structure for outputting the
261  * many attributes
262  */
264  int express; /* a 0 to not output this entry as a attribute, 1 to do it */
265  int type; /* type of data - 0 most types, 1 - char type */
266  char *name; /* attrib name */
267  hid_t typ; /* type of data, like H5T_NATIVE_INT, note for type = 1,
268  this is not used */
269  int str_len; /* string length - if 1 string, this can be 0, but
270  for an array, length of the strings (all same length)
271  This is not used for type = 0 */
272  int ndim; /* # dimensis of data array, 0 if a scalar */
273  int *dim_siz; /* lengths of the dimensions, not used if ndim = 0 */
274  void *data; /* the actual data to write */
275 };
276 typedef struct h5attr_struc_d h5attr_struc;
277 
278 /*
279  * The next 2 structures contain the calibration information: the gain
280  * and the RVS information
281  */
283  int nham; /* # Half angle Mirror sides (2, I hope) */
284  int ndet; /* # detectors (16 for VIIRS) */
285  int ngain; /* # gain states (2, I hope) */
286  int nbnd; /* # bands - should be 11 for all reflective M bands,
287  but could be 7 for just vis and NIR */
288  float *c0; /* zero order gain coefficient */
289  float *c1; /* first order gain coefficient */
290  float *c2; /* 2nd order gain coefficient */
291  /* the lt is computed from counts, dn, with
292  lt = c0 + c1 * dn + c2 * dn^2 */
293  float *dark; /* dark count value, the dark-subtracted counts, dn, are
294  related to the raw counts, DN, by
295  dn = DN - dark */
296  /* for c* and dark, the storage is f( HAM, det, gain, band )
297  with band the fastest varying... */
298  char gain_ct[16];
299  /* gain_ct is the # gain states for the m band - it will
300  determine if dn conversion will try to use the low gain
301  or just stay with the high gain (more likely to
302  saturate) */
303 };
304 typedef struct vir_gain_struc_d vir_gain_struc;
305 
307  int nham; /* # Half angle Mirror sides (2, I hope) */
308  int ndet; /* # detectors (16 for VIIRS) */
309  int nbnd; /* # bands - should be 11 for all reflective M bands,
310  but could be 7 for just vis and NIR */
311  float aoi_range[2]; /* AOI range coefficients are applicable for */
312  float *a0; /* zero order rvs coefficient*/
313  float *a1; /* 1st order rvs coefficient*/
314  float *a2; /* 2nd order rvs coefficient*/
315  /* array storage: f( HAM, det, band )
316  with band the fastest varying... */
317  /* RVS = a0 + a1 * AOI + a2 * AOI^2 */
318 };
319 typedef struct vir_rvs_struc_d vir_rvs_struc;
320 
322  int nbands; /* # bands included in stray light table */
323  int nrec_det; /* # lines (= detectors) in stray light table */
324  /* note that a convolution array exists for each
325  band and line of a standard scan */
326  int nsamp; /* # pixels in the convolution array */
327  int ndet; /* # lines (= detectors) in convcolution array */
328  int csamp; /* (0 origin) center sample of the convolution array */
329  float *psf; /* the set of convolution arrays for each band and
330  detector, as a 4 d array of
331  ( nsamp, ndet, nbands, nrec_det ) with nsamp the
332  fastest dimension */
333 };
334 typedef struct vir_straylt_struc_d vir_straylt_struc;
335 
336 /*
337  * prototypes
338  */
339 int check_usage(int, char *[], ctl_struc *);
340 int rd_sim_init(ctl_struc *, sdr_info_struc *, in_rec_struc *);
341 int rd_geo_init(ctl_struc *, sdr_info_struc *, in_rec_struc *);
342 int init_sdr(ctl_struc *, sdr_info_struc *, in_rec_struc *, out_rec_struc *);
343 int init_sdr_top(int, sdr_info_struc *, out_rec_struc *);
344 int init_geo_data(sdr_info_struc *, in_rec_struc *, out_rec_struc *);
345 int init_bnd_data(int, sdr_info_struc *, in_rec_struc *, out_rec_struc *);
346 int init_sdr_dpattr(int, h5io_str *, sdr_info_struc *);
347 int init_sdr_agg(int, h5io_str *, sdr_info_struc *);
348 int init_sdr_gran(int, h5io_str *, sdr_info_struc *, out_rec_struc *);
349 int rd_sdr_scan(int, ctl_struc *, sdr_info_struc *, in_rec_struc *);
350 int rd_geo_scan(int, sdr_info_struc *, in_rec_struc *);
351 int gen_const_rad_scn(sdr_info_struc *, int, in_rec_struc *);
352 int wr_sdr_scan(int, out_rec_struc *);
353 int wr_geo_scan(int, out_rec_struc *);
354 int wr_bnd_scan(int, out_rec_struc *);
355 int fin_sdr(ctl_struc *, in_rec_struc *, out_rec_struc *);
356 int wr_attr_seq(h5io_str *, int, h5attr_struc *);
357 int gen_sdr_fname(int, char *, sdr_info_struc *, int, char *);
358 int rd_rhos_scan(char *, int, int, int, float **);
359 int rhos_to_lt(int, float **, in_rec_struc *, int, sdr_info_struc *);
360 int scan_cvt(in_rec_struc *, out_rec_struc *);
361 int ang_avg(float, float, float, float, float *, float *);
362 int mod_artifact(ctl_struc *, in_rec_struc *);
363 int viirs_oxt(ctl_struc *, in_rec_struc *);
364 int viirs_oxt_ib_read(char *, float *, float *);
365 int viirs_oxt_comp(ctl_struc *, in_rec_struc *);
366 float bbt_2_rad(float, float);
367 int vir_xf_scan(float, int, int, float *);
368 int vset_cal_gain(char *, vir_gain_struc *);
369 int vset_cal_rvs(char *, vir_rvs_struc *);
370 int viirs_cal(ctl_struc *, in_rec_struc *);
371 int viirs_decal(ctl_struc *, in_rec_struc *);
372 int viirs_sim_input(int, char *[], ctl_struc *);
373 int32_t rdsensorinfo(int32_t, int32_t, const char *, void **);
374 int bnd_ix_2_sen_info(char *, void *);
375 int viirs_ext(ctl_struc *, in_rec_struc *);
376 int viirs_noise(ctl_struc *, in_rec_struc *, int);
377 int viirs_noise_coef_rd(char *, float *, float *, float *, float *);
378 int viirs_straylt(ctl_struc *, in_rec_struc *, int);
379 int viirs_straylt_rd(char *, vir_straylt_struc *);
380 /* */
381 int jd_c(int, int, int);
382 int day2mday(int, int, int *, int *);
char stray_tbl[500]
float aoi_range[2]
char meas_typ[MAX_BND]
char * dn_sat[MAX_BND]
char ext_coeff_file[500]
unsigned char * bnd_q[MAX_BND]
int mod_artifact(ctl_struc *, in_rec_struc *)
Definition: mod_artifact.c:4
int viirs_ext(ctl_struc *, in_rec_struc *)
Definition: viirs_ext.c:5
h5io_str geo_dat_id[6]
int viirs_oxt(ctl_struc *, in_rec_struc *)
Definition: viirs_oxt.c:9
h5io_str sdr_dat_gid[2][MAX_FILES]
unsigned char ham_side
int rhos_to_lt(int, float **, in_rec_struc *, int, sdr_info_struc *)
Definition: rhos_to_lt.c:7
float offset[MAX_BND]
Definition: viirs_sim_sdr.h:96
int init_sdr_dpattr(int, h5io_str *, sdr_info_struc *)
Definition: init_sdr.c:1388
int rd_geo_scan(int, sdr_info_struc *, in_rec_struc *)
Definition: rd_geo_scan.c:3
unsigned char * bnd_q[MAX_BND]
char inter_band[500]
Definition: viirs_sim_sdr.h:85
char rhos_file[500]
Definition: viirs_sim_sdr.h:73
h5io_str bnd_dat_id[2][MAX_BND]
int init_bnd_data(int, sdr_info_struc *, in_rec_struc *, out_rec_struc *)
Definition: init_sdr.c:837
int rd_geo_init(ctl_struc *, sdr_info_struc *, in_rec_struc *)
Definition: rd_geo_init.c:9
int viirs_cal(ctl_struc *, in_rec_struc *)
Definition: viirs_cal.c:4
int viirs_noise(ctl_struc *, in_rec_struc *, int)
Definition: viirs_noise.c:9
#define MAX_BND
Definition: viirs_sim_sdr.h:34
int init_sdr(ctl_struc *, sdr_info_struc *, in_rec_struc *, out_rec_struc *)
Definition: init_sdr.c:14
char oxt_coef[500]
Definition: viirs_sim_sdr.h:83
int wr_geo_scan(int, out_rec_struc *)
Definition: wr_geo_scan.c:3
h5io_str qual1_m_id[MAX_BND]
char sdr_files[MAX_FILES][200]
unsigned char * ham_side
int wr_attr_seq(h5io_str *, int, h5attr_struc *)
Definition: wr_attr_seq.c:5
unsigned char * qual1_m[MAX_BND]
char meta_file[500]
Definition: viirs_sim_sdr.h:70
unsigned long long uint64
int jd_c(int, int, int)
Definition: time_utl.c:97
h5io_str sdr_fid[MAX_FILES]
int rd_sim_init(ctl_struc *, sdr_info_struc *, in_rec_struc *)
Definition: rd_sim_init.c:4
char l2_file[500]
Definition: viirs_sim_sdr.h:68
int bnd_ix_2_sen_info(char *, void *)
long long int64
char count_decal_gain_file[500]
int viirs_straylt_rd(char *, vir_straylt_struc *)
char in_geo_file[500]
Definition: viirs_sim_sdr.h:60
int fin_sdr(ctl_struc *, in_rec_struc *, out_rec_struc *)
Definition: fin_sdr.c:3
int lam_band[MAX_BND]
float f0[MAX_BND]
int scan_cvt(in_rec_struc *, out_rec_struc *)
Definition: scan_cvt.c:5
char out_bnd_typ[MAX_BND]
float ll_lims[6]
char out_loc[500]
Definition: viirs_sim_sdr.h:62
char id_origin[500]
float refl_offset[MAX_BND]
float * bnd_lt[MAX_BND]
int viirs_decal(ctl_struc *, in_rec_struc *)
Definition: viirs_decal.c:4
float * bnd_lt[MAX_BND]
char count_cal_rvs_file[500]
int check_usage(int, char *[], ctl_struc *)
char cre_time[23]
Definition: viirs_sim_sdr.h:98
int vset_cal_gain(char *, vir_gain_struc *)
Definition: vset_cal.c:16
int viirs_noise_coef_rd(char *, float *, float *, float *, float *)
Definition: viirs_noise.c:96
char id_domain[500]
float gain[MAX_BND]
Definition: viirs_sim_sdr.h:95
int rd_sdr_scan(int, ctl_struc *, sdr_info_struc *, in_rec_struc *)
Definition: rd_sdr_scan.c:4
float refl_scale[MAX_BND]
char count_decal_rvs_file[500]
float offset[MAX_BND]
char count_cal_gain_file[500]
int vset_cal_rvs(char *, vir_rvs_struc *)
Definition: vset_cal.c:280
int init_sdr_agg(int, h5io_str *, sdr_info_struc *)
Definition: init_sdr.c:1455
float scale[MAX_BND]
int init_sdr_top(int, sdr_info_struc *, out_rec_struc *)
Definition: init_sdr.c:207
int rd_rhos_scan(char *, int, int, int, float **)
Definition: rd_rhos_scan.c:8
char ofile_base[200]
h5io_str geo_dat_id[6]
unsigned char * gain_bit[MAX_BND]
int viirs_oxt_comp(ctl_struc *, in_rec_struc *)
Definition: viirs_oxt.c:281
h5io_str geo_fid
int viirs_oxt_ib_read(char *, float *, float *)
Definition: viirs_oxt.c:166
int wr_sdr_scan(int, out_rec_struc *)
Definition: wr_sdr_scan.c:3
int viirs_straylt(ctl_struc *, in_rec_struc *, int)
Definition: viirs_straylt.c:7
int32_t rdsensorinfo(int32_t, int32_t, const char *, void **)
Definition: rdsensorinfo.c:69
int init_geo_data(sdr_info_struc *, in_rec_struc *, out_rec_struc *)
Definition: init_sdr.c:292
int vir_xf_scan(float, int, int, float *)
Definition: vir_xf_scan.c:3
int wr_bnd_scan(int, out_rec_struc *)
Definition: wr_bnd_scan.c:5
int viirs_sim_input(int, char *[], ctl_struc *)
char noise_coef[500]
int gen_const_rad_scn(sdr_info_struc *, int, in_rec_struc *)
int day2mday(int, int, int *, int *)
Definition: day2mday.c:3
float bbt_2_rad(float, float)
Definition: bbt_2_rad.c:9
int init_sdr_gran(int, h5io_str *, sdr_info_struc *, out_rec_struc *)
Definition: init_sdr.c:1541
#define MAX_FILES
Definition: viirs_sim_sdr.h:35
int ang_avg(float, float, float, float, float *, float *)
Definition: scan_cvt.c:419
float * dn[MAX_BND]
int gen_sdr_fname(int, char *, sdr_info_struc *, int, char *)
Definition: gen_sdr_fname.c:3