Exemplo n.º 1
0
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'
Exemplo n.º 2
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:
Exemplo n.º 3
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()