def _add_psi_log_mom(self): """ Adds a field psi_log_mom which contains Bessel transforms of original radial functions (from psi_log) """ import numpy as np from pyscf.nao.m_sbt import sbt_c sbt = sbt_c(self.rr, self.pp, lmax=self.jmx) self.psi_log_mom = [] for sp,[nmu,mu2ff,mu2j] in enumerate(zip(self.sp2nmult, self.psi_log, self.sp_mu2j)): mu2ao = np.zeros((nmu,self.nr), dtype='float64') for mu,[am,ff] in enumerate(zip(mu2j,mu2ff)): mu2ao[mu,:] = sbt.sbt( ff, am, 1 ) self.psi_log_mom.append(mu2ao) del sbt
def ao_log_hartree_sbt(ao): """ Computes radial parts of Hartree potentials generated by the radial orbitals using the spherical Bessel transform Args: self: class instance of ao_log_c Result: ao_pot with respective radial parts """ sbt = sbt_c(ao.rr, ao.pp, lmax=ao.jmx) ao_pot = copy.deepcopy(ao) for sp,mu2ff in enumerate(ao.psi_log): for mu,[ff,am] in enumerate(zip(mu2ff, ao.sp_mu2j[sp])): ao_pot.psi_log[sp][mu,:] = (4*np.pi) * sbt.sbt( sbt.sbt( ff, am, 1)/ao.pp**2, am, -1) ao_pot.psi_log_rl[sp][mu,:] = ao_pot.psi_log[sp][mu,:]/(ao.rr**am) for sp in range(ao.nspecies): ao_pot.sp_mu2rcut[sp].fill(ao.rr[-1]) ao_pot.sp2rcut.fill(ao.rr[-1]) return ao_pot