15 RGPotEngineOptions opt;
45
46
47 if (const char *e = std::getenv("RGPOT_BACKEND"))
49 if (const char *e = std::getenv("RGPOT_NWCHEM_BASIS"))
51 if (const char *e = std::getenv("RGPOT_NWCHEM_THEORY"))
53 if (const char *e = std::getenv("RGPOT_NWCHEM_SCF_TYPE"))
55
56
57 std::string backend_lc = opt.
backend;
58 std::transform(backend_lc.begin(), backend_lc.end(), backend_lc.begin(),
59 [](unsigned char c) { return std::tolower(c); });
60 if (backend_lc.rfind("nwchem", 0) == 0) {
61 if (const char *e = std::getenv("NWCHEMC_LIBRARY"))
63 else if (const char *e = std::getenv("RGPOT_NWCHEMC_ENGINE"))
65 } else if (backend_lc.rfind("cpmd", 0) == 0) {
66 if (const char *e = std::getenv("CPMDC_LIBRARY"))
68 else if (const char *e = std::getenv("RGPOT_CPMDC_ENGINE"))
70 } else if (backend_lc.rfind("meta", 0) == 0 || backend_lc == "mta") {
71 if (const char *e = std::getenv("RGPOT_METATOMIC_ENGINE"))
73 else if (const char *e = std::getenv("METATOMIC_ENGINE"))
75 if (const char *e = std::getenv("RGPOT_METATOMIC_MODEL"))
77 } else if (backend_lc == "xtb" || backend_lc == "xtbpot" ||
78 backend_lc == "gfn" || backend_lc == "gfnxtb") {
79 if (const char *e = std::getenv("RGPOT_XTB_ENGINE"))
81 else if (const char *e = std::getenv("XTB_ENGINE"))
86 }
87 }
88
89
90 if ((backend_lc.rfind("meta", 0) == 0 || backend_lc == "mta") &&
93 if ((backend_lc.rfind("meta", 0) == 0 || backend_lc == "mta") &&
96
97 impl_ = std::make_unique<RGPotEngine>(opt);
99 std::cout
100 <<
"RgpotPot: in-process rgpot backend=" <<
backend_
101 << " (dlopen: libnwchemc/libcpmdc/libmetatomic_engine/libxtb_engine)"
102 << std::endl;
103}
std::unique_ptr< RGPotEngine > impl_
struct eonc::Parameters::xtb_options_t xtb_options
struct eonc::Parameters::rgpot_options_t rgpot_options
struct eonc::Parameters::metatomic_options_t metatomic_options
Potential(PotType a_ptype)
std::string extensions_directory
std::string engine_library
double xtb_electronic_temperature
bool torch_determinism_strict
double uncertainty_threshold