1 #ifndef ERF_CHECKPOINT_SURFACE_TEMPERATURE_H_
2 #define ERF_CHECKPOINT_SURFACE_TEMPERATURE_H_
9 #include <AMReX_PlotFileUtil.H>
10 #include <AMReX_Utility.H>
30 const int finest_level)
32 for (
int lev = 0; lev <= finest_level; ++lev) {
33 const bool has_sst = amrex::FileExists(
34 amrex::MultiFabFileFullPrefix(lev, checkpointname,
"Level_",
"SST_0_H"));
35 const bool has_tsk = amrex::FileExists(
36 amrex::MultiFabFileFullPrefix(lev, checkpointname,
"Level_",
"TSK_0_H"));
37 if (has_sst || has_tsk) {
65 for (
char& character : value) {
66 character =
static_cast<char>(std::tolower(
static_cast<unsigned char>(character)));
68 if (value ==
"wrfinput") {
71 if (value ==
"metgrid") {
83 if (!(input >> version)) {
105 constexpr
const char* key =
"erf.init_type";
106 constexpr std::size_t key_length = 13;
110 while (std::getline(input, line)) {
112 while (pos < line.size() &&
113 std::isspace(
static_cast<unsigned char>(line[pos]))) {
116 if (line.compare(pos, key_length, key) != 0) {
120 if (pos < line.size() && !std::isspace(
static_cast<unsigned char>(line[pos])) &&
124 while (pos < line.size() &&
125 std::isspace(
static_cast<unsigned char>(line[pos]))) {
128 if (pos == line.size() || line[pos] !=
'=') {
133 while (pos < line.size() &&
134 std::isspace(
static_cast<unsigned char>(line[pos]))) {
139 bool malformed = (pos == line.size());
140 if (!malformed && line[pos] ==
'"') {
142 const std::size_t end_quote = line.find(
'"', pos);
143 if (end_quote == std::string::npos) {
146 value = line.substr(pos, end_quote - pos);
149 }
else if (!malformed) {
150 const std::size_t value_begin = pos;
151 while (pos < line.size() &&
152 !std::isspace(
static_cast<unsigned char>(line[pos]))) {
155 value = line.substr(value_begin, pos - value_begin);
158 while (pos < line.size() &&
159 std::isspace(
static_cast<unsigned char>(line[pos]))) {
162 if (malformed || pos != line.size()) {
175 const bool marker_present,
176 const bool has_surface_arrays,
179 if (marker_present || !has_surface_arrays) {
Definition: ERF_CheckpointSurfaceTemperature.H:12
ContractReadStatus read_contract_version(std::istream &input, int &version)
Definition: ERF_CheckpointSurfaceTemperature.H:81
LegacyInitType parse_legacy_init_type_value(std::string value)
Definition: ERF_CheckpointSurfaceTemperature.H:63
constexpr int contract_version
Definition: ERF_CheckpointSurfaceTemperature.H:14
int first_legacy_surface_temperature_level(const std::string &checkpointname, const int finest_level)
Definition: ERF_CheckpointSurfaceTemperature.H:29
LegacyInitType
Definition: ERF_CheckpointSurfaceTemperature.H:50
ContractReadStatus
Definition: ERF_CheckpointSurfaceTemperature.H:44
LegacySurfaceTemperatureCompatibility
Definition: ERF_CheckpointSurfaceTemperature.H:56
LegacyInitType parse_legacy_init_type_from_job_info(std::istream &input)
Definition: ERF_CheckpointSurfaceTemperature.H:103
void write_contract_version(std::ostream &output)
Definition: ERF_CheckpointSurfaceTemperature.H:17
LegacySurfaceTemperatureCompatibility classify_legacy_surface_temperature_checkpoint(const bool marker_present, const bool has_surface_arrays, const LegacyInitType legacy_init_type)
Definition: ERF_CheckpointSurfaceTemperature.H:174