1 #define CATCH_CONFIG_RUNNER 
    3 #include <purify/config.h> 
    9 #include <catch2/catch_all.hpp> 
   11 #include <sopt/logging.h> 
   12 #include <sopt/mpi/session.h> 
   14 std::unique_ptr<std::mt19937_64> 
mersenne(
new std::mt19937_64(0));
 
   16 int main(
int argc, 
const char **argv) {
 
   17   Catch::Session session;  
 
   19   auto const mpi_session = sopt::mpi::init(argc, argv);
 
   23   std::vector<std::string> arguments(argv, argv + argc);
 
   24   auto output_opt = std::find_if(arguments.begin(), arguments.end(), [](std::string 
const &arg) {
 
   25     if (arg == 
"-o" or arg == 
"--out") return true;
 
   26     auto const N = std::string(
"--out=").size();
 
   27     return arg.size() > N and arg.substr(0, N) == 
"--out=";
 
   29   if (output_opt != arguments.end()) {
 
   30     if (*output_opt == 
"-o" or *output_opt == 
"--out") output_opt += 1;
 
   31     if (output_opt != arguments.end()) {
 
   33       MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
   36             std::regex_replace(*output_opt, std::regex(
"\\.xml"), std::to_string(rank) + 
".xml");
 
   41   std::vector<char const *> cargs(arguments.size());
 
   42   std::transform(arguments.begin(), arguments.end(), cargs.begin(),
 
   43                  [](std::string 
const &
c) { return c.c_str(); });
 
   45   int returnCode = session.applyCommandLine(cargs.size(), 
const_cast<char **
>(cargs.data()));
 
   48   mersenne.reset(
new std::mt19937_64(session.configData().rngSeed));
 
   50   auto const result = session.run();
 
int main(int argc, const char **argv)
 
std::unique_ptr< std::mt19937_64 > mersenne(new std::mt19937_64(0))
 
const t_real c
speed of light in vacuum