Beispiel #1
0
    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
Beispiel #2
0
  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
Beispiel #3
0
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