23#ifndef OPENSWMM_CLIMATE_FILE_HPP
24#define OPENSWMM_CLIMATE_FILE_HPP
81 bool open(
const std::string& path,
double start_oa_date,
int unit_system);
97 bool isOpen()
const {
return file_ !=
nullptr; }
100 static constexpr double MISSING = -1.0e10;
101 static constexpr double MM_PER_INCH = 25.4;
102 static constexpr int MAX_LINE = 512;
105 std::FILE* file_ =
nullptr;
107 int unit_system_ = 0;
110 double file_data_[4][32] = {};
115 int field_pos_[4] = {-1, -1, -1, -1};
116 int date_field_pos_ = 0;
117 int wind_type_ =
WDMV;
121 char saved_line_[MAX_LINE + 1] = {};
122 bool has_saved_line_ =
false;
126 bool isGhcndFormat(
const char* line);
129 bool bufferMonth(
int year,
int month);
133 void parseUserLine(
const char* line);
134 void parseGhcndLine(
const char* line);
135 void parseTD3200Line(
const char* line);
136 void parseDLY0204Line(
const char* line);
139 static void oaDateToYMD(
double oa_date,
int&
y,
int& m,
int& d);
140 double convertTemp(
double raw)
const;
141 double convertEvap(
double raw)
const;
142 double convertWind(
double raw,
int wind_type)
const;
Definition ClimateFile.hpp:69
bool open(const std::string &path, double start_oa_date, int unit_system)
Definition ClimateFile.cpp:38
ClimateFileReader()=default
ClimateFileFormat format() const
Detected file format.
Definition ClimateFile.hpp:94
~ClimateFileReader()
Definition ClimateFile.cpp:24
ClimateFileReader & operator=(const ClimateFileReader &)=delete
void close()
Close file and release resources.
Definition ClimateFile.cpp:28
ClimateFileReader(const ClimateFileReader &)=delete
bool isOpen() const
True if file is open and valid.
Definition ClimateFile.hpp:97
bool getRecord(double oa_date, DailyClimateRecord &rec)
Definition ClimateFile.cpp:457
ClimateFileFormat
Definition ClimateFile.hpp:37
@ TD3200
NCDC TD3200 (NWS cooperative observer)
@ GHCND
NCDC Global Historical Climatology Network Daily.
@ DLY0204
Canadian DLY02/DLY04.
@ USER_PREPARED
StationID YYYY MM DD TMAX TMIN EVAP WIND.
TempUnits
Temperature unit encoding in GHCND.
Definition ClimateFile.hpp:52
@ DEG_C
Definition ClimateFile.hpp:52
@ DEG_F
Definition ClimateFile.hpp:52
@ DEG_C10
Definition ClimateFile.hpp:52
ClimateVar
Climate variable indices (matching legacy ClimateVarType)
Definition ClimateFile.hpp:46
@ TMAX
Definition ClimateFile.hpp:46
@ WIND
Definition ClimateFile.hpp:46
@ EVAP
Definition ClimateFile.hpp:46
@ TMIN
Definition ClimateFile.hpp:46
WindFieldType
Wind field type in GHCND.
Definition ClimateFile.hpp:49
@ AWND
Definition ClimateFile.hpp:49
@ WDMV
Definition ClimateFile.hpp:49
Definition NodeCoupling.cpp:15
double * y
Definition odesolve.c:28
Definition ClimateFile.hpp:58
double evap
Pan evaporation (in/day US, mm/day SI; NAN if missing)
Definition ClimateFile.hpp:61
double tmin
Minimum temperature (deg F)
Definition ClimateFile.hpp:59
double wind
Wind speed (mph; NAN if missing)
Definition ClimateFile.hpp:62
double tmax
Maximum temperature (deg F)
Definition ClimateFile.hpp:60