Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • chronusq_public chronusq_public
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • ChronusQ
  • chronusq_publicchronusq_public
  • Wiki
  • Examples
  • Electron Dynamics

Last edited by Andrew Wildman Oct 13, 2020
Page history

Electron Dynamics

Electron dynamics can be used to simulate a variety of interesting chemical processes. Here we will use a couple of examples to get spectra from some chemical systems. While spectra are often easier to extract using response methods, this serves as an example to get you acquainted with electronic dynamic simulations in ChronusQ and a starting point for simulating more interesting phenomena.

  • Sodium D line splitting
    • Input
    • Output
  • Water spectrum
    • Input
  • Output
  • References

Sodium D line splitting

First we'll consider an atomic system that can showcase relativistic effects. The P manifold of the neutral sodium atom splits into ^1P_{\frac{3}{2}} and ^1P_\frac{1}{2} states, separated by a few meV. The absorption spectrum of a system can be expressed as:1

{\boldsymbol \sigma}(\omega) \propto \omega \text{Im}\left[ \text{Tr} \left( {\boldsymbol \alpha}(\omega) \right) \right]

The dynamic polarizability, \boldsymbol{\alpha}(\omega) can be extracted as the dipole impulse response to an electric dipole perturbation. In general, to get a spectrum, one must perform three separate electronic dynamics simulations, Fourier transforming the dipole signal after an impulse perturbation to get the impulse response function.1 For this system, since it is a single atom, we will assume that the dynamic polarizability is isotropic, so we will only need a single simulation.

Input

The input we'll use is as follows:

#
#  Na doublet electron dynamics
#

[Molecule]
charge = 0
mult = 2
geom:
  Na     0.0   0.0   0.0

[QM]
reference = X2CBLYP
job = RT

[SCF]
MaxIter = 400

[BASIS]
basis = 6-311+g(d,p)

[INTS]
Alg = InCore

[RT]
TMAX   = 12000.
DELTAT = 0.05
FIELD:
  StepField(0.,0.0001) Electric 0. 0.005 0.

[MISC]
nsmp = 4
mem = 2GB

Because the splitting we are looking for is very small, a long simulation is required to resolve the difference between the states. Here we choose 12,000 au. (~290 fs) Our "impulse perturbation" is a static field that is on for only a single time step, and we are perturbing in the y Cartesian direction, although any direction should give the same results. Since we're doing a long simulation on a small system, we'll specify that we want the ERIs stored directly in memory (INTS.ALG = INCORE) so we don't spend time every step forming the ERIs. We'll also speed up the calculation with multiple cores, but these computational resources should still be small enough to be done on a desktop computer. Finally, we're giving the SCF some extra time to converge the guess, since this is an atomic system and can only be given a poor guess. (core Hamiltonian guess)

Output

For the output of a real time electron dynamics job, after the SCF results, the real time dynamics options are printed:

  *** Parsing RT options ***
Defaulting to MMUT integration algorithm
Defaulting to Magnus 2 restart for MMUT
================================================================================
Real-Time Propagation Settings:

  * Simulation Parameters:
  Simulation Time:                    12000.0000000 ħ / Eh
  Number of Steps:                    240000
  Step Size:                          0.0500000 ħ / Eh
                                      0.0012094 fs

  * Integration Parameters:
  Electronic Integration:             Modified Midpoint Unitary Transformation (MMUT)
  Restarting MMUT every               50 steps with a(n) Explicit 2nd Order Magnus step

  * Perturbation:

    Field 1:  Electric Dipole Field
     * Amplitude (AU)   { 0.0000000, 0.0050000, 0.0000000 }
     * Step Field       TON =    0.0000000    TOFF =   0.0001000

  * Misc Parameters:
  Matrix Exponential Method:          Eigen Decomposition

Here we can confirm all of the options we set above. Next comes the time-dependent data:

================================================================================

  Time (AU)      Energy (Eh)       Dipole (X)       Dipole (Y)       Dipole (Z)
--------------------------------------------------------------------------------

  *** Restarting MMUT ***
     0.0000  -162.4724136286       0.00000044      -0.00000195      -0.00000110
  *** Restarting MMUT ***
     0.0500  -162.4724134985       0.00000043      -0.00002602      -0.00000109
  *** Restarting MMUT ***
     0.1000  -162.4724134985       0.00000043      -0.00006518      -0.00000109
     0.1500  -162.4724134985       0.00000043      -0.00010242      -0.00000109
     0.2000  -162.4724134985       0.00000043      -0.00014467      -0.00000109
     0.2500  -162.4724134985       0.00000043      -0.00017484      -0.00000109
     0.3000  -162.4724134986       0.00000043      -0.00020060      -0.00000109
     0.3500  -162.4724134983       0.00000043      -0.00022986      -0.00000109
     0.4000  -162.4724134988       0.00000043      -0.00024640      -0.00000109
     0.4500  -162.4724134984       0.00000044      -0.00026020      -0.00000109
     0.5000  -162.4724134984       0.00000044      -0.00027781      -0.00000109
     0.5500  -162.4724134987       0.00000044      -0.00028612      -0.00000109
     0.6000  -162.4724134985       0.00000044      -0.00029473      -0.00000108
     0.6500  -162.4724134984       0.00000044      -0.00031008      -0.00000108
     0.7000  -162.4724134988       0.00000044      -0.00031880      -0.00000108
     0.7500  -162.4724134984       0.00000044      -0.00033168      -0.00000108
     0.8000  -162.4724134985       0.00000044      -0.00035183      -0.00000108
     0.8500  -162.4724134986       0.00000044      -0.00036656      -0.00000108
     0.9000  -162.4724134987       0.00000044      -0.00038622      -0.00000108
     0.9500  -162.4724134984       0.00000044      -0.00041144      -0.00000108
     1.0000  -162.4724134986       0.00000044      -0.00042893      -0.00000108

We can see that the time-dependent energy and electric dipole moment of the system are printed. While this is useful for ensuring that the simulation is proceeding as you expected, this data is saved to full precision (and with many more properties) to the binary file.

The first thing to notice is that the energy jumps from step 0 to step 1. This is expected - we have a time dependent external field, so molecular energy should not be conserved. After that, some energy fluctuations are observed, but they are rather small. By checking the end of the simulation:

 11999.5000  -162.4724135131       0.00001433      -0.00110638      -0.00014043
 11999.5500  -162.4724135131       0.00002048      -0.00111576      -0.00013357
 11999.6000  -162.4724135131       0.00002533      -0.00112343      -0.00012923
 11999.6500  -162.4724135131       0.00002703      -0.00112735      -0.00012679
 11999.7000  -162.4724135131       0.00002838      -0.00113122      -0.00012445
 11999.7500  -162.4724135131       0.00002945      -0.00113498      -0.00012469
 11999.8000  -162.4724135131       0.00002923      -0.00113705      -0.00012638
 11999.8500  -162.4724135131       0.00003019      -0.00114101      -0.00012710
 11999.9000  -162.4724135132       0.00003193      -0.00114640      -0.00012913
  *** Restarting MMUT ***
 11999.9500  -162.4724135131       0.00003380      -0.00115155      -0.00013125
  *** Restarting MMUT ***
  *** Saving data to binary file ***
 12000.0000  -162.4724135131       0.00003782      -0.00115962      -0.00013090

we see that the total energy drift over the 12,000 au is 1.47e^{-8}\ E_h, which certainly suffices to ensure that the response is physically relevant.

Now we can use the data on the binary file to ensure we get the full precision on the dipole signal, extract it, use the Padé approximant to the Fourier transform,2 and plot the spectral region relevant to the sodium d line, and we get the spectrum below:

Na D Line Spectrum

Water spectrum

In this example, we will use a molecular system that does require 3 different simulations to calculate the spectrum: gas phase water.

Input

The first input we'll use has a perturbation along the x Cartesian axis.

#
#  Water B3LYP spectrum
#

[Molecule]
charge = 0
mult = 1
geom:
 O               0.  -0.07579184359              0.
 H     0.866811829    0.6014357793               0.
 H    -0.866811829    0.6014357793               0.

[QM]
Reference = RB3LYP
Job = RT

[BASIS]
Basis = cc-PVDZ

[INTS]
Alg = InCore

[RT]
TMax = 620.
DeltaT = 0.05
Field:
  StepField(0.,0.0001) Electric 0.0001 0. 0.

[MISC]
NSMP = 4
Mem = 2GB

We use many of the techniques above to speed up the calculation. Here, we need a significantly shorter time to resolve the spectrum. We'll use 620 au. (~15 fs)

The other two simulations just change the axis along which the system is perturbed. For y:

Field:
  StepField(0.,0.0001) Electric 0. 0.0001 0.

and for z:

Field:
  StepField(0.,0.0001) Electric 0. 0. 0.0001

Output

The same output sections exist for this simulation as above. We see that the energy doesn't change over the course of the simulation, (other than the initial step) so we are ready to extract the spectrum. Extracting and damping the signal with a damping factor of 0.001 au, then transforming to frequency space with the Padé approximant to the Fourier transform,2 and finally tracing over the diagonal of the dynamic polarizability, we get the following spectrum:

Na D Line Spectrum

References

  1. Goings, J. J., Lestrange, P. J., & Li, X. (2018). Real‐time time‐dependent electronic structure theory. Wiley Interdisciplinary Reviews: Computational Molecular Science, 8(1), e1341. ↩ ↩2

  2. Bruner, A., LaMaster, D., & Lopata, K. (2016). Accelerated broadband spectra using transition dipole decomposition and Padé approximants. Journal of Chemical Theory and Computation, 12(8), 3741-3750. ↩ ↩2

Clone repository

Overview and Features

Getting ChronusQ

Running ChronusQ

Input sections

     Overview
     QM and PROTQM
     Molecule
     Basis and DFBasis
     Ints
     DFTInts
     SCF
     RT
     Response
     CC
     MCSCF
     Misc

FAQ

Examples

     HF energy
     Relativistic DFT Energy
     Linear Response TDDFT
     Frequency dependent TDHF
     Model Order Reduction of TDDFT
     Electron dynamics

Keyword Reference

Binary Reference