eOn client
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
AMS.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
14
#include "
eon/Matter.h
"
15
#include "
eon/Potential.h
"
16
17
#include <absl/strings/numbers.h>
18
#include <absl/strings/str_cat.h>
19
#include <absl/strings/str_join.h>
20
#include <absl/strings/str_split.h>
21
#include <absl/strings/string_view.h>
22
#include <boost/asio.hpp>
23
#include <boost/process.hpp>
24
#include <boost/process/environment.hpp>
25
26
#include <algorithm>
27
#include <filesystem>
28
#include <format>
29
#include <fstream>
30
#include <string>
31
#include <vector>
32
33
class
AMS
:
public
Potential
{
34
35
public
:
36
AMS
(
const
Parameters
&p);
37
~AMS
();
38
void
initialize
() {};
39
void
cleanMemory
(
void
);
40
void
force
(
long
N,
const
double
*R,
const
int
*atomicNrs,
double
*F,
41
double
*U,
double
*variance,
const
double
*box);
42
43
private
:
45
void
passToSystem
(
long
N,
const
double
*R,
const
int
*atomicNrs,
46
const
double
*box);
47
void
smallSys
(
long
N,
const
double
*R,
const
int
*atomicNrs,
48
const
double
*box);
50
void
finishRunScript
(std::ofstream &out);
52
void
copyForces
(
long
N,
const
std::vector<double> &frc,
double
*F);
53
// Switch between jobs
54
void
switchjob
();
55
// Write restart files
56
void
write_restart
();
57
std::string
engine
,
forcefield
,
model
,
xc
,
resources
,
basis
;
58
std::string
engine_setup
,
engine_lower
;
59
// Generate run configuration
60
std::string
generate_run
(
const
Parameters
&p);
61
// Environment
62
boost::process::native_environment
nativenv
;
63
int
amsevals
{0};
64
bool
first_run
,
can_restart
;
65
std::string
cjob
,
pjob
;
66
std::ofstream
restartFrom
;
67
const
double
forceConversion
=
68
-51.4220862;
// Forces from hartree/bohr to eV/Angstrom, -1 for the
69
// gradients
70
const
double
energyConversion
= 27.2114;
// Energy in hartree to eV
71
const
double
lengthConversion
= 1.88973;
// Coordinates from Angstrom to Bohr
72
void
runAMS
();
73
void
updateCoord
(
long
N,
const
double
*R);
74
void
extract_rkf
(
long
N, std::string key);
75
double
extract_scalar_rkf
(std::string key);
// single quantity
76
std::vector<double>
77
extract_cartesian_rkf
(std::string key);
// 3 x N quantities
78
// Debugging utilities
79
bool
validate_order
();
80
std::string
readFile
(std::filesystem::path path);
81
void
recieveFromSystem
(
long
N,
double
*F,
double
*U);
82
};
Matter.h
Potential.h
AMS::pjob
std::string pjob
Definition
AMS.h:65
AMS::copyForces
void copyForces(long N, const std::vector< double > &frc, double *F)
Definition
AMS.cpp:376
AMS::lengthConversion
const double lengthConversion
Definition
AMS.h:71
AMS::forcefield
std::string forcefield
Definition
AMS.h:57
AMS::generate_run
std::string generate_run(const Parameters &p)
Definition
AMS.cpp:511
AMS::engine_setup
std::string engine_setup
Definition
AMS.h:58
AMS::switchjob
void switchjob()
Definition
AMS.cpp:344
AMS::energyConversion
const double energyConversion
Definition
AMS.h:70
AMS::readFile
std::string readFile(std::filesystem::path path)
AMS::restartFrom
std::ofstream restartFrom
Definition
AMS.h:66
AMS::cleanMemory
void cleanMemory(void)
Definition
AMS.cpp:75
AMS::engine
std::string engine
Definition
AMS.h:57
AMS::extract_cartesian_rkf
std::vector< double > extract_cartesian_rkf(std::string key)
Definition
AMS.cpp:211
AMS::can_restart
bool can_restart
Definition
AMS.h:64
AMS::first_run
bool first_run
Definition
AMS.h:64
AMS::cjob
std::string cjob
Definition
AMS.h:65
AMS::validate_order
bool validate_order()
AMS::write_restart
void write_restart()
Definition
AMS.cpp:355
AMS::initialize
void initialize()
Definition
AMS.h:38
AMS::nativenv
boost::process::native_environment nativenv
Definition
AMS.h:62
AMS::smallSys
void smallSys(long N, const double *R, const int *atomicNrs, const double *box)
Flush, close and make the run script executable.
Definition
AMS.cpp:474
AMS::xc
std::string xc
Definition
AMS.h:57
AMS::engine_lower
std::string engine_lower
Definition
AMS.h:58
AMS::runAMS
void runAMS()
Definition
AMS.cpp:122
AMS::passToSystem
void passToSystem(long N, const double *R, const int *atomicNrs, const double *box)
< Creates a script to run AMS
Definition
AMS.cpp:430
AMS::updateCoord
void updateCoord(long N, const double *R)
Definition
AMS.cpp:282
AMS::basis
std::string basis
Definition
AMS.h:57
AMS::recieveFromSystem
void recieveFromSystem(long N, double *F, double *U)
AMS::AMS
AMS(const Parameters &p)
Definition
AMS.cpp:24
AMS::~AMS
~AMS()
Definition
AMS.cpp:77
AMS::amsevals
int amsevals
Definition
AMS.h:63
AMS::finishRunScript
void finishRunScript(std::ofstream &out)
Copy 3N gradient components into the caller's force array.
Definition
AMS.cpp:499
AMS::model
std::string model
Definition
AMS.h:57
AMS::force
void force(long N, const double *R, const int *atomicNrs, double *F, double *U, double *variance, const double *box)
Definition
AMS.cpp:389
AMS::resources
std::string resources
Definition
AMS.h:57
AMS::extract_rkf
void extract_rkf(long N, std::string key)
AMS::forceConversion
const double forceConversion
Definition
AMS.h:67
AMS::extract_scalar_rkf
double extract_scalar_rkf(std::string key)
Definition
AMS.cpp:152
eonc::Parameters
Definition
Parameters.h:28
eonc::Potential::Potential
Potential(PotType a_ptype)
Definition
Potential.h:35
include
eon
potentials
AMS
AMS.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf