Returns 0 on success, nonzero on error.
44 {
45 int error = 0;
46
47
48
50 magic_enum::enum_cast<JobType>(ini.Get("Main", "job", ""),
51 magic_enum::case_insensitive)
54 ini.GetReal("Main", "temperature",
57 ini.GetInteger("Main", "random_seed",
60 ini.GetBoolean("Main", "checkpoint",
67 ini.GetBoolean("Main", "write_con_forces",
69
73 ini.GetReal("Main", "finite_difference",
75
77 unsigned i = static_cast<unsigned>(std::time(nullptr));
80 } else {
82 }
84 ini.GetInteger("Main", "max_force_calls",
87 ini.GetBoolean("Main", "remove_net_force",
91
92
93
94 std::string potTok = ini.Get("Potential", "potential", "");
95
96
97 if (potTok == "ase_nwcem" || potTok == "ASE_NWCEM") {
98 potTok = "ase_nwchem";
99 }
101 magic_enum::enum_cast<PotType>(potTok, magic_enum::case_insensitive)
104 "Potential", "mpi_poll_period",
107 ini.GetBoolean(
108 "Potential", "lammps_logging",
111 static_cast<int>(ini.GetInteger(
112 "Potential", "lammps_threads",
115 "Potential", "emt_rasmussen",
118 ini.Get("Potential", "ext_pot_path",
121 ini.Get("Potential", "potentials_path",
123
127 } else {
129 }
131 "Potential", "log_potential",
134 "Potential", "thread_safe",
136
137
142 ini.Get("AMS", "forcefield",
145 ini.Get("AMS", "resources",
153 }
154
159 ini.Get("AMS_IO", "forcefield",
165 }
166
170 ini.Get("AMS_ENV", "amshome",
173 ini.Get("AMS_ENV", "scm_tmpdir",
176 ini.Get("AMS_ENV", "scmlicense",
179 ini.Get("AMS_ENV", "scm_pythondir",
182 ini.Get("AMS_ENV", "amsbin",
185 ini.Get("AMS_ENV", "amsresources",
187 }
188
191 ini.Get("XTBPot", "paramset",
196 ini.GetReal("XTBPot", "electronic_temperature",
199 ini.GetInteger("XTBPot", "max_iterations",
205 }
206
209 ini.GetReal("ZBLPot", "cut_inner",
212 ini.GetReal("ZBLPot", "cut_global",
216 throw std::runtime_error(
217 "Switching function must begin before the global cutoff!");
218 }
219 }
220
224 ini.Get("D3Pot", "functional",
225 ini.Get("D4Pot", "functional",
228 "D3Pot", "atm",
229 ini.GetBoolean("D4Pot", "atm",
232 ini.Get("D3Pot", "damping",
235 ini.GetReal("D4Pot", "charge",
237 }
240 ini.Get("ExprPot", "expression",
244 }
247 ini.GetInteger("MOPACPot", "charge",
250 ini.GetInteger("MOPACPot", "spin",
253 ini.GetInteger("MOPACPot", "model",
256 ini.Get("MOPACPot", "engine_path",
258 }
259
262 ini.Get("SocketNWChemPot", "host",
265 "SocketNWChemPot", "port",
268 ini.GetInteger(
269 "SocketNWChemPot", "mem_in_gb",
272 ini.Get("SocketNWChemPot", "nwchem_settings",
274 .nwchem_settings);
276 ini.Get("SocketNWChemPot", "unix_socket_path",
278 .unix_socket_path);
280 ini.GetBoolean("SocketNWChemPot", "unix_socket_mode",
282 .unix_socket_mode);
284 ini.GetBoolean("SocketNWChemPot", "make_template_input",
286 .make_template_input);
287 }
288
289
291 const char *sec = "RgpotPot";
292
293
297 ini.Get(sec, "basis",
298 ini.Get(sec, "nwchem_basis",
301 ini.Get(sec, "theory",
302 ini.Get(sec, "nwchem_theory",
305 ini.Get(sec, "scf_type",
306 ini.Get(sec, "nwchem_scf_type",
309 sec, "functional",
310 ini.Get(sec, "cpmd_functional",
312
314 sec, "cutOffRy",
315 ini.GetReal(
316 sec, "cutoff_ry",
317 ini.GetReal(
318 sec, "cpmd_cut_off_ry",
321 sec, "charge",
322 ini.GetInteger(sec, "nwchem_charge",
325 sec, "multiplicity",
326 ini.GetInteger(
327 sec, "nwchem_multiplicity",
330 ini.Get(sec, "engine_path",
333 ini.Get(sec, "engine_library",
336 ini.Get(sec, "engine_root",
341 ini.GetInteger(sec, "memory_mb",
344 ini.Get(sec, "scratch_dir",
347 ini.Get(sec, "input_block",
350 ini.Get(sec, "permanent_dir",
353 ini.Get(sec, "params_path",
356 ini.GetInteger(
357 sec, "ranks_per_image",
360 ini.Get(sec, "model_path",
365 ini.Get(sec, "length_unit",
368 sec, "extensions_directory",
371 ini.GetBoolean(
372 sec, "check_consistency",
375 ini.GetReal(
376 sec, "uncertainty_threshold",
379 ini.GetBoolean(sec, "torch_determinism_strict",
381 .torch_determinism_strict);
382
384 sec, "paramset",
385 ini.Get(sec, "xtb_paramset",
388 sec, "accuracy",
389 ini.GetReal(sec, "xtb_accuracy",
392 ini.GetReal(sec, "electronic_temperature",
393 ini.GetReal(sec, "xtb_electronic_temperature",
397 static_cast<int>(ini.GetInteger(
398 sec, "max_iterations",
399 ini.GetInteger(sec, "xtb_max_iterations",
403 ini.GetReal(sec, "xtb_charge",
404 static_cast<double>(
407 static_cast<int>(ini.GetInteger(
408 sec, "uhf",
409 ini.GetInteger(
410 sec, "xtb_uhf",
412 const std::string be =
414 if (be == "xtb" || be == "xtbpot" || be == "gfn" || be == "gfnxtb") {
416 ini.Get("XTBPot", "paramset",
419 ini.GetReal("XTBPot", "accuracy",
422 ini.GetReal("XTBPot", "electronic_temperature",
424 .xtb_electronic_temperature);
426 static_cast<int>(ini.GetInteger(
427 "XTBPot", "max_iterations",
430 ini.GetInteger("XTBPot", "uhf",
433 ini.GetReal("XTBPot", "charge",
435 }
436
437
438
439
440 if (be == "cpmd" || be == "cpmdc" || be == "cpmdpot") {
442 rg.functional =
443 ini.Get("cpmd", "functional",
444 ini.Get("cpmd", "cpmd_functional", rg.functional));
445 rg.cutoff_ry = ini.GetReal(
446 "cpmd", "cutOffRy",
447 ini.GetReal("cpmd", "cutoff_ry",
448 ini.GetReal("cpmd", "cpmd_cut_off_ry", rg.cutoff_ry)));
449 rg.charge = ini.GetInteger("cpmd", "charge", rg.charge);
450 rg.multiplicity = ini.GetInteger("cpmd", "multiplicity", rg.multiplicity);
451 rg.title = ini.Get("cpmd", "title", rg.title);
452 rg.memory_mb = ini.GetInteger("cpmd", "memory_mb", rg.memory_mb);
453 rg.input_block = ini.Get("cpmd", "input_block", rg.input_block);
454 }
455 }
456
457
458
460 ini.GetBoolean("Debug", "write_movies",
463 ini.GetInteger(
464 "Debug", "write_movies_interval",
467 ini.GetBoolean(
468 "Debug", "write_deprecated_outs",
471 ini.GetBoolean(
472 "Debug", "estimate_neb_eigenvalues",
475 toLowerCase(ini.Get("Debug", "neb_mmf_estimator",
477
478
479
482 ini.GetReal("Structure Comparison", "distance_difference",
484 .distance_difference);
486 ini.GetReal("Structure Comparison", "neighbor_cutoff",
488 .neighbor_cutoff);
490 ini.GetBoolean("Structure Comparison", "check_rotation",
492 .check_rotation);
494 ini.GetReal("Structure Comparison", "energy_difference",
496 .energy_difference);
499 ini.GetBoolean("Structure Comparison", "indistinguishable_atoms",
501 .indistinguishable_atoms);
504 ini.GetBoolean("Structure Comparison", "remove_translation",
506 .remove_translation);
507
508
509
511 ini.GetBoolean(
512 "Process Search", "minimize_first",
515 ini.GetReal("Process Search", "minimization_offset",
517 .minimization_offset);
518
519
520 auto inp_optMethod =
521 magic_enum::enum_cast<OptType>(ini.Get("Optimizer", "opt_method", "none"),
522 magic_enum::case_insensitive)
526 }
527
529 toLowerCase(ini.Get(
530 "Optimizer", "convergence_metric",
535 *label;
536 } else {
538 "unknown convergence_metric {}",
541 }
542
543 if (ini.HasSection("Refine")) {
545 magic_enum::enum_cast<OptType>(ini.Get("Refine", "opt_method", ""),
546 magic_enum::case_insensitive)
549 ini.GetReal(
550 "Refine", "threshold",
552 }
553
555 "Optimizer", "converged_force",
558 static_cast<size_t>(ini.GetInteger(
559 "Optimizer", "max_iterations",
562 ini.GetReal("Optimizer", "max_move",
564
565 if (ini.HasSection("QuickMin")) {
567 ini.GetReal(
568 "QuickMin", "time_step",
574 ini.GetBoolean("Optimizer", "qm_steepest_descent",
576 .quickmin.steepest_descent);
577 }
578 if (ini.HasSection("FIRE")) {
581 ini.GetReal(
582 "FIRE", "time_step",
588 ini.GetReal("FIRE", "time_step_max",
590 .max_time_step_input);
594 }
595
596 {
597 const char *lbfgs_sec = ini.HasSection("LBFGS") ? "LBFGS" : "Optimizer";
599 ini.GetInteger(
600 lbfgs_sec, "lbfgs_memory",
603 ini.GetReal(lbfgs_sec, "lbfgs_inverse_curvature",
605 .lbfgs.inverse_curvature);
608 ini.GetReal(lbfgs_sec, "lbfgs_max_inverse_curvature",
610 .lbfgs.max_inverse_curvature);
613 ini.GetBoolean(lbfgs_sec, "lbfgs_auto_scale", lbfgs.auto_scale);
614 lbfgs.angle_reset =
615 ini.GetBoolean(lbfgs_sec, "lbfgs_angle_reset", lbfgs.angle_reset);
616 lbfgs.distance_reset =
617 ini.GetBoolean(lbfgs_sec, "lbfgs_distance_reset", lbfgs.distance_reset);
618 lbfgs.curvature =
619 toLowerCase(ini.Get(lbfgs_sec, "lbfgs_curvature", lbfgs.curvature));
620 lbfgs.project_rigid =
621 ini.GetBoolean(lbfgs_sec, "lbfgs_project_rigid", lbfgs.project_rigid);
622 lbfgs.secant =
623 toLowerCase(ini.Get(lbfgs_sec, "lbfgs_secant", lbfgs.secant));
624 lbfgs.precon =
625 toLowerCase(ini.Get(lbfgs_sec, "lbfgs_precon", lbfgs.precon));
626 lbfgs.step = toLowerCase(ini.Get(lbfgs_sec, "lbfgs_step", lbfgs.step));
627 lbfgs.h0 = toLowerCase(ini.Get(lbfgs_sec, "lbfgs_h0", lbfgs.h0));
628 lbfgs.accept =
629 toLowerCase(ini.Get(lbfgs_sec, "lbfgs_accept", lbfgs.accept));
630 lbfgs.extra_updates =
631 ini.GetInteger(lbfgs_sec, "lbfgs_extra_updates", lbfgs.extra_updates);
632 lbfgs.cautious_eps =
633 ini.GetReal(lbfgs_sec, "lbfgs_cautious_eps", lbfgs.cautious_eps);
634 lbfgs.cautious_alpha =
635 ini.GetReal(lbfgs_sec, "lbfgs_cautious_alpha", lbfgs.cautious_alpha);
636 lbfgs.precon_A = ini.GetReal(lbfgs_sec, "lbfgs_precon_A", lbfgs.precon_A);
637 lbfgs.precon_mu =
638 ini.GetReal(lbfgs_sec, "lbfgs_precon_mu", lbfgs.precon_mu);
639 lbfgs.precon_rcut =
640 ini.GetReal(lbfgs_sec, "lbfgs_precon_rcut", lbfgs.precon_rcut);
641 }
642 {
645 toLowerCase(ini.Get("Optimizer", "xtsci_method", xtsci.method));
646 if (ini.HasSection("Xtsci")) {
647 xtsci.method = toLowerCase(ini.Get(
648 "Xtsci", "method", ini.Get("Xtsci", "xtsci_method", xtsci.method)));
649 xtsci.qn_step = toLowerCase(ini.Get("Xtsci", "qn_step", xtsci.qn_step));
650 xtsci.precon = toLowerCase(ini.Get("Xtsci", "precon", xtsci.precon));
651 xtsci.accept = toLowerCase(ini.Get("Xtsci", "accept", xtsci.accept));
652 xtsci.highs =
653 ini.GetBoolean("Xtsci", "highs",
654 ini.GetBoolean("Xtsci", "xtsci_highs", xtsci.highs));
655 xtsci.manifold = toLowerCase(
656 ini.Get("Xtsci", "manifold",
657 ini.Get("Xtsci", "xtsci_manifold", xtsci.manifold)));
658 }
659 xtsci.highs = ini.GetBoolean("Optimizer", "xtsci_highs", xtsci.highs);
661 }
662 if (ini.HasSection("CG")) {
664 ini.GetBoolean(
665 "CG", "cg_no_overshooting",
668 ini.GetBoolean("CG", "cg_knock_out_max_move",
670 .cg.knock_out_max_move);
672 ini.GetBoolean(
673 "CG", "cg_line_search",
676 ini.GetReal(
677 "CG", "cg_line_converged",
680 ini.GetInteger("CG", "cg_max_iter_before_reset",
682 .cg.max_iter_before_reset);
684 ini.GetInteger("CG", "cg_max_iter_line_search",
686 .cg.line_search_max_iter);
687 }
688 if (ini.HasSection("SD")) {
690 ini.GetReal("SD", "sd_alpha",
693 ini.GetBoolean(
694 "SD", "sd_twopoint",
696 }
697
698
699
701 ini.GetReal("Dimer", "finite_angle",
704 ini.GetBoolean("Dimer", "improved",
707 ini.GetReal("Dimer", "converged_angle",
710 "Dimer", "max_iterations",
712 if (auto dimerOpt = magic_enum::enum_cast<OptType>(
713 ini.Get("Dimer", "opt_method", "cg"), magic_enum::case_insensitive);
716 }
718 ini.GetInteger("Dimer", "rotations_min",
721 ini.GetInteger("Dimer", "rotations_max",
724 ini.GetReal("Dimer", "torque_min",
727 ini.GetReal("Dimer", "torque_max",
730 "Dimer", "remove_rotation",
733 ini.GetReal("Dimer", "lor_residual_tol",
735 {
736 const auto rotTok =
737 toLowerCase(ini.Get("Dimer", "rotation_backend", "classical"));
739 magic_enum::enum_cast<DimerRotationBackend>(
740 rotTok, magic_enum::case_insensitive)
742 }
743
744
746 ini.GetBoolean("Surrogate", "use_surrogate", false);
751 }
753 "Surrogate", "gp_uncertainty",
755 if (ini.HasSection("Surrogate")) {
757 magic_enum::enum_cast<PotType>(ini.Get("Surrogate", "potential", ""),
758 magic_enum::case_insensitive)
761 throw std::runtime_error("We only support catlearn for GP right now");
762 }
763 }
764
765 if (ini.HasSection("CatLearn")) {
767 ini.Get("CatLearn", "catl_path", "");
769 ini.Get("CatLearn", "model", "catl_model");
771 ini.Get("CatLearn", "prior", "catl_prior");
773 ini.GetBoolean("CatLearn", "use_derivatives", "catl_deriv");
775 ini.GetBoolean("CatLearn", "use_fingerprint", "catl_fingerprint");
777 "CatLearn", "parallel_hyperparameter_opt", "catl_parallel");
778 }
779
780 if (ini.HasSection("ASE_ORCA")) {
782 ini.Get("ASE_ORCA", "orca_path", "");
784 ini.Get("ASE_ORCA", "nproc", "1");
786 ini.Get("ASE_ORCA", "simpleinput", "");
788 static_cast<int>(ini.GetInteger("ASE_ORCA", "charge", 0));
790 static_cast<int>(ini.GetInteger("ASE_ORCA", "multiplicity", 1));
791 }
792
793 if (ini.HasSection("ASE_NWCHEM")) {
795 ini.Get("ASE_NWCHEM", "nwchem_path", "");
797 ini.Get("ASE_NWCHEM", "nproc", "1");
799 ini.Get("ASE_NWCHEM", "mpi_launcher",
802 ini.Get("ASE_NWCHEM", "multiplicity", "");
804 ini.GetReal("ASE_NWCHEM", "scf_thresh", 1e-5);
806 ini.GetInteger("ASE_NWCHEM", "scf_maxiter", 200);
808 ini.Get("ASE_NWCHEM", "basis",
811 ini.Get("ASE_NWCHEM", "memory",
813 }
814
815 if (ini.HasSection("Metatomic")) {
817 ini.Get("Metatomic", "model_path", "");
819 ini.Get("Metatomic", "device", "cpu");
821 ini.Get("Metatomic", "length_unit", "angstrom");
823 ini.Get("Metatomic", "extensions_directory", "");
825 ini.GetBoolean("Metatomic", "check_consistency", false);
827 ini.GetReal("Metatomic", "uncertainty_threshold", -1.0);
829 ini.Get("Metatomic", "energy_output",
832 ini.Get("Metatomic", "energy_uncertainty_output",
834 .energy_uncertainty_output);
836 ini.Get("Metatomic", "force_output",
839 ini.GetBoolean("Metatomic", "non_conservative", false);
841 ini.GetBoolean("Metatomic", "random_rotation", false);
843 static_cast<long>(
844 ini.GetInteger("Metatomic", "n_symmetry_rotations", 0));
846 ini.GetBoolean("Metatomic", "deterministic", true);
848 ini.GetBoolean("Metatomic", "deterministic_strict", false);
850 _variant.
base = ini.Get(
"Metatomic",
"variant_base",
"");
851 _variant.energy = ini.Get("Metatomic", "variant_energy", "");
852 _variant.energy_uncertainty =
853 ini.Get("Metatomic", "variant_energy_uncertainty", "");
854 _variant.force = ini.Get("Metatomic", "variant_force", "");
855 }
856
857 if (ini.HasSection("Serve")) {
861 static_cast<uint16_t>(ini.GetInteger(
864 ini.GetInteger("Serve", "replicas",
867 static_cast<uint16_t>(ini.GetInteger(
868 "Serve", "gateway_port",
871 ini.Get("Serve", "endpoints",
873 }
874
875
877 ini.GetBoolean("Surrogate", "gp_linear_path_always",
879 .linear_path_always);
880
881
883 ini.GetReal("Lanczos", "tolerance",
886 "Lanczos", "max_iterations",
889 ini.GetBoolean("Lanczos", "quit_early",
891 if (ini.HasValue("Lanczos", "phva_atoms")) {
893 toLowerCase(ini.Get("Lanczos", "phva_atoms", "All"));
894 }
895
896
898 ini.GetReal("Davidson", "tolerance",
901 ini.GetInteger(
902 "Davidson", "max_iterations",
905 ini.GetBoolean("Davidson", "diagonal_preconditioner",
907 .diagonal_preconditioner);
908 if (ini.HasValue("Davidson", "phva_atoms")) {
910 toLowerCase(ini.Get("Davidson", "phva_atoms", "All"));
911 }
912
913
915 ini.GetReal("ARTn", "push_step_size",
918 ini.GetReal("ARTn", "force_threshold",
921 ini.GetInteger("ARTn", "max_iterations",
926 ini.Get("ARTn", "nperp_limitation",
929 "ARTn", "lanczos_min_size",
935
936
938 ini.GetReal("IRA", "distance_threshold",
941 ini.GetReal("IRA", "symmetry_threshold",
945
946
948 "GPR Dimer", "finite_angle",
951 "GPR Dimer", "converged_angle",
954 ini.GetReal(
955 "GPR Dimer", "relaxation_converged_angle",
958 static_cast<long>(ini.GetInteger(
959 "GPR Dimer", "max_initial_rotation_iterations",
962 static_cast<long>(ini.GetInteger(
963 "GPR Dimer", "max_relaxation_rotation_iterations",
966 static_cast<long>(ini.GetInteger(
967 "GPR Dimer", "divisor_t_dimer",
971 "GPR Dimer", "max_outer_iterations",
975 "GPR Dimer", "max_inner_iterations",
978 ini.GetReal(
979 "GPR Dimer", "max_midpoint_displacement",
982 ini.Get("GPR Dimer", "rotation_opt_method",
985 ini.Get("GPR Dimer", "translation_opt_method",
988 "GPR Dimer", "active_radius",
991 ini.GetReal("GPR Dimer", "dimer_separation",
994 ini.GetReal("GPR Dimer", "convex_region_step_size",
997 ini.GetReal("GPR Dimer", "max_step_size",
1000 "GPR Dimer", "ratio_at_limit",
1003 "GPR Dimer", "nogp_initial_rotations",
1006 ini.GetBoolean(
1007 "GPR Dimer", "nogp_init_translations",
1010 ini.GetBoolean(
1011 "GPR Dimer", "has_many_iterations",
1013
1015 ini.Get("GPR Dimer", "hyperparameter_opt_method",
1017 .gpr_params.hyper_opt_method);
1019 ini.GetReal(
1020 "GPR Dimer", "gpr_variance",
1023 ini.GetReal("GPR Dimer", "gpr_jitter_variance",
1025 .gpr_params.jitter_sigma2);
1027 ini.GetReal("GPR Dimer", "gpr_noise_variance",
1029 .gpr_params.noise_sigma2);
1031 ini.GetReal(
1032 "GPR Dimer", "prior_mean",
1035 ini.GetReal("GPR Dimer", "prior_variance",
1037 .gpr_params.prior_sigma2);
1039 ini.GetReal(
1040 "GPR Dimer", "prior_degrees_of_freedom",
1042
1044 ini.GetBoolean("GPR Dimer", "check_derivatives",
1046 .opt_params.check_derivatives);
1048 static_cast<int>(
1049 ini.GetInteger("GPR Dimer", "opt_max_iterations",
1051 .opt_params.max_iterations));
1053 ini.GetReal(
1054 "GPR Dimer", "opt_tol_func",
1057 ini.GetReal(
1058 "GPR Dimer", "opt_tol_sol",
1061 ini.GetReal("GPR Dimer", "opt_lambda_limit",
1063 .opt_params.lambda_limit);
1065 ini.GetReal("GPR Dimer", "opt_lambda_init",
1067 .opt_params.lambda_init);
1068
1070 static_cast<int>(
1071 ini.GetInteger("GPR Dimer", "report_level",
1073 .debug_params.report_level));
1075 static_cast<int>(
1076 ini.GetInteger("GPR Dimer", "debug_level",
1078 .debug_params.debug_level));
1080 ini.Get(
1081 "GPR Dimer", "debug_output_directory",
1084 ini.Get("GPR Dimer", "debug_position_basename",
1086 .debug_params.pos_file);
1088 ini.Get("GPR Dimer", "debug_energy_basename",
1090 .debug_params.energy_file);
1092 ini.Get("GPR Dimer", "debug_gradient_basename",
1094 .debug_params.grad_file);
1097 ini.GetReal("GPR Dimer", "debug_midpoint_offset",
1099 .debug_params.offset_mid_point);
1101 "GPR Dimer", "debug_y_step",
1104 "GPR Dimer", "debug_z_step",
1106
1108 ini.GetBoolean("GPR Dimer", "use_prune",
1110 .prune_params.use_prune);
1112 static_cast<int>(ini.GetInteger(
1113 "GPR Dimer", "start_prune_at",
1116 static_cast<int>(ini.GetInteger(
1117 "GPR Dimer", "nprune_vals",
1120 ini.GetReal("GPR Dimer", "prune_threshold",
1122 .prune_params.threshold);
1123
1124
1125
1127 "Prefactor", "default_value",
1130 ini.GetReal("Prefactor", "max_value",
1133 ini.GetReal("Prefactor", "min_value",
1136 "Prefactor", "within_radius",
1139 ini.GetReal(
1140 "Prefactor", "min_displacement",
1143 ini.Get("Prefactor", "rate_estimation",
1146 ini.Get("Prefactor", "configuration",
1149 ini.GetBoolean(
1150 "Prefactor", "all_free_atoms",
1153 ini.Get("Prefactor", "filter_scheme",
1156 "Prefactor", "filter_fraction",
1158
1159
1160
1161 if (ini.HasValue("Hessian", "phva_atoms")) {
1163 toLowerCase(ini.Get("Hessian", "phva_atoms", "All"));
1164 } else if (ini.HasValue("Hessian", "atom_list")) {
1166 toLowerCase(ini.Get("Hessian", "atom_list", "All"));
1167 }
1169 "Hessian", "zero_freq_value",
1172 ini.Get("Hessian", "fd_scheme",
1175 ini.GetBoolean("Hessian", "resume",
1178 ini.Get("Hessian", "checkpoint_path",
1181 ini.GetBoolean("Hessian", "write_modes",
1183
1184
1185 const std::string neb_section = "Nudged Elastic Band";
1186
1188 ini.GetInteger(neb_section, "images",
1191 ini.GetBoolean(
1192 neb_section, "solid_state",
1195 ini.GetReal(neb_section, "solid_state_weight",
1198 neb_section, "solid_state_pressure",
1201 neb_section, "max_iterations",
1204 neb_section, "converged_force",
1206 auto neb_optMethod =
1207 magic_enum::enum_cast<OptType>(ini.Get(neb_section, "opt_method", "none"),
1208 magic_enum::case_insensitive)
1212 }
1214 neb_section, "setup_mmf_peaks",
1217 neb_section, "mmf_peak_tolerance",
1220 ini.GetBoolean(neb_section, "match_endpoints",
1223 ini.Get(neb_section, "match_method",
1225
1227 ini.GetReal(neb_section, "spring",
1230 ini.GetBoolean(
1231 neb_section, "elastic_band",
1234 ini.GetBoolean(
1235 neb_section, "doubly_nudged",
1238 ini.GetBoolean(
1239 neb_section, "doubly_nudged_switching",
1241
1243 ini.GetBoolean(
1244 neb_section, "energy_weighted",
1247 ini.GetReal(
1248 neb_section, "ew_trigger",
1251 ini.GetReal(
1252 neb_section, "ew_ksp_min",
1255 ini.GetReal(
1256 neb_section, "ew_ksp_max",
1258
1260 neb_section, "onsager_machlup",
1263 ini.GetBoolean(
1264 neb_section, "om_optimize_k",
1267 ini.GetReal(neb_section, "om_k_scale",
1270 ini.GetReal(neb_section, "om_k_min",
1273 ini.GetReal(neb_section, "om_k_max",
1275
1277 ini.GetBoolean(
1278 neb_section, "climbing_image_method",
1281 ini.GetBoolean(neb_section, "climbing_image_converged_only",
1283 .climbing_image.converged_only);
1285 ini.GetReal(
1286 neb_section, "climbing_image_band_slack",
1289 ini.GetBoolean(neb_section, "old_tangent",
1291 .climbing_image.use_old_tangent);
1293 ini.GetReal(neb_section, "ci_after",
1295 .climbing_image.trigger_force);
1297 ini.GetReal(neb_section, "ci_after_rel",
1299 .climbing_image.trigger_factor);
1300
1302 oci.
use_mmf = ini.GetBoolean(neb_section,
"ci_mmf", oci.use_mmf);
1303 oci.trigger_force =
1304 ini.GetReal(neb_section, "ci_mmf_after", oci.trigger_force);
1305 oci.trigger_factor =
1306 ini.GetReal(neb_section, "ci_mmf_after_rel", oci.trigger_factor);
1307 oci.max_steps = ini.GetInteger(neb_section, "ci_mmf_nsteps", oci.max_steps);
1308 oci.ci_stability_count = ini.GetInteger(
1309 neb_section, "ci_mmf_ci_stability_count", oci.ci_stability_count);
1310 oci.angle_tol = ini.GetReal(neb_section, "ci_mmf_angle", oci.angle_tol);
1311 oci.restore_unhelpful = ini.GetBoolean(
1312 neb_section, "ci_mmf_restore_unhelpful", oci.restore_unhelpful);
1313
1315 zoom.
enabled = ini.GetBoolean(neb_section,
"zoom_neb", zoom.enabled);
1316 zoom.alpha = ini.GetReal(neb_section, "zoom_alpha", zoom.alpha);
1317 zoom.offset = ini.GetInteger(neb_section, "zoom_offset", zoom.offset);
1318 zoom.mode = magic_enum::enum_cast<neb_options_t::zoom_options_t::Mode>(
1319 ini.Get(neb_section, "zoom_mode",
1320 std::string(magic_enum::enum_name(zoom.mode))),
1321 magic_enum::case_insensitive)
1322 .value_or(zoom.mode);
1323 zoom.activation_threshold =
1324 ini.GetReal(neb_section, "zoom_after", zoom.activation_threshold);
1325 zoom.interpolation =
1326 magic_enum::enum_cast<neb_options_t::zoom_options_t::Interpolation>(
1327 ini.Get(neb_section, "zoom_interpolation",
1328 std::string(magic_enum::enum_name(zoom.interpolation))),
1329 magic_enum::case_insensitive)
1330 .value_or(zoom.interpolation);
1331 zoom.stability_count =
1332 ini.GetInteger(neb_section, "zoom_ci_stability", zoom.stability_count);
1333 zoom.max_iterations =
1334 ini.GetInteger(neb_section, "zoom_max_iterations", zoom.max_iterations);
1335
1338 magic_enum::enum_cast<NEBInit>(ini.Get(neb_section, "initializer", ""),
1339 magic_enum::case_insensitive)
1341 init.input_path = ini.Get(neb_section, "initial_path_in", init.input_path);
1342 init.max_iterations =
1343 ini.GetInteger(neb_section, "init_max_iterations", init.max_iterations);
1344 init.nsteps = ini.GetInteger(neb_section, "init_nsteps", init.nsteps);
1345 init.max_move = ini.GetReal(neb_section, "init_max_move", init.max_move);
1346 init.force_tolerance =
1347 ini.GetReal(neb_section, "init_force_threshold", init.force_tolerance);
1348 init.sidpp_alpha =
1349 ini.GetReal(neb_section, "sidpp_growth_alpha", init.sidpp_alpha);
1350 init.sidpp_frontier_tol =
1351 ini.GetReal(neb_section, "sidpp_frontier_tol", init.sidpp_frontier_tol);
1352 init.sidpp_reparam =
1353 ini.GetBoolean(neb_section, "sidpp_reparameterize", init.sidpp_reparam);
1354 init.sidpp_ideal_ksp =
1355 ini.GetBoolean(neb_section, "sidpp_ideal_ksp", init.sidpp_ideal_ksp);
1356 auto neb_ipath_optMethod =
1357 magic_enum::enum_cast<OptType>(
1358 ini.Get(neb_section, "ipath_opt_method", "none"),
1359 magic_enum::case_insensitive)
1363 neb_ipath_optMethod;
1364 }
1365 init.oversampling =
1366 ini.GetBoolean(neb_section, "oversampling", init.oversampling);
1367 init.oversampling_factor = ini.GetInteger(neb_section, "oversampling_factor",
1368 init.oversampling_factor);
1369
1371 neb_section, "minimize_endpoints",
1374 ini.GetBoolean(
1375 neb_section, "minimize_endpoints_for_ipath",
1377
1378
1379
1381 "Dynamics", "time_step",
1387 ini.GetReal("Dynamics", "time",
1394 static_cast<long>(std::floor(
1397 0.5));
1398 } else {
1400 }
1402 toLowerCase(ini.Get("Dynamics", "thermostat", "andersen"));
1404 "Dynamics", "andersen_alpha",
1407 ini.GetReal(
1408 "Dynamics", "andersen_collision_period",
1414 ini.GetReal("Dynamics", "nose_mass",
1417 ini.GetReal("Dynamics", "langevin_friction",
1419 .langevin_friction_input);
1423 {
1425 th.path_beads = ini.GetInteger("Dynamics", "path_beads", th.path_beads);
1426 th.path_springs =
1427 toLowerCase(ini.Get("Dynamics", "path_springs", th.path_springs));
1428 th.path_eco_omega_max =
1429 ini.GetReal("Dynamics", "path_eco_omega_max", th.path_eco_omega_max);
1430 th.path_gle_file = ini.Get("Dynamics", "path_gle_file", th.path_gle_file);
1431 th.path_pile_tau_input =
1432 ini.GetReal("Dynamics", "path_pile_tau", th.path_pile_tau_input);
1434 th.path_pile_tau = timeUnit > 0.0 ? th.path_pile_tau_input / timeUnit : 0.0;
1435 th.path_pile_scale =
1436 ini.GetReal("Dynamics", "path_pile_scale", th.path_pile_scale);
1437 const long seed = ini.GetInteger("Dynamics", "path_seed",
1438 static_cast<long>(th.path_seed));
1439 if (seed < 0) {
1440 throw std::invalid_argument("[Dynamics] path_seed must be non-negative");
1441 }
1442 th.path_seed = static_cast<std::uint64_t>(seed);
1443 if (th.path_springs != "trotter" && th.path_springs != "eco") {
1444 throw std::invalid_argument(
1445 "[Dynamics] path_springs must be trotter or eco, not " +
1446 th.path_springs);
1447 }
1448 }
1449
1450
1451
1453 ini.GetBoolean(
1454 "Parallel Replica", "stop_after_transition",
1457 ini.GetBoolean("Parallel Replica", "refine_transition",
1459 .refine_transition);
1461 ini.GetBoolean("Parallel Replica", "dephase_loop_stop",
1463 .dephase_loop_stop);
1465 ini.GetReal("Parallel Replica", "dephase_time",
1467 .dephase_time_input);
1473 ini.GetInteger("Parallel Replica", "dephase_loop_max",
1475 .dephase_loop_max);
1478 ini.GetReal("Parallel Replica", "state_check_interval",
1480 .state_check_interval_input);
1486 ini.GetReal("Parallel Replica", "state_save_interval",
1488 .state_check_interval_input);
1494 ini.GetReal("Parallel Replica", "post_transition_time",
1496 .corr_time_input);
1500
1501
1502
1504 ini.GetReal("TAD", "low_temperature",
1507 ini.GetReal("TAD", "min_prefactor",
1510 ini.GetReal("TAD", "confidence",
1512
1513
1514
1517 toLowerCase(ini.Get("Replica Exchange", "temperature_distribution",
1521 ini.GetInteger(
1522 "Replica Exchange", "replicas",
1525 ini.GetInteger("Replica Exchange", "exchange_trials",
1527 .exchange_trials);
1529 ini.GetReal("Replica Exchange", "sampling_time",
1531 .sampling_time_input);
1537 ini.GetReal("Replica Exchange", "temperature_low",
1540 ini.GetReal("Replica Exchange", "temperature_high",
1542 .temperature_high);
1544 ini.GetReal("Replica Exchange", "exchange_period",
1546 .exchange_period_input);
1551
1552
1553
1555 ini.GetReal(
1556 "Hyperdynamics", "bb_rmd_time",
1562 toLowerCase(ini.Get(
1563 "Hyperdynamics", "bb_boost_atomlist",
1566 ini.GetReal("Hyperdynamics", "bb_dvmax",
1569 ini.GetReal("Hyperdynamics", "bb_stretch_threshold",
1572 ini.GetReal("Hyperdynamics", "bb_ds_curvature",
1575 ini.GetReal("Hyperdynamics", "bb_rcut",
1578 toLowerCase(ini.Get(
1579 "Hyperdynamics", "bias_potential",
1581
1582
1583
1585 ini.Get("Saddle Search", "method",
1588 toLowerCase(ini.Get(
1589 "Saddle Search", "min_mode_method",
1592 ini.GetReal("Saddle Search", "displace_magnitude",
1594 .displace_magnitude);
1596 ini.GetReal(
1597 "Saddle Search", "displace_radius",
1600 "Saddle Search", "max_energy",
1603 ini.GetInteger(
1604 "Saddle Search", "max_iterations",
1608 ini.GetBoolean("Saddle Search", "nonnegative_displacement_abort",
1610 .nonnegative_displacement_abort);
1612 ini.GetReal("Saddle Search", "max_single_displace",
1614 .max_single_displace);
1616 ini.GetReal(
1617 "Saddle Search", "converged_force",
1620 ini.GetReal(
1621 "Saddle Search", "perp_force_ratio",
1624 toLowerCase(ini.Get("Saddle Search", "client_displace_type",
1627 ini.GetInteger("Saddle Search", "nonlocal_count_abort",
1629 .nonlocal_count_abort);
1631 ini.GetReal("Saddle Search", "nonlocal_distance_abort",
1633 .nonlocal_distance_abort);
1646 }
1647
1648 {
1649 std::string atomListStr =
1650 ini.Get("Saddle Search", "displace_atom_list", "");
1651 if (!atomListStr.empty()) {
1652 std::stringstream ss(atomListStr);
1653 std::string token;
1654 while (std::getline(ss, token, ',')) {
1655 size_t start = token.find_first_not_of(" \t");
1656 size_t end = token.find_last_not_of(" \t");
1657 if (start != std::string::npos) {
1660 std::stol(token.substr(start, end - start + 1)));
1661 }
1662 }
1663 }
1664 }
1666 ini.GetBoolean("Saddle Search", "confine_positive",
1668 .confine_positive.enabled);
1670 .confine_positive.enabled) {
1673 ini.GetBoolean("Saddle Search", "bowl_breakout",
1675 .confine_positive.bowl_breakout);
1678 ini.GetInteger("Saddle Search", "bowl_active_atoms",
1680 .confine_positive.bowl_active);
1683 ini.GetReal("Saddle Search", "confine_positive_min_move",
1685 .confine_positive.min_force);
1688 ini.GetReal("Saddle Search", "confine_positive_scale_ratio",
1690 .confine_positive.scale_ratio);
1692 ini.GetReal("Saddle Search", "confine_positive_boost",
1694 .confine_positive.boost);
1697 ini.GetInteger("Saddle Search", "confine_positive_min_active",
1699 .confine_positive.min_active);
1700 }
1704 ini.GetReal("Saddle Search", "dynamics_temperature",
1706 .dynamics.temperature);
1709 ini.GetReal("Saddle Search", "dynamics_state_check_interval",
1711 .dynamics.state_check_interval_input);
1719 ini.GetReal("Saddle Search", "dynamics_record_interval",
1721 .dynamics.record_interval_input);
1728 ini.GetBoolean("Saddle Search", "dynamics_linear_interpolation",
1730 .dynamics.linear_interpolation);
1732 ini.GetBoolean(
1733 "Saddle Search", "remove_rotation",
1737 ini.GetReal("Saddle Search", "dynamics_max_init_curvature",
1739 .dynamics.max_init_curvature);
1742 ini.GetReal("Saddle Search", "zero_mode_abort_curvature",
1744 .zero_mode_abort_curvature);
1745
1746
1747
1749 ini.GetReal(
1750 "Basin Hopping", "displacement",
1753 ini.GetReal("Basin Hopping", "push_apart_distance",
1755 .push_apart_distance);
1758 ini.GetReal("Basin Hopping", "initial_random_structure_probability",
1760 .initial_random_structure_probability);
1762 ini.GetInteger("Basin Hopping", "steps",
1765 ini.GetInteger(
1766 "Basin Hopping", "quenching_steps",
1769 ini.GetBoolean("Basin Hopping", "single_atom_displace",
1771 .single_atom_displace);
1773 ini.GetBoolean("Basin Hopping", "significant_structure",
1775 .significant_structure);
1777 toLowerCase(ini.Get("Basin Hopping", "displacement_algorithm",
1785 .displacement_algorithm);
1787 }
1790 toLowerCase(ini.Get("Basin Hopping", "displacement_distribution",
1797 .displacement_distribution);
1799 }
1801 ini.GetReal(
1802 "Basin Hopping", "swap_probability",
1805 "Basin Hopping", "jump_max",
1808 ini.GetInteger(
1809 "Basin Hopping", "jump_steps",
1812 ini.GetBoolean("Basin Hopping", "adjust_displacement",
1814 .adjust_displacement);
1816 ini.GetInteger(
1817 "Basin Hopping", "adjust_period",
1820 ini.GetReal(
1821 "Basin Hopping", "adjust_fraction",
1824 ini.GetReal(
1825 "Basin Hopping", "target_ratio",
1828 ini.GetBoolean(
1829 "Basin Hopping", "write_unique",
1832 "Basin Hopping", "stop_energy",
1834
1835
1836
1839 "Global Optimization", "move_method",
1842 toLowerCase(
1843 ini.Get("Global Optimization", "decision_method",
1850 .decision_method);
1852 }
1854 ini.GetInteger(
1855 "Global Optimization", "steps",
1858 "Global Optimization", "beta",
1861 "Global Optimization", "alpha",
1864 ini.GetInteger(
1865 "Global Optimization", "mdmin",
1868 ini.GetReal("Global Optimization", "target_energy",
1870 .target_energy);
1871
1872
1873
1879 ini.GetReal("BGSD", "gradientfinitedifference",
1881 .gradient_finite_difference);
1883 ini.GetReal(
1884 "BGSD", "grad2energyconvergence",
1887 ini.GetReal(
1888 "BGSD", "grad2forceconvergence",
1890
1891
1892
1894 ini.GetReal("Monte Carlo", "step_size",
1897 ini.GetInteger("Monte Carlo", "steps",
1899
1900
1901 {
1903 o.mode = ini.Get("Instanton", "mode", o.mode);
1904 o.reactant_filename =
1905 ini.Get("Instanton", "reactant_filename", o.reactant_filename);
1906 o.product_filename =
1907 ini.Get("Instanton", "product_filename", o.product_filename);
1908 o.initial_path = ini.Get("Instanton", "initial_path", o.initial_path);
1909 o.beads = ini.GetInteger("Instanton", "beads", o.beads);
1910 o.beta_hbar_omega =
1911 ini.GetReal("Instanton", "beta_hbar_omega", o.beta_hbar_omega);
1912 o.max_iterations =
1913 ini.GetInteger("Instanton", "max_iterations", o.max_iterations);
1914 o.force_tolerance =
1915 ini.GetReal("Instanton", "force_tolerance", o.force_tolerance);
1916 o.hessian_stride =
1917 ini.GetInteger("Instanton", "hessian_stride", o.hessian_stride);
1918 o.saddle_filename =
1919 ini.Get("Instanton", "saddle_filename", o.saddle_filename);
1920 o.temperature = ini.GetReal("Instanton", "temperature", o.temperature);
1921 o.temperatures.clear();
1922 {
1923 const std::string list = ini.Get("Instanton", "temperatures", "");
1924 std::stringstream ss(list);
1925 std::string token;
1926 while (std::getline(ss, token, ',')) {
1927 const size_t start = token.find_first_not_of(" \t");
1928 const size_t end = token.find_last_not_of(" \t");
1929 if (start == std::string::npos) {
1930 continue;
1931 }
1932 try {
1933 o.temperatures.push_back(
1934 std::stod(token.substr(start, end - start + 1)));
1935 } catch (const std::exception &) {
1936 throw std::invalid_argument(
1937 "[Instanton] temperatures must be comma-separated kelvin "
1938 "values, not " +
1939 token);
1940 }
1941 }
1942 }
1943 o.half_ring = ini.GetBoolean("Instanton", "half_ring", o.half_ring);
1944 o.initial_hessians =
1945 ini.Get("Instanton", "initial_hessians", o.initial_hessians);
1946 if (o.initial_hessians != "saddle" &&
1947 o.initial_hessians != "finite_difference") {
1948 throw std::invalid_argument("[Instanton] initial_hessians must be saddle "
1949 "or finite_difference, not " +
1950 o.initial_hessians);
1951 }
1952 o.energy_shift = ini.GetReal("Instanton", "energy_shift", o.energy_shift);
1953 o.bead_ladder = ini.GetBoolean("Instanton", "bead_ladder", o.bead_ladder);
1954 o.hessian_final = ini.Get("Instanton", "hessian_final", o.hessian_final);
1955 o.springs = toLowerCase(ini.Get("Instanton", "springs", o.springs));
1956 if (o.springs != "trotter" && o.springs != "eco") {
1957 throw std::invalid_argument(
1958 "[Instanton] springs must be trotter or eco, not " + o.springs);
1959 }
1960 if (o.mode != "splitting" && o.mode != "rate") {
1961 throw std::invalid_argument("[Instanton] mode must be splitting or rate, "
1962 "not " +
1963 o.mode);
1964 }
1965 o.pi_planes = ini.GetInteger("Instanton", "pi_planes", o.pi_planes);
1966 o.pi_beads = ini.GetInteger("Instanton", "pi_beads", o.pi_beads);
1967 o.pi_equilibration_steps = ini.GetInteger(
1968 "Instanton", "pi_equilibration_steps", o.pi_equilibration_steps);
1969 o.pi_sampling_steps =
1970 ini.GetInteger("Instanton", "pi_sampling_steps", o.pi_sampling_steps);
1971 o.pi_time_step = ini.GetReal("Instanton", "pi_time_step", o.pi_time_step);
1972 o.pi_thermostat =
1973 toLowerCase(ini.Get("Instanton", "pi_thermostat", o.pi_thermostat));
1974 o.pi_gle_file = ini.Get("Instanton", "pi_gle_file", o.pi_gle_file);
1975 o.pi_pile_tau = ini.GetReal("Instanton", "pi_pile_tau", o.pi_pile_tau);
1976 o.pi_pile_scale =
1977 ini.GetReal("Instanton", "pi_pile_scale", o.pi_pile_scale);
1978 o.pi_seed = ini.GetInteger("Instanton", "pi_seed", o.pi_seed);
1979 o.pi_direction =
1980 toLowerCase(ini.Get("Instanton", "pi_direction", o.pi_direction));
1981 o.pi_reactant_extent =
1982 ini.GetReal("Instanton", "pi_reactant_extent", o.pi_reactant_extent);
1983 o.pi_recrossing_parents = ini.GetInteger(
1984 "Instanton", "pi_recrossing_parents", o.pi_recrossing_parents);
1985 o.pi_recrossing_children = ini.GetInteger(
1986 "Instanton", "pi_recrossing_children", o.pi_recrossing_children);
1987 o.pi_recrossing_time =
1988 ini.GetReal("Instanton", "pi_recrossing_time", o.pi_recrossing_time);
1989 o.pi_recrossing_spacing = ini.GetInteger(
1990 "Instanton", "pi_recrossing_spacing", o.pi_recrossing_spacing);
1992 }
1993
1994
1995
1997 ini.Get("OH_TST", "reactant_filename",
2000 ini.Get("OH_TST", "product_filename",
2003 ini.GetReal("OH_TST", "time_step",
2006 ini.GetInteger("OH_TST", "equil_steps",
2009 ini.GetInteger("OH_TST", "sample_steps",
2012 ini.GetInteger("OH_TST", "max_planes",
2015 ini.GetReal("OH_TST", "plane_mass",
2018 ini.GetReal("OH_TST", "alpha_rot",
2021 ini.GetReal("OH_TST", "plane_time_step",
2026 ini.GetReal("OH_TST", "dtheta_max",
2029 ini.GetReal("OH_TST", "force_tol",
2034 ini.GetInteger(
2035 "OH_TST", "reactant_md_steps",
2038 ini.Get("OH_TST", "symmetry_products",
2041 ini.GetReal("OH_TST", "max_delta_a",
2044 ini.Get("OH_TST", "thermostat",
2047 ini.Get("OH_TST", "gle_a_file",
2050 ini.GetBoolean("OH_TST", "pmf_scan",
2053 ini.GetInteger("OH_TST", "scan_planes",
2055
2057}
#define EONC_LOG_ERROR(...)
#define EONC_LOG_WARNING(...)
const gp_surrogate_options_t & gp_surrogate_options() const
const potential_options_t & potential_options() const
const saddle_search_options_t & saddle_search_options() const
const global_optimization_options_t & global_optimization_options() const
const basin_hopping_options_t & basin_hopping_options() const
const char DISP_LISTED_ATOMS[]
const char DISP_NOT_FCC_OR_HCP[]
const char DISP_MIN_COORDINATED[]
const char DISP_LAST_ATOM[]
void set_write_con_forces(bool enabled) noexcept
Whether written .con frames carry "Forces of Component" sections.
double random(long newSeed=0)
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 socket_nwchem_options_t & socket_nwchem_options(Parameters &p)
static replica_exchange_options_t & replica_exchange_options(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 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 ams_options_t & ams_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 rgpot_options_t & rgpot_options(Parameters &p)
static metatomic_options_t & metatomic_options(Parameters &p)
static davidson_options_t & davidson_options(Parameters &p)
static basin_hopping_options_t & basin_hopping_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)
std::string scm_pythondir
struct eonc::ams_options_t::env_t env
std::string nperp_limitation
std::string displacement_algorithm
double push_apart_distance
bool significant_structure
bool single_atom_displace
std::string displacement_distribution
double initial_random_structure_probability
double grad2force_convergence
double gradient_finite_difference
double grad2energy_convergence
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.
bool estimate_neb_eigenvalues
long write_movies_interval
bool write_deprecated_outs
std::string decision_method
std::string hyper_opt_method
struct eonc::gpr_dimer_options_t::prune_params_t prune_params
struct eonc::gpr_dimer_options_t::gpr_params_t gpr_params
long max_outer_iterations
long max_inner_iterations
struct eonc::gpr_dimer_options_t::debug_params_t debug_params
std::string trans_opt_method
struct eonc::gpr_dimer_options_t::opt_params_t opt_params
std::string rot_opt_method
std::string checkpoint_path
std::string boost_atom_list
std::string bias_potential
double distance_threshold
double symmetry_threshold
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 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
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::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
std::string symmetry_products
std::string product_filename
std::string reactant_filename
struct eonc::optimizer_options_t::refine_t refine
double record_interval_input
double dephase_time_input
double state_check_interval
double state_check_interval_input
bool thread_safe
When false, NEB/dimer/process_search never share one Potential across threads, even if the backend re...
std::string filter_scheme
std::string configuration
double exchange_period_input
double sampling_time_input
std::string temperature_distribution
double uncertainty_threshold
double xtb_electronic_temperature
bool torch_determinism_strict
std::string permanent_dir
std::string engine_library
std::string backend
"nwchemc", "cpmdc", "metatomic", or "xtb"
std::string extensions_directory
double state_check_interval
double state_check_interval_input
double record_interval_input
bool linear_interpolation
double max_init_curvature
long nonlocal_count_abort
double max_single_displace
bool nonnegative_displacement_abort
struct eonc::saddle_search_options_t::dynamics_t dynamics
std::string displace_type
double displace_magnitude
std::string minmode_method
std::vector< long > displace_atom_list
struct eonc::saddle_search_options_t::confine_positive_t confine_positive
double nonlocal_distance_abort
double zero_mode_abort_curvature
std::string nwchem_settings
std::string unix_socket_path
double langevin_friction_input
double andersen_tcol_input