lr_calc = lr ex = ExcitedState(lr, 0) den = ex.get_pseudo_density() * Bohr**3 # course grids for finegrid in [1,0]: lr = LrTDDFT(calc, xc=xc, finegrid=finegrid) lr.diagonalize() t3 = lr[0] parprint('finegrid, t1, t3=', finegrid, t1 ,t3) equal(t1.get_energy(), t3.get_energy(), 5.e-4) # with spin lr_vspin = LrTDDFT(calc, xc=xc, nspins=2) singlet, triplet = lr_vspin.singlets_triplets() lr_vspin.diagonalize() # the triplet is lower, so that the second is the first singlet # excited state t2 = lr_vspin[1] ex_vspin = ExcitedState(lr_vspin, 1) den_vspin = ex_vspin.get_pseudo_density() * Bohr**3 parprint('with virtual/wo spin t2, t1=', t2.get_energy(), t1 .get_energy()) equal(t1.get_energy(), t2.get_energy(), 5.e-7) gd = lr.calculator.density.gd finegd = lr.calculator.density.finegd ddiff = gd.integrate(abs(den - den_vspin)) parprint(' density integral, difference=', gd.integrate(den), gd.integrate(den_vspin), ddiff)
lr = LrTDDFT(calc, xc=xc) lr.diagonalize() t1 = lr[0] # course grids for finegrid in [1,0]: lr = LrTDDFT(calc, xc=xc, finegrid=finegrid) lr.diagonalize() t3 = lr[0] print 'finegrid, t1, t3=', finegrid, t1 ,t3 equal(t1.get_energy(), t3.get_energy(), 5.e-4) # with spin lr_vspin = LrTDDFT(calc, xc=xc, nspins=2) singlet, triplet = lr_vspin.singlets_triplets() lr_vspin.diagonalize() # the triplet is lower, so that the second is the first singlet # excited state t2 = lr_vspin[1] print 'with virtual/wo spin t2, t1=', t2.get_energy(), t1 .get_energy() equal(t1.get_energy(), t2.get_energy(), 5.e-7) if not load: c_spin = GPAW(xc='PBE', nbands=2, spinpol=True, parallel={'domain': world.size}, txt=txt) H2.set_calculator(c_spin) c_spin.calculate(H2) ## c_spin.write('H2spin.gpw', 'all')