OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
AfrtOptions.cpp
Go to the documentation of this file.
1 
2 /**************************************************************************
3 *
4 * NAME: AfrtOptions.cpp
5 *
6 * DESCRIPTION: The AfrtOptions class sets up the items
7 * that are in the program configuration file.
8 * The class provides primitives to read the configurable
9 * information and provide it to other classes as required.
10 *
11 * Created on: April, 2018
12 * Author: Sam Anderson, Afrt
13 *
14 **************************************************************************/
15 
16 #include <iostream>
17 #include <string>
18 #include <cstdlib>
19 #include <algorithm>
20 #include <libgen.h>
21 #include <vector>
22 #include <map>
23 
24 #include <AfrtConstants.h>
25 #include <AfrtOptions.h>
26 
27 using namespace std;
28 
29 //---------------------------------------------------------------------------
30 // Static constants
31 //---------------------------------------------------------------------------
32 
33 const std::string INPUT_PHS_NC4 = "nc4_phs";
34 const std::string INPUT_PHS = "ifile_phs";
35 const std::string INPUT_OCN = "ifile_ocn";
36 const std::string INPUT_RT1 = "ifile_rt1";
37 const std::string INPUT_RT2 = "ifile_rt2";
38 const std::string INPUT_OZONE_RT1 = "ozone_rt1";
39 const std::string INPUT_ATM_RT1 = "atm_rt1";
40 const std::string INPUT_COEFF_RT1 = "coeff_rt1";
41 const std::string ODIR_PHS = "odir_phs";
42 const std::string ODIR_OCN = "odir_ocn";
43 const std::string ODIR_RT1 = "odir_rt1";
44 const std::string ODIR_RT2 = "odir_rt2";
45 const std::string ODIR_NC4 = "odir_nc4";
46 const std::string OFILE_PHS = "ofile_phs";
47 const std::string OFILE_OCN = "ofile_ocn";
48 const std::string OFILE_RT1 = "ofile_rt1";
49 const std::string OFILE_RT2 = "ofile_rt2";
50 const std::string OFILE_ALL = "ofile_all";
51 const std::string OFILE_NC4 = "ofile";
52 
53 const std::string INPUT_WL_INDEX = "wave_id";
54 const std::string INPUT_SD_INDEX = "model_id";
55 const std::string INPUT_TAU_INDEX = "tau_id";
56 const std::string INPUT_WIND_INDEX = "wind_id";
57 
58 const std::string INPUT_SEA_SLOPE_STDEV = "sea_slope_stdev";
59 const std::string INPUT_WIND_SPEED = "wind_speed";
60 const std::string INPUT_DELTA_TAU = "delta_tau";
61 const std::string INPUT_SURF_PRESSURE = "surface_pressure";
62 const std::string INPUT_DUST_HEIGHT = "dust_height";
63 const std::string INPUT_DUST_SIGMA = "dust_sigma";
64 const std::string INPUT_CLOUD_TOP = "cloud_top";
65 const std::string INPUT_CLOUD_BOTTOM = "cloud_bottom";
66 const std::string INPUT_AOD = "optical_thickness";
67 const std::string INPUT_HUMIDITY = "humidity";
68 
69 const std::string INPUT_WAVELENGTHS = "wavelengths";
70 const std::string INPUT_HUMIDITIES = "humidities";
71 const std::string INPUT_WINDSPEEDS = "rms_slopes";
72 const std::string INPUT_ANGLES = "theta_angles";
73 const std::string INPUT_OPTDEPTHS = "optical_depths";
74 
75 const std::string INPUT_DELTA_THETA = "dtheta";
77 const std::string INPUT_SEA_NR = "sea_nr";
78 const std::string INPUT_SEA_NI = "sea_ni";
79 const std::string INPUT_SALINITY = "salinity";
80 const std::string INPUT_THETA_CELL = "theta_cell";
81 const std::string INPUT_PHI_CELL = "phi_cell";
82 
83 const std::string INPUT_PSUDO = "psudo";
84 const std::string INPUT_RAYLEIGH = "rayleigh";
85 const std::string INPUT_AEROSOLS = "aerosols";
86 const std::string INPUT_GASES = "gases";
87 const std::string INPUT_IAIR = "iair";
88 const std::string INPUT_KSET = "kset";
89 const std::string INPUT_IREF = "iref";
90 const std::string INPUT_ISET = "iset";
91 const std::string INPUT_PRIN = "prin";
92 const std::string INPUT_ITRANS = "trans";
93 const std::string INPUT_POL = "pol";
94 const std::string INPUT_CRFT = "crft";
95 const std::string INPUT_ACTFLX = "actflx";
96 const std::string INPUT_SURF = "surf";
97 const std::string INPUT_GLINT = "glint"; //apply glint correction
98 const std::string INPUT_IOCN = "ocn";
99 const std::string INPUT_FOAM = "foam";
100 const std::string INPUT_WATR = "watr";
101 const std::string INPUT_CONC = "conc";
102 const std::string INPUT_IPROB = "iprob";
103 
104 // global variable to hold the command line parameters
105 static clo_optionList_t* afrt_global_optionList = NULL;
106 
108  afrt_global_optionList = list;
109 }
110 
112  if(afrt_global_optionList == NULL) {
113  cerr << "afrt_get_optionList: optionList pointer needs to be set before accessing." << endl;
114  exit(EXIT_FAILURE);
115  }
116  return afrt_global_optionList;
117 }
118 
120  if(afrt_global_optionList == NULL) {
121  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
122  exit(EXIT_FAILURE);
123  }
124  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
125  if(option == NULL || !clo_isOptionSet(option))
126  return "";
127  string result(clo_getOptionString(option));
128  char *ocdataroot_str = getenv("OCDATAROOT");
129  if (ocdataroot_str == 0x0) {
130  printf("Environment variable OCDATAROOT not defined.\n");
131  exit(1);
132  }
133 
134  if (result.compare(0, 10, "$OCDATAROOT") == 0)
135  result.replace(0, 10, ocdataroot_str);
136  return result;
137 }
138 
140  if(afrt_global_optionList == NULL) {
141  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
142  exit(EXIT_FAILURE);
143  }
144  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
145  if(option == NULL || !clo_isOptionSet(option))
146  return 0L;
147  int* ptr(clo_getOptionInts(option, &count));
148  return ptr;
149 }
150 
152  if(afrt_global_optionList == NULL) {
153  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
154  exit(EXIT_FAILURE);
155  }
156  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
157  if(option == NULL || !clo_isOptionSet(option))
158  return 0L;
159  double* ptr(clo_getOptionDoubles(option, &count));
160  return ptr;
161 }
162 
164  if(afrt_global_optionList == NULL) {
165  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
166  exit(EXIT_FAILURE);
167  }
168  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
169  if(option == NULL || !clo_isOptionSet(option))
170  return -999.9;
171  double result(clo_getOptionDouble(option));
172  return result;
173 }
174 
176  if(afrt_global_optionList == NULL) {
177  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
178  exit(EXIT_FAILURE);
179  }
180  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
181  if(option == NULL || !clo_isOptionSet(option))
182  return -999;
183  int result(clo_getOptionInt(option));
184  return result;
185 }
186 
188  if(afrt_global_optionList == NULL) {
189  cerr << "afrt_get_option: optionList pointer needs to be set before accessing." << endl;
190  exit(EXIT_FAILURE);
191  }
192  clo_option_t* option = clo_findOption(afrt_global_optionList, name.c_str());
193  if(option == NULL)
194  return false;
195  bool result(clo_getOptionBool(option));
196  return result;
197 }
198 
200  if(afrt_global_optionList == NULL)
201  afrt_global_optionList = list;
202 
203  clo_addOption(list, INPUT_PHS_NC4.c_str(), CLO_TYPE_STRING, NULL, "nc4 infile PHS");
204  clo_addOption(list, INPUT_PHS.c_str(), CLO_TYPE_STRING, NULL, "infile PHS");
205  clo_addOption(list, INPUT_OCN.c_str(), CLO_TYPE_STRING, NULL, "infile OCN");
206  clo_addOption(list, INPUT_RT1.c_str(), CLO_TYPE_STRING, NULL, "infile RT1");
207  clo_addOption(list, INPUT_RT2.c_str(), CLO_TYPE_STRING, NULL, "infile RT2");
208  clo_addOption(list, INPUT_OZONE_RT1.c_str(), CLO_TYPE_STRING, NULL, "infile ozone RT1");
209  clo_addOption(list, INPUT_ATM_RT1.c_str(), CLO_TYPE_STRING, NULL, "infile ATM RT1");
210  clo_addOption(list, INPUT_COEFF_RT1.c_str(), CLO_TYPE_STRING, NULL, "infile coeff RT1");
211  clo_addOption(list, ODIR_PHS.c_str(), CLO_TYPE_STRING, NULL, "directory PHS");
212  clo_addOption(list, ODIR_OCN.c_str(), CLO_TYPE_STRING, NULL, "directory OCN");
213  clo_addOption(list, ODIR_RT1.c_str(), CLO_TYPE_STRING, NULL, "directory RT1");
214  clo_addOption(list, ODIR_RT2.c_str(), CLO_TYPE_STRING, NULL, "directory RT2");
215  clo_addOption(list, ODIR_NC4.c_str(), CLO_TYPE_STRING, NULL, "output directory NC4");
216  clo_addOption(list, OFILE_PHS.c_str(), CLO_TYPE_STRING, NULL, "output NC4 PHS");
217  clo_addOption(list, OFILE_OCN.c_str(), CLO_TYPE_STRING, NULL, "output NC4 OCN");
218  clo_addOption(list, OFILE_RT1.c_str(), CLO_TYPE_STRING, NULL, "output NC4 RT1");
219  clo_addOption(list, OFILE_RT2.c_str(), CLO_TYPE_STRING, NULL, "output NC4 RT2");
220  clo_addOption(list, OFILE_ALL.c_str(), CLO_TYPE_STRING, NULL, "output NC4 RT2");
221  clo_addOption(list, OFILE_NC4.c_str(), CLO_TYPE_STRING, NULL, "output NC4 file");
222 
223  clo_addOption(list, INPUT_WL_INDEX.c_str(), CLO_TYPE_INT, NULL, "input parameter");
224  clo_addOption(list, INPUT_SD_INDEX.c_str(), CLO_TYPE_INT, NULL, "input parameter");
225  clo_addOption(list, INPUT_TAU_INDEX.c_str(), CLO_TYPE_INT, NULL, "input parameter");
226  clo_addOption(list, INPUT_WIND_INDEX.c_str(), CLO_TYPE_INT, NULL, "input parameter");
227  clo_addOption(list, INPUT_DELTA_THETA.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
228  clo_addOption(list, INPUT_DELTA_PHI.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
229  clo_addOption(list, INPUT_SEA_NR.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
230  clo_addOption(list, INPUT_SEA_NI.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
231  clo_addOption(list, INPUT_THETA_CELL.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
232  clo_addOption(list, INPUT_PHI_CELL.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
233  clo_addOption(list, INPUT_SEA_SLOPE_STDEV.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
234  clo_addOption(list, INPUT_WIND_SPEED.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
235  clo_addOption(list, INPUT_DELTA_TAU.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
236  clo_addOption(list, INPUT_SURF_PRESSURE.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
237  clo_addOption(list, INPUT_DUST_HEIGHT.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
238  clo_addOption(list, INPUT_DUST_SIGMA.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
239  clo_addOption(list, INPUT_CLOUD_TOP.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
240  clo_addOption(list, INPUT_CLOUD_BOTTOM.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
241  clo_addOption(list, INPUT_AOD.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
242  clo_addOption(list, INPUT_HUMIDITY.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
243 
244  clo_addOption(list, INPUT_WAVELENGTHS.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
245  clo_addOption(list, INPUT_HUMIDITIES.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
246  clo_addOption(list, INPUT_WINDSPEEDS.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
247  clo_addOption(list, INPUT_ANGLES.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
248  clo_addOption(list, INPUT_OPTDEPTHS.c_str(), CLO_TYPE_DOUBLE, NULL, "input parameter");
249 
250  clo_addOption(list, INPUT_IREF.c_str(), CLO_TYPE_INT, NULL, "input parameter");
251  clo_addOption(list, INPUT_ISET.c_str(), CLO_TYPE_INT, NULL, "input parameter");
252  clo_addOption(list, INPUT_IAIR.c_str(), CLO_TYPE_INT, NULL, "input parameter");
253  clo_addOption(list, INPUT_KSET.c_str(), CLO_TYPE_INT, NULL, "input parameter");
254  clo_addOption(list, INPUT_PRIN.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
255  clo_addOption(list, INPUT_PSUDO.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
256  clo_addOption(list, INPUT_ITRANS.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
257  clo_addOption(list, INPUT_POL.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
258  clo_addOption(list, INPUT_CRFT.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
259  clo_addOption(list, INPUT_ACTFLX.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
260  clo_addOption(list, INPUT_SURF.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
261  clo_addOption(list, INPUT_GLINT.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
262  clo_addOption(list, INPUT_IOCN.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
263  clo_addOption(list, INPUT_FOAM.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
264  clo_addOption(list, INPUT_WATR.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
265  clo_addOption(list, INPUT_CONC.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
266  clo_addOption(list, INPUT_RAYLEIGH.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
267  clo_addOption(list, INPUT_AEROSOLS.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
268  clo_addOption(list, INPUT_GASES.c_str(), CLO_TYPE_BOOL, NULL, "afrt input");
269 
270  clo_addOption(list, INPUT_IPROB.c_str(), CLO_TYPE_INT, "1", "1=HG relationship, 2=Cox-Munk wind independent, 3=Cox-Munk wind dependent");
271 
272  clo_addOption(list, "pversion", CLO_TYPE_STRING, "Unspecified", "processing version string");
273 
274  clo_addOption(list, "PGEVersion", CLO_TYPE_STRING, NULL, "PGE version");
275  clo_addOption(list, "PGE_Name", CLO_TYPE_STRING, NULL, "PGE name");
276 
277  string desc = "\n";
278  desc += "This program can also accept a PCF file. The PCF file option names take\n";
279  desc += "precedence over the standard option parameters even if the standard option\n";
280  desc += "is on the command line. To over ride an option in a PCF file, use the PCF\n";
281  desc += "option name on the command line.\n";
282  clo_addOption(list, "pcf_help", CLO_TYPE_HELP, NULL, desc.c_str());
283 }
284 
285 string afrt_get_source() {
286  vector<string> sourcesList;
287 
288  string source;
289 
290  for(vector<string>::iterator it = sourcesList.begin(); it < sourcesList.end(); it++) {
291  string str = afrt_get_option(*it);
292  if(!str.empty()) {
293  source.append(",");
294  source.append(basename((char*)str.c_str()));
295  }
296  }
297  return source;
298 }
299 
300 string afrt_get_history(int argc, char* argv[]) {
301  string history = basename(argv[0]);
302  for (int i=1; i<argc; i++) {
303  history.append(" ");
304  history.append(basename(argv[i]));
305  }
306  return history;
307 }
308 
const std::string INPUT_CLOUD_BOTTOM
Definition: AfrtOptions.cpp:65
clo_option_t * clo_addOption(clo_optionList_t *list, const char *key, enum clo_dataType_t dataType, const char *defaultVal, const char *desc)
Definition: clo.c:684
void afrt_set_optionList(clo_optionList_t *list)
const std::string INPUT_HUMIDITY
Definition: AfrtOptions.cpp:67
const std::string INPUT_ATM_RT1
Definition: AfrtOptions.cpp:39
const std::string ODIR_PHS
Definition: AfrtOptions.cpp:41
const std::string INPUT_ITRANS
Definition: AfrtOptions.cpp:92
#define L(lambda, T)
Definition: PreprocessP.h:185
list(APPEND LIBS ${PGSTK_LIBRARIES}) add_executable(atteph_info_modis atteph_info_modis.c) target_link_libraries(atteph_info_modis $
Definition: CMakeLists.txt:7
double clo_getOptionDouble(clo_option_t *option)
Definition: clo.c:1195
const std::string INPUT_ISET
Definition: AfrtOptions.cpp:90
double * clo_getOptionDoubles(clo_option_t *option, int *count)
Definition: clo.c:1317
const std::string INPUT_WAVELENGTHS
Definition: AfrtOptions.cpp:69
double afrt_get_option_double(const std::string &name)
const std::string INPUT_IPROB
const std::string INPUT_SEA_NR
Definition: AfrtOptions.cpp:77
const std::string ODIR_RT1
Definition: AfrtOptions.cpp:43
const std::string INPUT_TAU_INDEX
Definition: AfrtOptions.cpp:55
#define NULL
Definition: decode_rs.h:63
@ CLO_TYPE_DOUBLE
Definition: clo.h:82
const std::string OFILE_NC4
Definition: AfrtOptions.cpp:51
const std::string INPUT_RAYLEIGH
Definition: AfrtOptions.cpp:84
const std::string INPUT_ACTFLX
Definition: AfrtOptions.cpp:95
const std::string OFILE_RT2
Definition: AfrtOptions.cpp:49
const std::string INPUT_DELTA_TAU
Definition: AfrtOptions.cpp:60
double * afrt_get_option_doubles(const std::string &name, int &count)
clo_option_t * clo_findOption(clo_optionList_t *list, const char *key)
Definition: clo.c:967
const std::string INPUT_AEROSOLS
Definition: AfrtOptions.cpp:85
const std::string INPUT_OPTDEPTHS
Definition: AfrtOptions.cpp:73
int clo_getOptionInt(clo_option_t *option)
Definition: clo.c:1113
const std::string INPUT_PHI_CELL
Definition: AfrtOptions.cpp:81
const std::string INPUT_RT2
Definition: AfrtOptions.cpp:37
const std::string INPUT_ANGLES
Definition: AfrtOptions.cpp:72
const std::string INPUT_GLINT
Definition: AfrtOptions.cpp:97
const std::string OFILE_RT1
Definition: AfrtOptions.cpp:48
@ string
const std::string INPUT_CLOUD_TOP
Definition: AfrtOptions.cpp:64
const std::string INPUT_PSUDO
Definition: AfrtOptions.cpp:83
int clo_isOptionSet(clo_option_t *option)
Definition: clo.c:2257
const std::string ODIR_OCN
Definition: AfrtOptions.cpp:42
@ CLO_TYPE_BOOL
Definition: clo.h:78
const std::string OFILE_ALL
Definition: AfrtOptions.cpp:50
const std::string INPUT_SEA_SLOPE_STDEV
Definition: AfrtOptions.cpp:58
const std::string INPUT_SEA_NI
Definition: AfrtOptions.cpp:78
const std::string INPUT_GASES
Definition: AfrtOptions.cpp:86
const std::string INPUT_OCN
Definition: AfrtOptions.cpp:35
string afrt_get_source()
const std::string OFILE_OCN
Definition: AfrtOptions.cpp:47
const std::string INPUT_IOCN
Definition: AfrtOptions.cpp:98
const std::string INPUT_WINDSPEEDS
Definition: AfrtOptions.cpp:71
std::string afrt_get_option(const std::string &name)
@ CLO_TYPE_INT
Definition: clo.h:79
char * clo_getOptionString(clo_option_t *option)
Definition: clo.c:1050
int * clo_getOptionInts(clo_option_t *option, int *count)
Definition: clo.c:1273
const std::string INPUT_SD_INDEX
Definition: AfrtOptions.cpp:54
int afrt_get_option_int(const std::string &name)
const std::string INPUT_FOAM
Definition: AfrtOptions.cpp:99
const std::string INPUT_WIND_SPEED
Definition: AfrtOptions.cpp:59
const std::string INPUT_SURF
Definition: AfrtOptions.cpp:96
const std::string INPUT_DUST_SIGMA
Definition: AfrtOptions.cpp:63
const std::string INPUT_WL_INDEX
Definition: AfrtOptions.cpp:53
const std::string INPUT_RT1
Definition: AfrtOptions.cpp:36
string history
Definition: ncattredit.py:30
const std::string INPUT_DUST_HEIGHT
Definition: AfrtOptions.cpp:62
const std::string OFILE_PHS
Definition: AfrtOptions.cpp:46
#define basename(s)
Definition: l0chunk_modis.c:29
@ CLO_TYPE_HELP
Definition: clo.h:86
const std::string INPUT_WIND_INDEX
Definition: AfrtOptions.cpp:56
const std::string INPUT_IAIR
Definition: AfrtOptions.cpp:87
const char * str
Definition: l1c_msi.cpp:35
const std::string INPUT_CONC
const std::string INPUT_CRFT
Definition: AfrtOptions.cpp:94
const std::string INPUT_THETA_CELL
Definition: AfrtOptions.cpp:80
string afrt_get_history(int argc, char *argv[])
const std::string INPUT_COEFF_RT1
Definition: AfrtOptions.cpp:40
const std::string INPUT_AOD
Definition: AfrtOptions.cpp:66
int * afrt_get_option_ints(const std::string &name, int &count)
const std::string INPUT_POL
Definition: AfrtOptions.cpp:93
const std::string INPUT_OZONE_RT1
Definition: AfrtOptions.cpp:38
const std::string INPUT_PRIN
Definition: AfrtOptions.cpp:91
const std::string INPUT_SURF_PRESSURE
Definition: AfrtOptions.cpp:61
const std::string INPUT_KSET
Definition: AfrtOptions.cpp:88
const std::string INPUT_PHS
Definition: AfrtOptions.cpp:34
const std::string ODIR_RT2
Definition: AfrtOptions.cpp:44
bool afrt_get_option_bool(const std::string &name)
const std::string INPUT_WATR
const std::string INPUT_IREF
Definition: AfrtOptions.cpp:89
clo_optionList_t * afrt_get_optionList()
const std::string INPUT_PHS_NC4
Definition: AfrtOptions.cpp:33
int i
Definition: decode_rs.h:71
@ CLO_TYPE_STRING
Definition: clo.h:83
const std::string INPUT_DELTA_THETA
Definition: AfrtOptions.cpp:75
void afrt_add_options(clo_optionList_t *list)
const std::string ODIR_NC4
Definition: AfrtOptions.cpp:45
const std::string INPUT_HUMIDITIES
Definition: AfrtOptions.cpp:70
const std::string INPUT_DELTA_PHI
Definition: AfrtOptions.cpp:76
int clo_getOptionBool(clo_option_t *option)
Definition: clo.c:1087
const std::string INPUT_SALINITY
Definition: AfrtOptions.cpp:79
int count
Definition: decode_rs.h:79