eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
Job.h
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
#pragma once
13
#include "
Parameters.h
"
14
#include "
Potential.h
"
15
#include "
Runtime.h
"
16
#include <memory>
17
#include <stdexcept>
18
#include <string>
19
#include <utility>
20
#include <vector>
21
22
namespace
eonc
{
23
33
48
52
53
class
Job
{
54
private
:
55
protected
:
56
// make const
57
JobType
jtype
;
58
Parameters
params
;
60
std::unique_ptr<Runtime>
owned_runtime_
;
62
Runtime
*
runtime_
;
63
std::shared_ptr<Potential>
pot
;
64
65
public
:
67
void
adoptRuntime
(std::unique_ptr<Runtime> rt) {
68
if
(!rt ||
runtime_
!= rt.get()) {
69
throw
std::logic_error(
70
"Job::adoptRuntime: Runtime is not the borrowed instance"
);
71
}
72
owned_runtime_
= std::move(rt);
73
}
74
76
Job
(std::unique_ptr<Parameters> parameters,
Runtime
&rt)
77
:
jtype
{parameters->main_options().job},
78
params
{*std::move(parameters)},
79
owned_runtime_
{},
80
runtime_
{&rt},
81
pot
{
helpers
::makePotential(
params
.potential_options().potential,
params
,
82
rt)} {}
83
84
Job
(std::unique_ptr<Parameters> parameters, std::unique_ptr<Runtime> rt)
85
:
Job
(std::move(parameters), *rt) {
86
adoptRuntime
(std::move(rt));
87
}
88
89
explicit
Job
(std::unique_ptr<Parameters> parameters)
90
:
Job
(std::move(parameters), std::make_unique<
Runtime
>()) {}
91
Job
(std::shared_ptr<Potential> potPassed,
const
Parameters
¶meters)
92
:
jtype
{parameters.main_options().job},
93
params
{parameters},
94
owned_runtime_
{std::make_unique<
Runtime
>()},
95
runtime_
{
owned_runtime_
.get()},
96
pot
{potPassed} {}
97
virtual
~Job
() =
default
;
99
virtual
std::vector<std::string>
run
() = 0;
100
[[nodiscard]]
JobType
getType
() {
return
this->jtype; };
101
[[nodiscard]]
PotRegistry
&
pots
() noexcept {
return
runtime_
->pots(); }
103
void
releasePotential
() {
pot
.reset(); }
104
};
105
106
namespace
helpers
{
108
std::unique_ptr<Job>
makeJob
(std::unique_ptr<Parameters> params);
110
std::unique_ptr<Job>
makeJob
(std::unique_ptr<Parameters> params,
111
Runtime &runtime);
113
std::unique_ptr<Job>
makeJob
(std::unique_ptr<Parameters> params,
114
Runtime &&runtime);
116
std::unique_ptr<Job>
makeJob
(std::unique_ptr<Parameters> params,
117
std::unique_ptr<Runtime> runtime);
118
}
// namespace helpers
119
120
}
// namespace eonc
Parameters.h
Potential.h
Runtime.h
eonc::Job::pots
PotRegistry & pots() noexcept
Definition
Job.h:101
eonc::Job::Job
Job(std::unique_ptr< Parameters > parameters, Runtime &rt)
Borrow: caller keeps Runtime alive (CLI stack / Python Session).
Definition
Job.h:76
eonc::Job::adoptRuntime
void adoptRuntime(std::unique_ptr< Runtime > rt)
Take ownership of a Runtime previously passed as Runtime&.
Definition
Job.h:67
eonc::Job::Job
Job(std::unique_ptr< Parameters > parameters, std::unique_ptr< Runtime > rt)
Own a Runtime (one-shot makeJob / rvalue).
Definition
Job.h:84
eonc::Job::~Job
virtual ~Job()=default
eonc::Job::Job
Job(std::unique_ptr< Parameters > parameters)
Own a default-constructed Runtime.
Definition
Job.h:89
eonc::Job::getType
JobType getType()
Definition
Job.h:100
eonc::Job::owned_runtime_
std::unique_ptr< Runtime > owned_runtime_
Non-null when this Job owns the composition root (one-shot makeJob).
Definition
Job.h:60
eonc::Job::Job
Job(std::shared_ptr< Potential > potPassed, const Parameters ¶meters)
Definition
Job.h:91
eonc::Job::jtype
JobType jtype
Definition
Job.h:57
eonc::Job::pot
std::shared_ptr< Potential > pot
Definition
Job.h:63
eonc::Job::params
Parameters params
Definition
Job.h:58
eonc::Job::run
virtual std::vector< std::string > run()=0
Virtual run; used solely for dynamic dispatch.
eonc::Job::releasePotential
void releasePotential()
Drop the Potential so on_destroyed is recorded before Runtime dies.
Definition
Job.h:103
eonc::Job::runtime_
Runtime * runtime_
Always valid: either owned_runtime_.get() or a caller-owned Runtime.
Definition
Job.h:62
eonc::Parameters
Definition
Parameters.h:35
eonc::PotRegistry
Definition
PotRegistry.h:45
eonc::Runtime
Move-only composition root for process resources (dlopen loaders and the potential registry).
Definition
Runtime.h:27
eonc::helpers::makeJob
std::unique_ptr< Job > makeJob(std::unique_ptr< Parameters > params, Runtime &runtime)
Borrow: caller keeps Runtime alive.
Definition
JobRegistry.cpp:43
eonc
RAII resource manager for the ARTn C library with global synchronization.
Definition
ARTnSaddleSearch.cpp:23
eonc::JobType
JobType
Definition
BaseStructures.h:77
helpers
Definition
Create.hpp:19
include
eon
Job.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf