/** * @file comm_serial.hpp * @author Julian Iseringhausen * @date Mon Apr 18 12:28:29 2011 * * @brief VMG::CommSerial * */ #ifndef COMM_SERIAL_HPP_ #define COMM_SERIAL_HPP_ #include #include #include "comm/comm.hpp" #include "comm/domain_decomposition_serial.hpp" namespace VMG { class DomainDecomposition; class Grid; class Multigrid; class CommSerial : public Comm { public: CommSerial(const Boundary& boundary) : Comm(boundary, new DomainDecompositionSerial()) { InitCommSerial(); } Grid& GetCoarserGrid(Multigrid& multigrid); Grid& GetFinerGrid(Multigrid& multigrid); void CommFromGhosts(Grid& grid); void CommToGhosts(Grid& grid); void CommSubgrid(Grid& grid_old, Grid& grid_new, const int& direction); void CommAddSubgrid(Grid& grid_old, Grid& grid_new, const int& direction); void CommToGhostsAsyncStart(Grid& grid); void CommToGhostsAsyncFinish(Grid& grid); void CommFromGhostsAsyncStart(Grid& grid); void CommFromGhostsAsyncFinish(Grid& grid); void CommParticles(const Grid& grid, std::list& particles); void CommParticlesBack(std::list& particles); void CommLCListToGhosts(Particle::LinkedCellList& lc); void CommLCListFromGhosts(const Grid& grid, Particle::LinkedCellList& lc); void PrintString(const char* format, ...); void PrintStringOnce(const char* format, ...); void PrintXML(const std::string& filename, const std::string& xml_data); void PrintXMLAll(const std::string& filename, const std::string& xml_data); void PrintAllSettings(); void PrintGrid(Grid& grid, const char* information); void PrintDefect(Grid& sol, Grid& rhs, const char* information); void DebugPrintGridStructure(Multigrid& multigrid); void PostInit(Multigrid& sol, Multigrid& rhs) {} private: void InitCommSerial(); void OpenFileAndPrintHeader(std::ofstream& out, const Grid& mesh, const char* information); void PrintGridStructureLevel(Grid& grid, std::ofstream& out); std::string CreateOutputDirectory(); int error_norm_count, residual_count; std::map< const Grid*, Grid*> finer, coarser; }; } #endif /* COMM_SERIAL_HPP_ */