5.3. Finite-temperature calculations by the TPQ method¶
Sugiura and Shimizu showed that it is possible to calculate the finite-temperature properties from a few wavefunctions (in the thermodynamic limit, only one wave function is necessary) [1], [2] . The wavefunction is called the thermal pure quantum (TPQ) state. Because the TPQ state can be generated by operating the Hamiltonian to the random initial wavefunction, we directly use the routine Lanczos method for the TPQ calculations. The TPQ state is given by
Here, \(\beta\) represents inverse temperature and \(|\Phi_{\rm rand}\rangle\) is a random initial vector. It is shown that it is possible to calculate physical quantities at inverse temperature \(\beta\) as expectation values with respect to \(|\Phi(\beta)\rangle\).
5.3.1. Details of implementation¶
Construction of the micro canonical TPQ (mTPQ) state¶
Here, we explain how to construct the micro canonical TPQ (mTPQ) state [1], which offers the simplest method for calculating finite-temperature properties.
Let \(|\Phi_{\rm rand}\rangle\) be a random initial vector. By operating \((l-\hat{\mathcal H }/N_{s})^{k}\)(\(l\) is constant and \(N_{s}\) represents the number of sites) to \(|\Phi_{\rm rand}\rangle\), we obtain the \(k\)th TPQ states as
From \(|\Phi_{k}\rangle\), we estimate the corresponding inverse temperature \(\beta_{k}\) as
where \(u_{k}\) is the internal energy. The arbitrary local physical properties at \(\beta_{k}\) are also estimated as
In a finite-size system, error is caused by the choice of the initial random vector. To estimate the average value and error of the physical properties, we perform some independent calculations by changing \(|\Phi_{\rm rand}\rangle\). Since the temperature
Construction of the canonical TPQ (cTPQ) state¶
Here, we explain how to construct the canonical TPQ (cTPQ) state [2], which is another way to construct the TPQ state. In the cTPQ method, \(\exp[-\beta\hat{\mathcal H}/2]\) is approximated as follows:
As in the mTPQ method, physical quantities are calculated as
Initial vector¶
For the TPQ method, the initial vector is given by using a random generator, i.e., the coefficients of all the components for the initial vector are given by random numbers. The seed is calculated as
where \(r_s\) is the number given by an input file and \(n_{\rm run}\) is the number of runs. \(r_s\) and the maximum value of \(n_{\rm run}\) are defined by initial_iv
and NumAve
in an input file for Standard mode or a ModPara file for Expert mode, respectively. Random numbers are generated by using SIMD-oriented Fast Mersenne Twister (dSFMT) [3] . We can select the type of initial vector as a real number or complex number by using InitialVecType
in a ModPara file.
\(k_{\rm Thread}, N_{\rm Thread},\)
and \(k_{\rm Process}\) indicate
the thread ID, number of threads, process ID, respectively;
the initial vector depends both on initial_iv
and the number of parallelisms.