1 /*
2    CheMPS2: a spin-adapted implementation of DMRG for ab initio quantum chemistry
3    Copyright (C) 2013-2018 Sebastian Wouters
4 
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9 
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License along
16    with this program; if not, write to the Free Software Foundation, Inc.,
17    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 
20 #ifndef OPTIONS_CHEMPS2_H
21 #define OPTIONS_CHEMPS2_H
22 
23 #include <stdlib.h>
24 #include <string>
25 
26 using std::string;
27 
28 namespace CheMPS2{
29 
30    const int    DMRGSCF_maxIterations         = 100;
31    const double DMRGSCF_gradientNormThreshold = 1e-6;
32    const bool   DMRGSCF_storeUnitary          = true;
33    const string DMRGSCF_unitary_storage_name  = "CheMPS2_CASSCF.h5";
34    const string DMRGSCF_eri_storage_name      = "CheMPS2_eri_temp.h5";
35    const string DMRGSCF_f4rdm_name            = "CheMPS2_f4rdm.h5";
36    const int    DMRGSCF_max_mem_eri_tfo       = 100 * 100 * 100 * 100; // Measured in number of doubles
37    const bool   DMRGSCF_debugPrint            = false;
38    const bool   DMRGSCF_stateAveraged         = true;
39 
40    const int    DMRGSCF_whichActiveSpace      = 0;
41    const bool   DMRGSCF_dumpCorrelations      = false;
42    const bool   DMRGSCF_startLocRandom        = false;
43 
44    const bool   DMRGSCF_doDIIS                = false;
45    const double DMRGSCF_DIISgradientBranch    = 1e-2;
46    const int    DMRGSCF_numDIISvecs           = 7;
47    const bool   DMRGSCF_storeDIIS             = true;
48    const string DMRGSCF_diis_storage_name     = "CheMPS2_DIIS.h5";
49 
50    const double CASPT2_OVLP_CUTOFF            = 1e-8;
51 
52    const double CONJ_GRADIENT_RTOL            = 1e-10;
53    const double CONJ_GRADIENT_PRECOND_CUTOFF  = 1e-12;
54 
55    const string defaultTMPpath                = "/tmp";
56    const bool   DMRG_storeRenormOptrOnDisk    = true;
57    const bool   DMRG_storeMpsOnDisk           = false;
58    const string DMRG_MPS_storage_prefix       = "CheMPS2_MPS";
59    const string DMRG_OPERATOR_storage_prefix  = "CheMPS2_Operators_";
60 
61    const bool   HAMILTONIAN_debugPrint        = false;
62    const string HAMILTONIAN_TmatStorageName   = "CheMPS2_Ham_Tmat.h5";
63    const string HAMILTONIAN_VmatStorageName   = "CheMPS2_Ham_Vmat.h5";
64    const string HAMILTONIAN_ParentStorageName = "CheMPS2_Ham_parent.h5";
65 
66    const string TWO_RDM_storagename           = "CheMPS2_2DM.h5";
67    const string THREE_RDM_storage_prefix      = "CheMPS2_3DM_";
68 
69    const bool   HEFF_debugPrint               = true;
70    const int    DAVIDSON_NUM_VEC              = 32;
71    const int    DAVIDSON_NUM_VEC_KEEP         = 3;
72    const double DAVIDSON_PRECOND_CUTOFF       = 1e-12;
73    const double DAVIDSON_FCI_RTOL             = 1e-10;  // Base value for FCI and augmented Hessian diagonalization
74    const double DAVIDSON_DMRG_RTOL            = 1e-5;   // Block's Davidson tolerance would correspond to HEFF_DAVIDSON_DMRG_RTOL^2
75 
76    const int    SYBK_dimensionCutoff          = 262144;
77 
78    const double TENSORT_orthoComparison       = 1e-13;
79 
80    const bool   CORRELATIONS_debugPrint       = false;
81    const double CORRELATIONS_discardEig       = 1e-100;
82 
83    const double EDMISTONRUED_gradThreshold    = 1e-8;
84    const int    EDMISTONRUED_maxIter          = 1000;
85    const int    EDMISTONRUED_maxIterBackTfo   = 15;
86 
87 }
88 
89 #endif
90 
91