Use of PropagatorΒΆ

Here we provide an example of calculating the dipole moments using OF-TDDFT with the config files.

Suppose we have a GaAs cluster with its density optimized to the ground state. At t=0 we apply a kick at x-direction and we want to calculate the dipole moment of the cluster at t=0.1 a.u.

The first step is to optimize the ground state density. We create a config file named optimize.ini:

[JOB]
task = Optdensity

[PATH]
pppath = ../DATA/
cellpath = ../DATA/

[PP]
Ga = Ga_lda.oe04.recpot
As = As_lda.oe04.recpot

[CELL]
cellfile = GaAs_random.vasp
elename = Ga As
zval = 3.0 5.0
format = vasp

[GRID]
spacing = 0.25

[DENSITY]
densityini = HEG
densityoutput = density

[EXC]
xc = LDA

[KEDF]
kedf = x_TF_y_vW
x = 1.0
y = 1.0

[OPT]
method = TN
c1 = 1e-4
c2 = 2e-1
maxls = 10
maxiter = 200
maxfun = 50
econv = 1e-6
h0 = 0.025

Then we run the following command:

$ python -m dftpy optimize.ini

which will generate a density file names density in the working directory.

The next step is to run the propagation. We create another config file named propagate.ini:

[JOB]
task = Propagate

[PATH]
pppath = ../DATA/
cellpath = ../DATA/

[PP]
Ga = Ga_lda.oe04.recpot
As = As_lda.oe04.recpot

[CELL]
cellfile = GaAs_random.vasp
elename = Ga As
zval = 3.0 5.0
format = vasp

[GRID]
spacing = 0.25
gfull = True

[DENSITY]
densityini = Read
densityfile = density

[EXC]
xc = LDA

[KEDF]
; Pauli KEDF
kedf = TF

[PROPAGAROR]
type = crank-nicolson
int_t = 1.0e-3
linearsolver = bicgstab
tol = 1.0e-10
maxiter = 100

[TD]
outfile = td_out
tmax = 0.1
order = 100
direct = x
strength = 1.0e-3

One thing to keep in mind is when running the propagate job, the kedf is the Pauli KEDF (i.e. total KESF minus the von Weizsacker term).

Then we run the following command:

$ python -m dftpy propagate.ini

It will generate three files: td_out_E, td_out_mu, td_out_j, which contains the energy of the electrons, the dipole moment, and the integrated current of each time step, respectively.