Libxc:manual
From OctopusWiki
Contents |
An example
Probably the best to explain the usage of libxc is through an example. This snippet is taken from the file testsuite/xc-get_data.c
switch(xc_family_from_id(xc.functional))
{
case XC_FAMILY_LDA:
if(xc.functional == XC_LDA_X)
xc_lda_x_init(&lda_func, xc.nspin, 3, 0);
else
xc_lda_init(&lda_func, xc.functional, xc.nspin);
xc_lda_vxc(&lda_func, xc.rho, &xc.zk, xc.vrho);
break;
case XC_FAMILY_GGA:
xc_gga_init(&gga_func, xc.functional, xc.nspin);
xc_gga(&gga_func, xc.rho, xc.sigma, &xc.zk, xc.vrho, xc.vsigma);
xc_gga_end(&gga_func);
break;
default:
fprintf(stderr, "Functional '%d' not found\n", xc.functional);
exit(1);
}
The functionals are divided in families (LDA, GGA, etc.). Given a functional identifier, xc.functional returns the corresponding family. Then the functional is initialized by one of the xc_XXX_init, and evaluated by xc_XXX, which returns the energy per unit particle (zk and the derivatives of the energy per unit volume. Finally the functions xc_XXX_end clean up.
This is an example in Fortran:
program lxctest use libxc implicit none real(8) :: rho, e_c, v_c TYPE(xc_func) :: xc_c_func TYPE(xc_info) :: xc_c_info CALL xc_f90_lda_init(xc_c_func, xc_c_info, XC_LDA_C_VWN, XC_UNPOLARIZED) CALL xc_f90_lda_vxc(xc_c_func, rho, e_c, v_c) CALL xc_f90_lda_end(xc_c_func) end program lxctest
The info structure
For each functional there is a structure that holds several pieces of information. The relevant part of this structure for the end user is defined as
typedef struct{
int number; /* indentifier number */
int kind; /* XC_EXCHANGE or XC_CORRELATION */
char *name; /* name of the functional, e.g. "PBE" */
int family; /* type of the functional, e.g. XC_FAMILY_GGA */
char *refs; /* references */
int provides; /* what the functional provides, e.g. XC_PROVIDES_EXC | XC_PROVIDES_VXC */
...
} xc_func_info_type;
For example, for the Slater exchange functional, this structrue is defined as
const xc_func_info_type func_info_lda_x = {
XC_LDA_X,
XC_EXCHANGE,
"Slater exchange",
XC_FAMILY_LDA,
"P.A.M. Dirac, Proceedings of the Cambridge Philosophical Society 26, 376 (1930)\n"
"F. Bloch, Zeitschrift fuer Physik 57, 545 (1929)",
XC_PROVIDES_EXC | XC_PROVIDES_VXC | XC_PROVIDES_FXC,
...
};
Note that the references are separated by a newline. The user of the library can access the information in the following way:
xc_gga_type b88;
xc_gga_init(&b88, XC_GGA_X_B88, XC_UNPOLARIZED);
printf("The functional '%s' is defined in the reference(s):\n%s",
b88.info->name, b88.info->refs);
xc_gga_end(&b88);
Varia
xc_family_from_id
If you have the identifier of a functional (that was read, for example from an input file), and want to find out to which family it belongs to, you can use the routine
int xc_family_from_id(int functional); input: functional: identifier of the functional returns: XC_FAMILY_UNKNOWN: could not find the family XC_FAMILY_LDA, XC_FAMILY_GGA, etc.
Fortran bindings
The Fortran 90 bindings can be found in the file libxc.F90 (see the download section). In general, calling libxc from Fortran is as simple as from C. There are a few exceptions though. The most notable is how to access the information about the functional, due to the way that Fortran handles strings. You can take a look at the following example (taken from octopus/src/xc_functl.F90) for help
i = xc_f90_info_kind(functl%info)
select case(i)
case(XC_EXCHANGE)
write(message(1), '(2x,a)') 'Exchange'
case(XC_CORRELATION)
write(message(1), '(2x,a)') 'Correlation'
case(XC_EXCHANGE_CORRELATION)
write(message(1), '(2x,a)') 'Exchange-correlation'
end select
call xc_f90_info_name(functl%info, s1)
select case(functl%family)
case (XC_FAMILY_LDA); write(s2,'(a)') "LDA"
case (XC_FAMILY_GGA); write(s2,'(a)') "GGA"
case (XC_FAMILY_MGGA); write(s2,'(a)') "MGGA"
case (XC_FAMILY_LCA); write(s2,'(a)') "LCA"
end select
write(message(2), '(4x,4a)') trim(s1), ' (', trim(s2), ')'
call write_info(2, iunit)
i = 1; str = 0
call xc_f90_info_ref(functl%info, str, s1)
do while(str >= 0)
write(message(1), '(4x,a,i1,2a)') '[', i, '] ', trim(s1)
call write_info(1, iunit)
call xc_f90_info_ref(functl%info, str, s1)
i = i + 1
end do
The LDAs
Functionals
These are the LDA functionals the library currently knows about. Exc, Vxc and Fxc implementation audit status.
Exchange
- XC_LDA_X: Exchange
- PAM Dirac, Proceedings of the Cambridge Philosophical Society 26, 376 (1930)
- F Bloch, Zeitschrift für Physik 57, 545 (1929)
Correlation
- XC_LDA_C_WIGNER: Wigner parametrization
- EP Wigner, Trans. Faraday Soc. 34, 678 (1938)
- XC_LDA_C_RPA: Random Phase Approximation
- M Gell-Mann and KA Brueckner, Phys. Rev. 106, 364 (1957)
- XC_LDA_C_HL: Hedin & Lundqvist
- L. Hedin and B.I. Lundqvist, J. Phys. C 4, 2064 (1971)
- XC_LDA_C_GL: Gunnarson & Lundqvist
- O Gunnarsson and BI Lundqvist, Phys. Rev. B 13, 4274 (1976)
- XC_LDA_C_XALPHA: Slater's Xα (X-alpha)
- XC_LDA_C_VWN: Vosko, Wilk, & Nussair
- SH Vosko, L Wilk, and M Nusair, Can. J. Phys. 58, 1200 (1980)
- XC_LDA_C_VWN_RPA: Vosko, Wilk, & Nussair (RPA)
- SH Vosko, L Wilk, and M Nusair, Can. J. Phys. 58, 1200 (1980)
- XC_LDA_C_PZ: Perdew & Zunger
- Perdew and Zunger, Phys. Rev. B 23, 5048 (1981)
- XC_LDA_C_PZ_MOD: Perdew & Zunger (Modified)
- Perdew and Zunger, Phys. Rev. B 23, 5048 (1981)
- Modified to improve the matching between the low and high rs parts
- XC_LDA_C_OB_PZ: Ortiz & Ballone (PZ)
- G Ortiz and P Ballone, Phys. Rev. B 50, 1391 (1994)
- G Ortiz and P Ballone, Phys. Rev. B 56, 9970(E) (1997)
- Perdew and Zunger, Phys. Rev. B 23, 5048 (1981)
- XC_LDA_C_PW: Perdew & Wang
- JP Perdew and Y Wang, Phys. Rev. B 45, 13244 (1992)
- XC_LDA_C_PW_MOD: Perdew & Wang (Modified)
- JP Perdew and Y Wang, Phys. Rev. B 45, 13244 (1992)
- Added extra digits to some constants as in the PBE routine (http://dft.uci.edu/pubs/PBE.asc)
- XC_LDA_C_OB_PW: Ortiz & Ballone (PW)
- G Ortiz and P Ballone, Phys. Rev. B 50, 1391 (1994)
- G Ortiz and P Ballone, Phys. Rev. B 56, 9970(E) (1997)
- JP Perdew and Y Wang, Phys. Rev. B 45, 13244 (1992)
- XC_LDA_C_AMGB: Attacalite et al.
- C Attacalite et al, Phys. Rev. Lett. 88, 256601 (2002)
- C Attacalite, PhD thesis
- XC_LDA_C_PRM08: PRM08 (for 2D systems)
- S Pittalis, E Rasanen, and MAL Marques, to be submitted (2008). OAI: arXiv:0807.0276
- XC_LDA_C_vBH: von Barth & Hedin
- U von Barth and L Hedin, J. Phys. C: Solid State Phys. 5, 1629 (1972)
Exchange-Correlation
- XC_LDA_XC_TETER93: Teter 93
- S Goedecker, M Teter, J Hutter, Phys. Rev B 54, 1703 (1996)
Initialization
A generic LDA functional is initialized by the routine
int xc_lda_init(xc_lda_type *p, int functional, int nspin); input: functional: which functional do we want? nspin: either XC_UNPOLARIZED or XC_POLARIZED output: p: structure that holds our LDA functional returns: 0 (OK) or -1 (ERROR)
However, there are a couple of functionals that require some extra information in the initialization. These are
xc_lda_x_init(xc_lda_type *p, int nspin, int dim, int irel); input: dim: either 2 or 3. The dimensionality of the space irel: either XC_NON_RELATIVISTIC or XC_RELATIVISTIC
The exchange functional can be evaluated for systems with either 2 or 3 dimensions. It is also possible to apply a relativistic correction.
void xc_lda_c_xalpha_init(xc_lda_type *p, int nspin, int dim, double alpha); input: alpha: Slater's parameter that multiplies the exchange
This correlation functional, added to the exchange functional, produces a total exchange and correlation functional, Exc, equal to 3/2 * alpha * Ex Setting alpha equal to one gives the *usual* Slater Xalpha functional, whereas alpha equal to 2/3 just leaves the exchange functional unchanged.
Evaluation
This is done by the routines
void xc_lda_exc(xc_lda_type *p, double *rho, double *exc); void xc_lda_vxc(xc_lda_type *p, double *rho, double *exc, double *vxc); void xc_lda_fxc(xc_lda_type *p, double *rho, double *fxc); void xc_lda_kxc(xc_lda_type *p, double *rho, double *kxc); void xc_lda(xc_lda_type *p, double *rho, double *exc, double *vxc, double *fxc, double *kxc); input: p: structure obtained from calling xc_lda_init rho[]: the density output: exc: the energy per unit particle vxc[]: first derivative of the energy per unit volume fxc[]: second derivative of the energy per unit volume kxc[]: third derivative of the energy per unit volume
The derivatives are defined as
where ε is the energy per unit volume.
If the functional was initialized with nspin=XC_UNPOLARIZED, the spin indices should be dropped from the previous expressions. Otherwise, the parameters have dimensions rho[2], vxc[2], and fxc[3]. The components of fxc are
Destruction
Due to its simplicity, the LDA functionals do not require, at the moment, an explicit destruction.
The GGAs
Functionals
These are the GGA functionals we know about. Exc, Vxc and Fxc implementation audit status.
Exchange
- XC_GGA_X_PBE: Perdew, Burke & Ernzerhof exchange
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 78, 1396(E) (1997)
- XC_GGA_X_PBE_R: Perdew, Burke & Ernzerhof exchange (revised)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 78, 1396(E) (1997)
- Y Zhang and W Yang, Phys. Rev. Lett 80, 890 (1998)
- XC_GGA_X_MPBE: Adamo & Barone modification to PBE
- C Adamo and V Barone, J. Chem. Phys., 116, 5933 (2002)
- XC_GGA_X_XPBE: Extended PBE by Xu & Goddard III
- X. Xu and WA Goddard III, J. Chem. Phys., 121, 4068 (2004)
- XC_GGA_X_B86: Becke 86 Xalfa,beta,gamma
- AD Becke, J. Chem. Phys 84, 4524 (1986)
- XC_GGA_X_B86_R: Becke 86 Xalfa,beta,gamma (reoptimized)
- AD Becke, J. Chem. Phys 84, 4524 (1986)
- AD Becke, J. Chem. Phys 107, 8554 (1997)
- XC_GGA_X_B86_MGC: Becke 86 Xalfa,beta,gamma (with mod. grad. correction)
- AD Becke, J. Chem. Phys 84, 4524 (1986)
- AD Becke, J. Chem. Phys 85, 7184 (1986)
- XC_GGA_X_B88: Becke 88
- AD Becke, Phys. Rev. A 38, 3098 (1988)
- XC_GGA_X_G96: Gill 96
- PMW Gill, Mol. Phys. 89, 433 (1996)
- XC_GGA_X_PW86: Perdew & Wang 86
- JP Perdew and Y Wang, Phys. Rev. B 33, 8800 (1986)
- XC_GGA_X_PW91: Perdew & Wang 91
- JP Perdew, JA Chevary, SH Vosko, KA Jackson, MR Pederson, and C Fiolhais, Phys. Rev. B 46, 6671 (1992)
- XC_GGA_X_OPTX: Handy & Cohen OPTX 01
- NC Handy and AJ Cohen, Mol. Phys. 99, 403 (2001)
- XC_GGA_X_DK87_R1: dePristo & Kress 87 (version R1)
- AE DePristo and JD Kress, J. Chem. Phys. 86, 1425 (1987)
- XC_GGA_X_DK87_R2: dePristo & Kress 87 (version R2)
- AE DePristo and JD Kress, J. Chem. Phys. 86, 1425 (1987)
- XC_GGA_X_LG93: Lacks & Gordon 93
- DJ Lacks and RG Gordon, Phys. Rev. A 47, 4681 (1993)
- XC_GGA_X_FT97_A: Filatov & Thiel 97 (version A)
- M Filatov and W Thiel, Mol. Phys. 91, 847 (1997)
- XC_GGA_X_FT97_B: Filatov & Thiel 97 (version B)
- M Filatov and W Thiel, Mol. Phys. 91, 847 (1997)
- XC_GGA_X_PBE_SOL: Perdew, Burke & Ernzerhof exchange (solids)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 78, 1396(E) (1997)
- JP Perdew, et al, arXiv:0707.2088v1
- XC_GGA_X_RPBE: Hammer, Hansen & Norskov (PBE-like)
- B Hammer, LB Hansen and JK Nørskov, Phys. Rev. B 59, 7413 (1999)
- XC_GGA_X_WC: Wu & Cohen
- Z Wu and RE Cohen, Phys. Rev. B 73, 235116 (2006)
- XC_GGA_X_AM05: Armiento & Mattsson 05 exchange
- R Armiento and AE Mattsson, Phys. Rev. B 72, 085108 (2005)
- AE Mattsson, R Armiento, J Paier, G Kresse, JM Wills, and TR Mattsson, J. Chem. Phys. 128, 084714 (2008)
- XC_GGA_X_PBEA: Madsen 07
- G Madsen, Phys. Rev. B 75, 195108 (2007)
- XC_GGA_X_mPW91: mPW91 of Adamo & Barone
- C Adamo and V Barone, J. Chem. Phys. 108, 664 (1998)
Correlation
- XC_GGA_C_PBE: Perdew, Burke & Ernzerhof correlation
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 78, 1396(E) (1997)
- XC_GGA_C_XPBE: Extended PBE by Xu & Goddard III
- X. Xu and WA Goddard III, J. Chem. Phys., 121, 4068 (2004)
- XC_GGA_C_LYP: Lee, Yang & Parr
- C Lee, W Yang and RG Parr, Phys. Rev. B 37, 785 (1988)
- B Miehlich, A Savin, H Stoll and H Preuss, Chem. Phys. Lett. 157, 200 (1989)
- XC_GGA_C_P86: Perdew 86
- JP Perdew, Phys. Rev. B 33, 8822 (1986)
- XC_GGA_C_PBE_SOL: Perdew, Burke & Ernzerhof correlation SOL
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 77, 3865 (1996)
- JP Perdew, K Burke, and M Ernzerhof, Phys. Rev. Lett. 78, 1396(E) (1997)
- JP Perdew, et al, arXiv:0707.2088v1
- XC_GGA_C_PW91: Perdew & Wang 91
- JP Perdew, JA Chevary, SH Vosko, KA Jackson, MR Pederson, DJ Singh, and C Fiolhais, Phys. Rev. B 46, 6671 (1992)
- JP Perdew, JA Chevary, SH Vosko, KA Jackson, MR Pederson, DJ Singh, and C Fiolhais, Phys. Rev. B 48, 4978(E) (1993)
- XC_GGA_C_AM05: Armiento & Mattsson 05 correlation
- R Armiento and AE Mattsson, Phys. Rev. B 72, 085108 (2005)
- AE Mattsson, R Armiento, J Paier, G Kresse, JM Wills, and TR Mattsson, J. Chem. Phys. 128, 084714 (2008)
- XC_GGA_C_LM: Langreth & Mehl
- DC Langreth and MJ Mehl, Phys. Rev. Lett. 47, 446 (1981)
Exchange-Correlation
- XC_GGA_XC_LB: van Leeuwen & Baerends
- R van Leeuwen and EJ Baerends, Phys. Rev. A. 49, 2421 (1994)
- XC_GGA_XC_HCTH_93: HCTH functional fitted to 93 molecules
- FA Hamprecht, AJ Cohen, DJ Tozer, and NC Handy, J. Chem. Phys. 109, 6264 (1998)
- XC_GGA_XC_HCTH_120: HCTH functional fitted to 120 molecules
- AD Boese, NL Doltsinis, NC Handy, and M Sprik, J. Chem. Phys. 112, 1670 (2000)
- XC_GGA_XC_HCTH_147: HCTH functional fitted to 147 molecules
- AD Boese, NL Doltsinis, NC Handy, and M Sprik, J. Chem. Phys. 112, 1670 (2000)
- XC_GGA_XC_HCTH_407: HCTH functional fitted to 147 molecules
- AD Boese, and NC Handy, J. Chem. Phys. 114, 5497 (2001)
- XC_GGA_XC_EDF1: Empirical functional from Adamson, Gill, and Pople
- RD Adamson, PMW Gill, and JA Pople, Chem. Phys. Lett. 284, 6 (1998)
- XC_GGA_XC_XLYP: XLYP functional
- X Xu and WA Goddard, III, PNAS 101, 2673 (2004)
- XC_GGA_XC_B97: Becke 97
- AD Becke, J. Chem. Phys. 107, 8554-8560 (1997)
Initialization
A generic GGA functional is initialized by the routine
int xc_gga_init(xc_gga_type *p, int functional, int nspin); input: functional: which functional do we want? nspin: either XC_UNPOLARIZED or XC_POLARIZED output: p: structure that holds our GGA functional returns: 0 (OK) or -1 (ERROR)
Evaluation
This is done by the routines
void xc_gga(xc_gga_type *p, double *rho, double *sigma,
double *exc, double *vrho, double *vsigma)
input:
p: structure obtained from calling xc_lda_init
rho[]: the density
sigma[]: contracted gradients of the density
output:
exc: the energy per unit particle
vrho[]: first partial derivative of the energy per unit volume in terms of the density
vsigma[]: first partial derivative of the energy per unit volume in terms of sigma
The derivatives are defined as
where ε is the energy per unit volume.
If the functional was initialized with nspin=XC_UNPOLARIZED, the spin indices should be dropped from the previous expressions. Otherwise, the parameters have dimensions rho[2], vxc[2], sigma[3], and vsigma[3]. The components of sigma are
Destruction
If you no longer need your xc functional, you should destruct it with the routine
void xc_gga_end (xc_gga_type *p); input: p: structure holding the functional to destroy
The Hybrid GGAs
Functionals
These are the hybrid GGA functionals we know about. Exc, Vxc and Fxc implementation audit status.
- XC_HYB_GGA_XC_B3PW91: The original hybrid proposed by Becke
- AD Becke, J. Chem. Phys. 98, 5648 (1993)
- XC_HYB_GGA_XC_B3LYP: The (in)famous B3LYP
- PJ Stephens, FJ Devlin, CF Chabalowski, MJ Frisch, J. Phys. Chem. 98, 11623 (1994)
- XC_HYB_GGA_XC_B3P86: Perdew 86 hybrid similar to B3PW91
- Defined through Gaussian implementation
- XC_HYB_GGA_XC_O3LYP: hybrid using the optx functional
- AJ Cohen, NC Handy, Mol. Phys. 99, 607 (2001)
- XC_HYB_GGA_XC_PBEH: PBEH (PBE0)
- M. Ernzerhof, G. E. Scuseria, J. Chem. Phys. 110, 5029 (1999)
- XC_HYB_GGA_XC_X3LYP: X3LYP
- X Xu, WA Goddard, III, PNAS 101, 2673 (2004)
- XC_HYB_GGA_XC_B1WC: B1WC
- DI Bilc, R Orlando, R Shaltaf, G-M Rignanese, J Iniguez, and Ph Ghosez, Phys. Rev. B 77, 165107 (2008)
TODO
- XC_HYB_GGA_XC_mPW91PW91
- XC_HYB_GGA_XC_PBE0
- XC_HYB_GGA_B97_1
- XC_HYB_GGA_B97_1_REV
- XC_HYB_GGA_B97_2
- XC_HYB_GGA_SB98H
- XC_HYB_GGA_X3LYP
Initialization
A generic hybrid GGA functional is initialized by the routine
int xc_hyb_gga_init(xc_hyb_gga_type *p, int functional, int nspin); input: functional: which functional do we want? nspin: either XC_UNPOLARIZED or XC_POLARIZED output: p: structure that holds our hybrid GGA functional returns: 0 (OK) or -1 (ERROR)
Evaluation
This is done by the routines (cf. the GGAs)
void xc_hyb_gga(xc_hyb_gga_type *p, double *rho, double *sigma,
double *exc, double *vrho, double *vsigma)
input:
p: structure obtained from calling xc_hyb_gga_init
rho[]: the density
sigma[]: contracted gradients of the density
output:
exc: the energy per unit particle
vrho[]: first partial derivative of the energy per unit volume in terms of the density
vsigma[]: first partial derivative of the energy per unit volume in terms of sigma
Destruction
If you no longer need your xc functional, you should destruct it with the routine
void xc_hyb_gga_end (xc_hyb_gga_type *p); input: p: structure holding the functional to destroy
The MetaGGAs (experimental)
Functionals
These are the MetaGGA functionals we know about. Exc, Vxc and Fxc implementation audit status.
Exchange
- XC_MGGA_X_LTA: Local tau approximation
- M Ernzerhof and G Scuseria, J. Chem. Phys. 111, 911 (1999)
- XC_MGGA_X_TPSS: Perdew, Tao, Staroverov & Scuseria exchange
- JP Perdew, J Tao, VN Staroverov and GE Scuseria, Phys. Rev. Lett. 91, 146401 (2003)
- JP Perdew, J Tao, VN Staroverov and GE Scuseria, J. Chem. Phys. 120, 6898 (2004)
- XC_MGGA_X_TAU_HCTH: Tau HCTH
- AD Boese and NC Handy, J. Chemical Physics 116, 9559 (2002)
- XC_MGGA_X_GVT4: GVT4 (exchange part of VSXC)
- T Van Voorhis and GE Scuseria, J. Chem. Phys. 109, 400 (1998)
- XC_MGGA_X_M06L: M06-L
- Y Zhao and DG Truhlar, J Chem. Phys. 125, 194101 (2006)
- Y Zhao and DG Truhlar, Theor. Chem. Accounts 120, 215 (2008)
Correlation
- XC_MGGA_C_TPSS: Perdew, Tao, Staroverov & Scuseria correlation
- JP Perdew, J Tao, VN Staroverov and GE Scuseria, Phys. Rev. Lett. 91, 146401 (2003)
- JP Perdew, J Tao, VN Staroverov and GE Scuseria, J. Chem. Phys. 120, 6898 (2004)
- XC_MGGA_C_VSXC: VSXC (correlation part)
- T Van Voorhis and GE Scuseria, J. Chem. Phys. 109, 400 (1998)
The LCAs (not working)
Functionals
These are the LCA functionals we know about. Exc, Vxc and Fxc implementation audit status.
- XC_LCA_OMC: Orestes, Marcasso & Capelle
- E Orestes, T Marcasso and K Capelle, Phys. Rev. A 68, 022105 (2003)
- XC_LCA_LCH: Lee, Colwell & Handy
- AM Lee, SM Colwell and NC Handy, Chem. Phys. Lett. 229, 225 (1994)
- AM Lee, SM Colwell and NC Handy, J. Chem. Phys. 103, 10095 (1995)

