Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
the_density_functional_program [2026/02/23 19:50] – [Angular integration grid (ANGULAR)] hesselmannthe_density_functional_program [2026/04/17 18:29] (current) – [Rangehybrid methods (RANGEHYBRID)] hesselmann
Line 102: Line 102:
  
 Then sr-DFT/lr-HF calculations can be performed by calling the RKS program with the additional subcommand ''rangehybrid''. Available short-range functionals are ''exerf'' and ''ecerf'' for sr-LDA, and ''exerfpbe'' and ''ecerfpbe'' for sr-PBE; as usual, the functionals have to be specified after the ''rks'' command (e.g. ''%%rks,exerf,ecerf;%%''). The underlying short-range LDA correlation functional is that of S. Paziani, S. Moroni, P. Gori-Giorgi, G.B. Bachelet, [[https://dx.doi.org/10.1103/PhysRevB.73.155111|Phys. Rev. B]] **73**, 155111 (2006). Then sr-DFT/lr-HF calculations can be performed by calling the RKS program with the additional subcommand ''rangehybrid''. Available short-range functionals are ''exerf'' and ''ecerf'' for sr-LDA, and ''exerfpbe'' and ''ecerfpbe'' for sr-PBE; as usual, the functionals have to be specified after the ''rks'' command (e.g. ''%%rks,exerf,ecerf;%%''). The underlying short-range LDA correlation functional is that of S. Paziani, S. Moroni, P. Gori-Giorgi, G.B. Bachelet, [[https://dx.doi.org/10.1103/PhysRevB.73.155111|Phys. Rev. B]] **73**, 155111 (2006).
 +
 +Moreover, range-separated KS calculations can also be performed using functionals from the [[the_density_functional_program#libxc_functionals|LibXC library]], including the CAM-B3LYP functional (''HYB_GGA_XC_CAM_B3LYP'') and the $\omega$B97X functional (''HYB_GGA_XC_WB97X''). When using those functionals parameters for the range-separation parameter ''MU'' as well as the short- and long-range intrection factors (''SRFAC'' and ''LRFAC'') do not need to be explicitly entered in the input but are taken from the LibXC internal database instead. There are several ways to overwrite these via user input as shown for the CAM-B3LYP functional in the following example:
 +
 +<code>
 +!no explicit parameter input
 +ks,HYB_GGA_XC_CAM_B3LYP
 +
 +!pass parameters to integral program
 +{int; ERFLERFC,mu=0.33,srfac=0.19,lrfac=0.65}
 +{ks,HYB_GGA_XC_CAM_B3LYP}
 +
 +!pass parameters as DFT options
 +{ks,HYB_GGA_XC_CAM_B3LYP,mu=0.33,srfac=0.19,lrfac=0.65}
 +
 +!density-fitting case: no explicit parameter input
 +{df-ks,HYB_GGA_XC_CAM_B3LYP}
 +
 +!now use modified parameters in the integral program
 +{int; ERFLERFC,mu=0.2,srfac=0.23,lrfac=0.8}
 +ks,HYB_GGA_XC_CAM_B3LYP
 +
 +!or as an option to KS (in which case the integral program will be automatically executed with the new settings)
 +{ks,HYB_GGA_XC_CAM_B3LYP,mu=0.2,srfac=0.23,lrfac=0.8}
 +</code>
 +
 +When using any of Molpro's internal range-separated functionals instead (including ''EXERFPBE'', ''ECERFPBE'', ''SRB88'', ''SRLYP'', ''EXERF'', ''ECERF'' and more) the following default values for the underlying parameters will be used if no input is made to change them: ''MU''=0.5, ''SRFAC''=0.0, ''LRFAC''=1.0. Note that changing the parameters will only work locally for the respective calculation, but Molpro will reset to the default again if a successive RS DFT calculation is done without specifying the parameters on the input.
  
 Finally, sr-DFT/lr-post-HF calculations can be done by adding, within a call of the chosen post-HF program, two subcommands: ''srxcdft'' followed by the desired short-range functionals (e.g. ''%%srxcdft,exerf,ecerf;%%''), and ''dftden'' followed by the record number from which the density for the sr functionals is taken. Implementations are available for ''ci'', ''mp2'', ''ccsd'', ''%%ccsd(t)%%'', ''rpatddft'', and the corresponding local MP2 and CC methods w/wo density-fitting. Finally, sr-DFT/lr-post-HF calculations can be done by adding, within a call of the chosen post-HF program, two subcommands: ''srxcdft'' followed by the desired short-range functionals (e.g. ''%%srxcdft,exerf,ecerf;%%''), and ''dftden'' followed by the record number from which the density for the sr functionals is taken. Implementations are available for ''ci'', ''mp2'', ''ccsd'', ''%%ccsd(t)%%'', ''rpatddft'', and the corresponding local MP2 and CC methods w/wo density-fitting.
Line 111: Line 137:
 mu=0.46 mu=0.46
 lambda=0.58 lambda=0.58
-{int;erflerfc,mu=$mu,srfac=$lambda}+{int; erflerfc,mu=$mu,srfac=$lambda}
 {rks,exsrlpbe,ecsqrtlpbe;rangehybrid;orbital,7000.2} {rks,exsrlpbe,ecsqrtlpbe;rangehybrid;orbital,7000.2}
-{mp2;srxcdft,exsrlpbe,ecsqrtlpbe;dftden,7000.2}+{mp2; srxcdft,exsrlpbe,ecsqrtlpbe;dftden,7000.2}
 </code> </code>
 Example of a RSDH calculation with the approximation 4 of Ref. [1] for the short-range density functional: Example of a RSDH calculation with the approximation 4 of Ref. [1] for the short-range density functional:
Line 120: Line 146:
 mu=0.62 mu=0.62
 lambda=0.60 lambda=0.60
-{int;erflerfc,mu=$mu,srfac=$lambda} +{int; erflerfc,mu=$mu,srfac=$lambda} 
-{ks,exerfpbe,ecerfpbe;rangehybrid;dsrsdh;orbital,7000.2}+{ks,exerfpbe,ecerfpbe; rangehybrid; dsrsdh; orbital,7000.2}
 mp2 mp2
 </code> </code>
Line 134: Line 160:
 </code> </code>
  
-which corresponds to the interaction operator $\mbox{lr}\cdot\frac{\mbox{erf}(\mu r_{12})}{r_{12}} + \mbox{sr}\cdot\frac{\mbox{erfc}(\mu r_{12})}{r_{12}}$. Setting ''lr=1'' and ''sr=1'' would +which corresponds to the interaction operator $\mbox{lr}\cdot\frac{\mbox{erf}(\mu r_{12})}{r_{12}} + \mbox{sr}\cdot\frac{\mbox{erfc}(\mu r_{12})}{r_{12}}$. Setting ''lr=1'' and ''sr=1'' would therefore mean that Molpro will calculate the full-range Coulomb integrals. 
-therefore mean that Molpro will calculate the full-range Coulomb integrals.+ 
 + 
 + 
  
 The MP2 calculation can also be replaced by a RPA calculation, like in the RS2H+RPAxSO2 method of Ref. [2].\\ The MP2 calculation can also be replaced by a RPA calculation, like in the RS2H+RPAxSO2 method of Ref. [2].\\
Line 142: Line 171:
 mu=0.48 mu=0.48
 lambda=0.34 lambda=0.34
-{int;erflerfc,mu,lambda} +{int; erflerfc,mu,lambda} 
-{rks,exsrlpbe,ecsqrtlpbe;rangehybrid;orbital,7000.2} +{rks,exsrlpbe,ecsqrtlpbe; rangehybrid; orbital,7000.2} 
-{rpatddft;ecorr,SO2-RCCD;orb,7000.2}+{rpatddft; ecorr,SO2-RCCD;orb,7000.2}
 </code> </code>
  
Line 415: Line 444:
 {{:xcgrid.png?nolink&50|}}The maximum allowed angular order is set by the row in the periodic table: ''GRID,name=PRUNED,max_l=[Row1,Row2,Row3,Row4+]''. The default value is [53,53,53,53]. Additionally, the minimum angular order can be set: ''GRID,name=PRUNED,min_l=[Row1,Row2,Row3,Row4+]''. The default value is [3,3,3,3]. This minimum is also modified to be at least $2*l+1$ where $l$ is the maximum angular momentum of the basis set. {{:xcgrid.png?nolink&50|}}The maximum allowed angular order is set by the row in the periodic table: ''GRID,name=PRUNED,max_l=[Row1,Row2,Row3,Row4+]''. The default value is [53,53,53,53]. Additionally, the minimum angular order can be set: ''GRID,name=PRUNED,min_l=[Row1,Row2,Row3,Row4+]''. The default value is [3,3,3,3]. This minimum is also modified to be at least $2*l+1$ where $l$ is the maximum angular momentum of the basis set.
  
-//crowd// is a parameter to control the reduction of the degree of quadrature close to the nucleus, where points would otherwise be unnecessarily close together; larger values of crowd mean less reduction thus larger grids. A very large value of this parameter, or, conventionally, setting it to zero, will switch off this feature. The exact formula used for capping the $L_\mathrm{min}$. {{:dftgrid.png?nolink&50|}}+//crowd// is a parameter to control the reduction of the degree of quadrature close to the nucleus, where points would otherwise be unnecessarily close together; larger values of crowd mean less reduction thus larger grids. A very large value of this parameter, or, conventionally, setting it to zero, will switch off this feature. The exact formula used for capping the $L_\mathrm{max}$ value at a radial point $r_i$ for an atom with a Bragg radius of $R^\mathrm{Bragg}$ is $L_\mathrm{max}=min(L_\mathrm{max},max(L_\mathrm{min},min((crowd*r_i/R^\mathrm{Bragg})*(L_\mathrm{max}+1),10^6)-1))$. {{:dftgrid.png?nolink&50|}}
  
 //acca// is a target energy accuracy. It is used to reduce $l$ for a given radial point as far as possible below $l^{\text{max}}_i$ but not lower than $l^{\text{max}}_i$. The implementation uses the error in the angular integral of the kernel of a model functional using a sum of approximate atomic densities. If //acca// is zero, the global threshold is used instead, or else it is ignored. //acca// is a target energy accuracy. It is used to reduce $l$ for a given radial point as far as possible below $l^{\text{max}}_i$ but not lower than $l^{\text{max}}_i$. The implementation uses the error in the angular integral of the kernel of a model functional using a sum of approximate atomic densities. If //acca// is zero, the global threshold is used instead, or else it is ignored.