21 #include <meteoio/MeteoIO.h> 29 #pragma GCC diagnostic push 30 #pragma GCC diagnostic ignored "-Weffc++" 31 #include <snowpack/plugins/pugixml/pugixml.hpp> 32 #pragma GCC diagnostic pop 49 virtual bool snowCoverExists(
const std::string& i_snowfile,
const std::string& stationID)
const;
51 virtual void readSnowCover(
const std::string& i_snowfile,
const std::string& stationID,
58 const ProcessDat& Hdata,
const double wind_trans24);
62 virtual bool writeHazardData(
const std::string& stationID,
const std::vector<ProcessDat>& Hdata,
63 const std::vector<ProcessInd>& Hdata_ind,
const size_t& num);
66 void cleanup()
throw();
69 void setBasicHeader(
const SnowStation& Xdata,
const std::string& fields, smet::SMETWriter& smet_writer)
const;
70 void setSnoSmetHeader(
const SnowStation& Xdata,
const SN_SNOWSOIL_DATA& SSdata,
const mio::Date& date, smet::SMETWriter& smet_writer)
const;
71 void setFormatting(
const size_t& nr_solutes, std::vector<int>& vec_width, std::vector<int>& vec_precision)
const;
72 std::string getFilenamePrefix(
const std::string& fnam,
const std::string& path,
const bool addexp=
true)
const;
75 bool read_snocaaml(
const std::string& snofilename,
const std::string& stationID,
SN_SNOWSOIL_DATA& SSdata);
76 void openIn_CAAML(
const std::string& in_snowfile);
77 mio::Date xmlGetDate();
78 mio::StationData xmlGetStationData(
const std::string& stationID);
81 LayerData xmlGetLayer(pugi::xml_node nodeLayer, std::string& grainFormCode);
83 void getAndSetProfile(
const std::string path,
const std::string name,
const bool directionTopDown,
84 const bool isRangeMeasurement,std::vector<LayerData>& Layers);
85 bool xmlGetProfile(
const std::string path,
const std::string name, std::vector<double>& zVec, std::vector<double>& valVec);
86 void estimateValidFormationTimesIfNotSetYet(std::vector<LayerData> &Layers,
const mio::Date);
87 void checkAllDataForConsistencyAndSetMissingValues(
SN_SNOWSOIL_DATA& SSdata );
91 void writeSnowFile(
const std::string& snofilename,
const mio::Date& date,
const SnowStation& Xdata);
92 void writeCustomSnowSoil(pugi::xml_node& node,
const SnowStation& Xdata);
93 void writeLayers(pugi::xml_node& node,
const SnowStation& Xdata);
94 void writeCustomLayerData(pugi::xml_node& node,
const ElementData& Edata,
const NodeData& Ndata);
95 void writeProfiles(pugi::xml_node& node,
const SnowStation& Xdata);
96 void writeStationData(pugi::xml_node& root,
const SnowStation& Xdata);
98 double lwc_codeToVal(
const char* code);
99 std::string lwc_valToCode(
const double val);
100 double hardness_codeToVal(
char* code);
101 std::string hardness_valToCode(
const double code);
102 void grainShape_codeToVal(
const std::string& code,
double &sp,
double &dd,
unsigned short int &mk);
103 std::string grainShape_valToAbbrev(
const unsigned int var);
104 std::string grainShape_valToAbbrev_old(
const double* var);
107 double xmlReadValueFromPath(
const std::string& xpath,
const std::string& property,
const double& dflt);
108 int xmlReadValueFromPath(
const std::string& xpath,
const std::string& property,
const int& dflt);
109 void xmlWriteElement(pugi::xml_node& node,
const char* name,
const char* content,
const char* att_name,
const char* att_val);
110 bool xmlDoesPathExist(
const std::string& path);
111 bool xmlReadValueFromNode(
const pugi::xml_node node,
const std::string propertyName,
double& variableToSet,
112 const std::string unitOut =
"",
const std::string unitMeasured =
"",
const double factor=1.0);
113 std::string xmlReadAttributeFromPath (
const std::string& path,
const std::string& attributeName);
116 std::string i_snowpath, o_snowpath, experiment;
117 double i_max_element_thickness;
118 bool caaml_writeout_as_readin;
121 pugi::xml_document inDoc;
122 pugi::xml_encoding inEncoding;
125 static const char *xml_ns_caaml, *xml_ns_abrev_caaml;
126 static const char *xml_ns_gml, *xml_ns_abrev_gml;
127 static const char *xml_ns_xsi, *xml_ns_abrev_xsi;
128 static const char *xml_ns_slf, *xml_ns_abrev_slf;
129 static const char *xml_ns_snp, *xml_ns_abrev_snp;
130 static const std::string TimeData_xpath, StationMetaData_xpath, SnowData_xpath;
132 char layerDepthTopStr[10], layerThicknessStr[10], layerValStr[10], valueStr[10];
133 double hoarDensitySurf;
134 std::vector<std::string> grainForms;
137 #endif //End of CAAMLIO.h ZwischenData contains "memory" information mainly for operational use It is used to prepare some para...
Definition: DataClasses.h:63
virtual bool snowCoverExists(const std::string &i_snowfile, const std::string &stationID) const
This routine checks if the specified snow cover data exists.
Definition: CaaMLIO.cc:493
SN_SNOWSOIL_DATA includes all important station parameters as well as LayerData.
Definition: DataClasses.h:215
Definition: SnowpackConfig.h:28
ELEMENT DATA used as a pointer in the SnowStation structure NOTE on M below: this is the mass of an e...
Definition: DataClasses.h:251
class to collect the information about the current simulation (version, date)
Definition: DataClasses.h:700
virtual void readSnowCover(const std::string &i_snowfile, const std::string &stationID, SN_SNOWSOIL_DATA &SSdata, ZwischenData &Zdata, const bool &read_salinity)
This routine reads the status of the snow cover at program start.
Definition: CaaMLIO.cc:512
Definition: SnowpackIOInterface.h:27
Definition: DataClasses.h:589
CurrentMeteo is the class of interpolated meteo data for the current calculation time step It contai...
Definition: DataClasses.h:81
virtual bool writeHazardData(const std::string &stationID, const std::vector< ProcessDat > &Hdata, const std::vector< ProcessInd > &Hdata_ind, const size_t &num)
Definition: CaaMLIO.cc:1367
CaaMLIO(const SnowpackConfig &i_cfg, const RunInfo &run_info)
Definition: CaaMLIO.cc:420
Reading snow profile data in CAAML format. Reads in CAAML snow profile data, the CAA-IACS internation...
Definition: CaaMLIO.h:43
virtual void writeProfile(const mio::Date &date, const SnowStation &Xdata)
Definition: CaaMLIO.cc:1362
Structure of double values for output to SDB.
Definition: Hazard.h:37
Station data including all information on snowpack layers (elements and nodes) and on canopy This is...
Definition: DataClasses.h:468
Parameters of the different layers of the snowpack.
Definition: DataClasses.h:177
virtual void writeSnowCover(const mio::Date &date, const SnowStation &Xdata, const ZwischenData &Zdata, const bool &forbackup=false)
This routine writes the status of the snow cover at program termination and at specified backup times...
Definition: CaaMLIO.cc:1024
virtual void writeTimeSeries(const SnowStation &Xdata, const SurfaceFluxes &Sdata, const CurrentMeteo &Mdata, const ProcessDat &Hdata, const double wind_trans24)
Definition: CaaMLIO.cc:1356
NODAL DATA used as a pointer in the SnowStation structure.
Definition: DataClasses.h:340