Newer
Older
* IO_ascii.cpp
*
* Created on: Feb 2017
* Author: Norbert Podhorszki
*/
#include <iostream>
#include <iomanip>
#include <fstream>
#include "IO.h"
static std::ofstream of;
static std::streambuf *buf;
IO::IO( const Settings& s, MPI_Comm comm )
if (m_outputfilename == "cout")
{
buf = std::cout.rdbuf();
}
else
{
int rank;
MPI_Comm_rank( comm, &rank );
std::string rs = std::to_string(rank);
of.open(m_outputfilename + rs + ".txt");
buf = of.rdbuf();
}
}
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;
for (int j = 1; j <= s.ndy; ++j) {
out << std::setw(9) << s.offsy+j-1;
}
out << "\n--------------------------------------------------------------\n";
}
else
{
out << std::endl;
}
out << std::setw(5) << step << std::setw(5) << s.offsx+i-1;
for (int j = 1; j <= s.ndy; ++j)
out << std::setw(9) << ht.T(i,j);
}
out << std::endl;
}
}