Loading...
Searching...
No Matches
DynamicsJob.cpp
Go to the documentation of this file.
1/*
2** This file is part of eOn.
3**
4** SPDX-License-Identifier: BSD-3-Clause
5**
6** Copyright (c) 2010--present, eOn Development Team
7** All rights reserved.
8**
9** Repo:
10** https://github.com/TheochemUI/eOn
11*/
12#include <stdexcept>
13#include <string>
14
15#include "eon/BaseStructures.h"
16#include "eon/Dynamics.h"
17#include "eon/DynamicsJob.h"
18#include "eon/EonLogger.h"
19#include "eon/HelperFunctions.h"
20#include "eon/JobResult.h"
21#include "eon/Parameters.h"
22#include "eon/PotRegistry.h"
23#include "eon/Potential.h"
24
25namespace eonc {
26
27std::vector<std::string> DynamicsJob::run(void) {
28 auto R = std::make_shared<Matter>(pot, params);
29 const std::string posFile = eonc::helpers::getRelevantFile("pos.con");
30 if (!eonc::io::io_ok(R->con2matter(posFile))) {
31 EONC_LOG_CRITICAL("Failed to load {}", posFile);
32 throw std::runtime_error("failed to load " + posFile);
33 }
34
35 auto d = std::make_unique<Dynamics>(R.get(), params);
36 d->run();
37
38 std::string productFilename("final.con");
39 if (!eonc::io::io_ok(R->matter2con(productFilename))) {
40 EONC_LOG_ERROR("Failed to write {}", productFilename);
41 }
42
43 const std::string resultsFilename("results.dat");
45 RunStatus::GOOD, params.potential_options().potential,
46 PotRegistry::get().total_force_calls(), true, R->getPotentialEnergy());
47 env.job_type = "dynamics";
48 env.writeResultsDat(resultsFilename);
49
50 std::vector<std::string> returnFiles;
51 returnFiles.push_back(productFilename);
52 returnFiles.push_back(resultsFilename);
53 return returnFiles;
54}
55
56} // namespace eonc
#define EONC_LOG_ERROR(...)
Definition EonLogger.h:261
#define EONC_LOG_CRITICAL(...)
Definition EonLogger.h:267
std::vector< std::string > run(void) override
Virtual run; used solely for dynamic dispatch.
std::shared_ptr< Potential > pot
Definition Job.h:63
Parameters params
Definition Job.h:58
static PotRegistry & get() noexcept
Process-lifetime singleton.
std::string getRelevantFile(std::string filename)
constexpr bool io_ok(IoStatus s) noexcept
Definition ConFileIO.h:38
RAII resource manager for the ARTn C library with global synchronization.
static JobResultEnvelope fromMinimization(RunStatus status, PotType pot, std::uint64_t fcalls, bool hasE, double energy)
Definition JobResult.h:101