eOn 3.2.0
Long-timescale dynamics: aKMC, NEB, parallel replica
☾
Toggle main menu visibility
Loading...
Searching...
No Matches
GenericEngineLoader.h
Go to the documentation of this file.
1
#pragma once
2
/*
3
** This file is part of eOn.
4
**
5
** SPDX-License-Identifier: BSD-3-Clause
6
**
7
** Copyright (c) 2010--present, eOn Development Team
8
** All rights reserved.
9
**
10
** Repo:
11
** https://github.com/TheochemUI/eOn
12
*/
13
/*
14
** Thin loader for any rgpot engine plugin behind the generic C ABI
15
** (engine_c_abi.h): one symbol set, backend selection by library name,
16
** configuration as a Cap'n Proto message on the shared wire. New
17
** backends need no new loader code.
18
*/
19
#include "
engine_c_abi.h
"
20
#include <cstddef>
21
#include <string>
22
#include <vector>
23
24
struct
GenericEngineOptions
{
26
std::string
library
;
28
std::string
env_var
;
30
std::string
engine_path
;
33
std::vector<unsigned char>
config
;
35
std::string
tag
;
36
};
37
38
class
GenericEngineLoader
{
39
public
:
40
explicit
GenericEngineLoader
(
const
GenericEngineOptions
&opt);
41
~GenericEngineLoader
();
42
GenericEngineLoader
(
const
GenericEngineLoader
&) =
delete
;
43
GenericEngineLoader
&
operator=
(
const
GenericEngineLoader
&) =
delete
;
44
45
[[nodiscard]]
bool
available
() const noexcept {
return
m_pot
!=
nullptr
; }
46
void
force
(
long
N,
const
double
*R,
const
int
*atomicNrs,
double
*F,
47
double
*U,
double
*variance,
const
double
*box)
const
;
48
49
private
:
50
void
*
m_lib
{
nullptr
};
51
RgpotEnginePot
*
m_pot
{
nullptr
};
52
std::string
m_tag
;
53
using
create_fn
=
RgpotEnginePot
*(*)(
const
void
*,
size_t
,
char
*,
size_t
);
54
using
destroy_fn
= void (*)(
RgpotEnginePot
*);
55
using
force_fn
= int (*)(
RgpotEnginePot
*, long,
const
double
*,
const
int
*,
56
double
*,
double
*,
double
*,
const
double
*,
57
rgpot_engine_coord_transform
,
void
*);
58
create_fn
m_create
{
nullptr
};
59
destroy_fn
m_destroy
{
nullptr
};
60
force_fn
m_force
{
nullptr
};
61
};
GenericEngineLoader::m_tag
std::string m_tag
Definition
GenericEngineLoader.h:52
GenericEngineLoader::destroy_fn
void(*)(RgpotEnginePot *) destroy_fn
Definition
GenericEngineLoader.h:54
GenericEngineLoader::~GenericEngineLoader
~GenericEngineLoader()
Definition
GenericEngineLoader.cpp:114
GenericEngineLoader::operator=
GenericEngineLoader & operator=(const GenericEngineLoader &)=delete
GenericEngineLoader::m_destroy
destroy_fn m_destroy
Definition
GenericEngineLoader.h:59
GenericEngineLoader::GenericEngineLoader
GenericEngineLoader(const GenericEngineOptions &opt)
Definition
GenericEngineLoader.cpp:43
GenericEngineLoader::force
void force(long N, const double *R, const int *atomicNrs, double *F, double *U, double *variance, const double *box) const
Definition
GenericEngineLoader.cpp:123
GenericEngineLoader::force_fn
int(*)(RgpotEnginePot *, long, const double *, const int *, double *, double *, double *, const double *, rgpot_engine_coord_transform, void *) force_fn
Definition
GenericEngineLoader.h:55
GenericEngineLoader::m_pot
RgpotEnginePot * m_pot
Definition
GenericEngineLoader.h:51
GenericEngineLoader::create_fn
RgpotEnginePot *(*)(const void *, size_t, char *, size_t) create_fn
Definition
GenericEngineLoader.h:53
GenericEngineLoader::GenericEngineLoader
GenericEngineLoader(const GenericEngineLoader &)=delete
GenericEngineLoader::m_lib
void * m_lib
Definition
GenericEngineLoader.h:50
GenericEngineLoader::m_force
force_fn m_force
Definition
GenericEngineLoader.h:60
GenericEngineLoader::available
bool available() const noexcept
Definition
GenericEngineLoader.h:45
GenericEngineLoader::m_create
create_fn m_create
Definition
GenericEngineLoader.h:58
engine_c_abi.h
Generic C ABI for rgpot engine plugins.
RgpotEnginePot
struct RgpotEnginePot RgpotEnginePot
Definition
engine_c_abi.h:59
rgpot_engine_coord_transform
int(* rgpot_engine_coord_transform)(void *user, long nAtoms, double *positions, double *box)
Optional host-side transform applied by the engine to its scratch copy of (positions,...
Definition
engine_c_abi.h:67
GenericEngineOptions
Definition
GenericEngineLoader.h:24
GenericEngineOptions::tag
std::string tag
Backend tag for error messages ("uma", ...).
Definition
GenericEngineLoader.h:35
GenericEngineOptions::env_var
std::string env_var
Optional env var naming an explicit .so path (checked first).
Definition
GenericEngineLoader.h:28
GenericEngineOptions::config
std::vector< unsigned char > config
Cap'n Proto flat-array message (the engine's params struct on the shared Potentials....
Definition
GenericEngineLoader.h:33
GenericEngineOptions::engine_path
std::string engine_path
Optional explicit .so path from config.
Definition
GenericEngineLoader.h:30
GenericEngineOptions::library
std::string library
Library basename to search for, e.g. "libuma_engine.so".
Definition
GenericEngineLoader.h:26
include
eon
potentials
Rgpot
GenericEngineLoader.h
Generated by
1.17.0
Generated by
Doxygen 1.17.0
Analytics by
Antics
provided by
TurtleTech ehf