Due to the lapse in federal government funding, NASA is not updating this website. We sincerely regret this inconvenience.
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
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:85
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:81
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
list(APPEND LIBS ${NETCDF_LIBRARIES}) find_package(GSL REQUIRED) include_directories($
Definition: CMakeLists.txt:8
const std::string INPUT_WINDSPEEDS
Definition: AfrtOptions.cpp:71
std::string afrt_get_option(const std::string &name)
@ CLO_TYPE_INT
Definition: clo.h:82
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:89
const std::string INPUT_WIND_INDEX
Definition: AfrtOptions.cpp:56
const std::string INPUT_IAIR
Definition: AfrtOptions.cpp:87
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:86
const std::string INPUT_DELTA_THETA
Definition: AfrtOptions.cpp:75
void afrt_add_options(clo_optionList_t *list)
Definition: aerosol.c:136
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