mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 13:45:36 -04:00
Add implementation of write_message and fatal_error in error.cpp
This commit is contained in:
parent
b178a66e7f
commit
102aa934ae
3 changed files with 64 additions and 65 deletions
|
|
@ -1,11 +1,13 @@
|
|||
#include "openmc/error.h"
|
||||
|
||||
#include "openmc/message_passing.h"
|
||||
#include "openmc/settings.h"
|
||||
|
||||
#if defined(__unix__) || defined(__unix) || (defined(__APPLE__) && defined(__MACH__))
|
||||
#include <unistd.h> // for isatty
|
||||
#endif
|
||||
|
||||
#include <cstdlib> // for exit
|
||||
#include <iomanip> // for setw
|
||||
#include <iostream>
|
||||
|
||||
|
|
@ -18,21 +20,10 @@ void abort_mpi(int code)
|
|||
}
|
||||
#endif
|
||||
|
||||
void warning(const std::string& message)
|
||||
void output(const std::string& message, std::ostream& out, int indent)
|
||||
{
|
||||
#ifdef _POSIX_VERSION
|
||||
// Make output yellow if user is in a terminal
|
||||
if (isatty(STDERR_FILENO)) {
|
||||
std::cerr << "\033[0;33m";
|
||||
}
|
||||
#endif
|
||||
|
||||
// Write warning at beginning
|
||||
std::cerr << " WARNING: ";
|
||||
|
||||
// Set line wrapping and indentation
|
||||
int line_wrap = 80;
|
||||
int indent = 10;
|
||||
|
||||
// Determine length of message
|
||||
int length = message.size();
|
||||
|
|
@ -57,6 +48,20 @@ void warning(const std::string& message)
|
|||
i_start += (pos == std::string::npos) ? line_len : pos + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void warning(const std::string& message)
|
||||
{
|
||||
#ifdef _POSIX_VERSION
|
||||
// Make output yellow if user is in a terminal
|
||||
if (isatty(STDERR_FILENO)) {
|
||||
std::cerr << "\033[0;33m";
|
||||
}
|
||||
#endif
|
||||
|
||||
// Write warning
|
||||
std::cerr << " WARNING: ";
|
||||
output(message, std::cerr, 10);
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
// Reset color for terminal
|
||||
|
|
@ -66,4 +71,43 @@ void warning(const std::string& message)
|
|||
#endif
|
||||
}
|
||||
|
||||
void write_message(const std::string& message, int level)
|
||||
{
|
||||
// Only allow master to print to screen
|
||||
if (!mpi::master) return;
|
||||
|
||||
if (level <= settings::verbosity) {
|
||||
std::cout << " ";
|
||||
output(message, std::cout, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void fatal_error(const std::string& message, int err)
|
||||
{
|
||||
#ifdef _POSIX_VERSION
|
||||
// Make output red if user is in a terminal
|
||||
if (isatty(STDERR_FILENO)) {
|
||||
std::cerr << "\033[0;31m";
|
||||
}
|
||||
#endif
|
||||
|
||||
// Write error message
|
||||
std::cerr << " ERROR: ";
|
||||
output(message, std::cerr, 8);
|
||||
|
||||
#ifdef _POSIX_VERSION
|
||||
// Reset color for terminal
|
||||
if (isatty(STDERR_FILENO)) {
|
||||
std::cerr << "\033[0m";
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPENMC_MPI
|
||||
MPI_Abort(mpi::intracomm, err);
|
||||
#endif
|
||||
|
||||
// Abort the program
|
||||
std::exit(err);
|
||||
}
|
||||
|
||||
} // namespace openmc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue