Loading...
Searching...
No Matches
GlobalOptimizationJob.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 "EonLogger.h"
14#include "Job.h"
15#include "Matter.h"
16#include "Parameters.h"
17
18#include <fstream>
19#include <memory>
20
21namespace eonc {
22
23class GlobalOptimizationJob : public Job {
24public:
25 GlobalOptimizationJob(std::unique_ptr<Parameters> parameters)
26 : Job(std::move(parameters)),
27 nlmin{0},
28 ediff{1.E-1},
29 ekin{5.E-2},
30 beta1{params.global_optimization_options.beta},
31 beta2{params.global_optimization_options.beta},
32 beta3{1. / params.global_optimization_options.beta},
33 alpha1{1. / params.global_optimization_options.alpha},
34 alpha2{params.global_optimization_options.alpha},
35 mdmin{params.global_optimization_options.mdmin},
36 fcallsMove{0},
37 firstStep{true},
38 fcallsRelax{0},
39 monfile{"monitoring.dat"},
40 earrfile{"earr.dat"} {}
41 ~GlobalOptimizationJob(void) = default;
42 void hoppingStep(long, Matter &, Matter &);
43 void decisionStep(Matter &, Matter &);
44 void report(Matter &);
47 void analyze(Matter &, Matter &);
48 void examineEscape(Matter &, Matter &);
49 void applyMoveFeedbackMD(void);
50 void applyDecisionFeedback(void);
51 void mdescape(Matter &);
52 void randomMove(Matter &);
53 void insert(Matter &);
54 size_t hunt(double);
55 void velopt(Matter &);
56 std::vector<std::string> run(void);
57 double beta1;
58 double beta2;
59 double beta3;
60 double alpha1;
61 double alpha2;
62 long mdmin;
63
64private:
65 size_t nlmin;
68 double ediff;
69 double ekin;
71 std::vector<double> earr;
72 std::string escapeResult;
73 // std::string moveFeedbackMethod;
74 // std::string decisionMethod;
75 std::string decisionResult;
76 std::string hoppingResult;
77 std::ofstream monfile;
78 std::ofstream earrfile;
80};
81
82} // namespace eonc
83
The job class is used to serve as an abstract class for all jobs, as well as to call a job at runtime...
void analyze(Matter &, Matter &)
std::vector< std::string > run(void)
Virtual run; used solely for dynamic dispatch.
GlobalOptimizationJob(std::unique_ptr< Parameters > parameters)
void decisionStep(Matter &, Matter &)
void examineEscape(Matter &, Matter &)
void hoppingStep(long, Matter &, Matter &)
void acceptRejectNPEW(Matter &, Matter &)
void acceptRejectBoltzmann(Matter &, Matter &)
~GlobalOptimizationJob(void)=default
Job(std::unique_ptr< Parameters > parameters)
Definition Job.h:58
Parameters params
Definition Job.h:54
RAII resource manager for the ARTn C library with global synchronization.
RAII helper for class-scoped logging.
Definition EonLogger.h:171