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::string> ("molecular_structure","inputfile","where to read the molecule from: inputfile or name from the library");
129
130 // Next list inferred parameters
131 initialize<int> ("nalpha",-1,"number of alpha spin electrons");
132 initialize<int> ("nbeta",-1,"number of beta spin electrons");
133 initialize<int> ("nmo_alpha",-1,"number of alpha spin molecular orbitals");
134 initialize<int> ("nmo_beta",-1,"number of beta spin molecular orbitals");
135 initialize<double> ("lo",1.e-10,"smallest length scale we need to resolve");
136 initialize<std::vector<double> > ("protocol",{1.e-4,1.e-6},"calculation protocol");
137
138 // Retired geometry-optimization knobs. Geometry optimization is no longer
139 // something an SCF does to itself; it is a workflow task of its own
140 // (`madqc --optimize --wf=<scf|nemo>`, qcapp::OptimizeDriver) and every
141 // knob it has lives in the `optimization` group (ParameterManager.hpp).
142 //
143 // These stay registered, and error, rather than being deleted outright:
144 // ignore_unknown_keys is true by default, so a deleted key would let an
145 // old deck run as a plain single point after one warning nobody reads --
146 // silently returning an unoptimized geometry. See the guard at the end of
147 // set_derived_values().
148 initialize<bool> ("gopt",false,"RETIRED -- use `madqc --optimize`");
149 initialize<double> ("gtol",1.e-4,"RETIRED -- use optimization group `gtol`");
150 initialize<bool> ("gtest",false,"RETIRED -- never had an effect");
151 initialize<double> ("gval",1.e-5,"RETIRED -- use optimization group `value_precision`");
152 initialize<double> ("gprec",1.e-4,"RETIRED -- use optimization group `gradient_precision`");
153 initialize<int> ("gmaxiter",20,"RETIRED -- use optimization group `maxiter`");
154 initialize<bool> ("ginitial_hessian",false,"RETIRED -- use optimization group `initial_hessian`");
155 initialize<std::string> ("algopt","bfgs","RETIRED -- use optimization group `algopt`",{"bfgs","cg"});
156 initialize<int> ("nv_factor",1,"RETIRED -- use `nv_extra`/`nv_step`");
157 initialize<int> ("nv_extra",0,"extra virtuals converged first and dropped stepwise down to nvalpha");
158 initialize<int> ("nv_step",0,"virtuals dropped per step-down stage (0: all extras at once)");
159 initialize<int> ("nv_its",5,"maximum iterations per intermediate step-down stage");
160 initialize<bool> ("freeze_occupied",false,"iterate only the virtuals in the mean field of restarted occupied orbitals, which stay fixed");
161 initialize<int> ("vnucextra",2,"load balance parameter for nuclear pot");
162 initialize<int> ("loadbalparts",2,"??");
163
164 //Keyword to use nwchem output for initial guess
165 initialize<std::string> ("nwfile","none","Base name of nwchem output files (.out and .movecs extensions) to read from");
166
167 }
168
169 std::string get_tag() const override {
170 return tag;
171 }
172
173 public:
175
176 std::string prefix() const {return get<std::string>("prefix");}
177
178 double econv() const {return get<double>("econv");}
179 double dconv() const {return get<double>("dconv");}
180
181 bool converge_density() const {
182 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
183 return std::find(criteria.begin(),criteria.end(),"density")!=criteria.end();
184 }
186 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
187 return std::find(criteria.begin(),criteria.end(),"bsh_residual")!=criteria.end();
188 }
190 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
191 return std::find(criteria.begin(),criteria.end(),"total_energy")!=criteria.end();
192 }
193 bool converge_each_energy() const {
194 std::vector<std::string> criteria=get<std::vector<std::string> >("convergence_criteria");
195 return std::find(criteria.begin(),criteria.end(),"each_energy")!=criteria.end();
196 }
197
198 int nopen() const {return get<int>("nopen");}
199 int nalpha() const {return get<int>("nalpha");}
200 int nbeta() const {return get<int>("nbeta");}
201
202 int nvalpha() const {return get<int>("nvalpha");}
203 int nvbeta() const {return get<int>("nvbeta");}
204 std::vector<double> aocc() const {return get<std::vector<double> >("aocc");}
205 std::vector<double> bocc() const {return get<std::vector<double> >("bocc");}
206 int nv_extra() const {return get<int>("nv_extra");}
207 int nv_step() const {return get<int>("nv_step");}
208 int nv_its() const {return get<int>("nv_its");}
209 bool freeze_occupied() const {return get<bool>("freeze_occupied");}
210
211 int nmo_alpha() const {return get<int>("nmo_alpha");}
212 int nmo_beta() const {return get<int>("nmo_beta");}
213
214 bool have_beta() const {return (nbeta()>0) and (not spin_restricted());}
215
216 bool spin_restricted() const {return get<bool>("spin_restricted");}
217
218 double lo() const {return get<double>("lo");}
219 double L() const {return get<double>("l");}
220 int k() const {return get<int>("k");}
221
222 std::string localize_method() const {return get<std::string>("localize");}
223 bool do_localize() const {return (localize_method()!="canon");}
224 bool localize_pm() const {return (localize_method()=="pm");}
225
226 std::string pointgroup() const {return get<std::string>("pointgroup");}
227 bool do_symmetry() const {return (pointgroup()!="c1");}
228 double charge() const {return get<double>("charge");}
229 int print_level() const {return get<int>("print_level");}
230
231 int maxiter() const {return get<int>("maxiter");}
232 double orbitalshift() const {return get<double>("orbitalshift");}
233
234 std::string deriv() const {return get<std::string>("deriv");}
235 std::string dft_deriv() const {return get<std::string>("dft_deriv");}
236 bool xc_weak_gga() const {return get<bool>("xc_weak_gga");}
237 std::string pcm_data() const {return get<std::string>("pcm_data");}
238 std::string dispersion() const {return get<std::string>("dispersion");}
239 std::string dispersion_functional() const {return get<std::string>("dispersion_functional");}
240 bool dispersion_atm() const {return get<bool>("dispersion_atm");}
241 std::string xc() const {return get<std::string>("xc");}
242 std::string hfexalg() const {return get<std::string>("hfexalg");}
243 long hfex_granularity() const {return get<long>("hfex_granularity");}
244 bool hfex_cost_aware() const {return get<bool>("hfex_cost_aware");}
245 int hfex_accumulation() const {return get<int>("hfex_accumulation");}
246 std::string bsh_apply() const {return get<std::string>("bsh_apply");}
247
248 std::vector<std::string> memory() const {return get<std::vector<std::string>>("memory");}
249
250 std::string aobasis() const {return get<std::string>("aobasis");}
251
252 std::vector<double> protocol() const {return get<std::vector<double> >("protocol");}
253 bool save() const {return get<bool>("save");}
254 /// the `restart` keyval as a string; parse with restart_mode_from_string()
255
256 /// Returns the spelling rather than the RestartMode enum because RestartPlan.h
257 /// includes this header, so the dependency cannot run the other way.
258 std::string restart() const {return get<std::string>("restart");}
259 bool restart_cphf() const {return get<bool>("restart_cphf");}
260
261 int maxsub() const {return get<int>("maxsub");}
262 double maxrotn() const {return get<double>("maxrotn");}
263
264 int vnucextra() const {return get<int>("vnucextra");}
265 int loadbalparts() const {return get<int>("loadbalparts");}
266
267
268 bool derivatives() const {return get<bool>("derivatives");}
269 bool dipole() const {return get<bool>("dipole");}
270
271 // NB: no gopt()/gtol()/gval()/gprec()/gmaxiter()/ginitial_hessian()/algopt()
272 // accessors. Those keyvals are retired; see the initialize() block above and
273 // the guard in set_derived_values(). The optimizer's knobs are in
274 // OptimizationParameters (chem/ParameterManager.hpp).
275
276 std::string nwfile() const {return get<std::string>("nwfile");}
277
279 std::vector<double> vcell=get<std::vector<double> >("plot_cell");
280 if (vcell.size()==0) return Tensor<double>();
281 Tensor<double> cell(3,2);
282 cell(0,0)=vcell[0];
283 cell(0,1)=vcell[1];
284 cell(1,0)=vcell[2];
285 cell(1,1)=vcell[3];
286 cell(2,0)=vcell[4];
287 cell(2,1)=vcell[5];
288 return cell;
289 }
290
291
293
294 for (size_t iatom = 0; iatom < molecule.natom(); iatom++) {
295 if (molecule.get_pseudo_atom(iatom)){
296 set_derived_value("pure_ae",false);
297 continue;
298 }
299 }
300 set_derived_value("aobasis",molecule.guess_file());;
301 const int n_core = molecule.n_core_orb_all();
302
303
304 std::vector<double> proto=get<std::vector<double> >("protocol");
305 // No ... The accuracy of computation is INDEPENDENT of the convergence requirement
306 // --- actually need more precision than convergence threshold in order to have
307 // variational principle working and for robust convergence
308 //proto.back()=get<double>("econv");
309 set_derived_value("protocol",proto);
310 // No ... the energy is variational! Don't need more accuracy in dconv --- in fact the opposite is true.
311 // set_derived_value("dconv",sqrt(get<double>("econv"))*0.1);
312
313 double z = molecule.total_nuclear_charge();
314 const double charge=get<double>("charge");
315 int nelec = int(z - charge - n_core*2);
316 if (fabs(nelec+charge+n_core*2-z) > 1e-6) {
317 error("non-integer number of electrons?", nelec+charge+n_core*2-z);
318 }
319
320 set_derived_value("nalpha",(nelec + nopen())/2);
321 set_derived_value("nbeta",(nelec - nopen())/2);
322
323 if (nalpha() < 0) error("negative number of alpha electrons?", nalpha());
324 if (nbeta() < 0) error("negative number of beta electrons?", nbeta());
325 if ((nalpha()+nbeta()) != nelec) error("nalpha+nbeta != nelec", nalpha()+nbeta());
326 if (nalpha() != nbeta()) set_derived_value("spin_restricted",false);
327
328 set_derived_value("nmo_alpha",nalpha() + nvalpha());
329 set_derived_value("nmo_beta",nbeta() + nvbeta());
330
331 if (nv_extra() < 0 or nv_step() < 0 or nv_its() < 1) error("nv_extra, nv_step >= 0 and nv_its >= 1 required");
332 if (nv_extra() > 0 and nvalpha() == 0) error("nv_extra requires nvalpha > 0");
333 if (freeze_occupied() and nvalpha() == 0 and nvbeta() == 0) error("freeze_occupied requires nvalpha or nvbeta > 0");
334
335 // Explicit occupations address the occupied span. A hole there is only
336 // index-stable with canonical orbitals: every iteration re-sorts them by
337 // eigenvalue, so the empty index stays on the same orbital.
338 bool hole = false;
339 for (const auto& [name, n] : std::vector<std::pair<std::string, int>>{{"aocc", nalpha()}, {"bocc", nbeta()}}) {
340 const auto occ = get<std::vector<double> >(name);
341 if (int(occ.size()) > n) error((name + " has more entries than occupied orbitals").c_str(), occ.size());
342 for (const double o : occ) {
343 if (o != 0.0 and o != 1.0) error((name + " entries must be 0 or 1").c_str(), o);
344 if (o == 0.0) hole = true;
345 }
346 }
347 if (not bocc().empty() and spin_restricted()) error("bocc requires spin_restricted false");
348 if (hole) {
349 set_derived_value("localize", std::string("canon"));
350 if (do_localize()) error("a hole in the explicit occupations requires localize canon");
351 }
352
353 // Unless overridden by the user use a cell big enough to
354 // have exp(-sqrt(2*I)*r) decay to 1e-6 with I=1ev=0.037Eh
355 // --> need 50 a.u. either side of the molecule
356 set_derived_value("l",molecule.bounding_cube() + 50.0);
357
358 //set_derived_value("lo",molecule.smallest_length_scale());
359
360 // set highest possible point group for symmetry
361 if (do_localize()) set_derived_value("pointgroup",std::string("c1"));
362 else set_derived_value("pointgroup",molecule.get_pointgroup());
363
364 // above two lines will not override user input, so check input is sane
365 if (do_localize() and do_symmetry()) {
366 error("\n\nsymmetry and localization cannot be used at the same time\n"
367 "switch from local to canonical orbitals (keyword canon)\n\n");
368 }
369
370 // Geometry optimization left the `dft` group entirely. `gopt` in particular
371 // must not be waved through: a deck that sets it expects an optimized
372 // geometry back, and silently returning a single point at the input
373 // geometry is a wrong answer, not a missing feature. They stay registered
374 // and erroring rather than being deleted, because ignore_unknown_keys is
375 // true by default and a deleted key would run the deck as a plain single
376 // point after one warning nobody reads.
377 for (const char* key : {"gopt","gtol","gtest","gval","gprec",
378 "gmaxiter","ginitial_hessian","algopt"}) {
379 if (is_user_defined(key))
380 error(("\n\n`" + std::string(key) + "` has been retired: geometry optimization is now a task of "
381 "its own.\nUse `madqc --optimize --wf=<scf|nemo>` and the `optimization` "
382 "parameter group\n(see `madqc --print_parameters=optimization`).\n\n").c_str());
383 }
384
385 // Retired keyvals. A clean break needs to be loud: ignore_unknown_keys is
386 // true by default, so deleting these outright would let an old deck run
387 // with different semantics after one warning nobody reads. They stay
388 // registered and erroring until the migration is old news.
389 if (is_user_defined("restartao"))
390 error("\n\n`restartao` has been retired: use `restart ao` instead\n\n");
391 if (is_user_defined("no_compute"))
392 error("\n\n`no_compute` has been retired: use `restart read_only` instead\n\n");
393 if (is_user_defined("nv_factor"))
394 error("\n\n`nv_factor` has been retired: the virtual step-down is now `nv_extra`, "
395 "`nv_step` and `nv_its`\n\n");
396
397 // dispersion correction
398 if (dispersion()!="none" and xc()!="hf") {
399 set_derived_value("dispersion_functional",xc());
400 }
401
402
403 }
404};
405
406
407} // namespace madness
408
409#endif /* MADNESS_CHEM_CALCULATIONPARAMETERS_H__INCLUDED */
Definition molecule.h:129
class for holding the parameters for calculation
Definition chem/QCCalculationParametersBase.h:296
void read_input_and_commandline_options(World &world, const commandlineparser &parser, const std::string tag)
Definition chem/QCCalculationParametersBase.h:332
bool is_user_defined(std::string key) const
Definition chem/QCCalculationParametersBase.h:315
void set_derived_value(const std::string &key, const T &value)
Definition chem/QCCalculationParametersBase.h:429
A tensor is a multidimensional array.
Definition tensor.h:318
A parallel world class.
Definition world.h:134
Namespace for all elements and tools of MADNESS.
Definition DFConvergence.h:9
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:74
Definition CalculationParameters.h:51
bool converge_each_energy() const
Definition CalculationParameters.h:193
std::vector< double > protocol() const
Definition CalculationParameters.h:252
int nv_its() const
Definition CalculationParameters.h:208
double charge() const
Definition CalculationParameters.h:228
CalculationParameters(const CalculationParameters &other)=default
void read_input_and_commandline_options(World &world, const commandlineparser &parser, const std::string tag)
Definition chem/QCCalculationParametersBase.h:332
bool converge_density() const
Definition CalculationParameters.h:181
bool do_symmetry() const
Definition CalculationParameters.h:227
std::string dispersion() const
Definition CalculationParameters.h:238
bool localize_pm() const
Definition CalculationParameters.h:224
void set_derived_values(const Molecule &molecule)
Definition CalculationParameters.h:292
std::string restart() const
the restart keyval as a string; parse with restart_mode_from_string()
Definition CalculationParameters.h:258
int k() const
Definition CalculationParameters.h:220
bool converge_bsh_residual() const
Definition CalculationParameters.h:185
std::vector< std::string > memory() const
Definition CalculationParameters.h:248
CalculationParameters()
ctor reading out the input file
Definition CalculationParameters.h:67
bool converge_total_energy() const
Definition CalculationParameters.h:189
Tensor< double > plot_cell() const
Definition CalculationParameters.h:278
std::string dispersion_functional() const
Definition CalculationParameters.h:239
std::string nwfile() const
Definition CalculationParameters.h:276
static constexpr char const * tag
Definition CalculationParameters.h:52
std::string prefix() const
Definition CalculationParameters.h:176
int nmo_alpha() const
Definition CalculationParameters.h:211
std::vector< double > bocc() const
Definition CalculationParameters.h:205
int nopen() const
Definition CalculationParameters.h:198
bool freeze_occupied() const
Definition CalculationParameters.h:209
bool dipole() const
Definition CalculationParameters.h:269
bool hfex_cost_aware() const
Definition CalculationParameters.h:244
bool save() const
Definition CalculationParameters.h:253
double dconv() const
Definition CalculationParameters.h:179
double econv() const
Definition CalculationParameters.h:178
int nvalpha() const
Definition CalculationParameters.h:202
int vnucextra() const
Definition CalculationParameters.h:264
int hfex_accumulation() const
Definition CalculationParameters.h:245
int print_level() const
Definition CalculationParameters.h:229
std::string deriv() const
Definition CalculationParameters.h:234
bool do_localize() const
Definition CalculationParameters.h:223
long hfex_granularity() const
Definition CalculationParameters.h:243
std::string hfexalg() const
Definition CalculationParameters.h:242
double L() const
Definition CalculationParameters.h:219
int nv_step() const
Definition CalculationParameters.h:207
std::string localize_method() const
Definition CalculationParameters.h:222
int loadbalparts() const
Definition CalculationParameters.h:265
std::string aobasis() const
Definition CalculationParameters.h:250
int nalpha() const
Definition CalculationParameters.h:199
std::string dft_deriv() const
Definition CalculationParameters.h:235
int maxsub() const
Definition CalculationParameters.h:261
int nvbeta() const
Definition CalculationParameters.h:203
int nv_extra() const
Definition CalculationParameters.h:206
bool derivatives() const
Definition CalculationParameters.h:268
int nbeta() const
Definition CalculationParameters.h:200
int nmo_beta() const
Definition CalculationParameters.h:212
bool xc_weak_gga() const
Definition CalculationParameters.h:236
bool have_beta() const
Definition CalculationParameters.h:214
bool spin_restricted() const
Definition CalculationParameters.h:216
int maxiter() const
Definition CalculationParameters.h:231
double orbitalshift() const
Definition CalculationParameters.h:232
double lo() const
Definition CalculationParameters.h:218
std::string pcm_data() const
Definition CalculationParameters.h:237
std::vector< double > aocc() const
Definition CalculationParameters.h:204
bool restart_cphf() const
Definition CalculationParameters.h:259
bool dispersion_atm() const
Definition CalculationParameters.h:240
std::string get_tag() const override
Definition CalculationParameters.h:169
std::string pointgroup() const
Definition CalculationParameters.h:226
double maxrotn() const
Definition CalculationParameters.h:262
std::string xc() const
Definition CalculationParameters.h:241
CalculationParameters(World &world, const commandlineparser &parser)
Definition CalculationParameters.h:56
std::string bsh_apply() const
Definition CalculationParameters.h:246
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