-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathUtils.cpp
More file actions
89 lines (73 loc) · 2.88 KB
/
Utils.cpp
File metadata and controls
89 lines (73 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*! @file Utils.cpp
\brief Contains function implementations for the #ExaEpi::Utils namespace
*/
#include <AMReX.H>
#include <AMReX_Box.H>
#include <AMReX_CoordSys.H>
#include <AMReX_Geometry.H>
#include <AMReX_IntVect.H>
#include <AMReX_ParmParse.H>
#include <AMReX_RealBox.H>
#include "DemographicData.H"
#include "Utils.H"
#include <cmath>
#include <string>
using namespace amrex;
using namespace ExaEpi;
void ExaEpi::Utils::getTestParams (TestParams& params, /*!< Test parameters */
const std::string& prefix /*!< ParmParse prefix */) {
ParmParse pp(prefix);
pp.query("nsteps", params.nsteps);
pp.query("plot_int", params.plot_int);
pp.query("check_int", params.check_int);
pp.query("random_travel_int", params.random_travel_int);
pp.query("random_travel_prob", params.random_travel_prob);
pp.query("air_travel_int", params.air_travel_int);
pp.query("number_of_diseases", params.num_diseases);
params.disease_names.resize(params.num_diseases);
for (int d = 0; d < params.num_diseases; d++) {
params.disease_names[d] = amrex::Concatenate("default", d, 2);
}
pp.queryarr("disease_names", params.disease_names, 0, params.num_diseases);
std::string ic_type = "urbanpop";
pp.query("ic_type", ic_type);
if (ic_type == "census") {
params.ic_type = ICType::Census;
pp.get("census_filename", params.census_filename);
pp.get("workerflow_filename", params.workerflow_filename);
if (params.air_travel_int > 0) {
pp.get("air_traffic_filename", params.air_traffic_filename);
pp.get("airports_filename", params.airports_filename);
}
params.max_box_size = 16;
} else if (ic_type == "urbanpop") {
params.ic_type = ICType::UrbanPop;
pp.get("urbanpop_filename", params.urbanpop_filename);
params.max_box_size = 16;
} else {
amrex::Abort("ic_type not recognized (currently supported 'census')");
}
pp.query("max_box_size", params.max_box_size);
pp.query("aggregated_diag_int", params.aggregated_diag_int);
if (params.aggregated_diag_int >= 0) {
params.aggregated_diag_prefix = "cases";
pp.get("aggregated_diag_prefix", params.aggregated_diag_prefix);
}
pp.query("restart", params.restart_chkfile);
pp.query("shelter_start", params.shelter_start);
pp.query("shelter_length", params.shelter_length);
pp.query("nborhood_size", params.nborhood_size);
pp.query("workgroup_size", params.workgroup_size);
Long seed = 0;
bool reset_seed = pp.query("seed", seed);
if (reset_seed) {
ULong gpu_seed = (ULong)seed;
ULong cpu_seed = (ULong)seed;
amrex::ResetRandomSeed(cpu_seed, gpu_seed);
}
pp.query("fast", params.fast);
}
bool ExaEpi::Utils::isWorkday (int i) {
// right now we work on days 0-4, rest on 5-6
return ((i % 7) < 5);
}