MOMAP
Tutorial 01 Fluorescence Spectrum Calculation
Version 2019 September, 2019
MOMAP Tutorial 01
Version 2019 edited by:
Dr. Qikai Li
Dr. Yingli Niu
Ms. Lihui Yan
Released by Hongzhiwei Technology (Shanghai) Co., Ltd
and Z.G. Shuai Group
The information in this document applies to version 2019 of MOMAP
MOMAP Tutorial - Fluorescence Spectrum Calculation
Azulene is an organic compound and an isomer of naphthalene. Whereas naphthalene is colorless,
azulene is dark blue. Two terpenoids, vetivazulene (4,8-dimethyl-2-isopropylazulene) and guaiazulene (1,4-
dimethyl-7-isopropylazulene), that feature the azulene skeleton are found in nature as constituents of
pigments in mushrooms, guaiac wood oil, and some marine invertebrates.
MOMAP is able to simulate fluorescence spectrum and calculate the corresponding radiative decay rate
constant based on the TVCORF_SPEC and TVSPEC_SPEC subprograms. The TVCORF_SPEC subprogram is
used to calculate thermal vibration correlation function (TVCF), while the TVSPEC_SPEC subprogram is used
to simulate fluorescence spectrum.
To begin the TVCORF_SPEC and TVSPEC_SPEC calculations, we need the evc results. The evc calculation
can use outputs from other QC programs, such as Gaussian, TURBOMOLE, ChemShell, Dalton, MOLPRO, DFTB
and MOPAC etc. It can also read data from the output files, including vibrational frequencies and force
constant matrix, and calculate normal mode displacement, Huang-Rhys factor, reorganization energy and
Duschinsky rotation matrix between initial and final electronic states under both internal coordinate and
Cartesian coordinate.
Thus, the basic steps involved in the calculations are as follows:
1. Gaussian calculations
2. Vibration analysis etc.
3. Fluorescence spectrum calculation
Contents
Gaussian Calculations ....................................................................................................................................................................... 1 Optimization calculation on ground state (S0) ................................................................................................................ 1 Optimization calculation on lowest singlet excited state (S1) ..................................................................................... 2 Calculate non-adiabatic coupling matrix element (NACME) ..................................................................................... 3
Vibration Analysis ............................................................................................................................................................................... 5 Adiabatic Excitation Energy ............................................................................................................................................................ 7 Electronic Transition Dipole ............................................................................................................................................................ 8 Fluorescence Spectrum Calculation ........................................................................................................................................... 10
Nonradiative rate kic ............................................................................................................................................................... 10 Radiative rate kr ........................................................................................................................................................................ 13
Sum-over-states Approach .......................................................................................................................................................... 17 Verify Convergence of Correlation Function .......................................................................................................................... 20
1
Gaussian Calculations
Optimization calculation on ground state (S0)
Once the initial geometry is obtained, we have to find the optimized S0 geometry. The route section is set as
#p opt b3lyp/6-31g*, which indicates an optimization calculation at B3LYP/6-31G* level.
The initial geometry gaussian S0 input file (azulene-s0.com) is as follows:
We use g09 or g16 to do the geometry optimization.
Fig. 1 Optimized S0 geometry
%chk=azulene-s0.chk
%mem=4GB
%nprocl=1
%nprocs=8
#p opt freq B3LYP/6-31G*
azulene-s0 optimization
0 1
C 2.01378743 -1.48849852 0.00000000
C 2.28995141 -0.11795315 0.00000000
C 1.39185815 0.95357383 0.00000000
C 0.78413689 -2.15418449 0.00000000
C 0.00000000 0.93285810 0.00000000
C -0.50398383 -1.61065958 0.00000000
C -0.89316505 -0.27406276 0.00000000
H 2.88919252 -2.13621797 0.00000000
H 3.34387207 0.15083266 0.00000000
H 1.84191311 1.94635990 0.00000000
H 0.83658347 -3.24058384 0.00000000
H -1.32037398 -2.33298523 0.00000000
C -0.84567310 2.05536637 0.00000000
H -0.51364908 3.08694089 0.00000000
C -2.17758707 1.61062710 0.00000000
H -3.04994479 2.25593917 0.00000000
C -2.21339978 0.20656494 0.00000000
H -3.10314368 -0.41207657 0.00000000
2
Optimization calculation on lowest singlet excited state (S1)
With the optimized S0 geometry at hand, we can start optimizing S1 geometry using the optimized S0
geometry as the initial structure. The route section is set as #p td opt b3lyp/6-31g*, which indicates
an optimization calculation at B3LYP/6-31G* level using the TDDFT method.
The initial gaussian S1 input file (azulene-s1.com) is as follows:
Again, use g09 or g16 to do the S1 optimization.
Fig. 2 Optimized S1 geometry
%chk=azulene-s1.chk
%mem=4GB
%nprocl=1
%nprocs=8
#p opt freq td B3LYP/6-31G*
azulene-s1 optimization
0 1
C 2.01378700 -1.48849900 0.00000000
C 2.28995100 -0.11795300 0.00000000
C 1.39185800 0.95357400 0.00000000
C 0.78413700 -2.15418400 0.00000000
C 0.00000000 0.93285800 0.00000000
C -0.50398400 -1.61066000 0.00000000
C -0.89316500 -0.27406300 0.00000000
H 2.88919300 -2.13621800 0.00000000
H 3.34387200 0.15083300 0.00000000
H 1.84191300 1.94636000 0.00000000
H 0.83658300 -3.24058400 0.00000000
H -1.32037400 -2.33298500 0.00000000
C -0.84567300 2.05536600 0.00000000
H -0.51364900 3.08694100 0.00000000
C -2.17758700 1.61062700 0.00000000
H -3.04994500 2.25593900 0.00000000
C -2.21340000 0.20656500 0.00000000
H -3.10314400 -0.41207700 0.00000000
3
Calculate non-adiabatic coupling matrix element (NACME)
Unlike rad_FL calculation, The NACME should be obtained before performing a nonrad
calculation.
After finding the optimized S1 geometry, we can calculate NACME at this geometry.
The route section is set as the following line:
#p td b3lyp/6-31g(d) prop=(fitcharge,field) iop(6/22=-4, 6/29=1, 6/30=0, 6/17=2)
The initial gaussian nacme input file (azulene-nacme.com) is as follows:
Again, use g09 or g16 to do the NACME calculation.
Now, all the Gaussian related calculations are done.
In the following calculations, we need the gaussian *.fchk files, we use the Gaussian built-in command
formchk to generate the *.fchk file based on output *.chk. The *.fchk file contains readable force constant
matrix information that is needed in dushin calculation.
TIPS: To obtain the optimized ground state geometry, use Gaussview to open azulen-s0.log file,
and save as azulene-s1.com. Then, modify the first few lines of azulene-s1.com to suit for S1
optimization.
%chk=azulene-nacme.chk
%mem=4GB
%nprocl=1
%nprocs=8
#p td B3LYP/6-31G* prop=(fitcharge,field) iop(6/22=-4,6/29=1,6/30=0,6/17=2) nosymm
azulene excited state nacme calculation
0 1
C 2.00781300 -1.54567700 0.00000000
C 2.29335100 -0.16097300 0.00000000
C 1.43666200 0.92263700 0.00000000
C 0.74217000 -2.17592100 0.00000000
C 0.00000000 0.87899800 0.00000000
C -0.52457900 -1.62505800 0.00000000
C -0.85006100 -0.22497100 0.00000000
H 2.86853900 -2.20838800 0.00000000
H 3.35493800 0.08558900 0.00000000
H 1.88767400 1.91181300 0.00000000
H 0.77544500 -3.26524800 0.00000000
H -1.36541000 -2.31420500 0.00000000
C -0.84651000 2.06953900 0.00000000
H -0.46545900 3.08512900 0.00000000
C -2.19214700 1.68790200 0.00000000
H -3.04949000 2.34818800 0.00000000
C -2.21739500 0.28941600 0.00000000
H -3.10206800 -0.33823600 0.00000000
4
$ formchk azulene-s0.chk
$ formchk azulene-s1.chk
$ formchk azulene-nacme.chk
TIPS: To obtain the optimized excited state geometry for NACME calculation, use Gaussview to open
azulen-s1.log file, and save as azulene-nacme.com. Then, modify the first few lines of azulene-
nacme.com to suit for NACME calculation.
5
Vibration Analysis
The evc calculation requires the basic information on initial and final electronic states. Thus, to begin
an evc calculation, you need to designate the related file names in MOMAP input file (i.e., momap.inp).
For the Gaussian output files, you have to provide the corresponding .fchk files as well, as done in the
last section.
The momap.inp for evc calculation is straightforward and is shown as follows:
Copy the following gaussian output files from upper directory:
../gaussian/azulene-s0.fchk
../gaussian/azulene-s0.log
../gaussian/azulene-s1.fchk
../gaussian/azulene-s1.log
to this evc work directory.
A run file is also created, and is shown as follows:
[evc]$ cat momap.inp
do_evc = 1 # toggle dushin rotation effect, 1 or 0
&evc
ffreq(1) = "azulene-s0.log" # log file of ground state
ffreq(2) = "azulene-s1.log" # log file of excited state /
TIPS: In each directory, there exists a README file, just follow the instructions in README to carry
out the operations. For example, the README in evc is shown as follows:
How to run MOMAP
1) Copy the following gaussian files from upper directory:
../gaussian/azulene-s0.fchk
../gaussian/azulene-s0.log
../gaussian/azulene-t1.fchk
../gaussian/azulene-t1.log
to this directory.
2) Change momap.inp accordingly.
3) Run MOMAP to do the calculation by the following command:
./run
#!/bin/sh
momap -input momap.inp -np 4
6
Users may modify the run file, for example, by changing the np option from 4 to 8, and perform the
calculation by running the script file:
$ ./run
The result files are as follows:
evc.cart.dat: includes frequency, Huang−Rhys factor, and Duschinsky matrix (Cartesian coordinate
system).
evc.dint.dat: includes frequency, Huang−Rhys factor, and Duschinsky matrix (D solved by using internal
coordinate system).
evc.cart.abs: Duschinsky matrix file, used to plot 2D Duschinsky figure.
evc.cart.nac: Projection of NACME to normal modes.
evc.cart.inp: Projection of derivatives of transition dipoles to normal modes.
evc.dx.x.com: Molecular overlapping figure of two electron states (viewed by using Gaussview)
evc.dx.x.xyz: Molecular overlapping figure of two electron states (viewed by using Jmol)
evc.dx.v.xyz: Molecular displacement vectors of two electron states (viewed by using Jmol)
evc.vib1.xyz: Molecular vibrational vectors at ground state (viewed by using Jmol)
evc.vib2.xyz: Molecular vibrational vectors at excited state (viewd by using Jmol)
evc.out: evc log file
Except for ffreq(1) and ffreq(2) parameters, the evc program also allows user to project
reorganization energy onto the internal coordinate, to take account of isotope effect, and to configure many
other advanced settings etc., please refer to the MOMAP User Guide for details.
Please check the reorganization energy results between evc.cart.dat and evc.dint.dat. If the
energy difference is small (< 1000 cm-1), then use the results in evc.cart.dat to do the next calculations.
However, if the energy difference is large, then use evc.dint.dat to do the next calculations.
evc.dx.x.com evc.dx.v.xyz
Electron vibration coupling
[evc]$ ls
azulene-nacme.log azulene-s1.log evc.dint.dat evc.out nodefile
azulene-s0.fchk evc.cart.abs evc.dx.v.xyz evc.vib1.xyz README
azulene-s0.log evc.cart.dat evc.dx.x.com evc.vib2.xyz ref
azulene-s1.fchk evc.dint.abs evc.dx.x.xyz momap.inp run
7
Adiabatic Excitation Energy
Before we can calculate the Fluorescence Spectrum, we need to known the adiabatic excitation energy
Ead. The adiabatic excitation energy is the energy difference between the relaxed excited state energy and the
ground state energy.
From the S0 Gaussian log file, locate the last line with “SCF Done” in the output azulene-s0.log file
in order to find the single point energy at the optimized S0 geometry.
For example, you may use the following commands:
$ cat azulene-s0.log | grep “SCF Done”
In this example, the last line with “SCF Done” is like the following:
SCF Done: E(RB3LYP) = - 385.838172128 A.U.
Thus, we have the energy Egs at optimized ground state geometry:
Egs = - 385.838172128 a.u.
From the S1 Gaussian log file, locate the last line with “Total Energy, E(TD-HF/TD-KS)” in the
output azulene-s1.log file in order to find the single point energy at the optimized S1 geometry.
For example, you may use the following commands:
$ cat azulene-s1.log | grep “Total Energy, E(TD-HF/TD-KS)”
In this example, the last line with “Total Energy, E(TD-HF/TD-KS)” is like the following:
Total Energy, E(TD-HF/TD-KS) = -385.763080213
Then, we have the single point energy Ees at the optimized S1 geometry:
Ees = - 385.763080213 a.u.
From the above obtained ground state S0 and excited state S1 energies, we can obtain the adiabatic
excitation energy Ead:
Ead = Ees - Egs = [(-385.763080213) - (-385.838172128)] a.u
= 0.075092 a.u
TIPS: To find the energies, users may use Gaussview to open the Gaussian log file, from the menu item
Results Summary to obtain the value, which is valid for both the ground state and excited state.
8
Electronic Transition Dipole
To calculate the spectrum by using the sum-over-states approach, we need the electronic
transition dipole data.
The Gaussian log file for the optimized S1 excited state has already included the Dipole Square
of Electronic Transition Dipole Absorption (EDMA) and the Dipole Square of Electronic Transition
Dipole Emission (EDME) information.
Open azulene-s1.log file with vim, for example, search the string “transition electric
dipole moments”, the first match is shown as follows:
Focus on the “Dip. S.” column, this is the Dipole Square of the calculated Electronic Transition
Dipole Absorption (EDMA), take note the data of the first excited state, i.e., 0.1330, this is the value
of the expected EDMA. Thus, we have:
trans =2
trans = 0.1330 a.u. = 0.36469 a.u.
= 0.36469 a.u.×2.5417 Debye/a.u.
= 0.92694 Debye
This is the value of parameter EDMA needed in our momap.inp file.
If the Linux command vim is used, press SHIFT + N, the search jumps to the last occurrence
of “transition electric dipole moments”, shown as follows:
9
Again, focus on the “Dip. S.” column, this is the Dipole Square of the calculated Electronic
Transition Dipole Emission (EDME), take note the data of the first excited state, i.e., 0.0649, this is
the value of the expected EDME. Thus, we have:
trans =2
trans = 0.0649 a.u. = 0.254755 a.u.
= 0.254755 a.u.×2.5417 Debye/a.u.
= 0.64751 Debye
Again, this is the value of parameter EDME needed in our momap.inp file.
TIPS: If the optimization and frequency calculations are separate, then the data of EDME and EDMA should
be taken from the log file of excited state geometry optimization.
10
Fluorescence Spectrum Calculation
Nonradiative rate kic
Create a directory kic and go to that directory, in this directory, we further create two directories evc
and kic.
To start the calculation, you need a *.dat file, a MOMAP control file, and optionally a parallel control
file. The *.dat file is obtained from the previous mentioned evc calculation. A MOMAP control file is used
to control how TVCORF_SPEC and TVSPEC_SPEC subprograms behavior. An optional parallel control file
is used to control how many computing processes will be used.
To begin with, the first step is to do an evc calculation. Note we also need the non-adiabatic coupling
matrix element (NACME) calculation log file, that is, azulene-nacme.log, to do the nonradiative rate
calculation.
Go to the directory evc, copy the following gaussian files from upper directory:
../../gaussian/azulene-s0.fchk
../../gaussian/azulene-s0.log
../../gaussian/azulene-s1.fchk
../../gaussian/azulene-s1.log
../../gaussian/azulene-nacme.log
to this work directory.
Create a momap.inp file with its contents as follows:
Also create a run file and change it with execution attribute (e.g., chmod a+rx run), the run file is
very simple, and is shown as follows:
Users may modify the run file, for example, by changing the np option from 4 to 8, and perform the
calculation by running the script file:
$ ./run
When the calculation finishes, the result files are as follows:
[kic/evc] cat momap.inp
do_evc = 1
&evc
ffreq(1) = "azulene-s0.log" # log file of ground state
ffreq(2) = "azulene-s1.log" # log file of excited state
fnacme = "azulene-nacme.log" # log file of NACME /
#!/bin/sh
momap -input momap.inp -np 4
11
Please check the reorganization energy results between evc.cart.dat and evc.dint.dat. If the
energy difference is small (< 1000 cm-1), then use the results in evc.cart.dat to do the next calculations.
However, if the energy difference is large, then use evc.dint.dat to do the next calculations.
For example, we can use the Linux command cat and grep to do the job:
$ cat evc.cart.dat evc.dint.dat | grep "Total reorganization energy"
Total reorganization energy (cm-1): 3390.305348 3453.436666
Total reorganization energy (cm-1): 3412.711425 3449.528917
As can be seen, the energy difference is indeed rather small.
Once the evc calculation is done, we then go to the kic directory.
Copy the following evc files from upper directory:
../evc/evc.cart.dat
../evc/evc.cart.nac
to this kic work directory.
Create a momap.inp with its contents as follows:
Also create a run file and change it with execution attribute (e.g., chmod a+rx run), the run file is
shown as follows:
[kic/evc]$ ls
azulene-nacme.log azulene-s1.log evc.dint.abs evc.dx.x.xyz momap.inp run
azulene-s0.fchk evc.cart.abs evc.dint.dat evc.out nodefile
azulene-s0.log evc.cart.dat evc.dx.v.xyz evc.vib1.xyz README
azulene-s1.fchk evc.cart.nac evc.dx.x.com evc.vib2.xyz ref
[kic/kic]$ cat momap.inp
do_ic_tvcf_ft = 1 # toggle internal conversion correlation function, 1 or 0
do_ic_tvcf_spec = 1 # toggle internal conversion spectrum, 1 or 0
&ic_tvcf
DUSHIN = .t. # toggle Duschinsky rotation effect, .t. or .f.
Temp = 300 K # temperature
tmax = 1000 fs # integral interval of correlation function
dt = 1 fs # integration timestep of correlation function
Ead = 0.075092 au # adiabatic excitation energy difference between two states
DSFile = "evc.cart.dat" # input dushin file
CoulFile = "evc.cart.nac" # input nacme info file
Emax = 0.3 au # upper bound of spectrum frequency
logFile = "ic.tvcf.log" # output file for logging
FtFile = "ic.tvcf.ft.dat" # output file for correlation function info
FoFile = "ic.tvcf.fo.dat" # output file for spectrum function info /
#!/bin/sh
momap -input momap.inp -np 4 &> log &
12
Users may modify the run file, for example, by changing the np option from 4 to 8, and perform the
calculation by running the script file:
$ ./run
When the calculation finishes, the result files are shown as follows:
The Internal conversion (IC) rate constant can be found at the end of ic.tvcf.log file. The relationship
between IC rate constant and energy gap can be obtained from ic.tvcf.fo.dat file.
Filename Meaning
ic.tvcf.fo.dat Output file for spectrum function
ic.tvcf.ft.dat Output file for correlation function
ic.tvcf.log Output file for logging
Then use the following commands to generate the correlation function plot to check for convergence:
$ gnuplot *.gnu
$ ps2png *.eps
$ display *.png
Fig. 3 Distribution of time vs real part of a converged correlation function
[kic/kic]$ ls
evc.cart.dat ic.tvcf.fo.dat ic.tvcf.log momap.inp README run
evc.cart.nac ic.tvcf.ft.dat ic.tvcf.ft.gnu log nodefile ref
13
Once the correlation function is known to be converged, we can obtain the nonradiative rate at the end
of the ic.tvcf.log file. From the file, we can obtain the internal conversion radiative rate kic for azulene
molecule is 1.92466768×1010 s-1,as shown below.
Radiative rate kr
Next, we create a directory kr and go to that directory.
Copy the following evc files from upper directory:
../evc/evc.cart.dat
to this kr work directory.
Create a momap.inp with its contents as follows:
Also create a run file and change it with execution attribute (e.g., chmod a+rx run), the run file is
shown as follows:
[kr]$ cat momap.inp
do_spec_tvcf_ft = 1 # toggle correlation function calculation, 1 or 0
do_spec_tvcf_spec = 1 # toggle fluorescence spectrum calcluation, 1 or 0
&spec_tvcf
DUSHIN = .t. # toggle Duschinsky rotation effect, .t. or .f.
Temp = 300 K # temperature
tmax = 1000 fs # integration time
dt = 1 fs # integration timestep
Ead = 0.075092 au # adiabatic excitation energy
EDMA = 0.92694 debye # electronic dipole moment of absorption (GS)
EDME = 0.64751 debye # electronic dipole moment of emission (ES)
FreqScale = 1.0 # frequency scaling factor
DSFile = "evc.cart.dat" # input dushin file
Emax = 0.3 au # upper bound of spectrum frequency
dE = 0.00001 au # output energy interval
logFile = "spec.tvcf.log" # output file for logging
FtFile = "spec.tvcf.ft.dat" # output file for correlation function info
FoFile = "spec.tvcf.fo.dat" # output file for spectrum function info
FoSFile = "spec.tvcf.spec.dat" # output file for spectrum info /
14
Users may modify the run file, for example, by changing the np option from 4 to 8, and perform the
calculation by running the script file:
$ ./run
When the calculation finishes, the result files are shown as follows:
The radiative decay rate constant can be found at the end of spec.tvcf.log file, while the
fluorescence spectrum information can be obtained from spec.tvcf.spec.dat.
Plot the data from file spec.tvcf.spec.dat by using columns 3, 5, and 6, in Linux, we can use
Gnuplot to do the plotting, the plot script is shown as follows:
Then use the following commands to generate the correlation and spectrum plots:
$ gnuplot *.gnu
$ ps2png *.eps
$ display *.png
#!/bin/sh
momap -input momap.inp -np 4 &> log &
[kic/kic]$ ls
evc.cart.dat README spec.tvcf.ft.dat spec.tvcf.spec.gnu
log ref spec.tvcf.ft.gnu
momap.inp run spec.tvcf.log
nodefile spec.tvcf.fo.dat spec.tvcf.spec.dat
[sumstat]$ cat spec.tvcf.spec.gnu
reset
set nogrid
set lmargin 10
set pointsize 1.0
set encoding iso_8859_1
set term postscript eps enhanced color 20
set xlabel "Wave number, cm^{-1}" offset 0,0
set ylabel "Intensity, a.u." offset 0,0
set xtics nomirror
set ytics nomirror
set xrange [5000:30000]
set yrange [0:1.15]
set output "spec.tvcf.spec.eps"
plot \
"spec.tvcf.spec.dat" u 3:5 t "Absorption" w l lw 3 lt 1, \
"" u 3:6 t "Emission" w l lw 3 lt 2
15
Fig. 4 Distribution of time vs real part of a converged correlation function
Fig. 5 Absorption and emission spectrum
16
The script ps2png is used to convert a .eps file to .png file, with its contents as follows:
$ cat ~/bin/ps2png
#!/usr/bin/perl -w
#
# ps2png [resolution] file...
#
# Convert a postscript file to PNG, using the gs (GhostScript) command. The
# resolution defaults to 200, which is a readable compromise for most screens.
# The files should be postscript files. You can omit a .ps suffix and we'll
# assume it.
# Author: John Chambers
$ENV{LD_LIBRARY_PATH} = '/usr/X11R6/lib/:/usr/eecs/lib:/usr/lib:/usr/lib/aout';
if ( @ARGV == 0 )
{
print "Usage: ps2png [resolution] file...\n";
exit $?;
}
if (($res = $ARGV[0]) =~ /^\d+$/) {shift @ARGV} else {$res = 200}
file: for $file (@ARGV) {
if ($file =~ /(.*)\.(\w*ps)$/i) {
$fili = $file;
$filo = "$1.png";
} else {
if (-f ($fili = "$file.ps" )) {$filo = "$file.png";
} elsif (-f ($fili = "$file.eps")) {$filo = "$file.png";
} elsif (-f ($fili = "$file.PS" )) {$filo = "$file.PNG";
} else {
print STDERR "Can't find postscript file for $file.\n";
next file;
}
}
system "gs -q -DNOPAUSE -sDEVICE=ppmraw -r$res -sOutputFile='|pnmcrop|pnmtopng > $filo' -- $fili"; if ($?) {
print STDERR "Conversion of \"$fili\" failed with exit status $?.\n";
exit $?;
}
}
TIPS: The ps2png script needs the pnmcrop and pnmtopng commands, which can be resolved by
installing the netpbm packages:
$ yum install netpbm netpbm-progs # provide pnmcrop & pnmtopng etc.
17
Sum-over-states Approach
Similar to the above calculations, first we copy the following files from upper directory:
../gaussian/azulene-s0.fchk
../gaussian/azulene-s0.log
../gaussian/azulene-s1.fchk
../gaussian/azulene-s1.log
../evc/evc.cart.dat
to a work directory, say, sumstat.
Create a momap.inp with its contents as follows:
Also create a run file and change it with execution attribute (e.g., chmod a+rx run), the run file is
shown as follows:
Then, perform the calculation by running the script file:
$ ./run
[sumstat]$ cat momap.inp
do_spec_sums = 1 # if use sum-over-states approach, 1 or 0
&spec_sums
DSFile = "evc.cart.dat" # input evc file
Ead = 0.075092 au # adiabatic excitation energy
dipole_abs = 0.92694 debye # Electronic Transition Dipole Absorption
dipole_emi = 0.64751 debye # Electronic Transition Dipole Emission
maxvib = 10 # maximum vibration quantum number
if_cal_ic = .t. # if do internal conversion analysis, .t. or .f.
promode = 24 # promotion mode (internal conversion)
FC_eps_abs = 0.1 # eps of Franck-Condon factor (absorption)
FC_eps_emi = 0.1 # eps of Franck-Condon factor (emission)
FC_eps_ic = 0.1 # eps of Franck-Condon factor (internal conversion)
FreqScale = 1.0 # frequency scaling factor
FreqEPS = 0.01 # eps of frequency
Seps = 0.00001 # eps of Huang-Rhys coupling constant eps = 0.00 #
debug = .false. #
FWHM = 500 cm-1 # broadening factor, full width at half maximum blocksize = 1000 #
testpoints = 1000 #
TEST = .f. #
flog = "spec.sums.log" # output log file reduce_eps = 0.001 #
/
#!/bin/sh
momap -input momap.inp -np 4 &> log &
18
Finally, the result files are shown as follows:
Filename Meaning
spec.sums.abs.dirac.dat Absorption spectrum and vibrational transition quantum numbers
spec.sums.emi.dirac.dat Emission spectrum and vibrational transition quantum numbers
spec.sums.ic.dirac.dat Internal conversion and vibrational transition quantum numbers
with the set promode as promotion mode
spec.sums.log Logging file for sums-over-states aproach
spec.sums.spec.dat Absorption and emission spectrum
Plot the data from file spec.sums.spec.dat by using columns 4, 7, and 13, in Linux, we can use
Gnuplot to do the plotting, the plot script is shown as follows:
Then use the following commands to generate the graph:
$ gnuplot *.gnu
$ ps2png *.eps
$ display *.png
[sumstat]$ ls
azulene-s0.fchk momap.inp spec.sums.abs.dirac.dat spec.sums.emi.short.dat
azulene-s0.log nodefile spec.sums.abs.long.dat spec.sums.ic.dat
azulene-s1.fchk README spec.sums.abs.short.dat spec.sums.ic.dirac.dat
azulene-s1.log ref spec.sums.emi.dat spec.sums.log
evc.cart.dat run spec.sums.emi.dirac.dat spec.sums.spec.dat
log spec.sums.abs.dat spec.sums.emi.long.dat
[sumstat]$ cat spec.sums.spec.gnu
reset
set nogrid
set lmargin 10
set pointsize 1.0
set encoding iso_8859_1
set term postscript eps enhanced color 20
set xlabel "Wave number, cm^{-1}" offset 0,0
set ylabel "Intensity, a.u." offset 0,0
set xtics nomirror
set ytics nomirror
set yrange [0:1.15]
set output "spec.sums.spec.eps"
plot \
"spec.sums.spec.dat" u 4:7 t "Absorption" w l lw 3 lt 1, \
"" u 4:13 t "Emission" w l lw 3 lt 2
19
Fig. 6 Absorption and emission spectrum by using sum-over-states approach
20
Verify Convergence of Correlation Function
Correlation function must be converged before obtaining any calculation results. To verify, plot a graph
using the first 2 columns in spec.tvcf.ft.dat, which are time and real part of the correlation function
(TVCF_RE). TVCF_RE should be very close to zero and stop oscillating before it reaches the integration time
limit. Figure 7 shows the distribution of a converged correlation function.
The Gnuplot plot script for the figure is shown as follows:
Then use the following commands to generate the graph:
$ gnuplot *.gnu
$ ps2png *.eps
$ display *.png
Fig. 7 Distribution of time vs real part of a converged correlation function
[sumstat]$ cat spec.tvcf.ft.gnu
reset
set nogrid
set lmargin 10
set pointsize 1.0
set encoding iso_8859_1
set term postscript eps enhanced color 20
set xlabel "Time, fs" offset 0,0
set ylabel "TVCF (RE)" offset 0,0
set xtics nomirror
set ytics nomirror
set xrange [-80:80]
set output "spec.tvcf.ft.eps"
plot "spec.tvcf.ft.dat" u 1:2 t "" w l lw 3 lt 1