#include "CSVWriter.h" namespace math1d_cl { void CSVWriter::saveMCResult(std::shared_ptr<math1d_cl::MatData> matData, std::vector<math1d_cl::Hydrograph>& hydrographs, int nTimeSteps, std::string qFileName, std::string hFileName) { if(matData->getChannels().size() != hydrographs.size()) { std::cerr << "ERROR: Hydrograph count different from original channel count!" << std::endl; return; } std::ofstream qFile(qFileName.c_str()); //std::ofstream hFile(hFileName.c_str()); //std::ofstream vFile(m_vCsvFilePath.c_str()); // only zeros std::string firstLine = "time\\id;"; for(size_t i = 0; i < matData->getChannels().size(); i++) { firstLine += std::to_string(matData->getChannels()[i]->getStationId()); firstLine += (i < (matData->getChannels().size() - 1)) ? ";" : "\n"; /*if(i < matData->getChannels().size()) { firstLine += ";"; } else { firstLine += "\n"; }*/ } qFile << firstLine; //hFile << firstLine; //vFile << firstLine; for(int i = 0; i < nTimeSteps; i++) { qFile << printDateTime(matData->getPrecipitations()[i].first) << ";"; //vFile << printDateTime(m_precipitations[i].first); //hFile << printDateTime(matData->getPrecipitations()[i].first) << ";"; for(size_t j = 0; j < matData->getChannels().size(); j++) { qFile << std::fixed << std::setprecision(6) << hydrographs.at(j).getQOut()[i]; //if(m_channels[j]->getHydrograph().getHOut().size() > i) //hFile << std::fixed << std::setprecision(6) << hydrographs->at(j).getHOut()[i]; //else // hFile << ";"; if(j < (matData->getChannels().size() - 1)) { qFile << "; "; //hFile << "; "; } } qFile << "\n"; //hFile << "\n"; //vFile << "\n"; } qFile.close(); //hFile.close(); //vFile.close(); } std::string CSVWriter::printDateTime(const time_t& dateTime) { std::ostringstream str; struct tm * timeInfo; char buffer[6]; timeInfo = localtime(&dateTime); strftime(buffer, 6, "%H:%M", timeInfo); std::string month = std::to_string(timeInfo->tm_mon + 1); if(month.length() == 1) { month = "0" + month; } str << timeInfo->tm_year + 1900 << "-" << month << "-" << timeInfo->tm_mday << " " << buffer; return str.str(); } }