Loading...
Searching...
No Matches
HessianJob Class Reference

#include <HessianJob.h>

Inheritance diagram for HessianJob:

Public Member Functions

 HessianJob (std::unique_ptr< Parameters > parameters)
 ~HessianJob (void)=default
std::vector< std::string > run (void)
 Virtual run; used solely for dynamic dispatch.
Public Member Functions inherited from eonc::Job
 Job (std::unique_ptr< Parameters > parameters)
 Job (std::shared_ptr< Potential > potPassed, const Parameters &parameters)
virtual ~Job ()=default
JobType getType ()

Additional Inherited Members

Protected Attributes inherited from eonc::Job
JobType jtype
Parameters params
std::shared_ptr< Potentialpot

Detailed Description

Definition at line 18 of file HessianJob.h.

Constructor & Destructor Documentation

◆ HessianJob()

eonc::HessianJob::HessianJob ( std::unique_ptr< Parameters > parameters)
inline

Definition at line 20 of file HessianJob.h.

21 : Job(std::move(parameters)) {}
Job(std::unique_ptr< Parameters > parameters)
Definition Job.h:58

◆ ~HessianJob()

Member Function Documentation

◆ run()

std::vector< std::string > HessianJob::run ( void )
virtual

Virtual run; used solely for dynamic dispatch.

Implements eonc::Job.

Definition at line 28 of file HessianJob.cpp.

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
35 if (!eonc::io::io_ok(matter->con2matter(matter_in))) {
36 EONC_LOG_CRITICAL("Failed to load {}", matter_in);
37 throw std::runtime_error("failed to load " + matter_in);
38 }
39
40 Hessian hessian(params, matter.get());
41
42 // [Hessian] phva_atoms = PHVA mobile/active set (displaced in FD). free/fixed
43 // is the optimizer mask; resolveMobileAtoms intersects the list with free.
44 const VectorXi mobile =
45 eonc::resolveMobileAtoms(matter.get(), params.hessian_options.phva_atoms);
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",
63 PotRegistry::get().total_force_calls());
64 out << std::format("{} total_force_calls\n",
65 PotRegistry::get().total_force_calls());
66 }
67 if (std::filesystem::exists("hessian.dat")) {
68 returnFiles.push_back("hessian.dat");
69 }
70
71 return returnFiles;
72}
#define EONC_LOG_CRITICAL(...)
Definition EonLogger.h:268
std::shared_ptr< Potential > pot
Definition Job.h:55
Parameters params
Definition Job.h:54
static PotRegistry & get() noexcept
Process-lifetime singleton.
constexpr bool io_ok(IoStatus s) noexcept
Definition ConFileIO.h:38
VectorXi resolveMobileAtoms(const Matter *matter, const std::string &atomList)
PHVA-class mobile set for FD Hessian and matrix-free Krylov (Lanczos / Davidson).

The documentation for this class was generated from the following files: