Loading...
Searching...
No Matches
Parameters.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 "BaseStructures.h"
15#include "ParametersOptions.h"
16#include <cstdio>
17#include <memory>
18#include <string>
19#include <string_view>
20
21class INIReader;
22
25namespace eonc {
26
27class Parameters;
28namespace config {
29int load_ini(::INIReader &, Parameters &);
30void apply_ssot_defaults(Parameters &);
31void validate_and_link(Parameters &);
32} // namespace config
34
36
37public:
38 Parameters();
40 Parameters(const Parameters &);
41 Parameters(Parameters &&) noexcept;
42 Parameters &operator=(const Parameters &);
43 Parameters &operator=(Parameters &&) noexcept;
44 int load(std::string_view filename);
45 int load(FILE *file);
46 int load_ini_text(std::string_view ini_text);
47 int load_json(std::string_view json_str);
48 std::string to_json() const;
49
52 [[nodiscard]] std::string_view last_load_source() const;
54 [[nodiscard]] int last_load_error() const;
55
99
100 void set_mpi_client_comm(std::uintptr_t raw);
101 [[nodiscard]] std::uintptr_t mpi_client_comm() const;
102 void set_mpi_potential_rank(int rank);
103
104 const constants_t &constants() const;
105 const main_options_t &main_options() const;
107 const ams_options_t &ams_options() const;
108 const xtb_options_t &xtb_options() const;
109 const zbl_options_t &zbl_options() const;
110 const dftd_options_t &dftd_options() const;
111 const expr_options_t &expr_options() const;
112 const mopac_options_t &mopac_options() const;
114 const rgpot_options_t &rgpot_options() const;
119 const dimer_options_t &dimer_options() const;
126 const lanczos_options_t &lanczos_options() const;
129 const hessian_options_t &hessian_options() const;
130 const neb_options_t &neb_options() const;
133 const tad_options_t &tad_options() const;
140 const bgsd_options_t &bgsd_options() const;
141 const serve_options_t &serve_options() const;
142 const artn_options_t &artn_options() const;
143 const ira_options_t &ira_options() const;
144 const debug_options_t &debug_options() const;
145 const oh_tst_options_t &oh_tst_options() const;
147
148 friend int config::load_ini(::INIReader &, Parameters &);
151 friend struct ParametersLoadAccess;
152
153private:
156 struct Impl;
157 std::unique_ptr<Impl> impl_;
158 Impl &ensure_impl();
159 void record_load(std::string_view source, int error);
160};
161
164 static constants_t &constants(Parameters &p);
165 static const constants_t &constants(const Parameters &p);
167 static const main_options_t &main_options(const Parameters &p);
169 static const potential_options_t &potential_options(const Parameters &p);
171 static const ams_options_t &ams_options(const Parameters &p);
173 static const xtb_options_t &xtb_options(const Parameters &p);
175 static const zbl_options_t &zbl_options(const Parameters &p);
177 static const dftd_options_t &dftd_options(const Parameters &p);
179 static const expr_options_t &expr_options(const Parameters &p);
181 static const mopac_options_t &mopac_options(const Parameters &p);
183 static const socket_nwchem_options_t &
186 static const rgpot_options_t &rgpot_options(const Parameters &p);
189 static const structure_comparison_options_t &
192 static const process_search_options_t &
195 static const saddle_search_options_t &
198 static const optimizer_options_t &optimizer_options(const Parameters &p);
200 static const dimer_options_t &dimer_options(const Parameters &p);
202 static const gpr_dimer_options_t &gpr_dimer_options(const Parameters &p);
204 static const gp_surrogate_options_t &
207 static const catlearn_options_t &catlearn_options(const Parameters &p);
209 static const ase_orca_options_t &ase_orca_options(const Parameters &p);
211 static const ase_nwchem_options_t &ase_nwchem_options(const Parameters &p);
213 static const metatomic_options_t &metatomic_options(const Parameters &p);
215 static const lanczos_options_t &lanczos_options(const Parameters &p);
217 static const davidson_options_t &davidson_options(const Parameters &p);
219 static const prefactor_options_t &prefactor_options(const Parameters &p);
221 static const hessian_options_t &hessian_options(const Parameters &p);
223 static const neb_options_t &neb_options(const Parameters &p);
225 static const dynamics_options_t &dynamics_options(const Parameters &p);
227 static const parallel_replica_options_t &
230 static const tad_options_t &tad_options(const Parameters &p);
232 static const thermostat_options_t &thermostat_options(const Parameters &p);
234 static const replica_exchange_options_t &
237 static const hyperdynamics_options_t &
240 static const basin_hopping_options_t &
244 static const global_optimization_options_t &
249 static const bgsd_options_t &bgsd_options(const Parameters &p);
251 static const serve_options_t &serve_options(const Parameters &p);
253 static const artn_options_t &artn_options(const Parameters &p);
255 static const ira_options_t &ira_options(const Parameters &p);
257 static const debug_options_t &debug_options(const Parameters &p);
259 static const oh_tst_options_t &oh_tst_options(const Parameters &p);
261 static const instanton_options_t &instanton_options(const Parameters &p);
262};
263
264} // namespace eonc
std::uintptr_t mpi_client_comm() const
const metatomic_options_t & metatomic_options() const
eonc::serve_options_t serve_options_t
Definition Parameters.h:93
const expr_options_t & expr_options() const
eonc::ira_options_t ira_options_t
Definition Parameters.h:95
const process_search_options_t & process_search_options() const
eonc::bgsd_options_t bgsd_options_t
Definition Parameters.h:92
const gp_surrogate_options_t & gp_surrogate_options() const
const monte_carlo_options_t & monte_carlo_options() const
eonc::oh_tst_options_t oh_tst_options_t
Definition Parameters.h:97
const ira_options_t & ira_options() const
Parameters(Parameters &&) noexcept
eonc::replica_exchange_options_t replica_exchange_options_t
Definition Parameters.h:87
const neb_options_t & neb_options() const
eonc::gp_surrogate_options_t gp_surrogate_options_t
Definition Parameters.h:73
const dimer_options_t & dimer_options() const
const xtb_options_t & xtb_options() const
eonc::prefactor_options_t prefactor_options_t
Definition Parameters.h:80
const catlearn_options_t & catlearn_options() const
const ams_options_t & ams_options() const
friend void config::validate_and_link(Parameters &)
eonc::gpr_dimer_options_t gpr_dimer_options_t
Definition Parameters.h:72
friend int config::load_ini(::INIReader &, Parameters &)
const instanton_options_t & instanton_options() const
eonc::hyperdynamics_options_t hyperdynamics_options_t
Definition Parameters.h:88
const parallel_replica_options_t & parallel_replica_options() const
eonc::global_optimization_options_t global_optimization_options_t
Definition Parameters.h:90
const constants_t & constants() const
eonc::rgpot_options_t rgpot_options_t
Definition Parameters.h:66
eonc::debug_options_t debug_options_t
Definition Parameters.h:96
void set_mpi_potential_rank(int rank)
const dynamics_options_t & dynamics_options() const
friend struct ParametersLoadAccess
Definition Parameters.h:151
const ase_orca_options_t & ase_orca_options() const
const potential_options_t & potential_options() const
const main_options_t & main_options() const
int last_load_error() const
Last load return code (0 ok). Zero before the first load.
const thermostat_options_t & thermostat_options() const
const oh_tst_options_t & oh_tst_options() const
std::unique_ptr< Impl > impl_
Definition Parameters.h:157
eonc::monte_carlo_options_t monte_carlo_options_t
Definition Parameters.h:91
eonc::mopac_options_t mopac_options_t
Definition Parameters.h:64
const saddle_search_options_t & saddle_search_options() const
const hyperdynamics_options_t & hyperdynamics_options() const
eonc::main_options_t main_options_t
Definition Parameters.h:57
const zbl_options_t & zbl_options() const
eonc::ase_nwchem_options_t ase_nwchem_options_t
Definition Parameters.h:76
const debug_options_t & debug_options() const
std::string to_json() const
const structure_comparison_options_t & structure_comparison_options() const
eonc::saddle_search_options_t saddle_search_options_t
Definition Parameters.h:69
const hessian_options_t & hessian_options() const
void record_load(std::string_view source, int error)
eonc::tad_options_t tad_options_t
Definition Parameters.h:85
eonc::dynamics_options_t dynamics_options_t
Definition Parameters.h:83
eonc::optimizer_options_t optimizer_options_t
Definition Parameters.h:70
eonc::thermostat_options_t thermostat_options_t
Definition Parameters.h:86
const gpr_dimer_options_t & gpr_dimer_options() const
const tad_options_t & tad_options() const
eonc::structure_comparison_options_t structure_comparison_options_t
Definition Parameters.h:67
std::string_view last_load_source() const
Last load source recorded by load / load_ini_text / load_json.
eonc::catlearn_options_t catlearn_options_t
Definition Parameters.h:74
eonc::ams_options_t ams_options_t
Definition Parameters.h:59
eonc::lanczos_options_t lanczos_options_t
Definition Parameters.h:78
const serve_options_t & serve_options() const
eonc::potential_options_t potential_options_t
Definition Parameters.h:58
const global_optimization_options_t & global_optimization_options() const
const artn_options_t & artn_options() const
const bgsd_options_t & bgsd_options() const
eonc::basin_hopping_options_t basin_hopping_options_t
Definition Parameters.h:89
friend void config::apply_ssot_defaults(Parameters &)
eonc::neb_options_t neb_options_t
Definition Parameters.h:82
const davidson_options_t & davidson_options() const
const socket_nwchem_options_t & socket_nwchem_options() const
void set_mpi_client_comm(std::uintptr_t raw)
eonc::ase_orca_options_t ase_orca_options_t
Definition Parameters.h:75
eonc::expr_options_t expr_options_t
Definition Parameters.h:63
int load_ini_text(std::string_view ini_text)
const ase_nwchem_options_t & ase_nwchem_options() const
const replica_exchange_options_t & replica_exchange_options() const
const lanczos_options_t & lanczos_options() const
eonc::dimer_options_t dimer_options_t
Definition Parameters.h:71
eonc::artn_options_t artn_options_t
Definition Parameters.h:94
eonc::socket_nwchem_options_t socket_nwchem_options_t
Definition Parameters.h:65
eonc::zbl_options_t zbl_options_t
Definition Parameters.h:61
const rgpot_options_t & rgpot_options() const
const mopac_options_t & mopac_options() const
eonc::constants_t constants_t
Definition Parameters.h:56
eonc::parallel_replica_options_t parallel_replica_options_t
Definition Parameters.h:84
int load(std::string_view filename)
eonc::davidson_options_t davidson_options_t
Definition Parameters.h:79
eonc::hessian_options_t hessian_options_t
Definition Parameters.h:81
const optimizer_options_t & optimizer_options() const
eonc::instanton_options_t instanton_options_t
Definition Parameters.h:98
const dftd_options_t & dftd_options() const
eonc::xtb_options_t xtb_options_t
Definition Parameters.h:60
eonc::metatomic_options_t metatomic_options_t
Definition Parameters.h:77
eonc::process_search_options_t process_search_options_t
Definition Parameters.h:68
const prefactor_options_t & prefactor_options() const
eonc::dftd_options_t dftd_options_t
Definition Parameters.h:62
int load_json(std::string_view json_str)
const basin_hopping_options_t & basin_hopping_options() const
int load_ini(INIReader &ini, Parameters &params)
Parse all INI sections into the Parameters struct.
void apply_ssot_defaults(Parameters &p)
Apply SSoT defaults for covered groups (Main, Potential, Optimizer, Structure Comparison,...
void validate_and_link(Parameters &params)
Resolve cross-group defaults and time unit conversions.
RAII resource manager for the ARTn C library with global synchronization.
StructureComparisonOptions structure_comparison_options_t
Write hole for INI/JSON loaders and nanobind property setters.
Definition Parameters.h:163