Newer
Older
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* IO_ascii.cpp
*
* Created on: Feb 2017
* Author: Norbert Podhorszki
*/
#include <fstream>
#include <iomanip>
#include <iostream>
static std::ofstream of;
static std::streambuf *buf;
IO::IO(const Settings &s, MPI_Comm comm)
m_outputfilename = s.outputfile;
if (m_outputfilename == "cout")
{
buf = std::cout.rdbuf();
}
else
{
Podhorszki, Norbert
committed
m_outputfilename = MakeFilename(s.outputfile, ".txt", s.rank);
of.open(m_outputfilename);
}
IO::~IO()
{
if (m_outputfilename != "cout")
{
of.close();
}
void IO::write(int step, const HeatTransfer &ht, const Settings &s,
MPI_Comm comm)
std::ostream out(buf);
if (step == 0)
{
out << "rank=" << s.rank << " size=" << s.ndx << "x" << s.ndy
<< " offsets=" << s.offsx << ":" << s.offsy << " step=" << step
<< std::endl;
out << " time row columns " << s.offsy << "..."
<< s.offsy + s.ndy - 1 << std::endl;
out << " ";
for (int j = 1; j <= s.ndy; ++j)
{
out << std::setw(9) << s.offsy + j - 1;
}
out << "\n-------------------------------------------------------------"
"-\n";
}
else
Podhorszki, Norbert
committed
out << std::fixed;
for (int i = 1; i <= s.ndx; ++i)
out << std::setw(5) << step << std::setw(5) << s.offsx + i - 1;
for (int j = 1; j <= s.ndy; ++j)
{
Podhorszki, Norbert
committed
out << std::setw(9) << std::setprecision(5) << ht.T(i, j);