@@ -74,19 +74,21 @@ Inputs::Inputs(Times &time) {
74
74
75
75
bool Inputs::write_restart () {
76
76
bool didWork = true ;
77
+
77
78
if (iProc == 0 ) {
78
79
std::string filename = get_setting_str (" Restart" , " OutDir" );
79
80
filename = filename + " /settings.json" ;
80
81
didWork = write_json (filename, settings);
81
82
}
83
+
82
84
didWork = sync_across_all_procs (didWork);
83
85
return didWork;
84
86
}
85
87
86
88
87
89
// -----------------------------------------------------------------------
88
90
// General check functions to see if keys exist:
89
- // check settings and throw invalid_argument error
91
+ // check settings and throw invalid_argument error
90
92
// if the setting doesn't exist
91
93
// -----------------------------------------------------------------------
92
94
@@ -104,6 +106,7 @@ bool Inputs::check_settings(std::string key1,
104
106
std::cout << " checking setting : "
105
107
<< key1 << " and "
106
108
<< key2 << " \n " ;
109
+
107
110
// try to find the keys first
108
111
if (settings.find (key1) != settings.end ()) {
109
112
if (settings.at (key1).find (key2) != settings.at (key1).end ())
@@ -116,6 +119,7 @@ bool Inputs::check_settings(std::string key1,
116
119
report.error (" Error in setting : " + key1 + " : " + key2);
117
120
std::cout << " Missing setting called! [" << key1 << " , " << key2 << " ]\n " ;
118
121
}
122
+
119
123
return isOk;
120
124
}
121
125
@@ -125,6 +129,7 @@ bool Inputs::check_settings(std::string key1,
125
129
bool Inputs::check_settings (std::string key1) {
126
130
if (report.test_verbose (1 ))
127
131
std::cout << " checking setting : " << key1 << " \n " ;
132
+
128
133
// try to find the keys first
129
134
if (settings.find (key1) != settings.end ())
130
135
isOk = true ;
@@ -137,6 +142,7 @@ bool Inputs::check_settings(std::string key1) {
137
142
report.error (" Error in setting : " + key1);
138
143
std::cout << " Missing setting called! [" << key1 << " ]\n " ;
139
144
}
145
+
140
146
return isOk;
141
147
}
142
148
@@ -149,13 +155,16 @@ bool Inputs::check_settings(std::string key1) {
149
155
150
156
std::vector<int > Inputs::get_setting_intarr (std::string key1) {
151
157
std::vector<int > value;
158
+
152
159
if (check_settings (key1)) {
153
160
int nPts = settings.at (key1).size ();
154
161
isOk = true ;
162
+
155
163
for (int i = 0 ; i < nPts; i++)
156
164
value.push_back (settings.at (key1).at (i));
157
165
} else
158
166
isOk = false ;
167
+
159
168
return value;
160
169
}
161
170
@@ -166,13 +175,17 @@ std::vector<int> Inputs::get_setting_timearr(std::string key1) {
166
175
int nPtsTime = 7 ;
167
176
std::vector<int > outarr (nPtsTime, 0 );
168
177
std::vector<int > timearr = get_setting_intarr (key1);
178
+
169
179
if (isOk) {
170
180
int nPts = timearr.size ();
181
+
171
182
if (nPts > nPtsTime)
172
183
nPts = nPtsTime;
184
+
173
185
for (int i = 0 ; i < nPts; i++)
174
186
outarr[i] = timearr[i];
175
187
}
188
+
176
189
return outarr;
177
190
}
178
191
@@ -181,8 +194,10 @@ std::vector<int> Inputs::get_setting_timearr(std::string key1) {
181
194
182
195
std::string Inputs::get_setting_str (std::string key1) {
183
196
std::string value = " unknown" ;
197
+
184
198
if (check_settings (key1))
185
199
value = settings.at (key1);
200
+
186
201
return value;
187
202
}
188
203
@@ -192,8 +207,10 @@ std::string Inputs::get_setting_str(std::string key1) {
192
207
std::string Inputs::get_setting_str (std::string key1,
193
208
std::string key2) {
194
209
std::string value = " unknown" ;
210
+
195
211
if (check_settings (key1, key2))
196
212
value = settings.at (key1).at (key2);
213
+
197
214
return value;
198
215
}
199
216
@@ -205,15 +222,18 @@ std::string Inputs::get_setting_str(std::string key1,
205
222
std::string key3) {
206
223
std::string value = " unknown" ;
207
224
isOk = false ;
225
+
208
226
if (settings.find (key1) != settings.end ())
209
227
if (settings.at (key1).find (key2) != settings.at (key1).end ())
210
- if (settings.at (key1).at (key2).find (key3) !=
228
+ if (settings.at (key1).at (key2).find (key3) !=
211
229
settings.at (key1).at (key2).end ()) {
212
230
value = settings.at (key1).at (key2).at (key3);
213
231
isOk = true ;
214
232
}
233
+
215
234
if (!isOk)
216
235
report.error (" Error in setting : " + key1 + " : " + key2 + " : " + key3);
236
+
217
237
return value;
218
238
}
219
239
@@ -222,8 +242,10 @@ std::string Inputs::get_setting_str(std::string key1,
222
242
223
243
int64_t Inputs::get_setting_int (std::string key1) {
224
244
int64_t value = LONG_MIN;
245
+
225
246
if (check_settings (key1))
226
247
value = settings.at (key1);
248
+
227
249
return value;
228
250
}
229
251
@@ -233,8 +255,10 @@ int64_t Inputs::get_setting_int(std::string key1) {
233
255
int64_t Inputs::get_setting_int (std::string key1,
234
256
std::string key2) {
235
257
int64_t value = LONG_MIN;
258
+
236
259
if (check_settings (key1, key2))
237
260
value = settings.at (key1).at (key2);
261
+
238
262
return value;
239
263
}
240
264
@@ -243,8 +267,10 @@ int64_t Inputs::get_setting_int(std::string key1,
243
267
244
268
bool Inputs::get_setting_bool (std::string key1) {
245
269
bool value = false ;
270
+
246
271
if (check_settings (key1))
247
272
value = settings.at (key1);
273
+
248
274
return value;
249
275
}
250
276
@@ -254,8 +280,10 @@ bool Inputs::get_setting_bool(std::string key1) {
254
280
bool Inputs::get_setting_bool (std::string key1,
255
281
std::string key2) {
256
282
bool value = false ;
283
+
257
284
if (check_settings (key1, key2))
258
285
value = settings.at (key1).at (key2);
286
+
259
287
return value;
260
288
}
261
289
@@ -267,15 +295,18 @@ bool Inputs::get_setting_bool(std::string key1,
267
295
std::string key3) {
268
296
bool value = false ;
269
297
isOk = false ;
298
+
270
299
if (settings.find (key1) != settings.end ())
271
300
if (settings.at (key1).find (key2) != settings.at (key1).end ())
272
- if (settings.at (key1).at (key2).find (key3) !=
301
+ if (settings.at (key1).at (key2).find (key3) !=
273
302
settings.at (key1).at (key2).end ()) {
274
303
value = settings.at (key1).at (key2).at (key3);
275
304
isOk = true ;
276
305
}
306
+
277
307
if (!isOk)
278
308
report.error (" Error in setting : " + key1 + " : " + key2 + " : " + key3);
309
+
279
310
return value;
280
311
}
281
312
@@ -284,8 +315,10 @@ bool Inputs::get_setting_bool(std::string key1,
284
315
285
316
precision_t Inputs::get_setting_float (std::string key1) {
286
317
precision_t value = std::numeric_limits<precision_t >::lowest ();
318
+
287
319
if (check_settings (key1))
288
320
value = settings.at (key1);
321
+
289
322
return value;
290
323
}
291
324
@@ -295,8 +328,10 @@ precision_t Inputs::get_setting_float(std::string key1) {
295
328
precision_t Inputs::get_setting_float (std::string key1,
296
329
std::string key2) {
297
330
precision_t value = std::numeric_limits<precision_t >::lowest ();
331
+
298
332
if (check_settings (key1, key2))
299
- value = settings.at (key1).at (key2);
333
+ value = settings.at (key1).at (key2);
334
+
300
335
return value;
301
336
}
302
337
@@ -305,12 +340,14 @@ precision_t Inputs::get_setting_float(std::string key1,
305
340
306
341
json Inputs::get_setting_json (std::string key1) {
307
342
json value;
343
+
308
344
if (settings.find (key1) != settings.end ())
309
345
value = settings.at (key1);
310
346
else {
311
347
isOk = false ;
312
348
report.error (" Error in setting : " + key1);
313
349
}
350
+
314
351
return value;
315
352
}
316
353
@@ -320,17 +357,18 @@ json Inputs::get_setting_json(std::string key1) {
320
357
json Inputs::get_setting_json (std::string key1,
321
358
std::string key2) {
322
359
json value;
360
+
323
361
if (settings.find (key1) != settings.end ())
324
362
if (settings.at (key1).find (key2) != settings.at (key1).end ())
325
363
value = settings.at (key1).at (key2);
326
364
else {
327
365
isOk = false ;
328
366
report.error (" Error in setting : " + key1 + " : " + key2);
329
- }
330
- else {
367
+ } else {
331
368
isOk = false ;
332
369
report.error (" Error in setting : " + key1);
333
370
}
371
+
334
372
return value;
335
373
}
336
374
@@ -341,6 +379,7 @@ std::string Inputs::check_settings_str(std::string key1,
341
379
std::string key2) {
342
380
if (check_settings (key1, key2))
343
381
return settings.at (key1).at (key2);
382
+
344
383
return dummy_string;
345
384
}
346
385
@@ -352,6 +391,7 @@ std::string Inputs::check_settings_str(std::string key) {
352
391
isOk = false ;
353
392
return dummy_string;
354
393
}
394
+
355
395
return settings[key];
356
396
}
357
397
@@ -362,6 +402,7 @@ precision_t Inputs::check_settings_pt(std::string key1,
362
402
std::string key2) {
363
403
if (check_settings (key1, key2))
364
404
return settings.at (key1).at (key2);
405
+
365
406
isOk = false ;
366
407
return dummy_float;
367
408
}
@@ -414,10 +455,12 @@ Inputs::grid_input_struct Inputs::get_grid_inputs() {
414
455
bool Inputs::set_verbose (json in) {
415
456
bool didWork = true ;
416
457
int iVerbose = -1 ;
458
+
417
459
// Want to set verbose level ASAP:
418
460
if (in.contains (" Debug" )) {
419
461
if (in.at (" Debug" ).contains (" iVerbose" )) {
420
462
iVerbose = in.at (" Debug" ).at (" iVerbose" );
463
+
421
464
if (in.at (" Debug" ).contains (" iProc" )) {
422
465
if (iProc != in.at (" Debug" ).at (" iProc" ))
423
466
iVerbose = -1 ;
@@ -426,10 +469,12 @@ bool Inputs::set_verbose(json in) {
426
469
didWork = false ;
427
470
} else
428
471
didWork = false ;
472
+
429
473
if (iVerbose > 0 ) {
430
474
std::cout << " Setting iVerbose : " << iVerbose << " \n " ;
431
475
report.set_verbose (iVerbose);
432
476
}
477
+
433
478
return didWork;
434
479
}
435
480
@@ -440,6 +485,7 @@ bool Inputs::set_verbose(json in) {
440
485
int Inputs::get_number_of_omniweb_files () {
441
486
if (settings.find (" OmniwebFiles" ) != settings.end ())
442
487
return settings.at (" OmniwebFiles" ).size ();
488
+
443
489
isOk = false ;
444
490
return dummy_int;
445
491
}
@@ -451,8 +497,10 @@ int Inputs::get_number_of_omniweb_files() {
451
497
std::vector<std::string> Inputs::get_omniweb_files () {
452
498
std::vector<std::string> omniweb_files;
453
499
int nFiles = get_number_of_omniweb_files ();
500
+
454
501
for (int i = 0 ; i < nFiles; i++)
455
502
omniweb_files.push_back (settings.at (" OmniwebFiles" ).at (i));
503
+
456
504
return omniweb_files;
457
505
}
458
506
@@ -509,8 +557,10 @@ int Inputs::get_updated_seed() {
509
557
510
558
std::string Inputs::get_logfile () {
511
559
std::string logfile = get_setting_str (" Logfile" , " name" );
560
+
512
561
if (nMembers > 1 )
513
562
logfile = add_cmember (logfile);
563
+
514
564
return logfile;
515
565
}
516
566
@@ -521,8 +571,10 @@ std::string Inputs::get_logfile() {
521
571
std::vector<std::string> Inputs::get_species_vector () {
522
572
std::vector<std::string> species;
523
573
const json &json_species = get_setting_json (" Logfile" , " species" );
574
+
524
575
for (size_t iOutput = 0 ; iOutput < json_species.size (); iOutput++)
525
576
species.push_back (json_species.at (iOutput));
577
+
526
578
return species;
527
579
}
528
580
@@ -533,8 +585,10 @@ std::vector<std::string> Inputs::get_species_vector() {
533
585
std::vector<std::string> Inputs::get_satellite_files () {
534
586
std::vector<std::string> files;
535
587
const json &json_files = get_setting_json (" Satellites" , " files" );
588
+
536
589
for (size_t i = 0 ; i < json_files.size (); ++i)
537
590
files.push_back (json_files.at (i));
591
+
538
592
return files;
539
593
}
540
594
@@ -545,8 +599,10 @@ std::vector<std::string> Inputs::get_satellite_files() {
545
599
std::vector<std::string> Inputs::get_satellite_names () {
546
600
std::vector<std::string> names;
547
601
const json &json_names = get_setting_json (" Satellites" , " names" );
602
+
548
603
for (size_t i = 0 ; i < json_names.size (); ++i)
549
604
names.push_back (json_names.at (i));
605
+
550
606
return names;
551
607
}
552
608
@@ -557,8 +613,10 @@ std::vector<std::string> Inputs::get_satellite_names() {
557
613
std::vector<precision_t > Inputs::get_satellite_dts () {
558
614
std::vector<precision_t > dts;
559
615
const json &json_dts = get_setting_json (" Satellites" , " dts" );
616
+
560
617
for (size_t i = 0 ; i < json_dts.size (); ++i)
561
618
dts.push_back (json_dts.at (i));
619
+
562
620
return dts;
563
621
}
564
622
0 commit comments