コード例 #1
0
ファイル: calc_polarizability.py プロジェクト: zzy2014/pyscf
def run_tddft_iter():
  t1 = timer()
  td = tddft_iter(label="siesta", iter_broadening=0.0035/Ha, xc_code='LDA,PZ', level=0, tddft_iter_tol=1e-3, tol_loc=1e-4, tol_biloc=1e-6)
  t2 = timer()
  print("time tddft_iter = ", t2-t1)
  omegas = np.arange(2.0, 8.0, 2.5E-3)/Ha + 1j*td.eps
  t3 = timer()
  pxx = -td.comp_polariz_nonin_ave(omegas)
  t4 = timer()
  print("time chi0 = ", t4-t3)

  data = np.zeros((omegas.shape[0], 3))
  data[:, 0] = omegas.real*Ha
  data[:, 1] = pxx.real
  data[:, 2] = pxx.imag
  np.savetxt('polarizability_nonin_siesta.avg.txt', data)

  t5 = timer()
  pxx = -td.comp_polariz_inter_ave(omegas)
  t6 = timer()
  print("time chi = ", t6-t5)
  data = np.zeros((omegas.shape[0], 3))
  data[:, 0] = omegas.real*Ha
  data[:, 1] = pxx.real
  data[:, 2] = pxx.imag
  np.savetxt('polarizability_inter_siesta.avg.txt', data)
  print("nb call:")
  print("rf0_ncalls = {0}, matvec_ncalls ={1}".format(td.rf0_ncalls, td.matvec_ncalls))
  t7 = timer()
  print("total time = ", t7-t1)
コード例 #2
0
    def test_load_kernel(self):
        data_ref_nonin = np.loadtxt(dname +
                                    '/water.tddft_iter.omega.pxx.txt-ref')[:,
                                                                           1]
        data_ref_inter = np.loadtxt(
            dname + '/water.tddft_iter.omega.inter.pxx.txt-ref')[:, 1]

        for form in ["txt", "npy", "hdf5"]:
            td = tddft_iter(label='water',
                            cd=dname,
                            iter_broadening=1e-2,
                            xc_code='RPA',
                            load_kernel=True,
                            kernel_fname="kernel." + form,
                            kernel_format=form,
                            kernel_path_hdf5="kernel_pack")

            omegas = np.linspace(0.0, 2.0, 150) + 1j * td.eps
            pxx = -td.comp_polariz_inter_xx(omegas).imag
            data = np.array([omegas.real * 27.2114, pxx])
            np.savetxt('water.tddft_iter_rpa.omega.inter.pxx.txt',
                       data.T,
                       fmt=['%f', '%f'])

            self.assertTrue(
                np.allclose(data_ref_inter, pxx, rtol=1.0, atol=1e-05))
コード例 #3
0
 def test_134_h2o_rhf_rpa_pb(self):
   """ This  """
   mol = gto.M(verbose=1,atom='O 0 0 0; H 0 0.489 1.074; H 0 0.489 -1.074',basis='cc-pvdz')
   gto_mf = scf.RHF(mol)
   gto_mf.kernel()
   nao_mf = tddft_iter(gto=mol, mf=gto_mf, tol_loc=1e-5, tol_biloc=1e-7, xc_code="RPA")
   comega = np.arange(0.0, 2.0, 0.01) + 1j*0.03
   pnonin = -nao_mf.comp_polariz_inter_ave(comega, verbosity=0).imag
   data = np.array([comega.real*HARTREE2EV, pnonin])
   np.savetxt('test_134_h2o_rhf_rpa_pb.txt', data.T, fmt=['%f','%f'])
   data_ref = np.loadtxt('test_134_h2o_rhf_rpa_pb.txt-ref').T
   self.assertTrue(np.allclose(data_ref, data, atol=1e-6, rtol=1e-3))
コード例 #4
0
 def test_tddft_gto_vs_nao_nonin(self):
   """ Non-interacting case """
   omegas = np.linspace(0.0,2.0,150)+1j*0.04
   p_ave = -polariz_nonin_ave(gto_mf, mol, omegas).imag
   data = np.array([omegas.real*27.2114, p_ave])
   np.savetxt('hydrogen.tddft_lda.omega.nonin.pav.txt', data.T, fmt=['%f','%f'])
   nao_td  = tddft_iter(mf=gto_mf, gto=mol)
   p_iter = -nao_td.comp_polariz_nonin_ave(omegas).imag
   data = np.array([omegas.real*27.2114, p_iter])
   np.savetxt('hydrogen.tddft_iter_lda.omega.nonin.pav.txt', data.T, fmt=['%f','%f'])
   #print('nonin', abs(p_ave-p_iter).sum()/omegas.size)
   self.assertTrue(abs(p_ave-p_iter).sum()/omegas.size<0.03)
コード例 #5
0
  def test_load_kernel(self):
    data_ref_nonin = np.loadtxt(dname+'/water.tddft_iter.omega.pxx.txt-ref')[:, 1]
    data_ref_inter = np.loadtxt(dname+'/water.tddft_iter.omega.inter.pxx.txt-ref')[:, 1]

    for form in ["txt", "npy", "hdf5"]:
      td = tddft_iter(label='water', cd=dname, iter_broadening=1e-2, xc_code='RPA', load_kernel=True, kernel_fname = "kernel." + form, kernel_format = form, kernel_path_hdf5="kernel_pack")

      omegas = np.linspace(0.0,2.0,150)+1j*td.eps
      pxx = -td.comp_polariz_inter_xx(omegas).imag
      data = np.array([omegas.real*27.2114, pxx])
      np.savetxt('water.tddft_iter_rpa.omega.inter.pxx.txt', data.T, fmt=['%f','%f'])

      self.assertTrue(np.allclose(data_ref_inter, pxx, rtol=1.0, atol=1e-05))
コード例 #6
0
 def test_tddft_iter_lda(self):
   """ Compute polarization with LDA TDDFT  """
   from timeit import default_timer as timer
   
   dname = os.path.dirname(os.path.abspath(__file__))
   td = tddft_iter(label='water', cd=dname, jcutoff=7, iter_broadening=1e-2, xc_code='LDA,PZ', level=0)
   omegas = np.linspace(0.0,2.0,150)+1j*td.eps
   pxx = -td.comp_polariz_inter_xx(omegas).imag
   data = np.array([omegas.real*27.2114, pxx])
   np.savetxt('water.tddft_iter_lda.omega.inter.pxx.txt', data.T, fmt=['%f','%f'])
   data_ref = np.loadtxt(dname+'/water.tddft_iter_lda.omega.inter.pxx.txt-ref')
   #print('    td.rf0_ncalls ', td.rf0_ncalls)
   #print(' td.matvec_ncalls ', td.matvec_ncalls)
   self.assertTrue(np.allclose(data_ref,data.T, rtol=1.0, atol=1e-05))
コード例 #7
0
 def test_143_h2b_uks_rpa_pb(self):
   """ This  """
   mol = gto.M(verbose=1,atom='B 0 0 0; H 0 0.489 1.074; H 0 0.489 -1.074',basis='cc-pvdz',spin=3)
   gto_mf = dft.UKS(mol)
   gto_mf.kernel()
   
   nao_mf = tddft_iter(gto=mol, mf=gto_mf, tol_loc=1e-5, tol_biloc=1e-7, xc_code='RPA')
   
   comega = np.arange(0.0, 2.0, 0.01) + 1j*0.03
   polave = -nao_mf.polariz_inter_ave(comega, verbosity=0).imag
   data = np.array([comega.real*HARTREE2EV, polave])
   np.savetxt('test_143_h2b_uks_rpa_pb.txt', data.T, fmt=['%f','%f'])
   data_ref = np.loadtxt('test_143_h2b_uks_rpa_pb.txt-ref').T
   self.assertTrue(np.allclose(data_ref, data, atol=1e-6, rtol=1e-3))
コード例 #8
0
def run_tddft_iter(calculator, label, freq):
    from pyscf.nao import tddft_iter
    td = tddft_iter(gpaw=calculator, iter_broadening=1e-2)
    omegas = np.linspace(freq[0], freq[freq.shape[0]-1], freq.shape[0]) + 1j*td.eps

    pxx_nonin = np.zeros(omegas.shape[0], dtype=float)
    pxx_inter = np.zeros(omegas.shape[0], dtype=float)

    vext = np.transpose(td.moms1)
    for iomega,omega in enumerate(omegas):
        pxx_nonin[iomega] = -np.dot(td.apply_rf0(vext[0,:], omega), vext[0,:]).imag

    pxx_inter = td.comp_polariz_inter_xx(omegas).imag

    return pxx_nonin, pxx_inter
コード例 #9
0
 def test_tddft_gto_vs_nao_nonin(self):
     """ Non-interacting case """
     omegas = np.linspace(0.0, 2.0, 150) + 1j * 0.04
     p_ave = -polariz_nonin_ave(gto_mf, mol, omegas).imag
     data = np.array([omegas.real * 27.2114, p_ave])
     np.savetxt('hydrogen.tddft_lda.omega.nonin.pav.txt',
                data.T,
                fmt=['%f', '%f'])
     nao_td = tddft_iter(mf=gto_mf, gto=mol)
     p_iter = -nao_td.comp_polariz_nonin_ave(omegas).imag
     data = np.array([omegas.real * 27.2114, p_iter])
     np.savetxt('hydrogen.tddft_iter_lda.omega.nonin.pav.txt',
                data.T,
                fmt=['%f', '%f'])
     #print('nonin', abs(p_ave-p_iter).sum()/omegas.size)
     self.assertTrue(abs(p_ave - p_iter).sum() / omegas.size < 0.03)
コード例 #10
0
def run_tddft_iter(calculator, label, freq):
    from pyscf.nao import tddft_iter
    td = tddft_iter(gpaw=calculator, iter_broadening=1e-2)
    omegas = np.linspace(freq[0], freq[freq.shape[0] - 1],
                         freq.shape[0]) + 1j * td.eps

    pxx_nonin = np.zeros(omegas.shape[0], dtype=float)
    pxx_inter = np.zeros(omegas.shape[0], dtype=float)

    vext = np.transpose(td.moms1)
    for iomega, omega in enumerate(omegas):
        pxx_nonin[iomega] = -np.dot(td.apply_rf0(vext[0, :], omega),
                                    vext[0, :]).imag

    pxx_inter = td.comp_polariz_inter_xx(omegas).imag

    return pxx_nonin, pxx_inter
コード例 #11
0
 def test_qchem_irf(self):
   """ Test """
   gto_hf = dft.RKS(mol)
   gto_hf.kernel()
   nocc = mol.nelectron//2
   nmo = gto_hf.mo_energy.size
   nvir = nmo-nocc    
   gto_td = tddft.dRPA(gto_hf)
   gto_td.nstates = min(100, nocc*nvir)
   gto_td.kernel()
   
   gto_gw = GW(gto_hf, gto_td)
   gto_gw.kernel()
   
   nao_td  = tddft_iter(mf=gto_hf, gto=mol, xc_code='RPA')
   eps = 0.02
   omegas = np.arange(0.0,2.0,eps/2.0)+1j*eps
   p_iter = -nao_td.comp_polariz_inter_ave(omegas).imag
   data = np.array([omegas.real*27.2114, p_iter])
   np.savetxt('NH.tddft_iter_rpa.omega.inter.pav.txt', data.T, fmt=['%f','%f'])
   
   np.set_printoptions(linewidth=180)
コード例 #12
0
    def test_tddft_iter_lda(self):
        """ Compute polarization with LDA TDDFT  """
        from timeit import default_timer as timer

        dname = os.path.dirname(os.path.abspath(__file__))
        td = tddft_iter(label='water',
                        cd=dname,
                        jcutoff=7,
                        iter_broadening=1e-2,
                        xc_code='LDA,PZ',
                        level=0)
        omegas = np.linspace(0.0, 2.0, 150) + 1j * td.eps
        pxx = -td.comp_polariz_inter_xx(omegas).imag
        data = np.array([omegas.real * 27.2114, pxx])
        np.savetxt('water.tddft_iter_lda.omega.inter.pxx.txt',
                   data.T,
                   fmt=['%f', '%f'])
        data_ref = np.loadtxt(dname +
                              '/water.tddft_iter_lda.omega.inter.pxx.txt-ref')
        #print('    td.rf0_ncalls ', td.rf0_ncalls)
        #print(' td.matvec_ncalls ', td.matvec_ncalls)
        self.assertTrue(np.allclose(data_ref, data.T, rtol=1.0, atol=1e-05))
コード例 #13
0
    def test_155_tddft_h2b_uks_nonin(self):
        """ This  example is with discrepancies... """
        mol = gto.M(verbose=1,
                    atom='B 0 0 0; H 0 0.489 1.074; H 0 0.489 -1.074',
                    basis='cc-pvdz',
                    spin=3)

        gto_mf = scf.UKS(mol)
        gto_mf.kernel()

        omegas = np.arange(0.0, 2.0, 0.01) + 1j * 0.03
        p_ave = -polariz_nonin_ave(gto_mf, mol, omegas).imag
        data = np.array([omegas.real * HARTREE2EV, p_ave])
        np.savetxt('test_0155_tddft_h2b_uks_nonin_pyscf.txt',
                   data.T,
                   fmt=['%f', '%f'])
        data_ref = np.loadtxt('test_0155_tddft_h2b_uks_nonin_pyscf.txt-ref').T
        self.assertTrue(np.allclose(data_ref, data, atol=1e-6, rtol=1e-3))

        nao_td = tddft_iter(mf=gto_mf, gto=mol, verbosity=0, xc_code='RPA')

        polariz = -nao_td.polariz_nonin_ave_matelem(omegas).imag
        data = np.array([omegas.real * HARTREE2EV, polariz])
        np.savetxt('test_0155_tddft_h2b_uks_nonin_matelem.txt',
                   data.T,
                   fmt=['%f', '%f'])
        data_ref = np.loadtxt(
            'test_0155_tddft_h2b_uks_nonin_matelem.txt-ref').T
        self.assertTrue(np.allclose(data_ref, data, atol=1e-6, rtol=1e-3))

        polariz = -nao_td.comp_polariz_nonin_ave(omegas).imag
        data = np.array([omegas.real * HARTREE2EV, polariz])
        np.savetxt('test_0155_tddft_h2b_uks_nonin_nao.txt',
                   data.T,
                   fmt=['%f', '%f'])
        data_ref = np.loadtxt('test_0155_tddft_h2b_uks_nonin_nao.txt-ref').T
        self.assertTrue(np.allclose(data_ref, data, atol=1e-6, rtol=1e-3))
コード例 #14
0
    def test_qchem_irf(self):
        """ Test """
        gto_hf = dft.RKS(mol)
        gto_hf.kernel()
        nocc = mol.nelectron // 2
        nmo = gto_hf.mo_energy.size
        nvir = nmo - nocc
        gto_td = tddft.dRPA(gto_hf)
        gto_td.nstates = min(100, nocc * nvir)
        gto_td.kernel()

        gto_gw = GW(gto_hf, gto_td)
        gto_gw.kernel()

        nao_td = tddft_iter(mf=gto_hf, gto=mol, xc_code='RPA')
        eps = 0.02
        omegas = np.arange(0.0, 2.0, eps / 2.0) + 1j * eps
        p_iter = -nao_td.comp_polariz_inter_ave(omegas).imag
        data = np.array([omegas.real * 27.2114, p_iter])
        np.savetxt('NH.tddft_iter_rpa.omega.inter.pav.txt',
                   data.T,
                   fmt=['%f', '%f'])

        np.set_printoptions(linewidth=180)
コード例 #15
0
mol = gto.M(
    verbose=1,
    atom='''
        H     0    0        0
        H     0.17    0.7    0.587''',
    basis='cc-pvdz',
)

gto_mf = scf.RKS(mol)
gto_mf.kernel()
gto_td = tddft.TDDFT(gto_mf)
gto_td.nstates = 9
gto_td.kernel()

nao_td = tddft_iter(mf=gto_mf, gto=mol)


class KnowValues(unittest.TestCase):
    def test_tddft_gto_vs_nao_inter(self):
        """ Interacting case """
        omegas = np.linspace(0.0, 2.0, 150) + 1j * 0.04
        p_ave = -polariz_inter_ave(gto_mf, mol, gto_td, omegas).imag
        data = np.array([omegas.real * 27.2114, p_ave])
        np.savetxt('hydrogen.tddft_lda.omega.inter.pav.txt',
                   data.T,
                   fmt=['%f', '%f'])
        p_iter = -nao_td.comp_polariz_inter_ave(omegas).imag
        data = np.array([omegas.real * 27.2114, p_iter])
        np.savetxt('hydrogen.tddft_iter_lda.omega.inter.pav.txt',
                   data.T,
コード例 #16
0
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from __future__ import print_function, division
import os,unittest,numpy as np
from pyscf.nao import tddft_iter

dname = os.path.dirname(os.path.abspath(__file__))
td = tddft_iter(label='water', cd=dname, jcutoff=7, iter_broadening=1e-2, xc_code='RPA')

class KnowValues(unittest.TestCase):

  def test_non_inter_polariz(self):
    """ This is non-interacting polarizability TDDFT with SIESTA starting point """
    omegas = np.linspace(0.0,2.0,500)+1j*td.eps
    pxx = -td.comp_polariz_nonin_xx(omegas).imag
    #pxx = np.zeros_like(omegas)
    #vext = np.transpose(td.moms1)
    #for iomega,omega in enumerate(omegas): pxx[iomega] = -np.dot(td.apply_rf0(vext[0,:], omega), vext[0,:]).imag

    data = np.array([27.2114*omegas.real, pxx])
    data_ref = np.loadtxt(dname+'/water.tddft_iter.omega.pxx.txt-ref')
    self.assertTrue(np.allclose(data_ref,data.T, rtol=1.0, atol=1e-05))
    #np.savetxt('water.tddft_iter.omega.nonin.pxx.txt', data.T, fmt=['%f','%f'])
コード例 #17
0
from __future__ import print_function, division
import os,unittest
from pyscf.nao import tddft_iter
from pyscf.nao.m_comp_spatial_distributions import spatial_distribution
import h5py
import numpy as np

dname = os.path.dirname(os.path.abspath(__file__))

Ha = 27.211386024367243
td = tddft_iter(label='water', iter_broadening=0.15/Ha, xc_code='LDA,PZ',
        tol_loc=1e-4, tol_biloc=1e-6, cd=dname, verbosity=0)

class KnowValues(unittest.TestCase):
  
  def test_tddft_iter_spatial(self):
    """ Check the spatial density change distribution"""
    self.assertTrue(hasattr(td, 'xocc'))
    self.assertTrue(hasattr(td, 'xvrt'))
    self.assertEqual(td.xocc[0].shape[0], 4)
    self.assertEqual(td.xvrt[0].shape[0], 19)

    # run TDDFT
    omegas = h5py.File(dname+"/tddft_iter_output_water_ref.hdf5", "r")["polarizability/frequency"].value/Ha + 1j*td.eps
    td.comp_dens_inter_along_Eext(omegas, Eext=np.array([1.0, 1.0, 1.0]))
    np.save("density_change_pyscf.npy", td.dn)
    np.save("frequency.npy", omegas.real)
    np.save("pol_tensor.npy", td.p_mat)

    ref = h5py.File(dname+"/tddft_iter_output_water_ref.hdf5", "r")["polarizability"]
    pyscf = np.load("pol_tensor.npy")
コード例 #18
0
ファイル: test_0049_high_telec.py プロジェクト: zzy2014/pyscf
from __future__ import print_function, division
import os, unittest, numpy as np
from pyscf.nao import tddft_iter

dname = os.path.dirname(os.path.abspath(__file__))
td = tddft_iter(label='water',
                cd=dname,
                jcutoff=7,
                iter_broadening=1e-2,
                xc_code='RPA',
                telec=0.03)


class KnowValues(unittest.TestCase):
    def test_non_inter_polariz(self):
        """ This is non-interacting polarizability TDDFT with SIESTA starting point """
        omegas = np.linspace(0.0, 2.0, 500) + 1j * td.eps
        pave = -td.comp_polariz_nonin_ave(omegas).imag
        data = np.array([27.2114 * omegas.real, pave])
        np.savetxt('water.tddft_iter.telec-0.03.omega-nonin.pav.txt',
                   data.T,
                   fmt=['%f', '%f'])
        data_ref = np.loadtxt(
            dname + '/water.tddft_iter.telec-0.03.omega-nonin.pav.txt-ref')
        self.assertTrue(np.allclose(data_ref, data.T, rtol=1.0, atol=1e-05))

    def test_inter_polariz(self):
        """ This is interacting polarizability with SIESTA starting point """
        omegas = np.linspace(0.0, 2.0, 150) + 1j * td.eps
        pxx = -td.comp_polariz_inter_ave(omegas).imag
        data = np.array([omegas.real * 27.2114, pxx])
コード例 #19
0
from __future__ import print_function, division
import os, unittest
from pyscf.nao import tddft_iter

dname = os.path.dirname(os.path.abspath(__file__))

td = tddft_iter(label='water', cd=dname)
try:
    from pyscf.lib import misc
    libnao_gpu = misc.load_library("libnao_gpu")
    td_gpu = tddft_iter(label='water', cd=dname, GPU=True)
except:
    td_gpu = None


class KnowValues(unittest.TestCase):
    def test_tddft_iter(self):
        """ This is iterative TDDFT with SIESTA starting point """
        self.assertTrue(hasattr(td, 'xocc'))
        self.assertTrue(hasattr(td, 'xvrt'))
        self.assertTrue(
            td.ksn2f.sum() ==
            8.0)  # water: O -- 6 electrons in the valence + H2 -- 2 electrons
        self.assertEqual(td.xocc[0].shape[0], 4)
        self.assertEqual(td.xvrt[0].shape[0], 19)
        dn0 = td.apply_rf0(td.moms1[:, 0])
        print(__name__, dn0.sum())

    def test_tddft_iter_gpu(self):
        """ Test GPU version """
        if td_gpu is not None:
コード例 #20
0
ファイル: x_zip.py プロジェクト: chrinide/pyscf
from __future__ import print_function, division
from pyscf.nao import tddft_iter
from pyscf.nao.m_x_zip import x_zip, ee2dos, ee_xx_oo2dos
import numpy as np

c = tddft_iter(label='siesta', force_gamma=True, gen_pb=False, dealloc_hsx=False)

eps = 0.01
vst, i2w,i2dos, m2e, ma2x = x_zip(c.mo_energy[0,0], c.mo_coeff[0,0,:,:,0], eps)
print(vst)
print(m2e.size)
np.savetxt('i2dos.txt', np.column_stack((i2w.real,i2dos.real)))

i2w,i2dos = ee2dos(c.mo_energy[0,0], eps)
np.savetxt('n2dos.txt', np.column_stack((i2w.real,i2dos.real)))

ab2o = c.hsx.s4_csr.toarray()
i2w,i2dos = ee_xx_oo2dos(m2e, ma2x, ab2o, eps=eps)
np.savetxt('m2dos.txt', np.column_stack((i2w.real,i2dos.real)))
コード例 #21
0
from __future__ import print_function, division
from pyscf.nao import tddft_iter
from pyscf.nao.m_x_zip import x_zip, ee2dos, ee_xx_oo2dos
import numpy as np

c = tddft_iter(label='siesta',
               force_gamma=True,
               gen_pb=False,
               dealloc_hsx=False)

eps = 0.01
vst, i2w, i2dos, m2e, ma2x = x_zip(c.mo_energy[0, 0], c.mo_coeff[0, 0, :, :,
                                                                 0], eps)
print(vst)
print(m2e.size)
np.savetxt('i2dos.txt', np.column_stack((i2w.real, i2dos.real)))

i2w, i2dos = ee2dos(c.mo_energy[0, 0], eps)
np.savetxt('n2dos.txt', np.column_stack((i2w.real, i2dos.real)))

ab2o = c.hsx.s4_csr.toarray()
i2w, i2dos = ee_xx_oo2dos(m2e, ma2x, ab2o, eps=eps)
np.savetxt('m2dos.txt', np.column_stack((i2w.real, i2dos.real)))
コード例 #22
0
ファイル: test_0033_fxc_nao.py プロジェクト: chrinide/pyscf
 def test_fxc(self):
   """ Compute TDDFT interaction kernel  """
   
   td = tddft_iter(label='water', cd=os.path.dirname(os.path.abspath(__file__)))
   fxc = td.comp_fxc_lil(xc_code='1.0*LDA,1.0*PZ', level=4)
コード例 #23
0
ファイル: tddft_x_zip.py プロジェクト: chrinide/pyscf
from __future__ import print_function, division
from pyscf.nao import tddft_iter
from pyscf.nao.m_x_zip import x_zip, ee2dos, ee_xx_oo2dos
import numpy as np

c = tddft_iter(label='siesta', nr=128, jcutoff=7, force_gamma=True, gen_pb=True, dealloc_hsx=False, verbosity=1, xc_code='RPA', x_zip=True)

#print(c.sm2e.shape)
#print(c.sma2x[0].shape)

print( c.comp_polariz_inter_ave( np.array([0.5+1j*0.01]) )  )



コード例 #24
0
from __future__ import print_function, division
import os, unittest
from pyscf.nao import tddft_iter
from pyscf.nao.m_comp_spatial_distributions import spatial_distribution
import h5py
import numpy as np

dname = os.path.dirname(os.path.abspath(__file__))

Ha = 27.211386024367243
td = tddft_iter(label='water',
                iter_broadening=0.15 / Ha,
                xc_code='LDA,PZ',
                tol_loc=1e-4,
                tol_biloc=1e-6,
                cd=dname,
                verbosity=0)


class KnowValues(unittest.TestCase):
    def test_tddft_iter_spatial(self):
        """ Check the spatial density change distribution"""
        self.assertTrue(hasattr(td, 'xocc'))
        self.assertTrue(hasattr(td, 'xvrt'))
        self.assertEqual(td.xocc[0].shape[0], 4)
        self.assertEqual(td.xvrt[0].shape[0], 19)

        # run TDDFT
        omegas = h5py.File(
            dname + "/tddft_iter_output_water_ref.hdf5",
            "r")["polarizability/frequency"].value / Ha + 1j * td.eps
コード例 #25
0
from __future__ import print_function, division
import os,unittest
from pyscf.nao import tddft_iter

dname = os.path.dirname(os.path.abspath(__file__))

td = tddft_iter(label='water', cd=dname)
try:
    from pyscf.lib import misc
    libnao_gpu = misc.load_library("libnao_gpu")
    td_gpu = tddft_iter(label='water', cd=dname, GPU=True)
except:
    td_gpu = None

class KnowValues(unittest.TestCase):
  
  def test_tddft_iter(self):
    """ This is iterative TDDFT with SIESTA starting point """
    self.assertTrue(hasattr(td, 'xocc'))
    self.assertTrue(hasattr(td, 'xvrt'))
    self.assertTrue(td.ksn2f.sum()==8.0) # water: O -- 6 electrons in the valence + H2 -- 2 electrons
    self.assertEqual(td.xocc[0].shape[0], 4)
    self.assertEqual(td.xvrt[0].shape[0], 19)
    dn0 = td.apply_rf0(td.moms1[:,0])
    print(__name__, dn0.sum())

  def test_tddft_iter_gpu(self):
    """ Test GPU version """
    if td_gpu is not None:
      self.assertTrue(hasattr(td_gpu, 'xocc'))
      self.assertTrue(hasattr(td_gpu, 'xvrt'))
コード例 #26
0
ファイル: test_0033_fxc_nao.py プロジェクト: zzy2014/pyscf
    def test_fxc(self):
        """ Compute TDDFT interaction kernel  """

        td = tddft_iter(label='water',
                        cd=os.path.dirname(os.path.abspath(__file__)))
        fxc = td.comp_fxc_lil(xc_code='1.0*LDA,1.0*PZ', level=4)
コード例 #27
0
ファイル: tddft_x_zip.py プロジェクト: zzy2014/pyscf
from __future__ import print_function, division
from pyscf.nao import tddft_iter
from pyscf.nao.m_x_zip import x_zip, ee2dos, ee_xx_oo2dos
import numpy as np

c = tddft_iter(label='siesta',
               nr=128,
               jcutoff=7,
               force_gamma=True,
               gen_pb=True,
               dealloc_hsx=False,
               verbosity=1,
               xc_code='RPA',
               x_zip=True)

#print(c.sm2e.shape)
#print(c.sma2x[0].shape)

print(c.comp_polariz_inter_ave(np.array([0.5 + 1j * 0.01])))
コード例 #28
0
from pyscf import gto, tddft, scf
from pyscf.nao import tddft_iter
from pyscf.nao import polariz_inter_ave, polariz_nonin_ave

mol = gto.M( verbose = 1,
    atom = '''
        H     0    0        0
        H     0.17    0.7    0.587''', basis = 'cc-pvdz',)

gto_mf = scf.RKS(mol)
gto_mf.kernel()
gto_td = tddft.TDDFT(gto_mf)
gto_td.nstates = 9
gto_td.kernel()

nao_td  = tddft_iter(mf=gto_mf, gto=mol)

class KnowValues(unittest.TestCase):
    
  def test_tddft_gto_vs_nao_inter(self):
    """ Interacting case """
    omegas = np.linspace(0.0,2.0,150)+1j*0.04
    p_ave = -polariz_inter_ave(gto_mf, mol, gto_td, omegas).imag
    data = np.array([omegas.real*27.2114, p_ave])
    np.savetxt('hydrogen.tddft_lda.omega.inter.pav.txt', data.T, fmt=['%f','%f'])
    p_iter = -nao_td.comp_polariz_inter_ave(omegas).imag
    data = np.array([omegas.real*27.2114, p_iter])
    np.savetxt('hydrogen.tddft_iter_lda.omega.inter.pav.txt', data.T, fmt=['%f','%f'])
    #print('inter', abs(p_ave-p_iter).sum()/omegas.size)
    self.assertTrue(abs(p_ave-p_iter).sum()/omegas.size<0.03)