Loading...
Searching...
No Matches
Job.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 "eon/Job.h"
13#include "eon/BasinHoppingJob.h"
14#include "eon/DynamicsJob.h"
17#include "eon/HessianJob.h"
18#include "eon/MinimizationJob.h"
19#include "eon/MonteCarloJob.h"
21#include "eon/OHTSTJob.h"
23#include "eon/Parameters.h"
24#include "eon/PointJob.h"
25#include "eon/PrefactorJob.h"
28#include "eon/SaddleSearchJob.h"
29#include "eon/SafeHyperJob.h"
31#include "eon/TADJob.h"
32#include "eon/TestJob.h"
33
34#ifdef WITH_GP_SURROGATE
35#include "eon/GPSurrogateJob.h"
36#endif
37
38namespace eonc::helpers {
39std::unique_ptr<Job> makeJob(std::unique_ptr<Parameters> params) {
40 switch (params->main_options.job) {
41 using enum JobType;
42 case Process_Search: {
43 return (std::make_unique<ProcessSearchJob>(std::move(params)));
44 break;
45 }
46 case Saddle_Search: {
47 return (std::make_unique<SaddleSearchJob>(std::move(params)));
48 break;
49 }
50 case Minimization: {
51 return (std::make_unique<MinimizationJob>(std::move(params)));
52 break;
53 }
54 case Point: {
55 return (std::make_unique<PointJob>(std::move(params)));
56 break;
57 }
58 case Parallel_Replica: {
59 return (std::make_unique<ParallelReplicaJob>(std::move(params)));
60 break;
61 }
62 case Safe_Hyperdynamics: {
63 return (std::make_unique<SafeHyperJob>(std::move(params)));
64 break;
65 }
66 case TAD: {
67 return (std::make_unique<TADJob>(std::move(params)));
68 break;
69 }
70 case Replica_Exchange: {
71 return (std::make_unique<ReplicaExchangeJob>(std::move(params)));
72 break;
73 }
74 case Basin_Hopping: {
75 return (std::make_unique<BasinHoppingJob>(std::move(params)));
76 break;
77 }
78 case Hessian: {
79 return (std::make_unique<HessianJob>(std::move(params)));
80 break;
81 }
82 case Finite_Difference: {
83 return (std::make_unique<FiniteDifferenceJob>(std::move(params)));
84 break;
85 }
87 return (std::make_unique<NudgedElasticBandJob>(std::move(params)));
88 break;
89 }
90 case Dynamics: {
91 return (std::make_unique<DynamicsJob>(std::move(params)));
92 break;
93 }
94 case Prefactor: {
95 return (std::make_unique<PrefactorJob>(std::move(params)));
96 break;
97 }
99 return (std::make_unique<GlobalOptimizationJob>(std::move(params)));
100 break;
101 }
103 return (std::make_unique<StructureComparisonJob>(std::move(params)));
104 break;
105 }
106 case Monte_Carlo: {
107 return (std::make_unique<MonteCarloJob>(std::move(params)));
108 break;
109 }
110#ifdef WITH_GP_SURROGATE
111 case GP_Surrogate: {
112 return (std::make_unique<GPSurrogateJob>(std::move(params)));
113 break;
114 }
115#endif
116 case OH_TST: {
117 return (std::make_unique<OHTSTJob>(std::move(params)));
118 }
119 default:
120 throw std::runtime_error("No known job could be constructed");
121 break;
122 }
123}
124
125} // namespace eonc::helpers
The job class is used to serve as an abstract class for all jobs, as well as to call a job at runtime...
Optimized hyperplanar transition state theory (OH-TST).
Finds possible escape mecahnisms from a state.
Finds transition states by finding saddle points on the potential energy surface.
std::unique_ptr< Job > makeJob(std::unique_ptr< Parameters > params)
Definition Job.cpp:39