from ase.io import read from ase.parallel import parprint, paropen from gpaw import GPAW, restart, Mixer, PoissonSolver, FermiDirac from gpaw.tddft import * from gpaw.tddft.lcao_tddft import LCAOTDDFT basis = 'dzp' spacing = 0.32 title = 'flake' vacuum = spacing*8*4/2 time_step = 5.0 kick = [0.001, 0.000, 0.000 ] from os import path if path.exists('flake.gpw'): calc = LCAOTDDFT('flake.gpw') atoms = calc.get_atoms() else: calc = LCAOTDDFT(mode='lcao', h=spacing, basis=basis, nbands=423, width=0, mixer=Mixer(0.05, 5, weight=100.0), poissonsolver=PoissonSolver(eps=1e-12)) atoms = read('%s.xyz' % (title)); atoms.set_pbc((False, False, False)) atoms.center(vacuum=vacuum) atoms.set_calculator(calc) atoms.get_potential_energy() gs_calc.write('flake.gpw', 'all') maxiterations = 24000/time_step fname0 = 'flake_dm.dat'
h = 0.4 b = 'sz(dzp)' sy = 'H' + str(N) positions = [] for i in range(N): positions.append([0.00, 0.00, i * 0.7]) atoms = Atoms(symbols=sy, positions=positions) atoms.center(vacuum=3) print(atoms) # LCAO-RT-TDDFT calc = LCAOTDDFT(mode='lcao', xc=xc, h=h, basis=b, nbands=N, dtype=complex, charge=c, convergence={'density': 1e-6}, propagator_debug=True, propagator='cn', parallel={'band': 2}) atoms.set_calculator(calc) atoms.get_potential_energy() dmfile = sy + '_lcao_' + b + '_rt_z.dm' + str(world.size) specfile = sy + '_lcao_' + b + '_rt_z.spectrum' + str(world.size) calc.absorption_kick([0.0, 0, 0.001]) calc.propagate(10, 20, dmfile) if world.rank == 0: photoabsorption_spectrum(dmfile, specfile) if 0:
c = +1 h = 0.4 b = 'dzp' sy = 'Na2' positions = [[0.00, 0.00, 0.00], [0.00, 0.00, 2.00]] atoms = Atoms(symbols=sy, positions=positions) atoms.center(vacuum=3) # LCAO-RT-TDDFT calc = GPAW(mode='lcao', nbands=1, xc=xc, h=h, basis=b, dtype=complex, charge=c, width=0, convergence={'density': 1e-8}) atoms.set_calculator(calc) atoms.get_potential_energy() calc.write('Na2.gpw', 'all') del calc calc = LCAOTDDFT('Na2.gpw') dmfile = sy + '_lcao_restart_' + b + '_rt_z.dm' + str(world.size) specfile = sy + '_lcao_restart_' + b + '_rt_z.spectrum' + str(world.size) calc.absorption_kick([0.0, 0, 0.001]) calc.propagate(10, 20, dmfile) if world.rank == 0: photoabsorption_spectrum(dmfile, specfile)
N = 2 xc = 'oldLDA' c = 0 h = 0.4 b = 'sz(dzp)' sy = 'H'+str(N) positions = [] for i in range(N): positions.append([0.00,0.00,i*0.7]) atoms = Atoms(symbols=sy, positions = positions) atoms.center(vacuum=3) print(atoms) # LCAO-RT-TDDFT calc = LCAOTDDFT(mode='lcao', xc=xc, h=h, basis=b, nbands=N, dtype=complex, charge=c, convergence={'density':1e-6}, propagator_debug=True, propagator='cn', parallel={'band':2}) atoms.set_calculator(calc) atoms.get_potential_energy() dmfile = sy+'_lcao_'+b+'_rt_z.dm'+str(world.size) specfile = sy+'_lcao_'+b+'_rt_z.spectrum'+str(world.size) calc.absorption_kick([0.0,0,0.001]) calc.propagate(10, 20, dmfile) if world.rank == 0: photoabsorption_spectrum(dmfile, specfile) if 0: # Reference RS-LR-TDDFT calc = GPAW(xc=xc, h=h, charge=c, width=0, nbands=4) atoms.set_calculator(calc) atoms.get_potential_energy()