rt-TDDFT and OCCUP

From NWChem

Viewed 2949 times, With a total of 5 Posts
Jump to: navigation, search

Just Got Here
Threads 2
Posts 3
Dear all,

I've again a problem with the OCCUP keyword:

I want to do a rt-TDDFT calculation for an excited molecule. Therefore I use the following (shortened) input-file:

title "Cu oxo TD-B3LYP excitation"
echo
scratch_dir /tmp/Nwchem
memory total 2500 mb
start Cu_oxo
geometry "system" units angstroms nocenter noautoz noautosym
 Cu                -1.37626700   -0.00002100   -0.00022800
 [...]
 H                 -2.85367600   -1.70711100    1.06158200
end
basis
 * library cc-pvdz file /pc2work/anlu/nwchem-6.3-src.2013-05-28/src/basis/libraries/
end
charge 2
dplot
   TITLE CU
   vectors "CU_ground.movecs"
   LimitXYZ
   -8.0 8.0 100
   -8.0 8.0 100
   -8.0 8.0 100
   spin total
   gaussian
   output Dichte_ref_groundstate.cube
end
dft
 odft
 xc b3lyp
 mult 1
 maxiter 400
 vectors input atomic output "CU_ground.movecs"
end
## Compute ground state of the system
task dft energy
task dplot
unset dft:*
OCCUP
 72 72
 1.0 1.0 #Orbital 1
 1.0 1.0
 1.0 1.0
 1.0 1.0
 1.0 1.0 #Orbital 5
 [...]
 1.0 1.0 #Orbital 60
 1.0 1.0
 1.0 1.0
 0.070086937 1.0
 1.0 1.0
 1.0 1.0 # 65
 1.0 1.0
 1.0 1.0
 0.940028887 1.0
 1.0 1.0
 1.0 1.0 #Orbital 70
 0.929913062 0.0
 0.062511272 0.0
end
dft
 odft
 xc b3lyp
 mult 1
 maxiter 400
 vectors input "CU_ground.movecs" output "Cu_oxo.movecs"
 noscf
end
task dft energy
unset dplot:*
dplot
   TITLE CU
   LimitXYZ
   -8.0 8.0 100
   -8.0 8.0 100
   -8.0 8.0 100
   spin total
   gaussian
end
rt_tddft
  tmax 300.0
  dt 0.2
  load vectors "Cu_oxo.movecs"
  print *
  visualization
    tstart 0.0        # start visualization at this time
    tend 299.8        # stop visualization at this time
    dplot             # post-process density matrices into cube files after propagation
  end
end
task dft rt_tddft


(The basic idea is to calculate the groundstate and occupy higher orbitals with the OCCUP-keyword afterwards. This is done in a noSCF calculation. The output for the rt-TDDFT calculation is then:

                             Open shell propagation
                              ----------------------
 Initial state: Imported open shell MO eigenvectors
 --------------------------------------------------
   Vector      Occupation     Eigenvalue [au]
 --------------------------------------------
         1        1.00       -3.23392348E+02
         2        1.00       -3.23392345E+02
[...]
        63        0.07       -6.22068371E-01
        64        1.00       -6.06523644E-01
        65        1.00       -6.06305144E-01
        66        1.00       -5.77292864E-01
        67        1.00       -5.76451052E-01
        68        0.94       -5.55072444E-01
        69        1.00       -5.52763761E-01
        70        1.00       -5.23793842E-01
        71        0.93       -4.04032406E-01
        72        0.06       -3.96755861E-01
        73        0.00       -2.56850444E-01
[...]
   Vector      Occupation     Eigenvalue [au]
 --------------------------------------------
         1        1.00       -3.23392348E+02
         2        1.00       -3.23392345E+02
[...]
Integral file          = /tmp/Nwchem/Cu_oxo.aoints.0
 Record size in doubles =  65536        No. of integs per rec  =  32766
 Max. records in memory =      0        Max. records in file   =   2526
 No. of bits per label  =     16        No. of bits per value  =     64
 #quartets = 2.284D+07 #integrals = 5.884D+08 #direct =  1.1% #cached = 98.9%
 Grid_pts file          = /tmp/Nwchem/Cu_oxo.gridpts.0
 Record size in doubles =  12289        No. of grid_pts per rec  =   3070
 Max. records in memory =     39        Max. recs in file   =      2219
<rt_tddft>:      0.00000        ### Propagation started ###
<rt_tddft>:      0.00000        ### Checks passed ###
<rt_tddft>:      0.00000        ### Saved density matrix snapshot ###
<rt_tddft>:      0.00000   2.587733604000E+003     # CPU time
<rt_tddft>:      0.00000   1.597777275029E+003     # Enuc
<rt_tddft>:      0.00000  -8.437766477621E+003     # Ecore
<rt_tddft>:      0.00000   3.233989488196E+003     # Ecoul
<rt_tddft>:      0.00000  -2.062673754170E+002     # Exc(1)
<rt_tddft>:      0.00000   0.000000000000E+000     # Exc(2)
<rt_tddft>:      0.00000  -3.812267089813E+003     # Etot
<rt_tddft>:      0.00000   1.615626388229E-008     # Eadded
<rt_tddft>:      0.00000  -7.000000000000E+001     # Charge [system] (alpha spin)
<rt_tddft>:      0.00000  -7.000000000000E+001     # Charge [system] (beta spin)
<rt_tddft>:      0.00000  -1.400000000000E+002     # Charge [system] (total spin)
<rt_tddft>:      0.00000   [...] all lower Orbitals nearly 1.0, Orbital 70:  9.999999551251E-001 
                                   Orbital 71: 1.603641419205E-007  
     # MO Occupations (alpha spin)
[...]


I'm focusing on the occupation of the 71th orbital: rt-TDDFT seems to read the correct occupation (0.93) from the file. I expect to have nearly the same occupation for the timestep t=0. But as you can see in the output the occupation decreased from 0.93 to 1.603641419205E-007 - why? Furthermore if I subtract the written charge density for the timestep t=0 from the charge density of the groundstate there are NO differences in the cubefiles (not even in the last digit).

Can you tell me what I did wrong? Or is rt-TDDFT not able to work together with the OCCUP-keyword?

Thank you very much for help :-)

Andreas

Just Got Here
Threads 0
Posts 3
Hi Andreas,

RT-TDDFT has not been tested to use occup, but it *might* work.

After doing a noscf occup, and using these vectors to start propagation (with no external electric field), you should see a strange strongly oscillating dipole moment, as you slingshot away from the non-ground state initial condition. If you don't use occup (or alternatively just fill up as in the ground state) you should see no dipole oscillations. This tells you that you are indeed pulling in the manually occup'd movecs. Whether or not the resulting dynamics are what you think is something else.

I suspect that the printed movecs might also be incorrect as they are projected onto the initial condition rather than the true ground state.

Email me and we can do some simple tests: klopata AT lsu DOT edu

Ken

Just Got Here
Threads 0
Posts 1
Dear all,

I'm having the same problem (I'm using NWChem 6.3), that is: after a dft calculation I would like to change the occupation of some molecular orbitals and to start a real-time tddft run from the new density matrix "prepared" by changing the occupations.

Is this problem solved in the latest version of NWChem?

I'm copying below my input file.

Thanks for helping,
Silvio Pipolo


memory total 60000 mb
title "glycine oscillations "
echo
scratch_dir ./scratch
permanent_dir ./perm

start glycine
geometry "system" units angstroms nocenter noautoz noautosym
 N        -1.42928993     0.53588866     0.16209488
C 0.00942352 0.36933896 0.35615339
C 0.63280074 -0.51910412 -0.70437903
O -0.17821196 -1.55581092 -1.03380996
O 1.73878613 -0.37908690 -1.17319014
H 0.30721968 -2.07822587 -1.69971857
H 0.30592455 -0.06898761 1.32949131
H 0.50584431 1.34035573 0.28276602
H -1.88943346 -0.37006702 0.21938048
H -1.80706357 1.10969910 0.91321162
end

set geometry "system"

basis
* library 6-31G*
end

dft
xc b3lyp
vectors output "gly.movecs"
end

task dft energy

OCCUP
21
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
0.0
1.0
end

dft
xc b3lyp
noscf # do not relax the electron density
vectors input "gly.movecs" output "gly-mod.movecs"
end

task dft energy

rt_tddft
tmax 2000.0
dt 0.2
print dipole field energy convergence moocc
load vectors "gly-mod.movecs"
end

task dft rt_tddft

  • Niri Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Gets Around
Threads 4
Posts 152
Hi Silvio,

This should work. Here's a small closed shell example that works:
echo
start water
geometry "system" units angstroms nocenter noautoz noautosym
O     0.00000000    -0.00001441    -0.34824012
H -0.00000000 0.76001092 -0.93285191
H 0.00000000 -0.75999650 -0.93290797
end
set geometry "system"
basis
 * library 6-31G
end
occup
6 0
2.0
2.0
2.0
2.0
1.0
1.0
end
dft
xc b3lyp
vectors output occup1.mos
end
task dft
dft
xc b3lyp
vectors input occup1.mos
noscf
end
task dft
unset rt_tddft:*
rt_tddft
 load vectors occup1.mos
tmax 200.0
dt 0.2
nrestarts 0
tag "kickx"
print dipole
field "kick"
type delta
polarization x
max 0.001
end
excite "system" with "kick"
end
task dft rt_tddft


Here's an occup example for an open shell:

occup
6 6
1 1
1 1
1 1
1 1
1 0
0 1
end


Let us know or email me directly at niri.govind@pnnl.gov if there are any issues.

Best,
Niri Govind

  • Niri Forum:Admin, Forum:Mod, NWChemDeveloper, bureaucrat, sysop
    Profile
    Send PM
Gets Around
Threads 4
Posts 152
Hi Silvio,

I think the problem in your case is in your occup block. See my example.

Best,
-Niri

Clicked A Few Times
Threads 5
Posts 10
Hi,
sorry to interrupt.But I want to ask if your dplot is working in RT_TDDFT?
Mine do not read dplot block for rt_tddft calculation.

Thanks


Forum >> NWChem's corner >> General Topics



Who's here now Members 0 Guests 1 Bots/Crawler 0


AWC's: 2.5.10 MediaWiki - Stand Alone Forum Extension
Forum theme style by: AWC