Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kohn-sham_random-phase_approximation [2024/07/12 08:37] – external edit 127.0.0.1 | kohn-sham_random-phase_approximation [2025/07/30 22:26] (current) – [Kohn-Sham random-phase approximation] hesselmann | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Kohn-Sham random-phase approximation ====== | ||
| + | This chapter describes three different programs that are related to Kohn-Sham based RPA correlation methods. The first one is the density fitting RPA program of Heßelmann et al. described in section [[Kohn-Sham random-phase approximation# | ||
| + | |||
| + | All of the different codes are capable to perform standard RPA correlation energy calculations, | ||
| + | ===== Density fitting RPA programs ===== | ||
| + | |||
| + | Electron correlation energies within the random-phase approximation can be calculated by the programs **DIRPA**, **RPAX2** and **ACFDT** that are subdirectives of the driver command **KSRPA**. These methods should be used in conjunction with Kohn-Sham reference determinants, | ||
| + | |||
| + | The self-consistent random phase approximation method ([[https:// | ||
| + | |||
| + | A typical input to calculate the RPAX2 correlation energy is given by: | ||
| + | |||
| + | < | ||
| + | basis={ | ||
| + | set, | ||
| + | set, | ||
| + | |||
| + | ks,pbe | ||
| + | {ksrpa; rpax2, | ||
| + | </ | ||
| + | All methods are implemented using density-fitting of the two-electron repulsion integrals, see Refs. [2,4]. Because of this, auxiliary basis sets for fitting occupied-virtual orbital pairs have to be given, see section [[basis input# | ||
| + | |||
| + | References: | ||
| + | |||
| + | **RPA:**\\ | ||
| + | $[1]$ F. Furche, [[https:// | ||
| + | **RPAX2: | ||
| + | $[2]$ A. Heßelmann, [[https:// | ||
| + | $[3]$ A. Heßelmann, Top. Curr. Chem. **365** 97 (2015)\\ | ||
| + | **ACFDT(ALDA): | ||
| + | $[4]$ A. Heßelmann and A. Görling, [[https:// | ||
| + | |||
| + | |||
| + | ==== DIRPA program ==== | ||
| + | |||
| + | The direct RPA program (implemented with the algorithm described in [1]) has the following options: | ||
| + | |||
| + | * **ORB** record number containing the orbital coefficients and eigenvalues (mandatory) | ||
| + | * **AUXBAS** string containing the label for the auxiliary basis set (default '' | ||
| + | * **CORE** number of core orbitals (which are not correlated) | ||
| + | * **MAXIT** maximum number of iterations (default ’40’) | ||
| + | * **THREN** threshold for convergence of energy (default ’1d-8’) | ||
| + | * **FMIX** mixing factor for the amplitude update $T^{\text{new}}=f T^{\text{old}}+(1-f)T^{\text{new}}$ (default: ’0.4d0’) | ||
| + | * **RESTART** logical flag to enable a restart from an unfinished calculation. For this, the 3-index Coulomb integrals (Lc.dat) and the two amplitude files (T0.dat and T1.dat) are required if MODE=1 or MODE=2, see below. In case of MODE=3, Molpro’s file 4 needs to be saved in the previous calculation (using, e.g., '' | ||
| + | * **NOMAX** maximum number of $N_{\text{aux}}\times N_{\text{virt}}$ batches to be kept in memory ($N_{\text{aux}}$: | ||
| + | * **MODE** can have the values ’0’, | ||
| + | * **L** string containing the scratch file name for the 3-index Coulomb integrals (default: ’Lc.dat’) | ||
| + | * **T0** string containing the scratch file name for the amplitudes (default: ’T0.dat’) | ||
| + | * **T1** string containing the scratch file name for the amplitude updates (default: ’T1.dat’) | ||
| + | * **SOSEX** logical flag, set to SOSEX=1 if the SOSEX energy shall be calculated after convergence (default: ’SOSEX=0’) | ||
| + | |||
| + | Note that in case of MODE=1 or MODE=2 it is recommended to have the wavefunction (wfu) directory located on a scratch partition. E.g., add the command line option '' | ||
| + | |||
| + | ==== RPAX2 program ==== | ||
| + | |||
| + | The RPAX2 method is an extension to the RPA and accounts for higher order particle-hole pair exchange contributions [2,3]. The RPAX2 program has the same options as the DIRPA program, see section [[Kohn-Sham random-phase approximation# | ||
| + | |||
| + | * **DIR** if set to DIR$\ne$0 this enables a direct RPA calculation (default ’0’) | ||
| + | * **MEM** if set to MEM$\ne$0 the 3-index Coulomb integrals and the amplitudes are kept in memory (default: 0) | ||
| + | |||
| + | Spin-unrestricted calculations can be done using the **URPAX2** program. In this case the orbitals from a preceeding unrestricted Kohn-Sham calculation have to be passed to the program (via the '' | ||
| + | |||
| + | ==== ACFDT program ==== | ||
| + | |||
| + | The ACFDT (adiabatic connection fluctuation-dissipation theorem) method is an alternative approach to derive the RPA. If used in conjunction with local adiabatic exchange-correlation kernels, the method can also describe electron-electron interaction contributions beyond the RPA. Currently, the ALDA xc-kernel can be used in the program (ACFDT(ALDA) method), see also Ref. [4]. The **ACFDT** program has the following options: | ||
| + | |||
| + | * **ORB** record number containing the orbital coefficients and eigenvalues (mandatory) | ||
| + | * **AUXBAS** string containing the label for the auxiliary basis set (default '' | ||
| + | * **CORE** number of core orbitals (which are not correlated) | ||
| + | * **NFREQ** number of frequency quadrature points (default ’20’) | ||
| + | * **NCOUP** number of coupling strength quadrature points (default ’7’) | ||
| + | * **GRIDTHR** threshold for grid accuracy (default ’1d-10’) | ||
| + | * **THRKERN** threshold for density in kernel integration (default ’1d-12’) | ||
| + | * **XFAC** factor tor ALDA exchange contribution (default ’1d0’) | ||
| + | * **CFAC** factor tor ALDA correlation contribution (default ’1d0’) | ||
| + | * **NOXC** can be set to ’NOXC$\ne 0$’ if no ALDA xc-contribution shall be added to the electron-electron interaction (which then corresponds to a standard direct RPA calculation) (default ’0’) | ||
| + | * **OMQUAD** set to ’1’ for Gauss-Chebyshev quadrature and ’2’ for Gauss-Legendre quadrature (default ’2’) | ||
| + | * **W0** parameter for Gauss-Legendre quadrature, see R. D. Amos //et al.//, //J. Phys. Chem.// **89** (1985) 2186 | ||
| + | * **L3ALPHA** logical flag to switch on calculation of coupling-strength dependent xc-kernel integrals (deactivated by default) | ||
| + | * **FXC2IDX** logical flag for performing a double density fitting approximation of the electron-electron interaction matrix (deactivated by default) | ||
| + | * **FXC2** a switch for various approaches to calculate the 2-index xc-kernel integrals (default ’1’) | ||
| + | * **THRDUM** threshold for density on dummy centre quadrature points (if set to a large value, the dummy centre quadrature points are skipped completely) (default ’0d0’) | ||
| + | * **SING** logical flag to enable handling of singularity of 2-index xc-kernel integrals, see also the following two options (enabled by default) | ||
| + | * **ESHIFT** corresponds to $\epsilon$ in $f=1-\rho/ | ||
| + | * **FSCAL** corresponds to $s$ in $\rho=\rho+s\cdot f$ (default ’1d-4’) | ||
| + | |||
| + | The ACFDT(ALDA) method is ill-defined for short electron-electron distances, see Ref. [4] and F. Furche and T. Van Voorhis, | ||
| + | |||
| + | * **SCAL** scaling factor for the RPA kernel (used for short electron-electron distances) (default ’1d0’) | ||
| + | * **MU** range-separation parameter. If not used, the program does not perform a correction for the short range electron-electron interaction. | ||
| + | |||
| + | For applying the correction as described in Ref. [4], the vaules of '' | ||
| + | |||
| + | The **ACFDT3** program implements an approximation to the ACFDT(ALDA) method assuming that the xc-kernel matrix depends linearly on the coupling strength (which is true for the exchange contribution but not, in general, for the correlation contribution to the kernel). Within this approximation the coupling-strength integration can be done analytically leading to a performance improvement over the **ACFDT** and **ACFDT2** programs. The options for **ACFDT3** are identical to the ones given above for **ACFDT** and **ACFDT2**. | ||
| + | |||
| + | |||
| + | ===== Random-phase approximation (RPATDDFT) program ===== | ||
| + | |||
| + | The random-phase approximation program ('' | ||
| + | |||
| + | List of the main keywords: | ||
| + | |||
| + | * **'' | ||
| + | Calculation of RPA correlation energies [1] (see options below) | ||
| + | * **'' | ||
| + | Calculation of dynamic dipole polarizabilities and C$_6$ dispersion coefficients [10] (see options below) | ||
| + | * **'' | ||
| + | Calculation of excitation energies [11] (see options below) | ||
| + | * **'' | ||
| + | |||
| + | as well as contextual options (see later for an explanation on this): | ||
| + | |||
| + | * **'' | ||
| + | Number of quadrature points for the Gauss-Legendre numerical integration along the adiabatic connection for RPA calculations (default is 7). If '' | ||
| + | * **'' | ||
| + | Options for the numerical integration over the frequency variable of RPA calculations. '' | ||
| + | * **'' | ||
| + | |||
| + | and global options, shared by all commands inside the '' | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | Specify the exchange and correlation kernel for '' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | Calculation of RPA correlation energies '' | ||
| + | If no method is given, a '' | ||
| + | |||
| + | There are two main RPA // | ||
| + | |||
| + | There are four main // | ||
| + | |||
| + | Most variants+formulations can readily by used in a spin-unrestricted context [6]. This is implemented in the code and does not need any further input from the user: the RPA program recognizes the spin-unrestricted character of a SCF calculation that was done beforehand and acts accordingly. | ||
| + | |||
| + | Gradients of most of the RCCD-formulation RPA energies are available, both without range-separation with RHF orbitals and with range-separation with RSH orbitals [9]. The calculations are triggered by the presence of the keyword '' | ||
| + | |||
| + | The user can test the RPA program using '' | ||
| + | |||
| + | The keywords for the methods are constructed on the model: | ||
| + | |||
| + | '' | ||
| + | |||
| + | For the AC formulation, | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | For the DIEL formulation, | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | For the RCCD formulation, | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | For the PLASMON formulation, | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | Note that to all these keywords are associated energy variables defined as : | ||
| + | |||
| + | '' | ||
| + | |||
| + | (see the examples below). | ||
| + | |||
| + | Example of a dRPA-I calculation using the PBE functional: | ||
| + | |||
| + | < | ||
| + | {rks, | ||
| + | {rhf, | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | } | ||
| + | e=ECORR_DRPAI_AC | ||
| + | </ | ||
| + | Example of a range-separated RPAx-I calculation using the short-range PBE exchange-correlation functional and the range-separated parameter mu=0.5: | ||
| + | |||
| + | < | ||
| + | {int; | ||
| + | {rks, | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | Example of several RPA calculations in the same run: | ||
| + | |||
| + | < | ||
| + | {rhf, | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | } | ||
| + | e1=ECORR_DRPAI_AC | ||
| + | e2=ECORR_RPAXII_RCCD | ||
| + | e3=ECORR_DRPAI_DIEL | ||
| + | </ | ||
| + | (this way, the calculations are done with the same transformed integrals, //i.e.// without redoing the integral transformation). | ||
| + | |||
| + | Example of a dRPA-I gradient calculation: | ||
| + | |||
| + | < | ||
| + | {rks, | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | } | ||
| + | force | ||
| + | </ | ||
| + | Example of a geometry optimization at the LDA+dRPA-I level: | ||
| + | |||
| + | < | ||
| + | {int; | ||
| + | {rks, | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | } | ||
| + | optg | ||
| + | </ | ||
| + | Calculation of properties, excitation energies and oscillator strengths\\ | ||
| + | '' | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | The exchange density functionals (FUNCX) available are: | ||
| + | |||
| + | * **'' | ||
| + | |||
| + | The correlation density functionals (FUNCC) available are: | ||
| + | |||
| + | * **'' | ||
| + | * **'' | ||
| + | |||
| + | Example of a range-separated time-dependent density-functional theory calculation using the short-range LDA exchange-correlation functional and the range-separated parameter mu=0.5: | ||
| + | |||
| + | < | ||
| + | mu=0.5 | ||
| + | {int; | ||
| + | {rks, | ||
| + | {int} | ||
| + | {setmu,mu} | ||
| + | {rpatddft; | ||
| + | | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | Example of a TDHF-TDA calculation with writing of several files for interfacing with a real-time propagation code (see Ref. [14]): | ||
| + | |||
| + | < | ||
| + | {rpatddft; | ||
| + | integral,1; | ||
| + | writefile, | ||
| + | orb,2330.2; | ||
| + | excit, | ||
| + | NOSPINBLOCK; | ||
| + | tda} | ||
| + | </ | ||
| + | The files are: '' | ||
| + | |||
| + | References\\ | ||
| + | $[1]$ J. G. Ángyán, R.-F. Liu, J. Toulouse, and G. Jansen, [[https:// | ||
| + | $[2]$ G. Jansen, B. Mussard, D. Rocca, J. G. Ángyán (in prep).\\ | ||
| + | $[3]$ J. Toulouse, W. Zhu, A. Savin, G. Jansen, and J. G. Ángyán, [[https:// | ||
| + | $[4]$ F. Furche, [[https:// | ||
| + | $[5]$ J. Toulouse, I. C. Gerber, G. Jansen, A. Savin, and J. G. Ángyán, [[https:// | ||
| + | $[6]$ B. Mussard, P. Reinhardt, J. G. Ángyán, and J. Toulouse, J. Chem. Phys. (submitted).\\ | ||
| + | $[7]$ Heßelmann, A., Görling, A., [[https:// | ||
| + | $[8]$ Heßelmann, A., [[https:// | ||
| + | $[9]$ B. Mussard, P. G. Szalay, J. G. Ángyán, [[https:// | ||
| + | $[10]$ J. Toulouse, E. Rebolini, T. Gould, J. F. Dobson, P. Seal, J. G. Ángyán, [[https:// | ||
| + | $[11]$ E. Rebolini, A. Savin, J. Toulouse, [[https:// | ||
| + | $[12]$ J. Toulouse, A. Savin, and H.-J. Flad, Int. J. Quantum Chem. **100**, 1047 (2004).\\ | ||
| + | $[13]$ S. Paziani, S. Moroni, P. Gori-Giorgi, | ||
| + | $[14]$ E. Coccia, B. Mussard, M. Lebeye, J. Caillat, R. Taieb, J. Toulouse, and E. Luppi, [[https:// | ||
| + | |||
| + | |||
| + | ===== Self consistent RPA programs ===== | ||
| + | |||
| + | ==== RIRPA program ==== | ||
| + | |||
| + | The RIRPA and URIRPA programs allow non-self-consistent spin-restricted and spin-unrestricted resolution of identity (RI) random phase approximation (RPA) [1-3] and σ-functional [4-6] calculations. These methods should be used in conjunction with conventional Kohn-Sham (KS) density functional theory (DFT) calculations, | ||
| + | |||
| + | **Bibilography: | ||
| + | **RPA:**\\ | ||
| + | [1] F. Furche, [[https:// | ||
| + | [2] A. Heßelmann and A. Görling, [[https:// | ||
| + | [3] X. Ren, P. Rinke, C. Joas, and M. Scheffler, [[https:// | ||
| + | **σ-functionals: | ||
| + | [4] E. Trushin, A. Thierbach, A. Görling, [[https:// | ||
| + | [5] S. Fauser, E. Trushin, C. Neiss, A. Görling, [[https:// | ||
| + | [6] C. Neiss, S. Fauser, A. Görling, [[https:// | ||
| + | **Other papers cited in the documentation: | ||
| + | [7] E. Trushin, A. Görling, [[https:// | ||
| + | |||
| + | We kindly ask you to cite the original publications of the corresponding methods in the publications that result from these programs. | ||
| + | |||
| + | Example input file for spin-restricted calculations for the CO molecule: | ||
| + | <code - examples/ | ||
| + | gthresh, | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set,ri; default, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 2 | ||
| + | |||
| + | C 0.000000 0.000000 -0.646514 | ||
| + | O 0.000000 0.000000 0.484886 | ||
| + | } | ||
| + | |||
| + | df-ks, | ||
| + | {cfit, | ||
| + | |||
| + | acfd;rirpa ! RPA/ | ||
| + | </ | ||
| + | As well as an example of spin-unrestricted calculation for the NH< | ||
| + | <code - examples/ | ||
| + | gthresh, | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set,ri; default, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 3 | ||
| + | |||
| + | N 0.000000 0.000000 0.142235 | ||
| + | H 0.000000 0.800646 -0.497821 | ||
| + | H 0.000000 -0.800646 -0.497821 | ||
| + | } | ||
| + | |||
| + | spin=1 | ||
| + | |||
| + | df-uks, | ||
| + | {cfit, | ||
| + | |||
| + | acfd;urirpa ! RPA/ | ||
| + | </ | ||
| + | The following options are available for the RIRPA and URIRPA programs:\\ | ||
| + | * **orb** record number containing the orbital coefficients, | ||
| + | * **dfit** logical flag to enable density fitting during the reference energy calculation (default: ’1’)\\ | ||
| + | * **sigma** logical flag to enable σ-functional calculation (default: ’1’)\\ | ||
| + | * **sigma_param** string containing a name for the parametrization used (default depends on exchange-correlation functional used in preceding DFT calculation: | ||
| + | * **write_sigma** logical flag to enable writing of sigma.dat file with reference energy, frequency integration weights and σ-values (default: ’0’)\\ | ||
| + | * **thr_overlap_ri** threshold for processing RI basis according to Section IIB2 in Ref. [7] (default: ‘1d-99’)\\ | ||
| + | * **thr_fai_ri** threshold for processing RI basis according to Section IIB5 in Ref. [7] (default: ‘1d-14’)\\ | ||
| + | * **thr_rpa** threshold for throwing out contributions corresponding to small eigenvalue differences during construction of the response function (default: ‘1d-6’)\\ | ||
| + | * **nquadint** number of logarithmically spaced intervals for frequency integration (default ‘1’)\\ | ||
| + | * **nquad** number of points per interval for frequency integration (default ' | ||
| + | * **w0** scaling factor for the rational function mapping the Gauss–Legendre quadrature for the interval [−1, 1] to the interval [0, ∞], see Eqs. 37-38 in Ref. [4] for details (default: ‘2.5’)\\ | ||
| + | * **vc_scal** scaling factor for the Coulomb kernel, which can be used to mimic the effect of the inclusion of the exact-exchange kernel. In the special case of non-spin-polarized two-electron systems, the RPA calculation with a Coulomb kernel scaled by 1/2 is equivalent to including of the exact-exchange kernel. Implemented only in RIRPA (default: ‘1d0’)\\ | ||
| + | * **verb** determines the level of verbosity in the output file, integer values of 0, 1, 3 provide different levels of verbosity (default ’0’) | ||
| + | |||
| + | ==== SCEXX program ==== | ||
| + | The '' | ||
| + | |||
| + | **Bibilography: | ||
| + | [1] A. Heßelmann, A.W. Götz, F. Della Sala, A. Görling [[https:// | ||
| + | [2] E. Trushin, A. Görling, [[https:// | ||
| + | [3] E. Trushin, A. Görling, [[https:// | ||
| + | [4] P. Bleiziffer, A. Heßelmann, A. Görling [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **NOTE:** We have tutorial which provides practical Hands-on examples about the use of '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Important: | ||
| + | To obtain numerically stable exchange potentials, one must either use regularization techniques to carefully handle the small eigenvalues of the response matrix or to use auxiliary basis sets that are balanced to the orbital basis set. The latter can be done by manually constructing specific orbital and auxiliary basis sets that are sufficiently balanced. This has been possible for a number of atoms and molecules with quite large orbital basis sets [1], but does not qualify as a general applicable routine approach. The '' | ||
| + | |||
| + | The preprocessing step to remove linear combinations of auxiliary basis functions that couple poorly to products of occupied times unoccupied Kohn-Sham orbitals is implemented according to Sec II5 of Ref. [2]. It involves the threshold '' | ||
| + | |||
| + | ^ Orbital basis set ^ '' | ||
| + | | aug-cc-pwCVTZ | ||
| + | | aug-cc-pwCVQZ | ||
| + | | aug-cc-pwCV5Z | ||
| + | |||
| + | These thresholds are expected to work also for orbital basis sets without augmentation cc-pwCVXZ (X=T,Q,5) and without core-polarization functions aug-cc-pVXZ (X=T,Q,5). As an auxiliary basis set (OEP), the aug-cc-pVXZ/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | The code allows to perform calculations symmetrized in ordinary, spin or both ordinary and spin space according to Ref. [3], see parameters '' | ||
| + | |||
| + | Below is an example input file for spin-restricted calculations for the CO molecule. Note that the input record from a preceding calculation is mandatory for initialization of orbitals and eigenvalues as starting point for EXX calculation, | ||
| + | <code - examples/ | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set, | ||
| + | set, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 2 | ||
| + | |||
| + | C 0.000000 | ||
| + | O 0.000000 | ||
| + | } | ||
| + | |||
| + | df-hf, | ||
| + | {cfit, | ||
| + | |||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | As well as an example of a spin-unrestricted calculation for the BeF molecule: | ||
| + | |||
| + | <code - examples/ | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set, | ||
| + | set, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 2 | ||
| + | |||
| + | Be 0.0000000 | ||
| + | F | ||
| + | |||
| + | } | ||
| + | |||
| + | charge=0 | ||
| + | spin=1 | ||
| + | |||
| + | df-uhf, | ||
| + | {cfit, | ||
| + | |||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | The following options are available for the `SCEXX` and `USCEXX` programs: | ||
| + | |||
| + | * **orb** record from which the orbital coefficients and eigenvalues are read (default: ‘2100.2’ and ‘2200.2’ for '' | ||
| + | * **save** record in which the resulting orbital coefficients, | ||
| + | * **dfit** if set to $\neq$ 0, enable density fitting for two-electron integrals (default: ’1’) | ||
| + | * **maxit** maximum number of iterations (default ' | ||
| + | * **minit** minimum number of iterations (default ' | ||
| + | * **maxdiis** maximum size of the DIIS history (default ' | ||
| + | * **fixmix** if set to $\neq$ 0, switch from DIIS to linear mixing scheme with fixed mixing ratio. This may be useful for converging systems with a small HOMO-LUMO gap where DIIS may have problems. (default ' | ||
| + | * **mixrate** mixing rate for linear mixing scheme, corresponds to the fraction of the old Fock matrix in the new step (default ' | ||
| + | * **energy** threshold for energy convergence (default: ' | ||
| + | * **density** threshold for density convergence (default: ' | ||
| + | * **thr_sym** threshold for symmetrization of the OEP basis set to enforce OEP basis exhibits full symmetry of molecule. Set the threshold to 1d-10 to enable symmetrization. (default: ‘0d0’) | ||
| + | * **thr_overlap_oep** threshold for processing OEP basis according to Section IIB2 in Ref. [2] (default: ‘1d-99’) | ||
| + | * **thr_fai_oep** threshold for processing OEP basis according to Section IIB5 in Ref. [2] (default: ‘1.7d-2’) | ||
| + | * **thr_oep** threshold for throwing out contributions corresponding to small eigenvalue differences appearing in the denominator when constructing the so-called lambda term $1/ | ||
| + | * **solve** matrix inversion methods to solve the OEP equation. The different options are: GESV, TSVD, GTSVD. GESV corresponds to a direct solution without any regularization technique. TSVD and GTSVD correspond to two solutions with regularization according to Eqs. (55) and (56) of Ref. [4], respectively. (default: ' | ||
| + | * **thr_solve** threshold used during matrix inversion to solve the OEP equation with TSVD and GTSVD methods. Note that the default threshold of 1d-99 results in the absence of regularization (default: ‘1d-99’) | ||
| + | * **vref_fa** if set to $\neq$ 0, enable the use of the Fermi-Amaldi potential as reference potential. Otherwise, the reference potential is constructed according to Eq. (45) of Ref. [2] (default: ' | ||
| + | * **vhoep** if set to $\neq$ 0, enable the calculation of the Hartree potential from the representation in the OEP basis instead of the construction from the density matrix as in the Hartree-Fock calculation (default: ‘0’) | ||
| + | * **space_sym** if set to $\neq$ 0, enable the space-symmetrization. When active sets vhoep=1 thr_sym=1d-10. (default: ' | ||
| + | * **homo** if set to $\neq$ 0, enable the use of the HOMO condition (default ' | ||
| + | * **plot_always** if set to $\neq$ 0, enable writing of data-files for plotting for every iteration. Otherwise, only final results are written. (default: ' | ||
| + | * **plot_x** if set to $\neq$ 0, enable writing of file with plotting data for exchange potential along x-axis (default: ' | ||
| + | * **plot_y** if set to $\neq$ 0, enable writing of file with plotting data for exchange potential along y-axis (default: ' | ||
| + | * **plot_z** if set to $\neq$ 0, enable writing of file with plotting data for exchange potential along z-axis (default: ' | ||
| + | * **test_pot** if set to $\neq$ 0, enable a numerical test to determine if the potential is the derivative of the energy expression (default ’0’) | ||
| + | * **verb** determines the level of verbosity in the output file, integer values of 0, 1, 2, and 3 provide different levels of verbosity (default ’0’) | ||
| + | |||
| + | The following parameters are only relevant for the '' | ||
| + | * **spin_sym** if set to $\neq$ 0, enable spin-symmetrization in spin-unrestricted calculations, | ||
| + | * **vref_fa_sameab** if set to $\neq$ 0, force the Fermi-Amaldi reference potential to be the same for $\alpha$ and $\beta$ spin channels (default: ‘0’) | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Pitfalls: | ||
| + | * One might encounter convergence problem using DIIS for systems exhibiting small HOMO-LUMO gaps. In this case switching to linear mixing scheme often might resolve the problem.\\ | ||
| + | * One might sometimes encounter energy oscillations between two solutions with different numbers of OEP basis functions remaining after OEP basis set preprocessing. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Since the local exchange potential is important in self-consistent exact-exchange calculations, | ||
| + | < | ||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | At the end there is the file '' | ||
| + | <code python> | ||
| + | import numpy as np | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | def load_potential(potfile): | ||
| + | """ | ||
| + | |||
| + | Args: | ||
| + | potfile: Path to file with potential data. | ||
| + | |||
| + | Returns: | ||
| + | x: x coordinate. | ||
| + | y: y coordinate. | ||
| + | z: z coordinate. | ||
| + | coord: coordinate on path. | ||
| + | vref: reference potential. | ||
| + | vrest: rest potential. | ||
| + | v: full potential. | ||
| + | """ | ||
| + | x, y, z, coord = list(), list(), list(), list() | ||
| + | vref, vrest, v = list(), list(), list() | ||
| + | for line in open(potfile): | ||
| + | aux = line.split() | ||
| + | x.append(float(aux[1])) | ||
| + | y.append(float(aux[2])) | ||
| + | z.append(float(aux[3])) | ||
| + | coord.append(float(aux[4])) | ||
| + | vref.append(float(aux[6])) | ||
| + | vrest.append(float(aux[7])) | ||
| + | v.append(float(aux[8])) | ||
| + | x, y, z, coord = np.array(x), | ||
| + | vref, vrest, v = np.array(vref), | ||
| + | return x, y, z, coord, vref, vrest, v | ||
| + | |||
| + | _, _, _, coord, vxref, vxrest, vx = load_potential(' | ||
| + | |||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | |||
| + | plt.ylabel(' | ||
| + | plt.xlabel(' | ||
| + | plt.xlim(-5, | ||
| + | plt.legend(frameon=False, | ||
| + | plt.tight_layout() | ||
| + | plt.show() | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | In the similar way, for spin-unrestricted calculations with '' | ||
| + | <code python> | ||
| + | import numpy as np | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | def load_potential(filename): | ||
| + | """ | ||
| + | pass | ||
| + | |||
| + | _, _, _, coord, _, _, vxa = load_potential(' | ||
| + | _, _, _, coord, _, _, vxb = load_potential(' | ||
| + | |||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | |||
| + | plt.ylabel(' | ||
| + | plt.xlabel(' | ||
| + | plt.xlim(-5, | ||
| + | plt.legend(frameon=False, | ||
| + | plt.tight_layout() | ||
| + | plt.show() | ||
| + | </ | ||
| + | {{: | ||
| + | |||
| + | ==== SCRPA program ==== | ||
| + | The '' | ||
| + | |||
| + | **Bibilography: | ||
| + | [1] A. Heßelmann, A.W. Götz, F. Della Sala, A. Görling [[https:// | ||
| + | [2] E. Trushin, A. Görling, [[https:// | ||
| + | [3] P. Bleiziffer, A. Heßelmann, A. Görling [[https:// | ||
| + | [4] E. Trushin, S. Fauser, A. Mölkner, J. Erhard, A. Görling [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **NOTE:** We have tutorial which provides practical Hands-on examples about the use of '' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | **Important: | ||
| + | To obtain numerically stable potentials using optimized effective potential method, one must either use regularization techniques to carefully handle the small eigenvalues of the response matrix or to use auxiliary basis sets that are balanced to the orbital basis set. The latter can be done by manually constructing specific orbital and auxiliary basis sets that are sufficiently balanced. This has been possible for a number of atoms and molecules with quite large orbital basis sets [1], but does not qualify as a general applicable routine approach. The '' | ||
| + | |||
| + | The preprocessing step to remove linear combinations of auxiliary basis functions that couple poorly to products of occupied times unoccupied Kohn-Sham orbitals is implemented according to Sec II5 of Ref. [2]. It involves the threshold '' | ||
| + | |||
| + | ^ Orbital basis set ^ '' | ||
| + | | aug-cc-pwCVTZ | ||
| + | | aug-cc-pwCVQZ | ||
| + | | aug-cc-pwCV5Z | ||
| + | |||
| + | These thresholds are expected to work also for orbital basis sets without augmentation cc-pwCVXZ (X = T, Q, 5) and without core-polarization functions aug-cc-pVXZ (X = T, Q, 5). As an auxiliary basis set (OEP), the aug-cc-pVXZ/ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | Below is an example input file for spin-restricted calculations for the hygrogen molecule. Note that the input record from a preceding calculation is mandatory for initialization of orbitals and eigenvalues as starting point for RPA calculation, | ||
| + | |||
| + | <code - examples/ | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set, | ||
| + | set, | ||
| + | set, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 2 | ||
| + | |||
| + | H 0.0 0.0 0.370946 | ||
| + | H 0.0 0.0 -0.370946 | ||
| + | } | ||
| + | |||
| + | df-hf, | ||
| + | {cfit, | ||
| + | |||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | As well as an example of a spin-unrestricted calculation for the lithium molecule: | ||
| + | |||
| + | <code - examples/ | ||
| + | gdirect ! integral-direct mode | ||
| + | |||
| + | basis={ | ||
| + | default, | ||
| + | set, | ||
| + | set, | ||
| + | set, | ||
| + | } | ||
| + | |||
| + | symmetry, | ||
| + | |||
| + | angstrom | ||
| + | geometry={ | ||
| + | 1 | ||
| + | |||
| + | Li 0.0 0.0 0.0 | ||
| + | } | ||
| + | |||
| + | spin=1 | ||
| + | |||
| + | df-uhf, | ||
| + | {cfit, | ||
| + | |||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | The following options are available for the `SCRPA` and `USCRPA` programs: | ||
| + | |||
| + | * **orb** record from which the orbital coefficients and eigenvalues are read (default: ‘2100.2’ and ‘2200.2’ for '' | ||
| + | * **save** record in which the resulting orbital coefficients, | ||
| + | * **dfit** if set to $\neq$ 0, enable density fitting for two-electron integrals (default: ’1’) | ||
| + | * **maxit** maximum number of iterations (default ' | ||
| + | * **minit** minimum number of iterations (default ' | ||
| + | * **maxdiis** maximum size of the DIIS history (default ' | ||
| + | * **fixmix** if set to $\neq$ 0, switch from DIIS to linear mixing scheme with fixed mixing ratio. This may be useful for converging systems with a small HOMO-LUMO gap where DIIS may have problems. (default ' | ||
| + | * **mixrate** mixing rate for linear mixing scheme, corresponds to the fraction of the old Fock matrix in the new step (default ' | ||
| + | * **energy** threshold for energy convergence (default: ' | ||
| + | * **density** threshold for density convergence (default: ' | ||
| + | * **thr_sym** threshold for symmetrization of the OEP basis set to enforce OEP basis exhibits full symmetry of molecule. Set the threshold to 1d-10 to enable symmetrization. (default: ‘0d0’) | ||
| + | * **thr_overlap_oep** threshold for processing OEP basis according to Section IIB2 in Ref. [2] (default: ‘1d-99’) | ||
| + | * **thr_fai_oep** threshold for processing OEP basis according to Section IIB5 in Ref. [2] (default: ‘1.7d-2’) | ||
| + | * **thr_oep** threshold for throwing out contributions corresponding to small eigenvalue differences appearing in the denominator when constructing the so-called lambda term $1/ | ||
| + | * **thr_overlap_ri** threshold for processing RI basis according to Section IIB2 in Ref. [7] (default: ‘1d-99’) | ||
| + | * **thr_fai_ri** threshold for processing RI basis according to Section IIB5 in Ref. [7] (default: ‘1d-14’) | ||
| + | * **thr_rpa** threshold for throwing out contributions corresponding to small eigenvalue differences during construction of the response function (default: ‘1d-6’) | ||
| + | * **solve** matrix inversion methods to solve the OEP equation. The different options are: GESV, TSVD, GTSVD. GESV corresponds to a direct solution without any regularization technique. TSVD and GTSVD correspond to two solutions with regularization according to Eqs. (55) and (56) of Ref. [3], respectively. (default: ' | ||
| + | * **thr_solve** threshold used during matrix inversion to solve the OEP equation with TSVD and GTSVD methods. Note that the default threshold of 1d-99 results in the absence of regularization (default: ‘1d-99’) | ||
| + | * **nquadint** number of logarithmically spaced intervals for frequency integration (default ‘1’) | ||
| + | * **nquad** number of points per interval for frequency integration (default ' | ||
| + | * **w0** caling factor for rational the function mapping the Gauss–Legendre quadrature for the interval [−1, 1] to the interval [0, ∞], see Eqs. 37-38 in Ref. [4] for details (default: ‘2.5’) | ||
| + | * **vc_scal** scaling factor for the Coulomb kernel, which can be used to mimic the effect of the inclusion of the exact-exchange kernel. In the special case of non-spin-polarized two-electron systems, the RPA calculation with a Coulomb kernel scaled by 1/2 is equivalent to including of the exact-exchange kernel. Implemented only in `SCRPA` (default: ‘1d0’) | ||
| + | * **vref_fa** if set to $\neq$ 0, enable the use of the Fermi-Amaldi potential as reference potential. Otherwise, the reference potential is constructed according to Eq. (45) of Ref. [2] (default: ' | ||
| + | * **vhoep** if set to $\neq$ 0, enable the calculation of the Hartree potential from the representation in the OEP basis instead of the construction from the density matrix as in the Hartree-Fock calculation (default: ‘0’) | ||
| + | * **space_sym** if set to $\neq$ 0, enable the space-symmetrization. When active sets vhoep=1 thr_sym=1d-10. (default: ' | ||
| + | * **homo** if set to $\neq$ 0, enable the use of the HOMO condition for the exchange potential (default ' | ||
| + | * **plot_always** if set to $\neq$ 0, enable writing of data-files for plotting for every iteration. Otherwise, only final results are written. (default: ' | ||
| + | * **plot_x** if set to $\neq$ 0, enable writing of file with plotting data for exchange and correlation potentials along x-axis (default: ' | ||
| + | * **plot_y** if set to $\neq$ 0, enable writing of file with plotting data for exchange and correlation potentials along y-axis (default: ' | ||
| + | * **plot_z** if set to $\neq$ 0, enable writing of file with plotting data for exchange and correlation potentials along z-axis (default: ' | ||
| + | * **test_pot** if set to $\neq$ 0, enable a numerical test to determine if the potential is the derivative of the energy expression (default ' | ||
| + | * **verb** determines the level of verbosity in the output file, integer values of 0, 1, 2, and 3 provide different levels of verbosity (default ' | ||
| + | |||
| + | The following parameters are only relevant for the `USCRPA` code: | ||
| + | * **spin_sym** if set to $\neq$ 0, enable spin-symmetrization in spin-unrestricted calculations, | ||
| + | * **vref_fa_sameab** if set to $\neq$ 0, force the Fermi-Amaldi reference potential to be the same for $\alpha$ and $\beta$ spin channels (default: ' | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Pitfalls: | ||
| + | * One might encounter convergence problem using DIIS for systems exhibiting small HOMO-LUMO gaps. In this case switching to linear mixing scheme often might resolve the problem.\\ | ||
| + | * One might sometimes encounter energy oscillations between two solutions with different numbers of OEP basis functions remaining after OEP basis set preprocessing. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Since the local exchange and correlation potentials are important in self-consistent RPA calculations, | ||
| + | |||
| + | < | ||
| + | acfd; | ||
| + | </ | ||
| + | |||
| + | At the end one has the files '' | ||
| + | <code python> | ||
| + | import numpy as np | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | def load_potential(potfile): | ||
| + | """ | ||
| + | |||
| + | Args: | ||
| + | potfile: Path to file with potential data. | ||
| + | |||
| + | Returns: | ||
| + | x: x coordinate. | ||
| + | y: y coordinate. | ||
| + | z: z coordinate. | ||
| + | coord: coordinate on path. | ||
| + | vref: reference potential. | ||
| + | vrest: rest potential. | ||
| + | v: full potential. | ||
| + | """ | ||
| + | x, y, z, coord = list(), list(), list(), list() | ||
| + | vref, vrest, v = list(), list(), list() | ||
| + | for line in open(potfile): | ||
| + | aux = line.split() | ||
| + | x.append(float(aux[1])) | ||
| + | y.append(float(aux[2])) | ||
| + | z.append(float(aux[3])) | ||
| + | coord.append(float(aux[4])) | ||
| + | vref.append(float(aux[6])) | ||
| + | vrest.append(float(aux[7])) | ||
| + | v.append(float(aux[8])) | ||
| + | x, y, z, coord = np.array(x), | ||
| + | vref, vrest, v = np.array(vref), | ||
| + | return x, y, z, coord, vref, vrest, v | ||
| + | |||
| + | _, _, _, coord, vxref, vxrest, vx = load_potential(' | ||
| + | _, _, _, coord, _, _, vc = load_potential(' | ||
| + | |||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | |||
| + | plt.ylabel(' | ||
| + | plt.xlabel(' | ||
| + | plt.xlim(-5, | ||
| + | plt.legend(frameon=False, | ||
| + | plt.tight_layout() | ||
| + | plt.show() | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | In the similar way, for spin-unrestricted calculations with '' | ||
| + | |||
| + | <code python> | ||
| + | import numpy as np | ||
| + | import matplotlib.pyplot as plt | ||
| + | |||
| + | def load_potential(potfile): | ||
| + | """ | ||
| + | pass | ||
| + | |||
| + | _, _, _, coord, _, _, vxa = load_potential(' | ||
| + | _, _, _, coord, _, _, vca = load_potential(' | ||
| + | |||
| + | _, _, _, coord, _, _, vxb = load_potential(' | ||
| + | _, _, _, coord, _, _, vcb = load_potential(' | ||
| + | |||
| + | plt.plot(coord, | ||
| + | plt.plot(coord, | ||
| + | |||
| + | plt.ylabel(' | ||
| + | plt.xlabel(' | ||
| + | plt.xlim(-5, | ||
| + | plt.legend(frameon=False, | ||
| + | plt.tight_layout() | ||
| + | plt.show() | ||
| + | </ | ||
| + | |||
| + | {{: | ||