Loading...
Searching...
No Matches
ParametersOptions.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"
16#include <cstdint>
17#include <limits>
18#include <string>
19#include <vector>
20
21namespace eonc {
22
23// Physical Constants
25 double kB{8.6173324e-5}; // eV/K
26 double timeUnit{10.1805055}; // fs
27};
28
29// [Main] //
32 long randomSeed{-1};
33 double temperature{300.0};
34 bool quiet{false};
35 bool writeLog{true};
36 bool checkpoint{false};
37 std::string iniFilename{"config.ini"};
38 std::string conFilename{"pos.con"};
39 double finiteDifference{0.01};
41 bool removeNetForce{true};
42 bool parallel{true}; // parallel force evaluation via std::jthread
46 bool writeConForces{false};
47};
48
49// [Potential] //
52 double MPIPollPeriod{0.25};
53 bool LAMMPSLogging{false};
55 bool EMTRasmussen{false};
56 bool LogPotential{false};
59 bool thread_safe{true};
60 std::string extPotPath{"./ext_pot"};
61 std::string potentialsPath{
62 ""}; // colon-separated dirs for Fortran potential .so files
65 std::uintptr_t MPIClientComm{0};
66};
67
68// [AMS] and [AMS_IO] //
70 std::string engine;
71 std::string forcefield;
72 std::string model;
73 std::string resources;
74 std::string xc;
75 std::string basis;
76 struct env_t {
77 std::string amshome;
78 std::string scm_tmpdir;
79 std::string scmlicense;
80 std::string scm_pythondir;
81 std::string amsbin;
82 std::string amsresources;
83 } env;
84};
85
86// [XTBPot] //
88 std::string paramset{"GFNFF"};
89 double elec_temperature{0.0};
90 size_t maxiter{250};
91 double acc{1.0};
92 double charge{0.0};
93 int uhf{0};
94};
95
96// [ZBLPot] //
98 double cut_inner{2.0};
99 double cut_global{2.5};
100};
101
102// [D3Pot] / [D4Pot]: rgpot 3.1 in-process Grimme DFT-D (s-dftd3 / dftd4).
104 std::string functional{"pbe"};
105 bool atm{true};
106 std::string d3_damping{"bj"};
107 double d4_charge{0.0};
108};
109
110// [ExprPot]: rgpot 3.1 Lepton algebra over named child kernels.
112 std::string expression;
113 std::string terms;
114};
115
116// [MOPACPot]: rgpot 3.2 MOPACPot (libmopacc, default AM1).
118 int charge{0};
119 int spin{0};
120 int model{4};
121 std::string engine_path;
122};
123
124// [SocketNWChemPot] //
126 std::string host{"127.0.0.1"};
127 int port{9999};
128 int mem_in_gb{2};
129 std::string nwchem_settings{"nwchem_settings.nwi"};
130 std::string unix_socket_path{"eon_nwchem"};
131 bool unix_socket_mode{false};
133};
134
135// [RgpotPot] — in-process rgpot (dlopen engines; no potserv). Packaging
136// prefers metatomic/xtb via RGPOT over fat -Dwith_metatomic / -Dwith_xtb.
139 std::string backend{"nwchemc"};
140 std::string basis{"sto-3g"};
141 std::string theory{"scf"};
142 std::string scf_type{"rhf"};
143 std::string functional{"BLYP"};
144 // [cpmd] cutOffRy wins when params_path is empty. cutoff_ry and
145 // cpmd_cut_off_ry on [cpmd] or [RgpotPot] still load.
146 double cutoff_ry{70.0};
147 int charge{0};
149 std::string engine_path{};
150 std::string engine_library{};
151 std::string engine_root{};
152 std::string title{};
153 int memory_mb{0};
154 std::string scratch_dir{};
155 // [cpmd] input_block wins over this [RgpotPot] key for a CPMD backend.
156 // The text is appended to inputBlocks and does not replace inputSections.
157 std::string input_block{};
158 std::string permanent_dir{};
159 // Serialized Cap'n Proto CPMDParams. When set, it is the method and the
160 // scalar keys above are not written over it. [cpmd] supplies those
161 // scalars when this path is empty.
162 std::string params_path{};
163 // cpmdc: split the MPI world into groups of this many ranks, one CPMD
164 // session per group, and spread NEB images over the groups. 0 keeps one
165 // session on every rank.
167 // Metatomic dlopen (backend=metatomic)
168 std::string model_path{};
169 std::string device{"cpu"};
170 std::string length_unit{"angstrom"};
171 std::string extensions_directory{};
172 bool check_consistency{false};
175 // XTB dlopen (backend=xtb); dual-read [XTBPot] when unset
176 std::string xtb_paramset{"GFN2xTB"};
177 double xtb_accuracy{1.0};
180 double xtb_charge{0.0};
181 int xtb_uhf{0};
182};
183
184// [Structure Comparison] //
186
187// [Process Search] //
189 bool minimize_first{true};
190 double minimization_offset{0.2}; // resolved to optimizer_options.max_move
191};
192
193// [Saddle Search] //
196 long max_iterations{1000};
197 std::string method{"min_mode"};
198 std::string minmode_method{"dimer"};
199 std::string displace_type{"load"};
200 std::vector<long> displace_atom_list;
201 double max_energy{20.0};
204 double displace_radius{4.0};
205 double converged_force{0.0};
206 double perp_force_ratio{0.0};
210 bool remove_rotation{false};
212 struct dynamics_t {
213 double temperature{0.0};
215 double state_check_interval{0.0}; // computed: input / timeUnit
217 double record_interval{0.0}; // computed
222 bool enabled{false};
223 bool bowl_breakout{false};
224 long bowl_active{20};
225 double min_force{0.5};
226 double scale_ratio{0.9};
227 double boost{10.0};
228 long min_active{30};
230};
231
232// [Optimizer] //
235 std::string xtsci_method{"lbfgs"};
236 struct xtsci_t {
237 std::string method{"lbfgs"};
238 std::string qn_step{"lbfgs"};
239 std::string precon{"none"};
240 std::string accept{"energy"};
241 bool highs{false};
242 std::string manifold{"euclidean"};
244 std::string convergence_metric{"norm"};
246 size_t max_iterations{1000};
247 double max_move{0.2};
248 double converged_force{0.01};
249 double time_step_input{1.0};
250 double time_step{0.0}; // computed: input / timeUnit
252 double max_time_step{0.0}; // computed: input / timeUnit
257 struct lbfgs_t {
258 long memory{20};
259 double inverse_curvature{0.01};
261 bool auto_scale{true};
262 bool angle_reset{true};
263 bool distance_reset{true};
264 // reset: wipe memory on bad s·y (ASE). skip: Li-Fukushima cautious
265 // skip of that pair. damped: Powell (1978) ŷ = θy+(1-θ)B0 s.
266 std::string curvature{"reset"};
267 // Isolated clusters: project 6 rigid-body modes out of the
268 // L-BFGS force and step. Off for PBC / frozen atoms.
269 bool project_rigid{false};
270 std::string secant{"standard"};
271 std::string precon{"none"};
272 std::string step{"lbfgs"};
273 std::string h0{"sy_yy"};
274 std::string accept{"energy"};
276 double cautious_eps{1.0e-6};
277 double cautious_alpha{0.01};
278 double precon_A{3.0};
279 double precon_mu{1.0};
280 double precon_rcut{0.0};
282 struct cg_t {
283 bool no_overshooting{false};
285 bool line_search{false};
286 double line_converged{0.1};
289 } cg;
293 struct sd_t {
294 double alpha{0.1};
295 bool two_point{false};
296 } sd;
297};
298
299// [Dimer] //
301 double rotation_angle{0.005};
302 bool improved{true};
303 double converged_angle{5.0};
304 long max_iterations{1000};
308 double torque_max{1.0};
309 double torque_min{0.1};
310 bool remove_rotation{false};
311 // Mode estimation for dimer: classical rotation loop, or FD min-mode
312 // (Lanczos/Davidson) replacing constrained IDimerRot / Dimer::rotate.
314 // LOR relative residual stop: ||F_perp|| / (|C_N|+1) < max(1e-3, this).
315 // Independent of classical torque_min (angular criterion).
316 double lor_residual_tol{0.1};
317};
318
319// [GPR Dimer] //
321 double rotation_angle{0.005};
322 double converged_angle{0.08};
323 double relax_conv_angle{0.001};
329 double midpoint_max_disp{0.5};
330 std::string rot_opt_method{"lbfgs"};
331 std::string trans_opt_method{"lbfgs"};
332 double active_radius{5.0};
333 double dimer_sep{0.01};
334 double conv_step{0.1};
335 double max_step{0.1};
336 double ratio_at_limit{0.66667};
337 bool init_rot_gp{false};
338 bool init_trans_gp{false};
339 bool many_iterations{true};
341 std::string hyper_opt_method{"scg"};
342 double sigma2{1e-8};
343 double jitter_sigma2{0.0};
344 double noise_sigma2{1e-8};
345 double prior_mu{0.0};
346 double prior_sigma2{1.0};
347 long prior_nu{20};
350 bool check_derivatives{false};
352 double tol_func{1e-4};
353 double tol_sol{1e-4};
354 long lambda_limit{static_cast<long>(1e17)};
355 long lambda_init{10};
358 bool use_prune{false};
359 int begin{8};
360 int n_vals{3};
361 double threshold{0.5};
366 std::string out_dir{"output"};
367 std::string pos_file{"position"};
368 std::string energy_file{"energy"};
369 std::string grad_file{"gradient"};
370 std::string out_ext{"dat"};
371 double offset_mid_point{3.0};
372 double dy{0.1};
373 double dz{0.1};
375};
376
377// [GP Surrogate] //
385
386// [CatLearn] //
388 std::string path;
389 std::string model{"gp"};
390 std::string prior{"median"};
391 bool use_deriv{true};
392 bool use_fingerprint{false};
393 bool parallel{false};
394};
395
396// [ASE_ORCA] //
398 std::string path;
399 std::string nproc{"1"};
400 std::string simpleinput;
401 int charge{0};
403};
404
405// [ASE_NWCHEM] //
407 std::string path;
408 std::string nproc{"1"};
409 // MPI launcher for ASE NWChem command (issue #193): "mpirun" or "srun".
410 std::string mpi_launcher{"mpirun"};
411 std::string multiplicity;
412 double scf_thresh{1e-5};
413 long scf_maxiter{200};
414 std::string basis{"3-21G"};
415 std::string memory{"2 gb"};
416};
417
418// [Metatomic] //
420 std::string model_path;
421 std::string device{"cpu"};
422 std::string length_unit{"angstrom"};
424 bool check_consistency{false};
426 // Literal model output keys (issue #215). When set, bypass pick_output
427 // variant resolution and use this key if present in model capabilities.
428 std::string energy_output;
430 // Literal non-conservative force output key (issue #296); empty uses
431 // pick_output("non_conservative_force", ...) when non_conservative.
432 std::string force_output;
433 // When true, read forces from non_conservative_force (with variants)
434 // instead of autograd on energy (issue #296).
435 bool non_conservative{false};
436 // Apply a fresh random SO(3) rotation per force() call and rotate forces
437 // back (issue #287 / PET-MAD broken-symmetry mitigation).
438 bool random_rotation{false};
439 // If >0, average energy/forces over this many random rotations for
440 // approximate O(3) symmetrization (issue #292). Overrides single-shot
441 // random_rotation when both are set.
443 // PyTorch determinism (JIT profiling off, deterministic algorithms,
444 // cudnn benchmark off). See
445 // rgoswami.me/snippets/pytorch-deterministic-regression/
446 bool deterministic{true};
447 // If true, fail on nondeterministic CUDA ops (needs
448 // CUBLAS_WORKSPACE_CONFIG).
450 struct variants_t {
451 std::string base;
452 std::string energy;
454 std::string force; // non_conservative_force variant (#296)
456};
457
458// [Lanczos] //
459// phva_atoms: PHVA mobile/active set for the Krylov space (Li & Jensen).
460// Not free/fixed — that is the optimizer mask on Matter. "All" = every free
461// atom (historical default). Same polarity as [Hessian] phva_atoms.
463 double tolerance{0.01};
465 bool quit_early{true};
466 std::string phva_atoms{"All"};
467};
468
469// [Davidson] min-mode (alternative to dimer rotation / Lanczos)
471 double tolerance{0.01};
477 std::string phva_atoms{"All"};
478};
479
480// [Prefactor] //
482 double default_value{0.0};
483 double max_value{1e+21};
484 double min_value{1e+9};
485 double within_radius{3.3};
486 double min_displacement{0.25};
487 std::string rate{"htst"};
488 std::string configuration{"reactant"};
489 bool all_free_atoms{false};
490 std::string filter_scheme{"fraction"};
491 double filter_fraction{0.90};
492};
493
494// [Hessian] //
495// phva_atoms: mobile/displaced atoms for FD (hybrid/PHVA-class active set),
496// or "All" = every non-fixed atom. Intersected with free flags in HessianJob.
497// free/fixed stays the optimizer mask and is not rewritten.
499 std::string phva_atoms{"All"};
500 double zero_freq_value{1e-6};
501 // FD scheme: "one_sided" (default), "central", or "fourth"
502 // (aliases fourth_order, central4). Fourth-order is real central
503 // differences for this Hessian and for Lanczos/Davidson products.
504 // Step size is Main.finite_difference (dx).
505 std::string fd_scheme{"one_sided"};
506 // If true and checkpoint_path is set, resume FD columns from checkpoint.
507 bool resume{false};
508 // Column checkpoint file (e.g. hessian.ckpt). Cleared on successful finish.
509 std::string checkpoint_path{""};
510 // Write every normal mode to modes.con: the Cartesian mode as a
511 // readcon displacements section, its eigenvalue and hbar omega as
512 // frame metadata.
513 bool write_modes{true};
514};
515
516// [Nudged Elastic Band] //
518 long image_count{5};
519 long max_iterations{1000};
521 double force_tolerance{0.01}; // resolved to optimizer_options.converged_force
523 bool enabled{true};
524 double tolerance{0.05};
527 bool match_endpoints{false};
529 std::string match_method{"ira"};
530
532 double constant{5.0};
533 bool use_elastic_band{false};
534 bool doubly_nudged{false};
535 bool use_switching{false};
536
538 bool enabled{false};
539 double trigger{10.0};
540 double k_min{0.97};
541 double k_max{9.7};
544 bool enabled{false};
545 bool optimize_k{true};
546 double k_scale{1.0};
547 double k_min{0.1};
548 double k_max{100.0};
549 } om;
551
553 bool enabled{true};
554 bool converged_only{true};
558 double band_slack{10.0};
559 bool use_old_tangent{false};
560 double trigger_force{std::numeric_limits<double>::infinity()};
561 double trigger_factor{0.0};
562
564 bool use_mmf{false};
565 double trigger_force{0.1};
566 long max_steps{1000};
568 double angle_tol{0.7071}; // 1/sqrt(2): Householder stability bound
569 double trigger_factor{0.0};
570 // Off: Frontiers / published OCINEB. On: restore CI when MMF
571 // does not improve the band force (OptBench pair 26).
572 bool restore_unhelpful{false};
575
592
608
610 bool minimize{false};
611 bool use_path_file{false};
613
617 bool enabled{false};
618 double weight{1.0};
621 double pressure{0.0};
623};
624
625// [Molecular Dynamics] //
627 double time_step_input{1.0};
628 double time_step{0.0}; // computed: input / timeUnit
629 double time_input{1000.0};
630 double time{0.0}; // computed: input / timeUnit
631 long steps{0}; // computed: time / time_step
632};
633
634// [Parallel Replica] //
637 bool auto_stop{false};
638 bool dephase_loop_stop{false};
639 double dephase_time_input{1000.0};
640 double dephase_time{0.0}; // computed: input / timeUnit
643 double state_check_interval{0.0}; // computed
645 double record_interval{0.0}; // computed
646 double corr_time_input{1000.0};
647 double corr_time{0.0}; // computed
648};
649
650// [Temperature Accelerated Dynamics] //
652 double low_temperature{300.0};
653 double min_prefactor{0.001};
654 double confidence{0.001};
655};
656
657// [Thermostat] //
659 std::string kind{"none"};
660 double andersen_alpha{1.0};
661 double andersen_tcol_input{100.0};
662 double andersen_tcol{0.0}; // computed
663 double nose_mass{1.0};
665 double langevin_friction{0.0}; // computed: input * timeUnit
666 long path_beads{8};
667 std::string path_springs{"trotter"};
669 std::string path_gle_file;
670 double path_pile_tau_input{100.0}; // fs
671 double path_pile_tau{0.0}; // input / timeUnit
672 double path_pile_scale{1.0};
673 std::uint64_t path_seed{1};
674};
675
676// [Replica Exchange] //
678 std::string temperature_distribution{"exponential"};
679 long replicas{10};
680 long exchange_trials{10}; // resolved to replicas
681 double sampling_time_input{1000.0};
682 double sampling_time{0.0}; // computed
683 double temperature_high{0.0};
684 double temperature_low{0.0};
686 double exchange_period{0.0}; // computed
687};
688
689// [Bond Boost / Hyperdynamics] //
691 std::string bias_potential{"none"};
692 std::string boost_atom_list{"All"};
693 double rmd_time_input{100.0};
694 double rmd_time{0.0}; // computed
695 double dvmax{0.0};
696 double qrr{0.2};
697 double prr{0.95};
698 double qcut{3.0};
699};
700
701// [Basin Hopping] //
703 double displacement{0.5};
706 long steps{10000};
710 std::string displacement_algorithm{"standard"};
711 std::string displacement_distribution{"uniform"};
712 double swap_probability{0.0};
713 long jump_max{10};
714 long jump_steps{0};
717 double adjust_fraction{0.05};
718 double target_ratio{0.5};
719 bool write_unique{false};
720 double stop_energy{-std::numeric_limits<double>::max()};
721};
722
723// [Global Optimization] //
725 std::string move_method{"md"};
726 std::string decision_method{"npew"};
727 long steps{10000};
728 double beta{1.05};
729 double alpha{1.02};
730 long mdmin{3};
731 double target_energy{-1.0e50};
732};
733
734// [Monte Carlo] //
736 double step_size{0.005};
737 int steps{1000};
738};
739
740// [BGSD] //
742 double alpha{10.0};
743 double beta{0.2};
746 double grad2energy_convergence{0.000001};
748};
749
750// [Serve] //
752 std::string host{"localhost"};
753 uint16_t port{12345};
754 size_t replicas{1};
755 uint16_t gateway_port{0};
756 std::string endpoints;
757};
758
759// [ARTn] //
761 double push_step_size{0.3}; // maps to pARTn "push_step_size"
762 double force_threshold{0.05}; // maps to pARTn "forc_thr"
764 int ninit{-1}; // maps to pARTn "ninit" (-1 = use pARTn default): number
765 // of initial push steps before Lanczos eigenmode
766 // estimation. 0 skips the push (eOn supplies the mode);
767 // larger values let pARTn explore further from the
768 // minimum before switching to Lanczos.
769 std::string nperp_limitation{"default"}; // maps to pARTn "nperp_limitation"
771 -1}; // maps to pARTn "lanczos_min_size" (-1 = use default)
772 int nsmooth{-1}; // maps to pARTn "nsmooth" (-1 = use default)
774 3}; // maps to pARTn "nnewchance": retries when lowest eigval > 0
775 // (convex region). pARTn default is 0 (immediate fail), which
776 // is too aggressive for small clusters where Lanczos can
777 // momentarily settle on a positive eigenvalue before the
778 // unstable mode emerges. 3 retries is a reasonable default.
779 std::string filin{""}; // maps to pARTn "filin": path to an artn.in input
780 // file. Empty preserves pARTn's post-create default
781 // (NAN_STR sentinel "BBBB" set by artn_create in
782 // artn_api.f90), which tells m_setup_artn to skip
783 // reading any file. If set, pARTn opens the file
784 // with status="old" and errors out when absent.
785};
786
787// [IRA] //
791 bool use_pbc{false};
792};
793
794// [Debug] //
796 bool write_movies{false};
800 std::string neb_mmf{"dimer"};
801};
802
803// [Instanton] //
804// Ring-polymer instanton: the tunnelling splitting between two minima
805// (mode "splitting", eonc::tunneling::optimizeInstanton) or the thermal rate
806// out of a minimum through a saddle (mode "rate"): the ring below the
807// crossover temperature, and the parabolic barrier factor above it.
809 std::string mode{"splitting"};
810 std::string reactant_filename{"reactant.con"};
811 std::string product_filename{"product.con"};
812 // Optional band to start from (neb.con or any multi-frame con file whose
813 // first and last frames are the two minima); empty is a straight line.
814 std::string initial_path{""};
815 long beads{256}; // P, segments from one minimum to the other
816 double beta_hbar_omega{30.0}; // imaginary time, in units of 1 / omega
817 long max_iterations{5000}; // L-BFGS iterations on the action
818 double force_tolerance{1e-3}; // eV / (amu^0.5 A), largest bead residual
819 // FD Hessians on every stride-th bead, linear in between; 1 is every bead.
821 // Mode "rate": the first-order saddle out of the reactant, and T in K.
822 std::string saddle_filename{"saddle.con"};
823 double temperature{0.0};
824 // Mode rate: kelvin values, searched from the highest down. Empty uses
825 // temperature.
826 std::vector<double> temperatures{};
827 // Mode rate: even bead count evaluates one half of a symmetric ring
828 // and copies it. An odd count evaluates every bead.
829 bool half_ring{true};
830 double energy_shift{0.0}; // eV, subtracted from each bead potential
831 // Mode rate: where the bead Hessian blocks start. "saddle" copies the
832 // saddle Hessian to every bead (no force calls); "finite_difference"
833 // takes 2 f gradient calls per bead first.
834 std::string initial_hessians{"saddle"};
835 // Mode rate: start at a quarter of the beads and double. Off leaves the
836 // requested count alone.
837 bool bead_ladder{false};
838 // Mode rate: the rate uses a Hessian on every stride-th bead.
839 std::string hessian_final{"recomputed"};
840 // "trotter" or "eco". Economised springs are refused: the instanton
841 // is a Trotter discretisation.
842 std::string springs{"trotter"};
843 // Mode rate: path-integral quantum TST after the instanton. Planes
844 // from behind the reactant to the saddle, each holding the centroid of
845 // a sampled ring; 0 leaves it off.
846 long pi_planes{0};
847 long pi_beads{16};
850 double pi_time_step{0.5}; // fs
851 // "pile", or "piglet" with pi_gle_file (the [Dynamics] path_gle_file
852 // format).
853 std::string pi_thermostat{"pile"};
854 std::string pi_gle_file{""};
855 double pi_pile_tau{100.0}; // fs, centroid Langevin time
856 double pi_pile_scale{1.0}; // scales the internal-mode PILE damping
857 long pi_seed{1};
858 // Plane normal: "mode" is the saddle's unstable mode, "line" the
859 // mass-weighted reactant-to-saddle line.
860 std::string pi_direction{"mode"};
861 // The first plane sits this fraction of the reactant-to-saddle distance
862 // behind the reactant.
864 // Ring-polymer MD transmission factor on the top plane: parents sampled
865 // on the plane every pi_recrossing_spacing steps, each launching
866 // pi_recrossing_children momentum pairs for pi_recrossing_time fs.
867 // 0 parents leaves it off.
870 double pi_recrossing_time{100.0}; // fs
872};
873
874// [OH_TST] //
875// Optimized hyperplanar TST (Johannesson-Jonsson, JCP 115, 9644
876// (2001)): reversible-work progression of a hyperplanar dividing
877// surface with constrained thermostatted sampling.
879 std::string reactant_filename{"pos.con"};
880 std::string product_filename{"product.con"};
881 double time_step{1.0}; // fs, constrained sampling dynamics
882 long equil_steps{200}; // per-plane equilibration steps
883 long sample_steps{800}; // per-plane averaging steps
884 long max_planes{200}; // plane-progression iterations
885 double plane_mass{50.0}; // m_s, inertia of the s coordinate
886 double alpha_rot{50.0}; // rotational inertia of the normal
887 double plane_time_step{0.1}; // Verlet step for (s, n) updates
888 double ds_max{0.1}; // A, clamp on per-iteration plane moves
889 double dtheta_max{0.05}; // rad, clamp on per-iteration rotations
890 double force_tol{0.005}; // eV/A convergence on plane force
891 double s_init{0.05}; // starting fraction along the guideline
892 long reactant_md_steps{20000}; // unconstrained reactant trajectory
893 double max_delta_a{10.0}; // eV, divergence guard on the work
894 // Thermostat for the plane-constrained and reactant sampling:
895 // "andersen" (default) or "gle" (colored noise, Ceriotti-Bussi-
896 // Parrinello; drift matrix from gle_a_file, gle4md text layout,
897 // units of inverse internal time; a 1x1 [gamma] file degenerates
898 // to white-noise Langevin).
899 std::string thermostat{"andersen"};
900 std::string gle_a_file{""};
901 // Comma-separated .con files of the OTHER symmetry-equivalent
902 // product minima (Eqs 13-17): sampling is confined to the
903 // subregion of the primary product by half-line distances with
904 // mirror velocity reflection at the boundaries.
905 std::string symmetry_products{""};
906 // PMF-scan mode: hold the dividing plane normal fixed along the
907 // guideline and step s uniformly reactant->product instead of
908 // adaptively hunting the free-energy maximum. Robust where the
909 // adaptive progression pins at s=0 (a shallow doorway or a
910 // barrierless capture funnel whose A(s) has no interior maximum).
911 bool pmf_scan{false};
912 long scan_planes{40}; // uniform planes across the guideline
913};
914
915} // namespace eonc
RAII resource manager for the ARTn C library with global synchronization.
StructureComparisonOptions structure_comparison_options_t
DimerRotationBackend
Options for Matter::compare / distance.
struct eonc::ams_options_t::env_t env
bool diagonal_preconditioner
Heuristic | (H v)_i / v_i | preconditioner (not true diag(H); off by default).
std::string phva_atoms
PHVA mobile/active set for the Ritz space; "All" = all free atoms.
DimerRotationBackend rotation_backend
struct eonc::gpr_dimer_options_t::prune_params_t prune_params
struct eonc::gpr_dimer_options_t::gpr_params_t gpr_params
struct eonc::gpr_dimer_options_t::debug_params_t debug_params
struct eonc::gpr_dimer_options_t::opt_params_t opt_params
std::vector< double > temperatures
bool writeConForces
Opt-in "Forces of Component" sections in written .con frames (enables force+energy co-load on restart...
struct eonc::metatomic_options_t::variants_t variant
double band_slack
When converged_only is on, the rest of the band may still be this many times the force tolerance.
struct eonc::neb_options_t::climbing_image_options_t::hybrid_dimer_t ocineb
double sidpp_frontier_tol
Convergence tol before adding images.
bool sidpp_reparam
Reparameterize after growth complete.
bool sidpp_ideal_ksp
Scale spring constant during growth.
Interior images relax a lower-triangular cell with the atoms.
double pressure
Hydrostatic pressure in eV/Angstrom^3.
struct eonc::neb_options_t::spring_options_t::energy_weighting_t weighting
struct eonc::neb_options_t::spring_options_t::onsager_machlup_t om
Zoom-NEB packs every image onto a window around the climbing image once that image is stable and the ...
std::string match_method
"ira" uses IRACompare. "hungarian" is accepted and falls back to ira.
struct eonc::neb_options_t::climbing_image_options_t climbing_image
struct eonc::neb_options_t::zoom_options_t zoom
struct eonc::neb_options_t::endpoint_options_t endpoints
struct eonc::neb_options_t::spring_options_t spring
struct eonc::neb_options_t::solid_state_options_t solid_state
bool match_endpoints
Permute+rotate the reactant onto the product before interpolation.
struct eonc::neb_options_t::path_initialization_t initialization
struct eonc::neb_options_t::mmf_peak_options_t mmf_peaks
struct eonc::optimizer_options_t::sd_t sd
struct eonc::optimizer_options_t::refine_t refine
struct eonc::optimizer_options_t::quickmin_t quickmin
struct eonc::optimizer_options_t::xtsci_t xtsci
struct eonc::optimizer_options_t::cg_t cg
struct eonc::optimizer_options_t::lbfgs_t lbfgs
std::uintptr_t MPIClientComm
Opaque MPI_Comm bits. Read/write with ParametersMpi.h in MPI TUs.
bool thread_safe
When false, NEB/dimer/process_search never share one Potential across threads, even if the backend re...
std::string backend
"nwchemc", "cpmdc", "metatomic", or "xtb"
struct eonc::saddle_search_options_t::dynamics_t dynamics
std::vector< long > displace_atom_list
struct eonc::saddle_search_options_t::confine_positive_t confine_positive