Example: TD-CDFT for MoS2 Monolayer (NewResponse)¶
Download NewResp_2DMoS2Restart.run
This example demonstrates how to calculate the frequency-dependent dielectric function with the help of the NewResponse
implementation for a two-dimensional system. (see NewResponse) Furthermore, the general setup to run the TD-CDFT section as a restart calculation is presented as well. This allows for splitting of the frequency range into several parts, which can then be calculated in separate calculation without the overhead of evaluating the groundstate properties for each of them! Hence, it is a trivial parallelization possibility.
Groundstate Optimization
$ADFBIN/band <<EOF
GeometryFile MoS2_2D_1L.xyz
Symmetry NoSym
NumericalQuality basic
Relativistic ZORA
KSpace
Grid 5 5
End
BasisDefaults
BasisType DZP
Core Large
End
End input
EOF
mv RUNKF restart.runkf
TD-CDFT+Restart Calculation
Caution
One has to make sure to use the same Symmetry/NumericalQuality/KSpace/BasisDefaults/ZORA/... options for the groundstate calculation and for the restart calculation! Otherwise a normal groundstate SCF optimization will be performed in the restart calculation.
$ADFBIN/band <<EOF
GeometryFile MoS2_2D_1L.xyz
Symmetry NoSym
NumericalQuality basic
Relativistic ZORA
KSpace
Grid 5 5
End
BasisDefaults
BasisType DZP
Core Large
End
Restart
SCF
File restart.runkf
End
NewResponse
nFreq 11
FreqLow 2.0
FreqHigh 3.0
ActiveESpace 10.0
End
NewResponseSCF
nCycle 30
End
End input
EOF
mv RUNKF prop.runkf
The results are accessible via the standard output or via the prop.runkf file. For the latter, one can use the ADFreport command $ADFBIN/adfreport prop.runkf RESPDIELRE
and $ADFBIN/adfreport prop.runkf RESPDIELIM
to print the components of the dielectric function for the real (RESPDIELRE) and imaginary (RESPDIELIM) part separately. In the following tables, only the diagonal components are presented:
Frequency (au) | \(\epsilon_1(XX)\) | \(\epsilon_1(YY)\) | \(\epsilon_1(ZZ)\) |
0.0735 | 8.1622063 | 8.1788067 | 1.8845925 |
0.0772 | 8.7718566 | 8.7960299 | 1.8891231 |
0.0808 | 9.6251443 | 9.6631930 | 1.8941277 |
0.0845 | 10.9457271 | 11.0126367 | 1.8996502 |
0.0882 | 13.4618956 | 13.6001321 | 1.9057858 |
0.0919 | 26.5135344 | 25.9300685 | 1.9126665 |
0.0955 | 6.1134118 | 4.1756368 | 1.9204849 |
0.0992 | 6.2789015 | 4.6880515 | 1.9295347 |
0.1029 | 13.7665058 | 11.5484340 | 1.9403044 |
0.1066 | -7.2575153 | -5.8285172 | 1.9537079 |
0.1102 | -0.7937277 | 1.2661253 | 1.9718981 |
Frequency (au) | \(\epsilon_2(XX)\) | \(\epsilon_2(YY)\) | \(\epsilon_2(ZZ)\) |
0.0735 | 0.0015601 | 0.0015758 | 0.0000213 |
0.0772 | 0.0020566 | 0.0020839 | 0.0000200 |
0.0808 | 0.0029274 | 0.0029798 | 0.0000216 |
0.0845 | 0.0047632 | 0.0048794 | 0.0000231 |
0.0882 | 0.0104743 | 0.0107877 | 0.0000246 |
0.0919 | 0.2658531 | 0.1942899 | 0.0000264 |
0.0955 | 12.8856772 | 14.5286319 | 0.0000294 |
0.0992 | 9.7571573 | 10.1567455 | 0.0000338 |
0.1029 | 7.5936072 | 6.7674596 | 0.0000399 |
0.1066 | 13.0264038 | 9.5897946 | 0.0000487 |
0.1102 | 0.2483041 | 0.3222301 | 0.0000676 |
The more convenient option is to plot the spectral data directly with the help of ADFspectra. Just type:
$ADFBIN/adfspectra prop.runkf