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 : rank(ParallelContext::IOProcessorNumberSub())
46 , comm(ParallelContext::CommunicatorSub())
48 { ss.precision(os.precision()); }
56 , comm(ParallelContext::CommunicatorSub())
58 { ss.precision(os.precision()); }
68 { ss.precision(os.precision()); }
101 (*func)(std::basic_ostream<
char, std::char_traits<char> >&))
111 std::ostringstream ss;
134 : file_name(std::move(file_name_))
135 , rank(ParallelContext::IOProcessorNumberSub())
136 , comm(ParallelContext::CommunicatorSub())
140 : file_name(std::move(file_name_))
142 , comm(ParallelContext::CommunicatorSub())
146 : file_name(std::move(file_name_))
169 template <
typename T>
176 (*func)(std::basic_ostream<
char, std::char_traits<char> >&))
186 if (rank ==
AllProcs || rank == my_proc) {
188 std::string proc_file_name = file_name +
"." + std::to_string(my_proc_global);
190 proc_file_name +=
"." + std::to_string(omp_get_thread_num());
192 ofs.open(proc_file_name, std::ios_base::app);
193 if (!ofs.is_open()) {
194 amrex::Error(
"Could not open file for appending in amrex::Print()");
196 ss.precision(ofs.precision());
200 std::string file_name;
204 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:210
AllPrintToFile(std::string file_name_)
Example: AllPrint() << " x = " << x << ' ';.
Definition AMReX_Print.H:213
Print on all processors of the default communicator.
Definition AMReX_Print.H:117
AllPrint(std::ostream &os_=amrex::OutStream())
Example: AllPrint() << " x = " << x << ' ';.
Definition AMReX_Print.H:120
This class prints to a file with a given base name.
Definition AMReX_Print.H:128
static constexpr int AllProcs
Definition AMReX_Print.H:131
PrintToFile(std::string file_name_, int rank_)
Definition AMReX_Print.H:139
PrintToFile & operator=(PrintToFile const &)=delete
PrintToFile(std::string file_name_, int rank_, MPI_Comm comm_)
Definition AMReX_Print.H:145
PrintToFile(std::string file_name_)
Definition AMReX_Print.H:133
PrintToFile(PrintToFile const &)=delete
PrintToFile & operator<<(const T &x)
Definition AMReX_Print.H:170
PrintToFile(PrintToFile &&)=delete
~PrintToFile()
Definition AMReX_Print.H:151
PrintToFile & SetPrecision(int p)
Definition AMReX_Print.H:164
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:95
Print & operator=(Print const &)=delete
Print(Print const &)=delete
~Print()
Definition AMReX_Print.H:70
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:64
Print & SetPrecision(int p)
Definition AMReX_Print.H:89
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:54
std::array< T, N > Array
Definition AMReX_Array.H:26
int MyProc() noexcept
Definition AMReX_ParallelDescriptor.H:128
int MyProcSub() noexcept
my sub-rank in current frame
Definition AMReX_ParallelContext.H:76
std::ofstream * OFSPtrSub() noexcept
Pointer to ofstream.
Definition AMReX_ParallelContext.H:82
int MPI_Comm
Definition AMReX_ccse-mpi.H:51
Definition AMReX_Amr.cpp:49
void Error(const std::string &msg)
Print out message to cerr and exit via amrex::Abort().
Definition AMReX.cpp:224
std::ostream & OutStream()
Definition AMReX.cpp:925
std::ostream & operator<<(std::ostream &os, AmrMesh const &amr_mesh)
Definition AMReX_AmrMesh.cpp:1237