44 int main(
int argc,
char **argv)
53 std::string integralsfile =
"mo-integrals.h5";
56 bool localmini =
false;
59 struct option long_options[] =
61 {
"integrals", required_argument, 0,
'i'},
62 {
"unitary", required_argument, 0,
'u'},
63 {
"random", no_argument, 0,
'r'},
64 {
"scan", no_argument, 0,
's'},
65 {
"local-minimizer", no_argument, 0,
'l'},
66 {
"help", no_argument, 0,
'h'},
72 while( (j = getopt_long (argc, argv,
"d:rlhi:u:s", long_options, &i)) != -1)
77 cout <<
"Usage: " << argv[0] <<
" [OPTIONS]\n"
79 " -i, --integrals=integrals-file Set the input integrals file\n"
80 " -u, --unitary=unitary-file Use the unitary matrix in this file\n"
81 " -r, --random Perform a random unitary transformation on the Hamiltonian\n"
82 " -l, --local-minimizer Use the local minimizer\n"
83 " -h, --help Display this help\n"
88 integralsfile = optarg;
104 cout <<
"Reading: " << integralsfile << endl;
108 setenv(
"SAVE_H5_PATH",
"./", 0);
110 cout <<
"Using save path: " << getenv(
"SAVE_H5_PATH") << endl;
114 const auto L = ham.getL();
115 const auto N = ham.getNe();
117 cout <<
"Starting with L=" << L <<
" N=" << N << endl;
119 if(!unitary.empty() && !localmini)
121 cout <<
"Reading transform: " << unitary << endl;
139 std::string filename = getenv(
"SAVE_H5_PATH");
140 filename +=
"/random-start-unitary.h5";
148 struct sigaction act;
153 sigemptyset(&blockset);
154 act.sa_mask = blockset;
156 sigaction(SIGALRM, &act, 0);
160 sigaction(SIGUSR1, &act, 0);
164 LocalMinimizer minimize(ham);
168 cout <<
"Starting local minimizer from: " << unitary << endl;
169 minimize.getOrbitalTf().get_unitary().loadU(unitary);
172 minimize.UsePotentialReduction();
174 minimize.set_conv_crit(1e-6);
178 cout <<
"Bottom is " << minimize.get_energy() << endl;
180 method = minimize.getMethod_PR();
185 cout <<
"The optimal energy is " << method.
evalEnergy() << std::endl;
190 std::string h5_name = getenv(
"SAVE_H5_PATH");
191 h5_name +=
"/optimal-rdm.h5";
195 h5_name = getenv(
"SAVE_H5_PATH");
196 h5_name +=
"/optimal-ham.h5";
static Hamiltonian CreateFromH5(const string filename)
void stopcalcsignal(int sig)
void print_unitary() const
void stopminsignal(int sig)
sig_atomic_t stopping_min
int main(int argc, char **argv)
void WriteToFile(hid_t &group_id) const
double evalEnergy() const
void make_skew_symmetric()