Virtual run; used solely for dynamic dispatch.
28 {
29 std::string matter_in("pos.con");
30
31 std::vector<std::string> returnFiles;
32
33 auto matter = std::make_unique<Matter>(
pot,
params);
34
37 throw std::runtime_error("failed to load " + matter_in);
38 }
39
41
42
43
44 const VectorXi mobile =
46 const bool no_mobile = mobile.size() == 0;
47 if (!no_mobile) {
48 hessian.getFreqs(matter.get(), mobile);
49 }
50
51 std::string results_file("results.dat");
52 returnFiles.push_back(results_file);
53
54 std::ofstream out(results_file, std::ios::binary);
55 if (out) {
56 const auto status =
58 out << std::format("{} termination_reason\n", static_cast<int>(status));
59 out << std::format("{} termination_reason_text\n",
60 magic_enum::enum_name<RunStatus>(status));
61 out << "hessian job_type\n";
62 out << std::format("{} force_calls\n",
64 out << std::format("{} total_force_calls\n",
66 }
67 if (std::filesystem::exists("hessian.dat")) {
68 returnFiles.push_back("hessian.dat");
69 }
70
71 return returnFiles;
72}
#define EONC_LOG_CRITICAL(...)
std::shared_ptr< Potential > pot
static PotRegistry & get() noexcept
Process-lifetime singleton.
constexpr bool io_ok(IoStatus s) noexcept
VectorXi resolveMobileAtoms(const Matter *matter, const std::string &atomList)
PHVA-class mobile set for FD Hessian and matrix-free Krylov (Lanczos / Davidson).