9 #include <tclap/CmdLine.h>
38 std::size_t
const timestep)
41 for (std::size_t j = 0; j < n_node_params; ++j)
46 std::vector<double> data_vec =
55 std::string
const& output_file,
59 std::unique_ptr<FileIO::SwmmInterface> swmm =
66 bool const no_output_file = !swmm->existsSwmmOutputFile();
67 if (!(node_args || link_args) || no_output_file)
70 INFO(
"No output file found.");
78 std::size_t
const n_time_steps(swmm->getNumberOfTimeSteps());
79 INFO(
"Number of simulation time steps: {:d}", n_time_steps);
80 for (std::size_t i = 0; i < n_time_steps; i++)
89 std::string
name(basename + std::to_string(i) + extension);
97 std::string
const& base,
98 std::string
const& ext)
102 for (std::size_t i = 0; i < n_objects; ++i)
104 std::string
const obj_name = swmm.
getName(type, i);
105 std::string
const obj_file_name =
106 std::string(base +
"_" + type_str +
"_" + obj_name + ext);
112 std::string output_file,
113 bool const node_args,
114 bool const link_args,
115 bool const catchment_args,
116 bool const system_args)
118 std::unique_ptr<FileIO::SwmmInterface> swmm =
123 if (!swmm->existsSwmmOutputFile())
125 INFO(
"No output file found, skipping data conversion to CSV.");
129 if (!(node_args || link_args || catchment_args || system_args))
131 INFO(
"No data category selected. Nothing to write.");
148 basename, extension);
152 std::string
const obj_file_name =
153 std::string(basename +
"_system" + extension);
159 int main(
int argc,
char* argv[])
162 "Read files for the Storm Water Management Model (SWMM) and converts "
163 "them into OGS data structures.\n\n"
164 "OpenGeoSys-6 software, version " +
167 "Copyright (c) 2012-2021, OpenGeoSys Community "
168 "(http://www.opengeosys.org)",
170 TCLAP::ValueArg<std::string> mesh_output_arg(
171 "m",
"mesh",
"mesh output file (*.vtu)",
false,
"",
"mesh output file");
172 cmd.add(mesh_output_arg);
173 TCLAP::ValueArg<std::string> geo_output_arg(
174 "g",
"geo",
"geometry output file (*.gml)",
false,
"",
175 "geometry output file");
176 cmd.add(geo_output_arg);
177 TCLAP::ValueArg<std::string> csv_output_arg(
178 "c",
"csv",
"csv output file (*.csv)",
false,
"",
"CSV output file");
179 cmd.add(csv_output_arg);
180 TCLAP::ValueArg<std::string> swmm_input_arg(
181 "i",
"input",
"SWMM input file (*.inp)",
true,
"",
"input file");
182 cmd.add(swmm_input_arg);
183 TCLAP::SwitchArg add_nodes_arg(
184 "",
"node_vars",
"Read node variables and add to output mesh");
185 cmd.add(add_nodes_arg);
186 TCLAP::SwitchArg add_links_arg(
187 "",
"link_vars",
"Read link variables and add to output mesh");
188 cmd.add(add_links_arg);
189 TCLAP::SwitchArg add_subcatchments_arg(
190 "",
"subcatchment_vars",
191 "Read subcatchment variables and write to CSV-file");
192 cmd.add(add_subcatchments_arg);
193 TCLAP::SwitchArg add_system_arg(
194 "",
"system_vars",
"Read system variables and write to CSV-file");
195 cmd.add(add_system_arg);
196 cmd.parse(argc, argv);
198 if (!(geo_output_arg.isSet() || mesh_output_arg.isSet() ||
199 csv_output_arg.isSet()))
201 ERR(
"No output format given. Please specify OGS geometry or mesh "
206 if ((add_subcatchments_arg.getValue() || add_system_arg.getValue()) &&
207 !csv_output_arg.isSet())
209 ERR(
"Please specify csv output file for exporting subcatchment or "
210 "system parameters.");
214 if (geo_output_arg.isSet())
215 writeGeoOutput(swmm_input_arg.getValue(), geo_output_arg.getValue());
217 if (mesh_output_arg.isSet())
219 add_nodes_arg.getValue(), add_links_arg.getValue());
221 if (csv_output_arg.isSet())
223 csv_output_arg.getValue(),
224 add_nodes_arg.getValue(),
225 add_links_arg.getValue(),
226 add_subcatchments_arg.getValue(),
227 add_system_arg.getValue());
Definition of the BoostXmlGmlInterface class.
Definition of the CsvInterface class.
Definition of the GEOObjects class.
void INFO(char const *fmt, Args const &... args)
void ERR(char const *fmt, Args const &... args)
Definition of the class Properties that implements a container of properties.
Definition of the Mesh class.
int writeCsvOutput(std::string input_file, std::string output_file, bool const node_args, bool const link_args, bool const catchment_args, bool const system_args)
void writeObjectsOfSwmmTypeToCsv(FileIO::SwmmInterface &swmm, FileIO::SwmmObject const type, std::string const &base, std::string const &ext)
int main(int argc, char *argv[])
int writeGeoOutput(std::string input_file, std::string output_file)
int addObjectsToMesh(FileIO::SwmmInterface &swmm, MeshLib::Mesh &mesh, FileIO::SwmmObject const type, std::size_t const timestep)
int writeMeshOutput(std::string const &input_file, std::string const &output_file, bool const node_args, bool const link_args)
Implementation of the VtuInterface class.
std::string writeToString()
Writes the object to a string.
std::size_t getNumberOfObjects(SwmmObject obj_type) const
Returns the number of objects of the given type.
bool writeCsvForObject(std::string const &file_name, SwmmObject obj_type, std::size_t obj_idx) const
Write a CSV file for one object of the given type for all time steps.
std::string getName(SwmmObject obj_type, std::size_t idx) const
Returns the Name for the indexed object of the given type (or an empty string if an error occurred).
static std::unique_ptr< SwmmInterface > create(std::string const &file_name)
std::vector< double > getArrayAtTimeStep(SwmmObject obj_type, std::size_t time_step, std::size_t var_idx) const
Returns an array for a given variable at all nodes/links from a SWMM output file for a given time ste...
static bool addResultsToMesh(MeshLib::Mesh &mesh, SwmmObject const type, std::string const &vec_name, std::vector< double > const &data)
static bool convertSwmmInputToGeometry(std::string const &inp_file_name, GeoLib::GEOObjects &geo_objects, bool add_subcatchments)
Reading a SWMM input file and conversion into OGS geometry.
static std::string swmmObjectTypeToString(SwmmObject const obj_type)
Returns a string with the name of the object type.
std::size_t getNumberOfParameters(SwmmObject obj_type) const
Returns the number of parameters (incl. pollutants) of the given type.
std::string getArrayName(SwmmObject obj_type, std::size_t var_idx) const
Returns the name of the data array for the given object type and parameter index.
Container class for geometric objects.
Reads and writes VtkXMLUnstructuredGrid-files (vtu) to and from OGS data structures....
bool writeToFile(std::filesystem::path const &file_path)
int writeStringToFile(std::string content, std::filesystem::path const &file_path)
std::string getFileExtension(const std::string &path)
std::string extractBaseNameWithoutExtension(std::string const &pathname)
std::string dropFileExtension(std::string const &filename)
SwmmObject
SWMM object types.
GITINFOLIB_EXPORT const std::string ogs_version