Skip to content

Commit 5cc2d9e

Browse files
authored
Frequency integration grid scaling factor as input to RPA calculations (pyscf#1670)
* scaling factor of frequency integration grid as input parameter in RPA calculations * default values for nw and x0 in kernel
1 parent 2c7d42d commit 5cc2d9e

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

pyscf/gw/rpa.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@
3939
# core routines, kernel, rpa_ecorr, rho_response
4040
# ****************************************************************************
4141

42-
def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=None, verbose=logger.NOTE):
42+
def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=40, x0=0.5, verbose=logger.NOTE):
4343
"""
4444
RPA correlation and total energy
4545
4646
Args:
4747
Lpq : density fitting 3-center integral in MO basis.
4848
nw : number of frequency point on imaginary axis.
49-
vhf_df : using density fitting integral to compute HF exchange.
49+
x0: scaling factor for frequency grid.
5050
5151
Returns:
5252
e_tot : RPA total energy
@@ -63,7 +63,7 @@ def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=None, verbose=logger.NOTE):
6363
Lpq = rpa.ao2mo(mo_coeff)
6464

6565
# Grids for integration on imaginary axis
66-
freqs, wts = _get_scaled_legendre_roots(nw)
66+
freqs, wts = _get_scaled_legendre_roots(nw, x0)
6767

6868
# Compute HF exchange energy (EXX)
6969
dm = mf.make_rdm1()
@@ -222,13 +222,14 @@ def nmo(self, n):
222222
get_nmo = get_nmo
223223
get_frozen_mask = get_frozen_mask
224224

225-
def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40):
225+
def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40, x0=0.5):
226226
"""
227227
Args:
228228
mo_energy : 1D array (nmo), mean-field mo energy
229229
mo_coeff : 2D array (nmo, nmo), mean-field mo coefficient
230230
Lpq : 3D array (naux, nmo, nmo), 3-index ERI
231231
nw: interger, grid number
232+
x0: real, scaling factor for frequency grid
232233
233234
Returns:
234235
self.e_tot : RPA total eenrgy
@@ -243,7 +244,7 @@ def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40):
243244
cput0 = (logger.process_clock(), logger.perf_counter())
244245
self.dump_flags()
245246
self.e_tot, self.e_hf, self.e_corr = \
246-
kernel(self, mo_energy, mo_coeff, Lpq=Lpq, nw=nw, verbose=self.verbose)
247+
kernel(self, mo_energy, mo_coeff, Lpq=Lpq, nw=nw, x0=x0, verbose=self.verbose)
247248

248249
logger.timer(self, 'RPA', *cput0)
249250
return self.e_corr

pyscf/gw/urpa.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,14 @@
4040
# core routines, kernel, rpa_ecorr, rho_response
4141
# ****************************************************************************
4242

43-
def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=None, verbose=logger.NOTE):
43+
def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=40, x0=0.5, verbose=logger.NOTE):
4444
"""
4545
RPA correlation and total energy
4646
4747
Args:
4848
Lpq : density fitting 3-center integral in MO basis.
4949
nw : number of frequency point on imaginary axis.
50-
vhf_df : using density fitting integral to compute HF exchange.
50+
x0: scaling factor for frequency grid.
5151
5252
Returns:
5353
e_tot : RPA total energy
@@ -64,7 +64,7 @@ def kernel(rpa, mo_energy, mo_coeff, Lpq=None, nw=None, verbose=logger.NOTE):
6464
Lpq = rpa.ao2mo(mo_coeff)
6565

6666
# Grids for integration on imaginary axis
67-
freqs, wts = _get_scaled_legendre_roots(nw)
67+
freqs, wts = _get_scaled_legendre_roots(nw, x0)
6868

6969
# Compute HF exchange energy (EXX)
7070
dm = mf.make_rdm1()
@@ -153,13 +153,14 @@ def dump_flags(self):
153153
get_nmo = get_nmo
154154
get_frozen_mask = get_frozen_mask
155155

156-
def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40):
156+
def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40, x0=0.5):
157157
"""
158158
Args:
159159
mo_energy : 2D array (2, nmo), mean-field mo energy
160160
mo_coeff : 3D array (2, nmo, nmo), mean-field mo coefficient
161161
Lpq : 4D array (2, naux, nmo, nmo), 3-index ERI
162162
nw: interger, grid number
163+
x0: real, scaling factor for frequency grid
163164
164165
Returns:
165166
self.e_tot : RPA total eenrgy
@@ -174,7 +175,7 @@ def kernel(self, mo_energy=None, mo_coeff=None, Lpq=None, nw=40):
174175
cput0 = (logger.process_clock(), logger.perf_counter())
175176
self.dump_flags()
176177
self.e_tot, self.e_hf, self.e_corr = \
177-
kernel(self, mo_energy, mo_coeff, Lpq=Lpq, nw=nw, verbose=self.verbose)
178+
kernel(self, mo_energy, mo_coeff, Lpq=Lpq, nw=nw, x0=x0, verbose=self.verbose)
178179

179180
logger.timer(self, 'RPA', *cput0)
180181
return self.e_corr

0 commit comments

Comments
 (0)