3#include <AMReX_Config.H>
26 template <
typename T,
typename S>
27 std::ostream&
operator<<(std::ostream& os,
const std::pair<T, S>& v)
29 os <<
"(" << v.first <<
", " << v.second <<
")";
45 : to_print(ParallelContext::IOProcessorSub())
47 { ss.precision(os.precision()); }
54 : to_print(rank_ ==
AllProcs || rank_ == ParallelContext::MyProcSub())
56 { ss.precision(os.precision()); }
67 rank_ == ParallelDescriptor::MyProc(comm_)))
70 ss.precision(os.precision());
98 (*func)(std::basic_ostream<
char, std::char_traits<char> >&))
107 std::ostringstream ss;
130 : file_name(std::move(file_name_))
131 , to_print(ParallelContext::IOProcessorSub())
135 : file_name(std::move(file_name_))
136 , to_print(rank_ ==
AllProcs || rank_ == ParallelContext::MyProcSub())
140 : file_name(std::move(file_name_))
145 rank_ == ParallelDescriptor::MyProc(comm_)))
166 template <
typename T>
173 (*func)(std::basic_ostream<
char, std::char_traits<char> >&))
184 std::string proc_file_name = file_name +
"." + std::to_string(my_proc_global);
186 proc_file_name +=
"." + std::to_string(omp_get_thread_num());
188 ofs.open(proc_file_name, std::ios_base::app);
189 if (!ofs.is_open()) {
190 amrex::Error(
"Could not open file for appending in amrex::Print()");
192 ss.precision(ofs.precision());
196 std::string file_name;
199 std::ostringstream ss;
#define AMREX_D_TERM(a, b, c)
Definition AMReX_SPACE.H:172
Print on all processors of the default communicator.
Definition AMReX_Print.H:205
AllPrintToFile(std::string file_name_)
Example: AllPrint() << " x = " << x << ' ';.
Definition AMReX_Print.H:208
Print on all processors of the default communicator.
Definition AMReX_Print.H:113
AllPrint(std::ostream &os_=amrex::OutStream())
Example: AllPrint() << " x = " << x << ' ';.
Definition AMReX_Print.H:116
This class prints to a file with a given base name.
Definition AMReX_Print.H:124
static constexpr int AllProcs
Definition AMReX_Print.H:127
PrintToFile(std::string file_name_, int rank_)
Definition AMReX_Print.H:134
PrintToFile & operator=(PrintToFile const &)=delete
PrintToFile(std::string file_name_, int rank_, MPI_Comm comm_)
Definition AMReX_Print.H:139
PrintToFile(std::string file_name_)
Definition AMReX_Print.H:129
PrintToFile(PrintToFile const &)=delete
PrintToFile & operator<<(const T &x)
Definition AMReX_Print.H:167
PrintToFile(PrintToFile &&)=delete
~PrintToFile()
Definition AMReX_Print.H:148
PrintToFile & SetPrecision(int p)
Definition AMReX_Print.H:161
This class provides the user with a few print options.
Definition AMReX_Print.H:35
Print(std::ostream &os_=amrex::OutStream())
Print on I/O Processor of the default communicator Example: Print() << " x = " << x << ' ';.
Definition AMReX_Print.H:44
Print & operator<<(const T &x)
Definition AMReX_Print.H:92
Print & operator=(Print const &)=delete
Print(Print const &)=delete
~Print()
Definition AMReX_Print.H:73
Print(int rank_, MPI_Comm comm_, std::ostream &os_=amrex::OutStream())
Print on process rank_ of communicator comm_ Example: Print(rank_, comm_) << " x = " << x << ' ';.
Definition AMReX_Print.H:62
Print & SetPrecision(int p)
Definition AMReX_Print.H:86
static constexpr int AllProcs
Definition AMReX_Print.H:38
Print(int rank_, std::ostream &os_=amrex::OutStream())
Print on given rank of the default communicator Example: Print(2) << " x = " << x << ' '; // Print on...
Definition AMReX_Print.H:53
std::array< T, N > Array
Definition AMReX_Array.H:26
int MyProc() noexcept
Definition AMReX_ParallelDescriptor.H:128
int MPI_Comm
Definition AMReX_ccse-mpi.H:51
static constexpr int MPI_COMM_NULL
Definition AMReX_ccse-mpi.H:59
Definition AMReX_Amr.cpp:49
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Stream helper; forwards to the friend declared inside AmrMesh.
Definition AMReX_AmrMesh.cpp:1238
void Error(const std::string &msg)
Print out message to cerr and exit via amrex::Abort().
Definition AMReX.cpp:234
std::ostream & OutStream()
Definition AMReX.cpp:956