Loading...
Searching...
No Matches
ParametersAccess.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// Parameters storage and accessors. Built into eoncbase, so Potential
13// constructors and plugin libraries read options without linking eonclib.
14// Construction with schema defaults and the INI/JSON loaders stay in
15// Parameters.cpp.
16#include "ParametersImpl.h"
17
18#include <memory>
19#include <string_view>
20#include <utility>
21
22namespace eonc {
23
24static_assert(sizeof(Parameters) == sizeof(std::unique_ptr<int>),
25 "Parameters layout is the Impl pointer");
26
27Parameters::~Parameters() = default;
28Parameters::Parameters(Parameters &&) noexcept = default;
29Parameters &Parameters::operator=(Parameters &&) noexcept = default;
30
32 : impl_(std::make_unique<Impl>(other.impl_ ? *other.impl_ : Impl{})) {}
33
34// Copy in place, so option-group references taken before the assignment
35// stay valid.
37 if (this == &other) {
38 return *this;
39 }
40 if (!other.impl_) {
41 impl_.reset();
42 } else if (impl_) {
43 *impl_ = *other.impl_;
44 } else {
45 impl_ = std::make_unique<Impl>(*other.impl_);
46 }
47 return *this;
48}
49
50std::string_view Parameters::last_load_source() const {
51 return impl_ ? std::string_view{impl_->last_source} : std::string_view{};
52}
53
55 return impl_ ? impl_->last_error : 0;
56}
57
58void Parameters::record_load(std::string_view source, int error) {
59 Impl &impl = ensure_impl();
60 impl.last_source.assign(source);
61 impl.last_error = error;
62}
63
65 if (!impl_) {
66 impl_ = std::make_unique<Impl>();
67 }
68 return *impl_;
69}
70
72 return impl_->constants_;
73}
74
76 return impl_->main_options_;
77}
78
80 return impl_->potential_options_;
81}
82
84 return impl_->ams_options_;
85}
86
88 return impl_->xtb_options_;
89}
90
92 return impl_->zbl_options_;
93}
94
96 return impl_->dftd_options_;
97}
98
100 return impl_->expr_options_;
101}
102
104 return impl_->mopac_options_;
105}
106
109 return impl_->socket_nwchem_options_;
110}
111
113 return impl_->rgpot_options_;
114}
115
118 return impl_->structure_comparison_options_;
119}
120
123 return impl_->process_search_options_;
124}
125
128 return impl_->saddle_search_options_;
129}
130
132 return impl_->optimizer_options_;
133}
134
136 return impl_->dimer_options_;
137}
138
140 return impl_->gpr_dimer_options_;
141}
142
145 return impl_->gp_surrogate_options_;
146}
147
149 return impl_->catlearn_options_;
150}
151
153 return impl_->ase_orca_options_;
154}
155
157 return impl_->ase_nwchem_options_;
158}
159
161 return impl_->metatomic_options_;
162}
163
165 return impl_->lanczos_options_;
166}
167
169 return impl_->davidson_options_;
170}
171
173 return impl_->prefactor_options_;
174}
175
177 return impl_->hessian_options_;
178}
179
181 return impl_->neb_options_;
182}
183
185 return impl_->dynamics_options_;
186}
187
190 return impl_->parallel_replica_options_;
191}
192
194 return impl_->tad_options_;
195}
196
198 return impl_->thermostat_options_;
199}
200
203 return impl_->replica_exchange_options_;
204}
205
208 return impl_->hyperdynamics_options_;
209}
210
213 return impl_->basin_hopping_options_;
214}
215
218 return impl_->global_optimization_options_;
219}
220
223 return impl_->monte_carlo_options_;
224}
225
227 return impl_->bgsd_options_;
228}
229
231 return impl_->serve_options_;
232}
233
235 return impl_->artn_options_;
236}
237
239 return impl_->ira_options_;
240}
241
243 return impl_->debug_options_;
244}
245
247 return impl_->oh_tst_options_;
248}
249
251 return impl_->instanton_options_;
252}
253
257
258std::uintptr_t Parameters::mpi_client_comm() const {
259 return impl_->potential_options_.MPIClientComm;
260}
261
265
269
271 return p.impl_->constants_;
272}
273
277
279 return p.impl_->main_options_;
280}
281
285
288 return p.impl_->potential_options_;
289}
290
294
296 return p.impl_->ams_options_;
297}
298
302
304 return p.impl_->xtb_options_;
305}
306
310
312 return p.impl_->zbl_options_;
313}
314
318
320 return p.impl_->dftd_options_;
321}
322
326
328 return p.impl_->expr_options_;
329}
330
334
335const mopac_options_t &
337 return p.impl_->mopac_options_;
338}
339
344
347 return p.impl_->socket_nwchem_options_;
348}
349
353
354const rgpot_options_t &
356 return p.impl_->rgpot_options_;
357}
358
363
366 return p.impl_->structure_comparison_options_;
367}
368
373
376 return p.impl_->process_search_options_;
377}
378
383
386 return p.impl_->saddle_search_options_;
387}
388
392
395 return p.impl_->optimizer_options_;
396}
397
401
402const dimer_options_t &
404 return p.impl_->dimer_options_;
405}
406
410
413 return p.impl_->gpr_dimer_options_;
414}
415
420
423 return p.impl_->gp_surrogate_options_;
424}
425
429
430const catlearn_options_t &
432 return p.impl_->catlearn_options_;
433}
434
438
439const ase_orca_options_t &
441 return p.impl_->ase_orca_options_;
442}
443
447
450 return p.impl_->ase_nwchem_options_;
451}
452
456
459 return p.impl_->metatomic_options_;
460}
461
465
466const lanczos_options_t &
468 return p.impl_->lanczos_options_;
469}
470
474
475const davidson_options_t &
477 return p.impl_->davidson_options_;
478}
479
483
486 return p.impl_->prefactor_options_;
487}
488
492
493const hessian_options_t &
495 return p.impl_->hessian_options_;
496}
497
501
503 return p.impl_->neb_options_;
504}
505
509
510const dynamics_options_t &
512 return p.impl_->dynamics_options_;
513}
514
519
522 return p.impl_->parallel_replica_options_;
523}
524
528
530 return p.impl_->tad_options_;
531}
532
536
539 return p.impl_->thermostat_options_;
540}
541
546
549 return p.impl_->replica_exchange_options_;
550}
551
556
559 return p.impl_->hyperdynamics_options_;
560}
561
566
569 return p.impl_->basin_hopping_options_;
570}
571
576
579 return p.impl_->global_optimization_options_;
580}
581
586
589 return p.impl_->monte_carlo_options_;
590}
591
595
597 return p.impl_->bgsd_options_;
598}
599
603
604const serve_options_t &
606 return p.impl_->serve_options_;
607}
608
612
614 return p.impl_->artn_options_;
615}
616
620
622 return p.impl_->ira_options_;
623}
624
628
629const debug_options_t &
631 return p.impl_->debug_options_;
632}
633
637
638const oh_tst_options_t &
640 return p.impl_->oh_tst_options_;
641}
642
646
649 return p.impl_->instanton_options_;
650}
651
652} // 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
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
eonc::gpr_dimer_options_t gpr_dimer_options_t
Definition Parameters.h:72
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
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
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
Parameters & operator=(const Parameters &)
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
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
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
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
const basin_hopping_options_t & basin_hopping_options() const
RAII resource manager for the ARTn C library with global synchronization.
StructureComparisonOptions structure_comparison_options_t
static gp_surrogate_options_t & gp_surrogate_options(Parameters &p)
static lanczos_options_t & lanczos_options(Parameters &p)
static ase_nwchem_options_t & ase_nwchem_options(Parameters &p)
static hyperdynamics_options_t & hyperdynamics_options(Parameters &p)
static monte_carlo_options_t & monte_carlo_options(Parameters &p)
static xtb_options_t & xtb_options(Parameters &p)
static thermostat_options_t & thermostat_options(Parameters &p)
static dimer_options_t & dimer_options(Parameters &p)
static socket_nwchem_options_t & socket_nwchem_options(Parameters &p)
static replica_exchange_options_t & replica_exchange_options(Parameters &p)
static constants_t & constants(Parameters &p)
static dftd_options_t & dftd_options(Parameters &p)
static ase_orca_options_t & ase_orca_options(Parameters &p)
static ira_options_t & ira_options(Parameters &p)
static debug_options_t & debug_options(Parameters &p)
static hessian_options_t & hessian_options(Parameters &p)
static instanton_options_t & instanton_options(Parameters &p)
static saddle_search_options_t & saddle_search_options(Parameters &p)
static dynamics_options_t & dynamics_options(Parameters &p)
static structure_comparison_options_t & structure_comparison_options(Parameters &p)
static main_options_t & main_options(Parameters &p)
static oh_tst_options_t & oh_tst_options(Parameters &p)
static gpr_dimer_options_t & gpr_dimer_options(Parameters &p)
static prefactor_options_t & prefactor_options(Parameters &p)
static bgsd_options_t & bgsd_options(Parameters &p)
static process_search_options_t & process_search_options(Parameters &p)
static ams_options_t & ams_options(Parameters &p)
static neb_options_t & neb_options(Parameters &p)
static tad_options_t & tad_options(Parameters &p)
static artn_options_t & artn_options(Parameters &p)
static expr_options_t & expr_options(Parameters &p)
static global_optimization_options_t & global_optimization_options(Parameters &p)
static mopac_options_t & mopac_options(Parameters &p)
static optimizer_options_t & optimizer_options(Parameters &p)
static rgpot_options_t & rgpot_options(Parameters &p)
static metatomic_options_t & metatomic_options(Parameters &p)
static serve_options_t & serve_options(Parameters &p)
static davidson_options_t & davidson_options(Parameters &p)
static basin_hopping_options_t & basin_hopping_options(Parameters &p)
static potential_options_t & potential_options(Parameters &p)
static parallel_replica_options_t & parallel_replica_options(Parameters &p)
static catlearn_options_t & catlearn_options(Parameters &p)
static zbl_options_t & zbl_options(Parameters &p)
serve_options_t serve_options_
ams_options_t ams_options_
zbl_options_t zbl_options_
hyperdynamics_options_t hyperdynamics_options_
parallel_replica_options_t parallel_replica_options_
dftd_options_t dftd_options_
global_optimization_options_t global_optimization_options_
debug_options_t debug_options_
basin_hopping_options_t basin_hopping_options_
metatomic_options_t metatomic_options_
thermostat_options_t thermostat_options_
neb_options_t neb_options_
oh_tst_options_t oh_tst_options_
bgsd_options_t bgsd_options_
rgpot_options_t rgpot_options_
potential_options_t potential_options_
ase_nwchem_options_t ase_nwchem_options_
optimizer_options_t optimizer_options_
ira_options_t ira_options_
replica_exchange_options_t replica_exchange_options_
monte_carlo_options_t monte_carlo_options_
artn_options_t artn_options_
process_search_options_t process_search_options_
saddle_search_options_t saddle_search_options_
davidson_options_t davidson_options_
prefactor_options_t prefactor_options_
gp_surrogate_options_t gp_surrogate_options_
ase_orca_options_t ase_orca_options_
lanczos_options_t lanczos_options_
dynamics_options_t dynamics_options_
instanton_options_t instanton_options_
structure_comparison_options_t structure_comparison_options_
catlearn_options_t catlearn_options_
gpr_dimer_options_t gpr_dimer_options_
dimer_options_t dimer_options_
hessian_options_t hessian_options_
tad_options_t tad_options_
expr_options_t expr_options_
xtb_options_t xtb_options_
mopac_options_t mopac_options_
main_options_t main_options_
socket_nwchem_options_t socket_nwchem_options_
std::uintptr_t MPIClientComm
Opaque MPI_Comm bits. Read/write with ParametersMpi.h in MPI TUs.