diff --git a/src/language/PugsParser.cpp b/src/language/PugsParser.cpp index ae98aecdf50799e61aff1e9b607862acaa092f38..6efab91fb6b0f63536908a2849601de232a15b05 100644 --- a/src/language/PugsParser.cpp +++ b/src/language/PugsParser.cpp @@ -1,6 +1,7 @@ -#include <PugsOStream.hpp> #include <PugsParser.hpp> +#include <iostream> + #include <rang.hpp> #include <pegtl.hpp> @@ -159,10 +160,10 @@ parser(const std::string& filename) const size_t grammar_issues = analyze<language::grammar>(); - pout() << rang::fgB::yellow << "grammar_issues=" << rang::fg::reset << grammar_issues << '\n'; + std::cout << rang::fgB::yellow << "grammar_issues=" << rang::fg::reset << grammar_issues << '\n'; - pout() << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename - << rang::style::reset << " ...\n\n"; + std::cout << rang::style::bold << "Parsing file " << rang::style::reset << rang::style::underline << filename + << rang::style::reset << " ...\n\n"; read_input in(filename); try { @@ -172,13 +173,13 @@ parser(const std::string& filename) } catch (const parse_error& e) { const auto p = e.positions.front(); - perr() << rang::style::bold << p.source << ':' << p.line << ':' << p.byte_in_line << ": " << rang::style::reset - << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset - << '\n' - << in.line_at(p) << '\n' - << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << std::endl; + std::cerr << rang::style::bold << p.source << ':' << p.line << ':' << p.byte_in_line << ": " << rang::style::reset + << rang::fgB::red << "error: " << rang::fg::reset << rang::style::bold << e.what() << rang::style::reset + << '\n' + << in.line_at(p) << '\n' + << std::string(p.byte_in_line, ' ') << rang::fgB::yellow << '^' << rang::fg::reset << std::endl; std::exit(1); } - pout() << "Parsed:\n" << name << std::endl; + std::cout << "Parsed:\n" << name << std::endl; } diff --git a/src/main.cpp b/src/main.cpp index a08658afed41b499c930f256cedf44d1592f4851..93ff1e39f0d3ad18c556d141f91754dcc1d4c211 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,4 +1,3 @@ -#include <PugsOStream.hpp> #include <PugsUtils.hpp> #include <rang.hpp> @@ -25,6 +24,8 @@ #include <SynchronizerManager.hpp> +#include <iostream> + #include <limits> #include <map> #include <regex> @@ -45,7 +46,7 @@ main(int argc, char* argv[]) SynchronizerManager::create(); if (filename != "") { - pout() << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n"; + std::cout << "Reading (gmsh) " << rang::style::underline << filename << rang::style::reset << " ...\n"; Timer gmsh_timer; gmsh_timer.reset(); GmshReader gmsh_reader(filename); @@ -99,7 +100,7 @@ main(int argc, char* argv[]) break; } default: { - perr() << "Unknown BCDescription\n"; + std::cerr << "Unknown BCDescription\n"; std::exit(1); } } @@ -157,8 +158,8 @@ main(int argc, char* argv[]) NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}}, t, true); // forces last output - pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green << t - << rang::fg::reset << " (" << iteration << " iterations)\n"; + std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green + << t << rang::fg::reset << " (" << iteration << " iterations)\n"; method_cost_map["AcousticSolverWithMesh"] = timer.seconds(); @@ -219,7 +220,7 @@ main(int argc, char* argv[]) break; } default: { - perr() << "Unknown BCDescription\n"; + std::cerr << "Unknown BCDescription\n"; std::exit(1); } } @@ -275,8 +276,8 @@ main(int argc, char* argv[]) NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}}, t, true); // forces last output - pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green << t - << rang::fg::reset << " (" << iteration << " iterations)\n"; + std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green + << t << rang::fg::reset << " (" << iteration << " iterations)\n"; method_cost_map["AcousticSolverWithMesh"] = timer.seconds(); break; @@ -326,7 +327,7 @@ main(int argc, char* argv[]) break; } default: { - perr() << "Unknown BCDescription\n"; + std::cerr << "Unknown BCDescription\n"; std::exit(1); } } @@ -381,19 +382,19 @@ main(int argc, char* argv[]) NamedItemValue{"node_owner", mesh.connectivity().nodeOwner()}}, t, true); // forces last output - pout() << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green << t - << rang::fg::reset << " (" << iteration << " iterations)\n"; + std::cout << "* " << rang::style::underline << "Final time" << rang::style::reset << ": " << rang::fgB::green + << t << rang::fg::reset << " (" << iteration << " iterations)\n"; method_cost_map["AcousticSolverWithMesh"] = timer.seconds(); break; } } - pout() << "* " << rang::fgB::red << "Could not be uglier!" << rang::fg::reset << " (" << __FILE__ << ':' << __LINE__ - << ")\n"; + std::cout << "* " << rang::fgB::red << "Could not be uglier!" << rang::fg::reset << " (" << __FILE__ << ':' + << __LINE__ << ")\n"; } else { - perr() << "Connectivity1D defined by number of nodes no more implemented\n"; + std::cerr << "Connectivity1D defined by number of nodes no more implemented\n"; std::exit(0); } @@ -407,8 +408,8 @@ main(int argc, char* argv[]) } for (const auto& method_cost : method_cost_map) { - pout() << "* [" << rang::fgB::cyan << std::setw(size) << std::left << method_cost.first << rang::fg::reset - << "] Execution time: " << rang::style::bold << method_cost.second << rang::style::reset << '\n'; + std::cout << "* [" << rang::fgB::cyan << std::setw(size) << std::left << method_cost.first << rang::fg::reset + << "] Execution time: " << rang::style::bold << method_cost.second << rang::style::reset << '\n'; } return 0; diff --git a/src/mesh/Connectivity.hpp b/src/mesh/Connectivity.hpp index 1b815cdd023e066f4c8f4ee7fd0e058459da81e2..6b7e31a4057de6a854c72237ba8482ba7df0abf8 100644 --- a/src/mesh/Connectivity.hpp +++ b/src/mesh/Connectivity.hpp @@ -4,7 +4,6 @@ #include <PugsAssert.hpp> #include <PugsMacros.hpp> -#include <PugsOStream.hpp> #include <PugsUtils.hpp> #include <PugsTraits.hpp> @@ -34,6 +33,7 @@ #include <SynchronizerManager.hpp> +#include <iostream> #include <set> class ConnectivityDescriptor; @@ -208,7 +208,7 @@ class Connectivity final : public IConnectivity const auto& edgeOwner() const { - perr() << __FILE__ << ':' << __LINE__ << ": edge owner not built\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": edge owner not built\n"; std::terminate(); return m_edge_owner; } @@ -255,7 +255,7 @@ class Connectivity final : public IConnectivity const auto& edgeIsOwned() const { - perr() << __FILE__ << ':' << __LINE__ << ": edge is owned not built\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": edge is owned not built\n"; std::terminate(); return m_edge_is_owned; } diff --git a/src/mesh/ConnectivityComputer.cpp b/src/mesh/ConnectivityComputer.cpp index b040c48890f23085b2d6de6a0a9e2fe894d07a87..b4f24fb692ed2fc1c42de307e20447e956d568a6 100644 --- a/src/mesh/ConnectivityComputer.cpp +++ b/src/mesh/ConnectivityComputer.cpp @@ -1,6 +1,8 @@ #include <Connectivity.hpp> #include <ConnectivityComputer.hpp> + +#include <iostream> #include <map> template <typename ConnectivityType> @@ -13,11 +15,12 @@ ConnectivityComputer::computeConnectivityMatrix(const ConnectivityType& connecti if (connectivity.isConnectivityMatrixBuilt(child_item_type, item_type)) { const ConnectivityMatrix& child_to_item_matrix = connectivity._getMatrix(child_item_type, item_type); - pout() << "computing connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n'; + std::cout << "computing connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n'; item_to_child_item_matrix = this->_computeInverse(child_to_item_matrix); } else { - perr() << "unable to compute connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) << '\n'; + std::cerr << "unable to compute connectivity " << itemName(item_type) << " -> " << itemName(child_item_type) + << '\n'; std::terminate(); } @@ -53,7 +56,7 @@ ConnectivityComputer::_computeInverse(const ConnectivityMatrix& item_to_child_ma size_t i = 0; for (const auto& [child_item_id, item_vector] : child_to_item_vector_map) { if (child_item_id != i) { - perr() << "sparse item numerotation NIY\n"; + std::cerr << "sparse item numerotation NIY\n"; std::exit(0); } ++i; diff --git a/src/mesh/ConnectivityDispatcher.cpp b/src/mesh/ConnectivityDispatcher.cpp index 792bb0c18e9577e4afc8859b6c328777ea7c2928..0136c264c66b9cd00a2be037a1019d1c83886383 100644 --- a/src/mesh/ConnectivityDispatcher.cpp +++ b/src/mesh/ConnectivityDispatcher.cpp @@ -3,6 +3,7 @@ #include <ItemOfItemType.hpp> +#include <iostream> #include <unordered_map> template <int Dimension> @@ -417,8 +418,8 @@ ConnectivityDispatcher<Dimension>::_buildItemReferenceList() if (number_of_item_list_sender > 0) { if (number_of_item_list_sender > 1) { - perr() << __FILE__ << ':' << __LINE__ << ": " << rang::fgB::red - << "need to check that knowing procs know the same item_ref_lists!" << rang::fg::reset << '\n'; + std::cerr << __FILE__ << ':' << __LINE__ << ": " << rang::fgB::red + << "need to check that knowing procs know the same item_ref_lists!" << rang::fg::reset << '\n'; } if (number_of_item_list_sender < parallel::size()) { diff --git a/src/mesh/GmshReader.cpp b/src/mesh/GmshReader.cpp index 3d2c7985b58fcea14015334d2b1e329b9e51d8c3..7ba1dbfc1fe442da97a4872103231a4f7d0834e8 100644 --- a/src/mesh/GmshReader.cpp +++ b/src/mesh/GmshReader.cpp @@ -21,6 +21,8 @@ #include <ConnectivityDispatcher.hpp> #include <iomanip> +#include <iostream> + #include <map> #include <regex> #include <unordered_map> @@ -88,30 +90,30 @@ ErrorHandler::writeErrorMessage() const { switch (__type) { case asked: { - perr() << "\nremark: exit command explicitly called\n"; + std::cerr << "\nremark: exit command explicitly called\n"; [[fallthrough]]; } case normal: { - perr() << '\n' << __filename << ':' << __lineNumber << ":remark: emitted the following message\n"; - perr() << "error: " << __errorMessage << '\n'; + std::cerr << '\n' << __filename << ':' << __lineNumber << ":remark: emitted the following message\n"; + std::cerr << "error: " << __errorMessage << '\n'; break; } case compilation: { - perr() << "\nline " << __lineNumber << ':' << __errorMessage << '\n'; + std::cerr << "\nline " << __lineNumber << ':' << __errorMessage << '\n'; break; } case unexpected: { - perr() << '\n' << __filename << ':' << __lineNumber << ":\n" << __errorMessage << '\n'; - perr() << "\nUNEXPECTED ERROR: this should not occure, please report it\n"; - perr() << "\nBUG REPORT: Please send bug reports to:\n" - << " ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n" - << "or better, use the Bug Tracking System:\n" - << " http://savannah.nongnu.org/bugs/?group=ff3d\n"; + std::cerr << '\n' << __filename << ':' << __lineNumber << ":\n" << __errorMessage << '\n'; + std::cerr << "\nUNEXPECTED ERROR: this should not occure, please report it\n"; + std::cerr << "\nBUG REPORT: Please send bug reports to:\n" + << " ff3d-dev@nongnu.org or freefem@ann.jussieu.fr\n" + << "or better, use the Bug Tracking System:\n" + << " http://savannah.nongnu.org/bugs/?group=ff3d\n"; break; } default: { - perr() << __filename << ':' << __lineNumber << ": " << __errorMessage << '\n'; - perr() << __FILE__ << ':' << __LINE__ << ":remark: error type not implemented!\n"; + std::cerr << __filename << ':' << __lineNumber << ": " << __errorMessage << '\n'; + std::cerr << __FILE__ << ':' << __LINE__ << ":remark: error type not implemented!\n"; } } } @@ -343,7 +345,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename) try { m_fin.open(m_filename); if (not m_fin) { - perr() << "cannot read file '" << m_filename << "'\n"; + std::cerr << "cannot read file '" << m_filename << "'\n"; std::exit(0); } @@ -405,7 +407,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename) __primitivesNames[14] = "point"; __supportedPrimitives[14] = true; - pout() << "Reading file '" << m_filename << "'\n"; + std::cout << "Reading file '" << m_filename << "'\n"; // Getting vertices list GmshReader::Keyword kw = this->__nextKeyword(); @@ -453,18 +455,18 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename) // } // } - // pout() << "- Binary format: "; + // std::cout << "- Binary format: "; // #ifdef WORDS_BIGENDIAN // if (not __convertEndian) { - // pout() << "big endian\n"; + // std::cout << "big endian\n"; // } else { - // pout() << "little endian\n"; + // std::cout << "little endian\n"; // } // #else // WORDS_BIGENDIAN // if (not __convertEndian) { - // pout() << "little endian\n"; + // std::cout << "little endian\n"; // } else { - // pout() << "big endian\n"; + // std::cout << "big endian\n"; // } // #endif // WORDS_BIGENDIAN } @@ -495,9 +497,9 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename) std::exit(0); } } - pout() << std::flush; + std::cout << std::flush; if (parallel::size() > 1) { - pout() << "Sequential mesh read! Need to be dispatched\n" << std::flush; + std::cout << "Sequential mesh read! Need to be dispatched\n" << std::flush; const int mesh_dimension = [&]() { int mesh_dimension = -1; // unknown mesh dimension @@ -534,7 +536,7 @@ GmshReader::GmshReader(const std::string& filename) : m_filename(filename) break; } default: { - perr() << "unexpected dimension " << mesh_dimension << '\n'; + std::cerr << "unexpected dimension " << mesh_dimension << '\n'; std::exit(1); } } @@ -545,7 +547,7 @@ void GmshReader::__readVertices() { const int numberOfVerices = this->_getInteger(); - pout() << "- Number Of Vertices: " << numberOfVerices << '\n'; + std::cout << "- Number Of Vertices: " << numberOfVerices << '\n'; if (numberOfVerices < 0) { throw ErrorHandler(__FILE__, __LINE__, "reading file '" + this->m_filename + "': number of vertices is negative", ErrorHandler::normal); @@ -590,7 +592,7 @@ GmshReader::__readVertices() // GmshReader::__readElements1() // { // const int numberOfElements = this->_getInteger(); -// pout() << "- Number Of Elements: " << numberOfElements << '\n'; +// std::cout << "- Number Of Elements: " << numberOfElements << '\n'; // if (numberOfElements<0) { // throw ErrorHandler(__FILE__,__LINE__, // "reading file '"+m_filename @@ -639,7 +641,7 @@ void GmshReader::__readElements2_2() { const int numberOfElements = this->_getInteger(); - pout() << "- Number Of Elements: " << numberOfElements << '\n'; + std::cout << "- Number Of Elements: " << numberOfElements << '\n'; if (numberOfElements < 0) { throw ErrorHandler(__FILE__, __LINE__, "reading file '" + m_filename + "': number of elements is negative", ErrorHandler::normal); @@ -754,8 +756,8 @@ GmshReader::__readPhysicalNames2_2() PhysicalRefId physical_ref_id(physical_dimension, RefId(physical_number, physical_name)); auto searched_physical_ref_id = m_physical_ref_map.find(physical_number); if (searched_physical_ref_id != m_physical_ref_map.end()) { - perr() << "Physical reference id '" << physical_ref_id << "' already defined as '" - << searched_physical_ref_id->second << "'!"; + std::cerr << "Physical reference id '" << physical_ref_id << "' already defined as '" + << searched_physical_ref_id->second << "'!"; std::exit(0); } m_physical_ref_map[physical_number] = physical_ref_id; @@ -813,7 +815,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& d break; } default: { - perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 2!\n"; + std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 2!\n"; std::terminate(); } } @@ -867,7 +869,7 @@ GmshReader::__computeCellFaceAndFaceNodeConnectivities(ConnectivityDescriptor& d break; } default: { - perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n"; + std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n"; std::terminate(); } } @@ -1040,7 +1042,7 @@ GmshReader::__computeFaceEdgeAndEdgeNodeAndCellEdgeConnectivities(ConnectivityDe break; } default: { - perr() << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n"; + std::cerr << name(descriptor.cell_type_vector[j]) << ": unexpected cell type in dimension 3!\n"; std::terminate(); } } @@ -1062,16 +1064,16 @@ GmshReader::__proceedData() for (size_t i = 0; i < elementNumber.dimension(); ++i) { if (elementNumber[i] > 0) { - pout() << " - Number of " << __primitivesNames[i] << ": " << elementNumber[i]; + std::cout << " - Number of " << __primitivesNames[i] << ": " << elementNumber[i]; if (not(__supportedPrimitives[i])) { - pout() << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset << "]"; + std::cout << " [" << rang::fg::yellow << "IGNORED" << rang::style::reset << "]"; } else { - pout() << " references: "; + std::cout << " references: "; for (std::set<size_t>::const_iterator iref = elementReferences[i].begin(); iref != elementReferences[i].end(); ++iref) { if (iref != elementReferences[i].begin()) - pout() << ','; - pout() << *iref; + std::cout << ','; + std::cout << *iref; } switch (i) { @@ -1129,11 +1131,11 @@ GmshReader::__proceedData() } } } - pout() << '\n'; + std::cout << '\n'; } } - pout() << "- Building correspondance table\n"; + std::cout << "- Building correspondance table\n"; int minNumber = std::numeric_limits<int>::max(); int maxNumber = std::numeric_limits<int>::min(); for (size_t i = 0; i < __verticesNumbers.size(); ++i) { @@ -1307,10 +1309,10 @@ GmshReader::__proceedData() dimension3_mask[12] = 1; dimension3_mask[13] = 1; - pout() << "- dimension 0 entities: " << (dimension0_mask, elementNumber) << '\n'; - pout() << "- dimension 1 entities: " << (dimension1_mask, elementNumber) << '\n'; - pout() << "- dimension 2 entities: " << (dimension2_mask, elementNumber) << '\n'; - pout() << "- dimension 3 entities: " << (dimension3_mask, elementNumber) << '\n'; + std::cout << "- dimension 0 entities: " << (dimension0_mask, elementNumber) << '\n'; + std::cout << "- dimension 1 entities: " << (dimension1_mask, elementNumber) << '\n'; + std::cout << "- dimension 2 entities: " << (dimension2_mask, elementNumber) << '\n'; + std::cout << "- dimension 3 entities: " << (dimension3_mask, elementNumber) << '\n'; if ((dimension3_mask, elementNumber) > 0) { const size_t nb_cells = (dimension3_mask, elementNumber); @@ -1776,7 +1778,7 @@ GmshReader::__proceedData() m_mesh = std::make_shared<MeshType>(p_connectivity, xr); } else { - perr() << "*** using a dimension 0 mesh is forbidden!\n"; + std::cerr << "*** using a dimension 0 mesh is forbidden!\n"; std::exit(0); } } @@ -1812,7 +1814,7 @@ GmshReader::__nextKeyword() void GmshReader::__readGmshFormat2_2() { - pout() << "- Reading Gmsh format 2.2\n"; + std::cout << "- Reading Gmsh format 2.2\n"; GmshReader::Keyword kw = std::make_pair("", Unknown); while (kw.second != EndOfFile) { kw = this->__nextKeyword(); diff --git a/src/mesh/ItemValue.hpp b/src/mesh/ItemValue.hpp index 38b53ea79190724014241f50fc8cfd37d7599e40..81301f7a3d9a33e66906c20a48d984c22139bf8a 100644 --- a/src/mesh/ItemValue.hpp +++ b/src/mesh/ItemValue.hpp @@ -2,7 +2,6 @@ #define ITEM_VALUE_HPP #include <PugsAssert.hpp> -#include <PugsOStream.hpp> #include <Array.hpp> diff --git a/src/mesh/ItemValueUtils.hpp b/src/mesh/ItemValueUtils.hpp index 33a4a988a98bf9cf92524a5eb5da4948360bc00f..666d4a0e9bf99b69b5d2b92e4588f84da30e8715 100644 --- a/src/mesh/ItemValueUtils.hpp +++ b/src/mesh/ItemValueUtils.hpp @@ -9,6 +9,8 @@ #include <Synchronizer.hpp> #include <SynchronizerManager.hpp> +#include <iostream> + template <typename DataType, ItemType item_type> std::remove_const_t<DataType> min(const ItemValue<DataType, item_type>& item_value) @@ -37,7 +39,7 @@ min(const ItemValue<DataType, item_type>& item_value) break; } default: { - perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; std::terminate(); } } @@ -128,7 +130,7 @@ max(const ItemValue<DataType, item_type>& item_value) break; } default: { - perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; std::terminate(); } } @@ -219,7 +221,7 @@ sum(const ItemValue<DataType, item_type>& item_value) break; } default: { - perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; std::terminate(); } } diff --git a/src/mesh/MeshNodeBoundary.hpp b/src/mesh/MeshNodeBoundary.hpp index 5742d0c5d84740f81a9c1f9e6634d58d5f260214..5c5de47d4bcc7c55ebfd4d56a24db6afb2bb2d9f 100644 --- a/src/mesh/MeshNodeBoundary.hpp +++ b/src/mesh/MeshNodeBoundary.hpp @@ -15,6 +15,8 @@ #include <Messenger.hpp> +#include <iostream> + template <size_t Dimension> class MeshNodeBoundary { @@ -42,7 +44,7 @@ class MeshNodeBoundary face_list.size(), PUGS_LAMBDA(const int& l) { const auto& face_cells = face_to_cell_matrix[face_list[l]]; if (face_cells.size() > 1) { - perr() << "internal faces cannot be used to define mesh boundaries\n"; + std::cerr << "internal faces cannot be used to define mesh boundaries\n"; std::exit(1); } }); @@ -153,7 +155,7 @@ MeshFlatNodeBoundary<2>::_checkBoundaryIsFlat(const TinyVector<2, double>& norma m_node_list.size(), PUGS_LAMBDA(const size_t& r) { const R2& x = xr[m_node_list[r]]; if ((x - origin, normal) > 1E-13 * length) { - perr() << "this FlatBoundary is not flat!\n"; + std::cerr << "this FlatBoundary is not flat!\n"; std::exit(1); } }); @@ -177,7 +179,7 @@ MeshFlatNodeBoundary<1>::_getNormal(const MeshType& mesh) }(); if (number_of_bc_nodes != 1) { - perr() << "Node boundaries in 1D require to have exactly 1 node\n"; + std::cerr << "Node boundaries in 1D require to have exactly 1 node\n"; std::exit(1); } @@ -224,7 +226,7 @@ MeshFlatNodeBoundary<2>::_getNormal(const MeshType& mesh) } if (xmin == xmax) { - perr() << "xmin==xmax (" << xmin << "==" << xmax << ") unable to compute normal"; + std::cerr << "xmin==xmax (" << xmin << "==" << xmax << ") unable to compute normal"; std::exit(1); } @@ -349,7 +351,7 @@ MeshFlatNodeBoundary<3>::_getNormal(const MeshType& mesh) } if (normal_l2 == 0) { - perr() << "not able to compute normal!\n"; + std::cerr << "not able to compute normal!\n"; std::exit(1); } diff --git a/src/mesh/Synchronizer.hpp b/src/mesh/Synchronizer.hpp index 30781a63a0d67bbc9ee4031f82d579d92a6a2194..7c2f97a6c08326c556ded90d2492fc12a22d9f8f 100644 --- a/src/mesh/Synchronizer.hpp +++ b/src/mesh/Synchronizer.hpp @@ -4,6 +4,7 @@ #include <Connectivity.hpp> #include <ItemValue.hpp> +#include <iostream> #include <map> class Synchronizer @@ -187,7 +188,7 @@ class Synchronizer break; } default: { - perr() << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": unexpected dimension\n"; std::terminate(); } } diff --git a/src/mesh/SynchronizerManager.cpp b/src/mesh/SynchronizerManager.cpp index e739394e3fa24708a0165904d6e03d7934f48c69..b02ae8300e83703dcd64e09d8cccb1e51b2060f1 100644 --- a/src/mesh/SynchronizerManager.cpp +++ b/src/mesh/SynchronizerManager.cpp @@ -9,7 +9,7 @@ SynchronizerManager* SynchronizerManager::m_instance{nullptr}; SynchronizerManager::~SynchronizerManager() { if (m_connectivity_synchronizer_map.size() > 0) { - perr() << __FILE__ << ':' << __LINE__ << ": warning: some connectivities are still registered\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": warning: some connectivities are still registered\n"; ; } } diff --git a/src/output/VTKWriter.hpp b/src/output/VTKWriter.hpp index 4793c1bf29c511fca2437a353aef229d9f5f0e8e..4656a183977e28b00853a847ad1ec3b9c89cc9a1 100644 --- a/src/output/VTKWriter.hpp +++ b/src/output/VTKWriter.hpp @@ -3,15 +3,17 @@ #include <IConnectivity.hpp> #include <TinyVector.hpp> -#include <fstream> -#include <iomanip> -#include <sstream> -#include <string> #include <ItemValue.hpp> #include <Messenger.hpp> #include <OutputNamedItemValueSet.hpp> +#include <fstream> +#include <iomanip> +#include <iostream> +#include <sstream> +#include <string> + class VTKWriter { private: diff --git a/src/scheme/AcousticSolver.hpp b/src/scheme/AcousticSolver.hpp index 01b485f5f9007b2d73328fd10bbac4ba1b6df154..24c2e36514e9d746acb0e81bcf78f8bfe150bdbe 100644 --- a/src/scheme/AcousticSolver.hpp +++ b/src/scheme/AcousticSolver.hpp @@ -19,6 +19,8 @@ #include <Messenger.hpp> #include <SubItemValuePerItem.hpp> +#include <iostream> + template <typename MeshData> class AcousticSolver { @@ -118,12 +120,12 @@ class AcousticSolver for (const auto& handler : m_boundary_condition_list) { switch (handler.boundaryCondition().type()) { case BoundaryCondition::normal_velocity: { - perr() << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": normal_velocity BC NIY\n"; std::exit(0); break; } case BoundaryCondition::velocity: { - perr() << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": velocity BC NIY\n"; std::exit(0); break; } @@ -131,7 +133,7 @@ class AcousticSolver // const PressureBoundaryCondition& pressure_bc // = dynamic_cast<const // PressureBoundaryCondition&>(handler.boundaryCondition()); - perr() << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n"; + std::cerr << __FILE__ << ':' << __LINE__ << ": pressure BC NIY\n"; std::exit(0); break; } diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt index 9859671af16ff0eae47582587c887ad3bcac8b8d..59def1c2dd746c70799b67953ec260abc051d87a 100644 --- a/src/utils/CMakeLists.txt +++ b/src/utils/CMakeLists.txt @@ -11,7 +11,6 @@ add_library( FPEManager.cpp Messenger.cpp Partitioner.cpp - PugsOStream.cpp PugsUtils.cpp RevisionInfo.cpp SignalManager.cpp) diff --git a/src/utils/CastArray.hpp b/src/utils/CastArray.hpp index e9f0cdd07d35255a7c4df9583732f0d84c1e231f..5202d886256692d48f50225654f77e9a1ae749d2 100644 --- a/src/utils/CastArray.hpp +++ b/src/utils/CastArray.hpp @@ -4,6 +4,8 @@ #include <Array.hpp> #include <PugsTraits.hpp> +#include <iostream> + template <typename DataType, typename CastDataType> class CastArray { diff --git a/src/utils/ConsoleManager.cpp b/src/utils/ConsoleManager.cpp index cec3cb2cbecf8d84a651f6a11268443904135251..83e4c84cb628fb48e15e68c21c76042e62ddc788 100644 --- a/src/utils/ConsoleManager.cpp +++ b/src/utils/ConsoleManager.cpp @@ -1,5 +1,4 @@ #include <ConsoleManager.hpp> -#include <PugsOStream.hpp> #include <rang.hpp> @@ -12,12 +11,12 @@ ConsoleManager::isTerminal(std::ostream& os) void ConsoleManager::init(const bool& colorize) { - pout() << "Console management: color "; + std::cout << "Console management: color "; if (colorize) { rang::setControlMode(rang::control::Force); - pout() << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset << '\n'; + std::cout << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset << rang::style::reset << '\n'; } else { rang::setControlMode(rang::control::Off); - pout() << "disabled\n"; + std::cout << "disabled\n"; } } diff --git a/src/utils/FPEManager.cpp b/src/utils/FPEManager.cpp index 2c61e89209bc462c243cfd379a6a88b7bfa4fbfa..b0295f77d6b95abf42e91fcf8efc772a9329bb67 100644 --- a/src/utils/FPEManager.cpp +++ b/src/utils/FPEManager.cpp @@ -1,6 +1,5 @@ #include <FPEManager.hpp> #include <PugsMacros.hpp> -#include <PugsOStream.hpp> #include <pugs_config.hpp> #include <rang.hpp> @@ -62,16 +61,16 @@ fedisableexcept(unsigned int excepts) void FPEManager::enable() { - pout() << "FE management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset - << rang::style::reset << '\n'; + std::cout << "FE management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset + << rang::style::reset << '\n'; ::feenableexcept(MANAGED_FPE); } void FPEManager::disable() { - pout() << "FE management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset - << rang::style::reset << '\n'; + std::cout << "FE management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset + << rang::style::reset << '\n'; ::fedisableexcept(MANAGED_FPE); } @@ -80,13 +79,13 @@ FPEManager::disable() void FPEManager::enable() { - pout() << "FE management: enabled " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n'; + std::cout << "FE management: enabled " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n'; } void FPEManager::disable() { - pout() << "FE management: disable " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n'; + std::cout << "FE management: disable " << rang::fg::red << "[not supported]" << rang::fg::reset << '\n'; } #endif // PUGS_HAS_FENV_H diff --git a/src/utils/Messenger.cpp b/src/utils/Messenger.cpp index f1d18053557fc8dbd9d4f1dea27ba74d61147129..07eab1792beb3a3208da71dba580af7114812699 100644 --- a/src/utils/Messenger.cpp +++ b/src/utils/Messenger.cpp @@ -1,5 +1,6 @@ #include <Messenger.hpp> -#include <PugsOStream.hpp> + +#include <iostream> namespace parallel { @@ -45,8 +46,9 @@ Messenger::Messenger([[maybe_unused]] int& argc, [[maybe_unused]] char* argv[]) if (m_rank != 0) { // LCOV_EXCL_START - pout.setOutput(null_stream); - perr.setOutput(null_stream); + std::cout.setstate(std::ios::badbit); + std::cerr.setstate(std::ios::badbit); + std::clog.setstate(std::ios::badbit); // LCOV_EXCL_STOP } #endif // PUGS_HAS_MPI diff --git a/src/utils/Messenger.hpp b/src/utils/Messenger.hpp index d697d61cd8839aafe4fb85345d3b19bc33feef8b..d3c3801beb09f857103ef066316b9c9febbf5c5e 100644 --- a/src/utils/Messenger.hpp +++ b/src/utils/Messenger.hpp @@ -3,7 +3,6 @@ #include <PugsAssert.hpp> #include <PugsMacros.hpp> -#include <PugsOStream.hpp> #include <Array.hpp> #include <ArrayUtils.hpp> @@ -19,6 +18,8 @@ #include <PugsTraits.hpp> +#include <iostream> + namespace parallel { class Messenger diff --git a/src/utils/Partitioner.cpp b/src/utils/Partitioner.cpp index 8d3f46512fa7de558320b211ad22679d36beef13..4bbee923ccc34bfe6de26e4a858ae332754e9acc 100644 --- a/src/utils/Partitioner.cpp +++ b/src/utils/Partitioner.cpp @@ -2,20 +2,19 @@ #include <Partitioner.hpp> #include <pugs_config.hpp> -#include <PugsOStream.hpp> - #ifdef PUGS_HAS_MPI #define IDXTYPEWIDTH 64 #define REALTYPEWIDTH 64 #include <parmetis.h> +#include <iostream> #include <vector> Array<int> Partitioner::partition(const CSRGraph& graph) { - pout() << "Partitioning graph into " << rang::style::bold << parallel::size() << rang::style::reset << " parts\n"; + std::cout << "Partitioning graph into " << rang::style::bold << parallel::size() << rang::style::reset << " parts\n"; int wgtflag = 0; int numflag = 0; @@ -62,7 +61,7 @@ Partitioner::partition(const CSRGraph& graph) ParMETIS_V3_PartKway(&(vtxdist[0]), &(entries[0]), &(neighbors[0]), NULL, NULL, &wgtflag, &numflag, &ncon, &npart, &(tpwgts[0]), &(ubvec[0]), &(options[0]), &edgecut, &(part[0]), &parmetis_comm); if (result == METIS_ERROR) { - perr() << "Metis Error\n"; + std::cerr << "Metis Error\n"; std::exit(1); } diff --git a/src/utils/PugsOStream.cpp b/src/utils/PugsOStream.cpp deleted file mode 100644 index e321f50d722a1c6b3cb4f25a2dbd51e8c20af267..0000000000000000000000000000000000000000 --- a/src/utils/PugsOStream.cpp +++ /dev/null @@ -1,13 +0,0 @@ -#include <PugsOStream.hpp> - -#include <iomanip> -#include <sstream> - -PugsOStream pout(std::cout); -PugsOStream perr(std::cerr); - -std::stringstream null_stream; -const PugsOStream _null_stream_initializer([]() -> std::stringstream& { - null_stream.setstate(std::ios::badbit); - return null_stream; -}()); diff --git a/src/utils/PugsOStream.hpp b/src/utils/PugsOStream.hpp deleted file mode 100644 index e5d986186917b3ca949d46658e175c9adcfb6ff5..0000000000000000000000000000000000000000 --- a/src/utils/PugsOStream.hpp +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef PUGS_OSTREAM_HPP -#define PUGS_OSTREAM_HPP - -#include <PugsMacros.hpp> -#include <iostream> -#include <sstream> - -extern std::stringstream null_stream; - -class PugsOStream -{ - private: - std::ostream* m_os = nullptr; - - public: - PUGS_INLINE - std::ostream& - operator()() - { - return *m_os; - } - - void - setOutput(std::ostream& os) - { - m_os = &os; - } - - PugsOStream(std::ostream& os) : m_os(&os) - { - ; - } - - PugsOStream& operator=(const PugsOStream&) = delete; - PugsOStream& operator=(PugsOStream&&) = delete; - PugsOStream(const PugsOStream&) = delete; - PugsOStream(PugsOStream&&) = delete; - - ~PugsOStream() = default; -}; - -extern PugsOStream pout; -extern PugsOStream perr; -extern const PugsOStream _null_stream_initializer; - -#endif // PUGS_OSTREAM_HPP diff --git a/src/utils/PugsUtils.cpp b/src/utils/PugsUtils.cpp index 4e77863d328b6c448f0db2c5cbf6376e383c125a..9aa20750ee42367f09d131972a7c66a0ac20218d 100644 --- a/src/utils/PugsUtils.cpp +++ b/src/utils/PugsUtils.cpp @@ -1,4 +1,3 @@ -#include <PugsOStream.hpp> #include <PugsUtils.hpp> #include <Kokkos_Core.hpp> @@ -16,32 +15,34 @@ #include <CLI/CLI.hpp> +#include <iostream> + std::string initialize(int& argc, char* argv[]) { parallel::Messenger::create(argc, argv); - pout() << "Pugs version: " << rang::style::bold << RevisionInfo::version() << rang::style::reset << '\n'; + std::cout << "Pugs version: " << rang::style::bold << RevisionInfo::version() << rang::style::reset << '\n'; - pout() << "-------------------- " << rang::fg::green << "git info" << rang::fg::reset << " -------------------------" - << '\n'; - pout() << "tag: " << rang::style::bold << RevisionInfo::gitTag() << rang::style::reset << '\n'; - pout() << "HEAD: " << rang::style::bold << RevisionInfo::gitHead() << rang::style::reset << '\n'; - pout() << "hash: " << rang::style::bold << RevisionInfo::gitHash() << rang::style::reset << " ("; + std::cout << "-------------------- " << rang::fg::green << "git info" << rang::fg::reset + << " -------------------------" << '\n'; + std::cout << "tag: " << rang::style::bold << RevisionInfo::gitTag() << rang::style::reset << '\n'; + std::cout << "HEAD: " << rang::style::bold << RevisionInfo::gitHead() << rang::style::reset << '\n'; + std::cout << "hash: " << rang::style::bold << RevisionInfo::gitHash() << rang::style::reset << " ("; if (RevisionInfo::gitIsClean()) { - pout() << rang::fgB::green << "clean" << rang::fg::reset; + std::cout << rang::fgB::green << "clean" << rang::fg::reset; } else { - pout() << rang::fgB::red << "dirty" << rang::fg::reset; + std::cout << rang::fgB::red << "dirty" << rang::fg::reset; } - pout() << ")\n"; - pout() << "-------------------- " << rang::fg::green << "build info" << rang::fg::reset << " -----------------------" - << '\n'; - pout() << "type: " << rang::style::bold << BuildInfo::type() << rang::style::reset << '\n'; - pout() << "compiler: " << rang::style::bold << BuildInfo::compiler() << rang::style::reset << '\n'; - pout() << "kokkos: " << rang::style::bold << BuildInfo::kokkosDevices() << rang::style::reset << '\n'; - pout() << "mpi: " << rang::style::bold << BuildInfo::mpiLibrary() << rang::style::reset << '\n'; - pout() << "-------------------------------------------------------\n"; + std::cout << ")\n"; + std::cout << "-------------------- " << rang::fg::green << "build info" << rang::fg::reset + << " -----------------------" << '\n'; + std::cout << "type: " << rang::style::bold << BuildInfo::type() << rang::style::reset << '\n'; + std::cout << "compiler: " << rang::style::bold << BuildInfo::compiler() << rang::style::reset << '\n'; + std::cout << "kokkos: " << rang::style::bold << BuildInfo::kokkosDevices() << rang::style::reset << '\n'; + std::cout << "mpi: " << rang::style::bold << BuildInfo::mpiLibrary() << rang::style::reset << '\n'; + std::cout << "-------------------------------------------------------\n"; std::string filename; { @@ -65,13 +66,13 @@ initialize(int& argc, char* argv[]) bool pause_on_error = false; app.add_flag("-p,--pause-on-error", pause_on_error, "Pause for debugging on unexpected error [default: false]"); - std::atexit([]() { pout() << rang::style::reset; }); + std::atexit([]() { std::cout << rang::style::reset; }); try { app.parse(argc, argv); } catch (const CLI::ParseError& e) { parallel::Messenger::destroy(); - std::exit(app.exit(e, pout(), perr())); + std::exit(app.exit(e, std::cout, std::cerr)); } ConsoleManager::init(enable_color); @@ -81,13 +82,13 @@ initialize(int& argc, char* argv[]) } Kokkos::initialize(argc, argv); - pout() << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset << " ------------------------" - << '\n'; + std::cout << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset + << " ------------------------" << '\n'; - pout() << rang::style::bold; - Kokkos::DefaultExecutionSpace::print_configuration(pout()); - pout() << rang::style::reset; - pout() << "-------------------------------------------------------\n"; + std::cout << rang::style::bold; + Kokkos::DefaultExecutionSpace::print_configuration(std::cout); + std::cout << rang::style::reset; + std::cout << "-------------------------------------------------------\n"; return filename; } diff --git a/src/utils/SignalManager.cpp b/src/utils/SignalManager.cpp index 4fc37443a27326fe7a0725f1df9ea6c501ad2fee..c9cf877dc8b1273ffab68638602652555af4f758 100644 --- a/src/utils/SignalManager.cpp +++ b/src/utils/SignalManager.cpp @@ -1,7 +1,6 @@ #include <SignalManager.hpp> #include <PugsAssert.hpp> -#include <PugsOStream.hpp> #include <BacktraceManager.hpp> #include <ConsoleManager.hpp> @@ -14,6 +13,8 @@ #include <Messenger.hpp> +#include <iostream> + bool SignalManager::s_pause_on_error = false; void @@ -68,6 +69,9 @@ SignalManager::handler(int signal) std::signal(SIGINT, SIG_DFL); std::signal(SIGABRT, SIG_DFL); + // Each failing process must write + std::cerr.setstate(std::ios::goodbit); + BacktraceManager bm; std::cerr << bm << '\n'; @@ -101,10 +105,10 @@ SignalManager::init(const bool& enable) std::signal(SIGABRT, SignalManager::handler); std::signal(SIGPIPE, SignalManager::handler); - pout() << "Signal management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset - << rang::style::reset << '\n'; + std::cout << "Signal management: " << rang::style::bold << rang::fgB::green << "enabled" << rang::fg::reset + << rang::style::reset << '\n'; } else { - pout() << "Signal management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset - << rang::style::reset << '\n'; + std::cout << "Signal management: " << rang::style::bold << rang::fgB::red << "disabled" << rang::fg::reset + << rang::style::reset << '\n'; } }