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