MADNESS 0.10.1
CalculationParameters.h
Go to the documentation of this file.
1/*
2 This file is part of MADNESS.
3
4 Copyright (C) 2007,2010 Oak Ridge National Laboratory
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
20 For more information please contact:
21
22 Robert J. Harrison
23 Oak Ridge National Laboratory
24 One Bethel Valley Road
25 P.O. Box 2008, MS-6367
26
27 email: harrisonrj@ornl.gov
28 tel: 865-241-3937
29 fax: 865-572-0680
30
31
32 $Id$
33 */
34
35/// \file CalculationParameters
36/// \brief solution parameters for SCF calculations
37
38
39
40#ifndef MADNESS_CHEM_CALCULATIONPARAMETERS_H__INCLUDED
41#define MADNESS_CHEM_CALCULATIONPARAMETERS_H__INCLUDED
42
47
48
49namespace madness {
50
52 static constexpr char const* tag = "dft";
53
55
57 read_input_and_commandline_options(world, parser, "dft");
58 // NB: `--optimize` deliberately does NOT set anything here. It selects a
59 // workflow task (WorkflowBuilders::add_optimize_workflow_drivers); the
60 // `dft` group has no say in whether a geometry is optimized.
61 std::string inputfile=parser.value("input");
62 // std::string prefix=commandlineparser::remove_extension(commandlineparser::base_name(inputfile));
63 // if (prefix!="input") set_derived_value("prefix",prefix);
64 }
65
66 /// ctor reading out the input file
68 initialize<std::string>("prefix","mad","prefixes your output/restart/json/plot/etc files");
69 initialize<double>("charge",0.0,"total molecular charge");
70 initialize<std::string> ("xc","hf","XC input line");
71 initialize<std::string> ("hfexalg","multiworld_row","hf exchange algorithm; multiworld bounds memory, needs one subworld per rank",{"multiworld","multiworld_row","fetch_compute","smallmem","largemem"});
72 initialize<long> ("hfex_granularity",1,"hfexalg=multiworld: orbital batches per rank; >1 balances better");
73 initialize<bool> ("hfex_cost_aware",true,"hfexalg=multiworld: place tasks by measured cost, not by count");
74 initialize<int> ("hfex_accumulation",2,"hfexalg=multiworld: gather tile results 1=per subworld, 2=per node");
75 initialize<std::string>("bsh_apply","auto","BSH apply backend; auto=macrotask when multinode or at tight thresh, else tile",{"auto","tile","macrotask","plain"});
76 initialize<std::vector<std::string>>("memory",{"storefunction","nodereplicated","distributed"},"memory algorithm for storing functions (storing,cloud,target)");
77 initialize<double>("smear",0.0,"smearing parameter");
78 initialize<double>("econv",1.e-5,"energy convergence");
79 initialize<double>("dconv",1.e-4,"density convergence");
80 initialize<std::vector<std::string> >("convergence_criteria",{"bsh_residual","total_energy"},"possible values are: bsh_residual, total_energy, each_energy, density");
81 initialize<int> ("k",-1,"polynomial order");
82 initialize<double>("l",20,"user coordinates box size");
83 initialize<std::string>("deriv","abgv","derivative method",{"abgv","bspline","ble"});
84 initialize<std::string>("dft_deriv","bspline","derivative method for gga potentials",{"abgv","bspline","ble"});
85 initialize<bool> ("xc_weak_gga",false,"weak form of the semilocal xc potential; nemo only");
86 initialize<double>("maxrotn",0.25,"step restriction used in autoshift algorithm");
87 initialize<int> ("nvalpha",0,"number of alpha virtuals to compute");
88 initialize<int> ("nvbeta",0,"number of beta virtuals to compute");
89 initialize<std::vector<double> >("aocc",std::vector<double>(),"explicit alpha occupations (0 or 1) by orbital index within the occupied span; a 0 is a hole");
90 initialize<std::vector<double> >("bocc",std::vector<double>(),"explicit beta occupations (0 or 1) by orbital index within the occupied span; a 0 is a hole");
91 initialize<int> ("nopen",0,"number of unpaired electrons = nalpha-nbeta");
92 initialize<int> ("maxiter",25,"maximum number of iterations");
93 initialize<int> ("nio",1,"no. of io servers to use");
94 initialize<bool> ("spin_restricted",true,"true if spin restricted");
95 initialize<int> ("plotlo",0,"range of MOs to print (for both spins if polarized");
96 initialize<int> ("plothi",-1,"range of MOs to print (for both spins if polarized");
97 initialize<bool> ("plotdens",false,"If true print the density at convergence");
98 initialize<bool> ("plotcoul",false,"If true plot the total coulomb potential at convergence");
99 initialize<bool> ("plotcube",false,"If true also write Gaussian .cube files (for Avogadro/VMD) alongside .dx");
100 initialize<std::string> ("localize","new","localization method",{"pm","boys","new","new_sys","cholesky","canon"});
101 initialize<std::string> ("pointgroup","c1","use point (sub) group symmetry if not localized",{"c1","c2","ci","cs","c2v","c2h","d2","d2h"});
102 initialize<std::string>("restart","auto","where the initial orbitals come from: auto picks "
103 "between none/iterate/read_only by what is on disk",
104 {"auto","none","iterate","read_only","ao","nwchem"});
105 // Retired in favour of the `restart` modes above, but kept registered so a
106 // deck that still sets them gets a migration error instead of the single
107 // easily-missed warning that ignore_unknown_keys would produce. See the
108 // guard at the end of set_derived_values().
109 initialize<bool> ("restartao",false,"RETIRED -- use restart=ao");
110 initialize<bool> ("no_compute",false,"RETIRED -- use restart=read_only");
111 initialize<bool> ("save",true,"if true save orbitals to disk");
112 initialize<int> ("maxsub",10,"size of iterative subspace ... set to 0 or 1 to disable");
113 initialize<double> ("orbitalshift",0.0,"scf orbital shift: shift the occ orbitals to lower energies");
114 initialize<int> ("npt_plot",101,"no. of points to use in each dim for plots");
115// initialize<Tensor<double> > ("plot_cell",Tensor<double>(),"lo hi in each dimension for plotting (default is all space)");
116 initialize<std::vector<double> > ("plot_cell",std::vector<double>(),"lo hi in each dimension for plotting (default is all space)");
117 initialize<std::string> ("aobasis","6-31g","AO basis used for initial guess (6-31gss, 6-31g, 3-21g, sto-6g, sto-3g)");
118 initialize<bool> ("derivatives",false,"if true calculate nuclear derivatives");
119 initialize<bool> ("dipole",false,"if true calculate dipole moment");
120 initialize<bool> ("conv_only_dens",false,"if true remove bsh_residual from convergence criteria (deprecated)");
121 initialize<bool> ("psp_calc",false,"pseudopotential calculation for all atoms");
122 initialize<std::string> ("pcm_data","none","do a PCM (solvent) calculation");
123 initialize<std::string> ("dispersion","none","DFT-D3 dispersion correction",{"none","d3bj","d3zero"});
124 initialize<std::string> ("dispersion_functional","none","functional whose D3 damping parameters to use");
125 initialize<bool> ("dispersion_atm",false,"include the three-body Axilrod-Teller-Muto dispersion term");
126 initialize<bool> ("pure_ae",true,"pure all electron calculation with no pseudo-atoms");
127 initialize<int> ("print_level",3,"0: no output; 1: final energy; 2: iterations; 3: timings; 10: debug");
128 initialize<std::vector<std::string> > ("population",{"none"},"atomic charges (and spin populations) of the final "
129 "orbitals, printed at the end: none, mulliken, lowdin, iao; several allowed, e.g. [iao,mulliken]");
130 initialize<std::string> ("population_basis","6-31g","basis set for the mulliken and lowdin populations "
131 "(default: the value of aobasis)");
132 initialize<std::string> ("population_minbasis","sto-3g","minimal basis set for the iao populations");
133 initialize<std::string> ("molecular_structure","inputfile","where to read the molecule from: inputfile or name from the library");
134
135 // Next list inferred parameters
136 initialize<int> ("nalpha",-1,"number of alpha spin electrons");
137 initialize<int> ("nbeta",-1,"number of beta spin electrons");
138 initialize<int> ("nmo_alpha",-1,"number of alpha spin molecular orbitals");
139 initialize<int> ("nmo_beta",-1,"number of beta spin molecular orbitals");
140 initialize<double> ("lo",1.e-10,"smallest length scale we need to resolve");
141 initialize<std::vector<double> > ("protocol",{1.e-4,1.e-6},"calculation protocol");
142
143 // Retired geometry-optimization knobs. Geometry optimization is no longer
144 // something an SCF does to itself; it is a workflow task of its own
145 // (`madqc --optimize --wf=<scf|nemo>`, qcapp::OptimizeDriver) and every
146 // knob it has lives in the `optimization` group (ParameterManager.hpp).
147 //
148 // These stay registered, and error, rather than being deleted outright:
149 // ignore_unknown_keys is true by default, so a deleted key would let an
150 // old deck run as a plain single point after one warning nobody reads --
151 // silently returning an unoptimized geometry. See the guard at the end of
152 // set_derived_values().
153 initialize<bool> ("gopt",false,"RETIRED -- use `madqc --optimize`");
154 initialize<double> ("gtol",1.e-4,"RETIRED -- use optimization group `gtol`");
155 initialize<bool> ("gtest",false,"RETIRED -- never had an effect");
156 initialize<double> ("gval",1.e-5,"RETIRED -- use optimization group `value_precision`");
157 initialize<double> ("gprec",1.e-4,"RETIRED -- use optimization group `gradient_precision`");
158 initialize<int> ("gmaxiter",20,"RETIRED -- use optimization group `maxiter`");
159 initialize<bool> ("ginitial_hessian",false,"RETIRED -- use optimization group `initial_hessian`");
160 initialize<std::string> ("algopt","bfgs","RETIRED -- use optimization group `algopt`",{"bfgs","cg"});
161 initialize<int> ("nv_factor",1,"RETIRED -- use `nv_extra`/`nv_step`");
162 initialize<int> ("nv_extra",0,"extra virtuals converged first and dropped stepwise down to nvalpha");
163 initialize<int> ("nv_step",0,"virtuals dropped per step-down stage (0: all extras at once)");
164 initialize<int> ("nv_its",5,"maximum iterations per intermediate step-down stage");
165 initialize<bool> ("freeze_occupied",false,"iterate only the virtuals in the mean field of restarted occupied orbitals, which stay fixed");
166 initialize<int> ("vnucextra",2,"load balance parameter for nuclear pot");
167 initialize<int> ("loadbalparts",2,"??");
168
169 //Keyword to use nwchem output for initial guess
170 initialize<std::string> ("nwfile","none","Base name of nwchem output files (.out and .movecs extensions) to read from");
171
172 }
173
174 std::string get_tag() const override {
175 return tag;
176 }
177
178 public:
180
181 std::string prefix() const {return get<std::string>("prefix");}
182
183 double econv() const {return get<double>("econv");}
184 double dconv() const {return get<double>("dconv");}
185
186 bool converge_density() const {
187 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
188 return std::find(criteria.begin(),criteria.end(),"density")!=criteria.end();
189 }
191 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
192 return std::find(criteria.begin(),criteria.end(),"bsh_residual")!=criteria.end();
193 }
195 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
196 return std::find(criteria.begin(),criteria.end(),"total_energy")!=criteria.end();
197 }
198 bool converge_each_energy() const {
199 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
200 return std::find(criteria.begin(),criteria.end(),"each_energy")!=criteria.end();
201 }
202
203 int nopen() const {return get<int>("nopen");}
204 int nalpha() const {return get<int>("nalpha");}
205 int nbeta() const {return get<int>("nbeta");}
206
207 int nvalpha() const {return get<int>("nvalpha");}
208 int nvbeta() const {return get<int>("nvbeta");}
209 std::vector<double> aocc() const {return get<std::vector<double> >("aocc");}
210 std::vector<double> bocc() const {return get<std::vector<double> >("bocc");}
211 int nv_extra() const {return get<int>("nv_extra");}
212 int nv_step() const {return get<int>("nv_step");}
213 int nv_its() const {return get<int>("nv_its");}
214 bool freeze_occupied() const {return get<bool>("freeze_occupied");}
215
216 int nmo_alpha() const {return get<int>("nmo_alpha");}
217 int nmo_beta() const {return get<int>("nmo_beta");}
218
219 bool have_beta() const {return (nbeta()>0) and (not spin_restricted());}
220
221 bool spin_restricted() const {return get<bool>("spin_restricted");}
222
223 double lo() const {return get<double>("lo");}
224 double L() const {return get<double>("l");}
225 int k() const {return get<int>("k");}
226
227 std::string localize_method() const {return get<std::string>("localize");}
228 bool do_localize() const {return (localize_method()!="canon");}
229 bool localize_pm() const {return (localize_method()=="pm");}
230
231 std::string pointgroup() const {return get<std::string>("pointgroup");}
232 bool do_symmetry() const {return (pointgroup()!="c1");}
233 double charge() const {return get<double>("charge");}
234 int print_level() const {return get<int>("print_level");}
235 std::vector<std::string> population() const {return get<std::vector<std::string> >("population");}
236 std::string population_basis() const {return get<std::string>("population_basis");}
237 std::string population_minbasis() const {return get<std::string>("population_minbasis");}
238
239 int maxiter() const {return get<int>("maxiter");}
240 double orbitalshift() const {return get<double>("orbitalshift");}
241
242 std::string deriv() const {return get<std::string>("deriv");}
243 std::string dft_deriv() const {return get<std::string>("dft_deriv");}
244 bool xc_weak_gga() const {return get<bool>("xc_weak_gga");}
245 std::string pcm_data() const {return get<std::string>("pcm_data");}
246 std::string dispersion() const {return get<std::string>("dispersion");}
247 std::string dispersion_functional() const {return get<std::string>("dispersion_functional");}
248 bool dispersion_atm() const {return get<bool>("dispersion_atm");}
249 std::string xc() const {return get<std::string>("xc");}
250 std::string hfexalg() const {return get<std::string>("hfexalg");}
251 long hfex_granularity() const {return get<long>("hfex_granularity");}
252 bool hfex_cost_aware() const {return get<bool>("hfex_cost_aware");}
253 int hfex_accumulation() const {return get<int>("hfex_accumulation");}
254 std::string bsh_apply() const {return get<std::string>("bsh_apply");}
255
256 std::vector<std::string> memory() const {return get<std::vector<std::string>>("memory");}
257
258 std::string aobasis() const {return get<std::string>("aobasis");}
259
260 std::vector<double> protocol() const {return get<std::vector<double> >("protocol");}
261 bool save() const {return get<bool>("save");}
262 /// the `restart` keyval as a string; parse with restart_mode_from_string()
263
264 /// Returns the spelling rather than the RestartMode enum because RestartPlan.h
265 /// includes this header, so the dependency cannot run the other way.
266 std::string restart() const {return get<std::string>("restart");}
267 bool restart_cphf() const {return get<bool>("restart_cphf");}
268
269 int maxsub() const {return get<int>("maxsub");}
270 double maxrotn() const {return get<double>("maxrotn");}
271
272 int vnucextra() const {return get<int>("vnucextra");}
273 int loadbalparts() const {return get<int>("loadbalparts");}
274
275
276 bool derivatives() const {return get<bool>("derivatives");}
277 bool dipole() const {return get<bool>("dipole");}
278
279 // NB: no gopt()/gtol()/gval()/gprec()/gmaxiter()/ginitial_hessian()/algopt()
280 // accessors. Those keyvals are retired; see the initialize() block above and
281 // the guard in set_derived_values(). The optimizer's knobs are in
282 // OptimizationParameters (chem/ParameterManager.hpp).
283
284 std::string nwfile() const {return get<std::string>("nwfile");}
285
287 std::vector<double> vcell=get<std::vector<double> >("plot_cell");
288 if (vcell.size()==0) return Tensor<double>();
289 Tensor<double> cell(3,2);
290 cell(0,0)=vcell[0];
291 cell(0,1)=vcell[1];
292 cell(1,0)=vcell[2];
293 cell(1,1)=vcell[3];
294 cell(2,0)=vcell[4];
295 cell(2,1)=vcell[5];
296 return cell;
297 }
298
299
301
302 for (size_t iatom = 0; iatom < molecule.natom(); iatom++) {
303 if (molecule.get_pseudo_atom(iatom)){
304 set_derived_value("pure_ae",false);
305 continue;
306 }
307 }
308 set_derived_value("aobasis",molecule.guess_file());;
309 const int n_core = molecule.n_core_orb_all();
310
311
312 std::vector<double> proto=get<std::vector<double> >("protocol");
313 // No ... The accuracy of computation is INDEPENDENT of the convergence requirement
314 // --- actually need more precision than convergence threshold in order to have
315 // variational principle working and for robust convergence
316 //proto.back()=get<double>("econv");
317 set_derived_value("protocol",proto);
318 // No ... the energy is variational! Don't need more accuracy in dconv --- in fact the opposite is true.
319 // set_derived_value("dconv",sqrt(get<double>("econv"))*0.1);
320
321 double z = molecule.total_nuclear_charge();
322 const double charge=get<double>("charge");
323 int nelec = int(z - charge - n_core*2);
324 if (fabs(nelec+charge+n_core*2-z) > 1e-6) {
325 error("non-integer number of electrons?", nelec+charge+n_core*2-z);
326 }
327
328 set_derived_value("nalpha",(nelec + nopen())/2);
329 set_derived_value("nbeta",(nelec - nopen())/2);
330
331 if (nalpha() < 0) error("negative number of alpha electrons?", nalpha());
332 if (nbeta() < 0) error("negative number of beta electrons?", nbeta());
333 if ((nalpha()+nbeta()) != nelec) error("nalpha+nbeta != nelec", nalpha()+nbeta());
334 if (nalpha() != nbeta()) set_derived_value("spin_restricted",false);
335
336 set_derived_value("nmo_alpha",nalpha() + nvalpha());
337 set_derived_value("nmo_beta",nbeta() + nvbeta());
338
339 if (nv_extra() < 0 or nv_step() < 0 or nv_its() < 1) error("nv_extra, nv_step >= 0 and nv_its >= 1 required");
340 if (nv_extra() > 0 and nvalpha() == 0) error("nv_extra requires nvalpha > 0");
341 if (freeze_occupied() and nvalpha() == 0 and nvbeta() == 0) error("freeze_occupied requires nvalpha or nvbeta > 0");
342
343 // Explicit occupations address the occupied span. A hole there is only
344 // index-stable with canonical orbitals: every iteration re-sorts them by
345 // eigenvalue, so the empty index stays on the same orbital.
346 bool hole = false;
347 for (const auto& [name, n] : std::vector<std::pair<std::string, int>>{{"aocc", nalpha()}, {"bocc", nbeta()}}) {
348 const auto occ = get<std::vector<double> >(name);
349 if (int(occ.size()) > n) error((name + " has more entries than occupied orbitals").c_str(), occ.size());
350 for (const double o : occ) {
351 if (o != 0.0 and o != 1.0) error((name + " entries must be 0 or 1").c_str(), o);
352 if (o == 0.0) hole = true;
353 }
354 }
355 if (not bocc().empty() and spin_restricted()) error("bocc requires spin_restricted false");
356 if (hole) {
357 set_derived_value("localize", std::string("canon"));
358 if (do_localize()) error("a hole in the explicit occupations requires localize canon");
359 }
360
361 // Unless overridden by the user use a cell big enough to
362 // have exp(-sqrt(2*I)*r) decay to 1e-6 with I=1ev=0.037Eh
363 // --> need 50 a.u. either side of the molecule
364 set_derived_value("l",molecule.bounding_cube() + 50.0);
365
366 //set_derived_value("lo",molecule.smallest_length_scale());
367
368 // set highest possible point group for symmetry
369 if (do_localize()) set_derived_value("pointgroup",std::string("c1"));
370 else set_derived_value("pointgroup",molecule.get_pointgroup());
371
372 // above two lines will not override user input, so check input is sane
373 if (do_localize() and do_symmetry()) {
374 error("\n\nsymmetry and localization cannot be used at the same time\n"
375 "switch from local to canonical orbitals (keyword canon)\n\n");
376 }
377
378 // Geometry optimization left the `dft` group entirely. `gopt` in particular
379 // must not be waved through: a deck that sets it expects an optimized
380 // geometry back, and silently returning a single point at the input
381 // geometry is a wrong answer, not a missing feature. They stay registered
382 // and erroring rather than being deleted, because ignore_unknown_keys is
383 // true by default and a deleted key would run the deck as a plain single
384 // point after one warning nobody reads.
385 for (const char* key : {"gopt","gtol","gtest","gval","gprec",
386 "gmaxiter","ginitial_hessian","algopt"}) {
387 if (is_user_defined(key))
388 error(("\n\n`" + std::string(key) + "` has been retired: geometry optimization is now a task of "
389 "its own.\nUse `madqc --optimize --wf=<scf|nemo>` and the `optimization` "
390 "parameter group\n(see `madqc --print_parameters=optimization`).\n\n").c_str());
391 }
392
393 // Retired keyvals. A clean break needs to be loud: ignore_unknown_keys is
394 // true by default, so deleting these outright would let an old deck run
395 // with different semantics after one warning nobody reads. They stay
396 // registered and erroring until the migration is old news.
397 if (is_user_defined("restartao"))
398 error("\n\n`restartao` has been retired: use `restart ao` instead\n\n");
399 if (is_user_defined("no_compute"))
400 error("\n\n`no_compute` has been retired: use `restart read_only` instead\n\n");
401 if (is_user_defined("nv_factor"))
402 error("\n\n`nv_factor` has been retired: the virtual step-down is now `nv_extra`, "
403 "`nv_step` and `nv_its`\n\n");
404
405 // population analysis: known schemes, `none` alone, and all-electron only (the
406 // projected basis functions describe all electrons of an atom)
407 {
408 const std::vector<std::string> pop = population();
409 bool any = false, none = false;
410 for (const auto& s : pop) {
411 MADNESS_CHECK_THROW(s == "none" or s == "mulliken" or s == "lowdin" or s == "iao",
412 "population: the schemes are none, mulliken, lowdin and iao");
413 any = any or s != "none";
414 none = none or s == "none";
415 }
416 MADNESS_CHECK_THROW(not (any and none), "population: none cannot be combined with a scheme");
417 MADNESS_CHECK_THROW(not any or (get<bool>("pure_ae") and not get<bool>("psp_calc") and n_core == 0),
418 "population: needs an all-electron calculation (no pseudopotentials or core potentials)");
419 set_derived_value("population_basis", aobasis());
420 }
421
422 // dispersion correction
423 if (dispersion()!="none" and xc()!="hf") {
424 set_derived_value("dispersion_functional",xc());
425 }
426
427
428 }
429};
430
431
432} // namespace madness
433
434#endif /* MADNESS_CHEM_CALCULATIONPARAMETERS_H__INCLUDED */
Definition molecule.h:129
void read_input_and_commandline_options(World &world, const commandlineparser &parser, const std::string tag)
Definition chem/QCCalculationParametersBase.h:339
T get(const std::string key) const
Definition chem/QCCalculationParametersBase.h:313
void initialize(const std::string &key, const T &value, const std::string comment="", const std::vector< T > allowed_values={})
Definition chem/QCCalculationParametersBase.h:394
bool is_user_defined(std::string key) const
Definition chem/QCCalculationParametersBase.h:322
void set_derived_value(const std::string &key, const T &value)
Definition chem/QCCalculationParametersBase.h:436
QCCalculationParametersBase()
ctor for testing
Definition chem/QCCalculationParametersBase.h:383
A tensor is a multidimensional array.
Definition tensor.h:313
A parallel world class.
Definition world.h:134
#define MADNESS_CHECK_THROW(condition, msg)
Check a condition — even in a release build the condition is always evaluated so it can have side eff...
Definition madness_exception.h:207
Namespace for all elements and tools of MADNESS.
Definition DFConvergence.h:9
Tensor< double > FunctionDefaults< NDIM >::cell
Definition mraimpl.h:3892
@ none
ignore everything on disk, start from the initial guess
Definition RestartPlan.h:53
static double pop(std::vector< double > &v)
Definition SCF.cc:118
void error(const char *msg)
Definition world.cc:147
std::string name(const FuncType &type, const int ex=-1)
Definition ccpairfunction.h:28
Definition test_QCCalculationParametersBase.cc:76
bool converge_each_energy() const
Definition CalculationParameters.h:198
std::vector< double > protocol() const
Definition CalculationParameters.h:260
std::string population_minbasis() const
Definition CalculationParameters.h:237
int nv_its() const
Definition CalculationParameters.h:213
double charge() const
Definition CalculationParameters.h:233
CalculationParameters(const CalculationParameters &other)=default
void read_input_and_commandline_options(World &world, const commandlineparser &parser, const std::string tag)
Definition chem/QCCalculationParametersBase.h:339
bool converge_density() const
Definition CalculationParameters.h:186
bool do_symmetry() const
Definition CalculationParameters.h:232
std::string dispersion() const
Definition CalculationParameters.h:246
bool localize_pm() const
Definition CalculationParameters.h:229
void set_derived_values(const Molecule &molecule)
Definition CalculationParameters.h:300
std::string restart() const
the restart keyval as a string; parse with restart_mode_from_string()
Definition CalculationParameters.h:266
int k() const
Definition CalculationParameters.h:225
bool converge_bsh_residual() const
Definition CalculationParameters.h:190
std::vector< std::string > population() const
Definition CalculationParameters.h:235
std::vector< std::string > memory() const
Definition CalculationParameters.h:256
CalculationParameters()
ctor reading out the input file
Definition CalculationParameters.h:67
bool converge_total_energy() const
Definition CalculationParameters.h:194
Tensor< double > plot_cell() const
Definition CalculationParameters.h:286
std::string dispersion_functional() const
Definition CalculationParameters.h:247
std::string nwfile() const
Definition CalculationParameters.h:284
static constexpr char const * tag
Definition CalculationParameters.h:52
std::string prefix() const
Definition CalculationParameters.h:181
int nmo_alpha() const
Definition CalculationParameters.h:216
std::vector< double > bocc() const
Definition CalculationParameters.h:210
int nopen() const
Definition CalculationParameters.h:203
bool freeze_occupied() const
Definition CalculationParameters.h:214
bool dipole() const
Definition CalculationParameters.h:277
bool hfex_cost_aware() const
Definition CalculationParameters.h:252
bool save() const
Definition CalculationParameters.h:261
double dconv() const
Definition CalculationParameters.h:184
double econv() const
Definition CalculationParameters.h:183
int nvalpha() const
Definition CalculationParameters.h:207
int vnucextra() const
Definition CalculationParameters.h:272
int hfex_accumulation() const
Definition CalculationParameters.h:253
int print_level() const
Definition CalculationParameters.h:234
std::string deriv() const
Definition CalculationParameters.h:242
bool do_localize() const
Definition CalculationParameters.h:228
long hfex_granularity() const
Definition CalculationParameters.h:251
std::string hfexalg() const
Definition CalculationParameters.h:250
double L() const
Definition CalculationParameters.h:224
int nv_step() const
Definition CalculationParameters.h:212
std::string localize_method() const
Definition CalculationParameters.h:227
int loadbalparts() const
Definition CalculationParameters.h:273
std::string aobasis() const
Definition CalculationParameters.h:258
int nalpha() const
Definition CalculationParameters.h:204
std::string dft_deriv() const
Definition CalculationParameters.h:243
int maxsub() const
Definition CalculationParameters.h:269
int nvbeta() const
Definition CalculationParameters.h:208
int nv_extra() const
Definition CalculationParameters.h:211
bool derivatives() const
Definition CalculationParameters.h:276
std::string population_basis() const
Definition CalculationParameters.h:236
int nbeta() const
Definition CalculationParameters.h:205
int nmo_beta() const
Definition CalculationParameters.h:217
bool xc_weak_gga() const
Definition CalculationParameters.h:244
bool have_beta() const
Definition CalculationParameters.h:219
bool spin_restricted() const
Definition CalculationParameters.h:221
int maxiter() const
Definition CalculationParameters.h:239
double orbitalshift() const
Definition CalculationParameters.h:240
double lo() const
Definition CalculationParameters.h:223
std::string pcm_data() const
Definition CalculationParameters.h:245
std::vector< double > aocc() const
Definition CalculationParameters.h:209
bool restart_cphf() const
Definition CalculationParameters.h:267
bool dispersion_atm() const
Definition CalculationParameters.h:248
std::string get_tag() const override
Definition CalculationParameters.h:174
std::string pointgroup() const
Definition CalculationParameters.h:231
double maxrotn() const
Definition CalculationParameters.h:270
std::string xc() const
Definition CalculationParameters.h:249
CalculationParameters(World &world, const commandlineparser &parser)
Definition CalculationParameters.h:56
std::string bsh_apply() const
Definition CalculationParameters.h:254
very simple command line parser
Definition commandlineparser.h:28
std::string value(const std::string key) const
Definition commandlineparser.h:84
void e()
Definition test_sig.cc:75
static Molecule molecule
Definition testperiodicdft.cc:39