From 5820ebf0a3172b8052b989b52a7b1e208d7d2378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Aradi?= Date: Tue, 28 Feb 2023 00:20:31 +0100 Subject: [PATCH] Natural orbitals (#55) --------- Co-authored-by: Thomas Niehaus --- .../linresp/natural-orbitals/dftb_in.hsd | 42 +++++++++++ .../recipes/linresp/natural-orbitals/in.gen | 24 +++++++ .../linresp/natural-orbitals/waveplot_in.hsd | 18 +++++ docs/_static/references.bib | 22 ++++++ docs/linresp/diatomic.rst | 34 ++++----- docs/linresp/index.rst | 1 + docs/linresp/macromolecule.rst | 8 +-- docs/linresp/naturalorbitals.rst | 72 +++++++++++++++++++ docs/linresp/no-titania.rst | 10 +-- docs/linresp/rangeseparated.rst | 25 ++++--- docs/linresp/relax.rst | 58 +++++++++++---- 11 files changed, 263 insertions(+), 51 deletions(-) create mode 100644 docs/_archives/recipes/linresp/natural-orbitals/dftb_in.hsd create mode 100644 docs/_archives/recipes/linresp/natural-orbitals/in.gen create mode 100644 docs/_archives/recipes/linresp/natural-orbitals/waveplot_in.hsd create mode 100644 docs/linresp/naturalorbitals.rst diff --git a/docs/_archives/recipes/linresp/natural-orbitals/dftb_in.hsd b/docs/_archives/recipes/linresp/natural-orbitals/dftb_in.hsd new file mode 100644 index 00000000..d171d570 --- /dev/null +++ b/docs/_archives/recipes/linresp/natural-orbitals/dftb_in.hsd @@ -0,0 +1,42 @@ +Geometry = GenFormat { + <<< "in.gen" +} + +Hamiltonian = DFTB { + + Scc = Yes + SccTolerance = 1.0E-10 + MaxAngularMomentum { + N = "p" + C = "p" + H = "s" + } + SlaterKosterFiles = Type2FileNames { + Prefix = "../../slakos/download/mio/mio-1-1/" + Separator = "-" + Suffix = ".skf" + } +} + +ExcitedState { + Casida { + NrOfExcitations = 10 + StateOfInterest = 2 + Symmetry = Singlet + Diagonaliser = Stratmann {SubSpaceFactor = 30} + WriteEigenvectors = Yes + } +} + +Options { + WriteDetailedXml = Yes +} + +Analysis { + CalculateForces = Yes + WriteEigenvectors = Yes +} + +ParserOptions { + ParserVersion = 10 +} diff --git a/docs/_archives/recipes/linresp/natural-orbitals/in.gen b/docs/_archives/recipes/linresp/natural-orbitals/in.gen new file mode 100644 index 00000000..ad8aa815 --- /dev/null +++ b/docs/_archives/recipes/linresp/natural-orbitals/in.gen @@ -0,0 +1,24 @@ +22 C +N C H + 1 1 -2.0382600000E+00 2.2050800000E+00 2.5000000000E-04 + 2 2 -1.4355300000E+00 1.2277400000E+00 1.3000000000E-04 + 3 2 -6.8509500000E-01 0.0000000000E+00 0.0000000000E+00 + 4 2 -1.4354800000E+00 -1.2276900000E+00 8.0000000000E-05 + 5 2 6.8509500000E-01 0.0000000000E+00 0.0000000000E+00 + 6 1 -2.0380300000E+00 -2.2051400000E+00 2.5000000000E-04 + 7 2 1.4355200000E+00 -1.2276900000E+00 -1.1000000000E-04 + 8 2 1.4354800000E+00 1.2277100000E+00 -9.0000000000E-05 + 9 1 2.0382900000E+00 -2.2050000000E+00 -2.3000000000E-04 + 10 1 2.0380500000E+00 2.2051400000E+00 -2.4000000000E-04 + 11 2 0.0000000000E+00 1.3939400000E+00 5.0000000000E+00 + 12 2 1.2071800000E+00 6.9697000000E-01 5.0000000000E+00 + 13 2 1.2071800000E+00 -6.9697000000E-01 5.0000000000E+00 + 14 2 0.0000000000E+00 -1.3939400000E+00 5.0000000000E+00 + 15 2 -1.2071800000E+00 -6.9697000000E-01 5.0000000000E+00 + 16 2 -1.2071800000E+00 6.9697000000E-01 5.0000000000E+00 + 17 3 -2.1463200000E+00 1.2391800000E+00 5.0000000000E+00 + 18 3 -2.1463200000E+00 -1.2391800000E+00 5.0000000000E+00 + 19 3 0.0000000000E+00 -2.4783600000E+00 5.0000000000E+00 + 20 3 2.1463200000E+00 -1.2391800000E+00 5.0000000000E+00 + 21 3 2.1463200000E+00 1.2391800000E+00 5.0000000000E+00 + 22 3 0.0000000000E+00 2.4783600000E+00 5.0000000000E+00 diff --git a/docs/_archives/recipes/linresp/natural-orbitals/waveplot_in.hsd b/docs/_archives/recipes/linresp/natural-orbitals/waveplot_in.hsd new file mode 100644 index 00000000..eec2a0c0 --- /dev/null +++ b/docs/_archives/recipes/linresp/natural-orbitals/waveplot_in.hsd @@ -0,0 +1,18 @@ +Options { + RealComponent = Yes # Plot real component of the wavefunction + PlottedSpins = 1 -1 + PlottedLevels = 1 -1 # Levels to plot + PlottedRegion = OptimalCuboid {} # Region to plot + NrOfPoints = 50 50 50 # Number of grid points in each direction + NrOfCachedGrids = -1 # Nr of cached grids (speeds up things) + Verbose = Yes # Wanna see a lot of messages? +} + +DetailedXml = "detailed.xml" # File containing the detailed xml output + # of DFTB+ +EigenvecBin = "excitedOrbs.bin" # File cointaining the binary eigenvecs + +Basis { + Resolution = 0.01 + <<+ "../../slakos/wfc/wfc.mio-1-1.hsd" +} diff --git a/docs/_static/references.bib b/docs/_static/references.bib index ffb3e19a..18a089f1 100644 --- a/docs/_static/references.bib +++ b/docs/_static/references.bib @@ -173,3 +173,25 @@ @article{salthammer2022 year = {2022}, doi = {10.1021/acs.est.1c06935} } + +@article{luzanov1976application, + title={Application of transition density matrix for analysis of excited states}, + author={Luzanov, AV and Sukhorukov, AA and Umanskii, VE}, + journal={Theoretical and Experimental Chemistry}, + volume={10}, + pages={354--361}, + year={1976}, + publisher={Springer} +} + +@article{martin2003natural, + title={Natural transition orbitals}, + author={Martin, Richard L}, + journal={The Journal of chemical physics}, + volume={118}, + number={11}, + pages={4775--4777}, + year={2003}, + publisher={American Institute of Physics} +} + diff --git a/docs/linresp/diatomic.rst b/docs/linresp/diatomic.rst index 2c130b81..6266d533 100644 --- a/docs/linresp/diatomic.rst +++ b/docs/linresp/diatomic.rst @@ -24,7 +24,7 @@ excited states with both singlet and triplet multiplicities. The solution of the Casida equation is performed after a single-point (static) DFTB ground-state calculation for the optimised geometry. All this is done in a single DFTB run (one single input file). The -*dftb_in.hsd* input file should look like this:: +`dftb_in.hsd` input file should look like this:: Geometry = GenFormat { <<< "geo_in.gen" @@ -58,8 +58,8 @@ this is done in a single DFTB run (one single input file). The } The input shows a standard spin-unpolarised static DFTB calculation, -except for a new block denoted as *ExcitedState* with an embedded -subblock called *Casida*. Once the SCC loop is converged, this block +except for a new block denoted as ``ExcitedState`` with an embedded +subblock called ``Casida``. Once the SCC loop is converged, this block instructs DFTB+ to build the response matrix according to Casida, using the just-obtained DFTB orbitals and energies, and diagonalise it. @@ -72,9 +72,9 @@ triplet excitations. That is, if we would be only interested in singlet transitions, we could just omit the spin constants in the input file. -Let us now take a closer look at the *Casida* block. The keyword -*NrOfExcitations* specifies how many transitions per spin symmetry, or -multiplicity, we want to compute. In *Symmetry* we specify the +Let us now take a closer look at the ``Casida`` block. The keyword +``NrOfExcitations`` specifies how many transitions per spin symmetry, or +multiplicity, we want to compute. In ``Symmetry`` we specify the multiplicity of the transition (either singlet, triplet or both). The multiplicity of the transition is the difference between the multiplicities of the excited state and the ground state. In our @@ -85,7 +85,7 @@ means the first 10 singlet-to-singlet and 10 singlet-to-triplet transitions. Once the calculation is finished (it takes a fraction of a second), -the output file *EXC.DAT* contains the excitation energies and +the output file `EXC.DAT` contains the excitation energies and oscillator strengths, as well as other valuable information. It should look like this:: @@ -117,20 +117,20 @@ look like this:: The triplet transitions are listed first, followed by the singlet -ones. They can be identified by the letter *T* or *S* in the last +ones. They can be identified by the letter ``T`` or ``S`` in the last column. -The first column *w [eV]* is the excited state energy we are looking -for, the second one *Osc.Str.* lists the corresponding oscillator -strength. The column *Transition* reports the indices of the dominant +The first column ``w [eV]`` is the excited state energy we are looking +for, the second one ``Osc.Str.`` lists the corresponding oscillator +strength. The column ``Transition`` reports the indices of the dominant molecular orbitals involved in the electronic transition. In our example, the singlet state at 12.75 eV features a transition from the occupied Kohn-Sham orbital 3 (HOMO-2) to the virtual orbital 6 (the -LUMO). The next column *Weight* indicates the weight of the +LUMO). The next column ``Weight`` indicates the weight of the corresponding singly excited determinant in the CIS expansion of the excited state. Values close to one indicate that the excited state is well described by a single electronic excitation, while small values -speak for a collective excitation. Column *KS [eV]* provides the +speak for a collective excitation. Column ``KS [eV]`` provides the Kohn-Sham transition energy difference :math:`\omega_{ia\sigma} = \epsilon_{a\sigma} - \epsilon_{i\sigma}` (see above). @@ -141,7 +141,7 @@ Oxygen molecule For the |O2| molecule, we will consider its triplet ground state. This is specified in the input file through the -*Hamiltonian/SpinPolarisation* block:: +``Hamiltonian/SpinPolarisation`` block:: SpinPolarisation = Colinear { UnpairedElectrons = 2 @@ -162,7 +162,7 @@ our eigenvalue problem into two independent singlet and triplet equations, so we have to build and diagonalise the entire response matrix in this case. But, how do we know the spin multiplicities of the computed transitions? We get this information from the last column -of the *EXC.DAT* file:: +of the `EXC.DAT` file:: w [eV] Osc.Str. Transition Weight KS [eV] D @@ -227,7 +227,7 @@ In this case, the first 10 excitations are:: 8.636 0.00000000 3 -> 7 0.657 8.636 -0.000 11.652 0.49971991 3 -> 6 0.600 8.636 -0.597 -Let us pay attention to the last column of the *EXC.DAT* +Let us pay attention to the last column of the `EXC.DAT` file. Contrary to the previous case, here we obtain large non-zero :math:`\Delta S^2` values. When :math:`\Delta S^2 = 0`, we are in the presence of a doublet-to-doublet transition. Likewise, if @@ -236,7 +236,7 @@ state. Otherwise, we have some extent of spin contamination in our obtained transitions. The last column should help us determine which excitations are to be trusted. We can set an arbitrary spin contamination threshold to establish which transitions we will -consider leading to a physical excited state. In our *NO-TiO2* +consider leading to a physical excited state. In our ``NO-TiO2`` recipe, we will compute the absorption spectrum of a system where transitions with a spin contamination beyond an imposed threshold are excluded. diff --git a/docs/linresp/index.rst b/docs/linresp/index.rst index 05ec3133..54762068 100644 --- a/docs/linresp/index.rst +++ b/docs/linresp/index.rst @@ -43,3 +43,4 @@ of TD-DFTB will be exploited. no-titania.rst rangeseparated.rst relax.rst + naturalorbitals.rst diff --git a/docs/linresp/macromolecule.rst b/docs/linresp/macromolecule.rst index d586c822..a2c3854e 100644 --- a/docs/linresp/macromolecule.rst +++ b/docs/linresp/macromolecule.rst @@ -25,12 +25,12 @@ computed as usual:: After obtaining the energy and oscillator strength pairs (takes very few minutes), we can use a simple script to plot the absorption -spectrum. The script (*spectrum.py*) is provided in the input folder +spectrum. The script (`spectrum.py`) is provided in the input folder and requires Python 3. Simply run:: python spectrum.py > abs.dat -and plot the content of *abs.dat* with your graphing tool of +and plot the content of `abs.dat` with your graphing tool of preference. The script employs a Lorentzian function for the spectral broadening, with a full width at half-maximum parameter of :math:`\Gamma` = 0.2 eV. Specifically, what is plotted is the molar @@ -75,8 +75,8 @@ single-particle transitions and roughly equal to 1 Hartree). As for the oscillator strength window, we will use a cutoff of :math:`10^{-3}`. These values ensure a negligible loss of accuracy in the optical spectra, while reducing the computation time by roughly -half. Those are specified in the *Casida* block using the -*EnergyWindow* and *OscillatorWindow* keywords:: +half. Those are specified in the ``Casida`` block using the +``EnergyWindow`` and ``OscillatorWindow`` keywords:: ExcitedState { Casida { diff --git a/docs/linresp/naturalorbitals.rst b/docs/linresp/naturalorbitals.rst new file mode 100644 index 00000000..ca5c72d0 --- /dev/null +++ b/docs/linresp/naturalorbitals.rst @@ -0,0 +1,72 @@ +.. highlight:: none + +*********************************************** +Visualization of natural orbitals with waveplot +*********************************************** + +[Input: `recipes/linresp/natural-orbitals`] + +The majority of excited states are not well described by the +transition of an electron from a single Kohn-Sham orbital to another +single Kohn-Sham orbital. In other words, the excited state is in +general a superposition of many determinants. In such a situation, the +excited state weight in the file EXC.DAT will be smaller than +one. Natural transition orbitals (NTO) allow for a compact +representation of the excitation in such a scenario :cite:`luzanov1976application`. They are obtained +from a singular value decomposition of the transition density matrix +and deliver `hole` and `electron` orbitals for a given excited +state. We discuss their visualization in the context of the +Benzene-Tetracyanoethylene dimer we looked at :ref:`earlier `. Strictly +speaking, natural orbitals are not really required for this system, +since for example the lowest excited state is well described by a HOMO +to LUMO transition, without contributions from other single-particle +transitions. We still discuss the NTO feature for this example, because +it allows us to compare the results with the earlier calculations. + +We first run DFTB+ with the following modified input: + +.. literalinclude:: ../_archives/recipes/linresp/natural-orbitals/dftb_in.hsd + :lines: 21-38 + +Here ``CalculateForces`` requests to compute excited forces for state +``StateOfInterest``. During this calculation also the NTO for that state +are created and written to a file (always called `excitedOrbs.bin`), if +``WriteEigenvectors`` in the ``Casida`` block is set to ``Yes``. In the +``Options`` block, the keyword ``WriteDetailedXml`` is required for the +plot. In the ``Analysis`` block, ``WriteEigenvectors`` advises the code to +print out the ground state molecular orbitals also. + +Let us look at an excerpt of the generated file `detailed.xml`:: + + + + + -1.00000341372109 -5.201183337079720E-002 -5.170515789354190E-002 ..... + ..................... + 5.170515780471528E-002 5.201183337096685E-002 1.00638172624593 + + + + + +We see the state occupations :math:`n_{i}` of the NTO. Negative values +indicate hole orbitals and positive values electron orbitals. Most +excited states (unless you have degeneracy) have only one important +(:math:`n_{i}\approx -1.0`) hole and one important +(:math:`n_{i}\approx 1.0`) electron NTO, even though the CI expansion +might include a large number of single-particle transitions. + +As seen in the section :ref:`here `, we can now visualize these orbitals using the waveplot code. The input file `waveplot_in.hsd` has this form: + +.. literalinclude:: ../_archives/recipes/linresp/natural-orbitals/waveplot_in.hsd + :emphasize-lines: 4,13 + +Important is here the line ``EigenvecBin`` which reads the created file +with natural transition orbitals instead of the ground state MO. The +keyword ``PlottedLevels`` in this example requests the first and last +orbital to be plotted (note that the curly bracket contains the +indices of the NO, not the occupation). These are exactly the natural +transition orbitals with highest occupation. If you do the plot, you +will realize that the hole orbital is essentially Kohn-Sham state 37 +(the HOMO), while the electron orbital is Kohn-Sham state 38 (the +LUMO). diff --git a/docs/linresp/no-titania.rst b/docs/linresp/no-titania.rst index b3e697d9..497c926c 100644 --- a/docs/linresp/no-titania.rst +++ b/docs/linresp/no-titania.rst @@ -29,7 +29,7 @@ the UV-A region, so that we can observe both near band-gap excitations of TiO\ :sub:`2` and ligand-to-substrate charge-transfer (CT) transitions in the visible range. The challenge here is in the high number of excitations that need to be solved to cover the desired -energy region. Specifically, we have to set *NrOfExcitations* to 1200 +energy region. Specifically, we have to set ``NrOfExcitations`` to 1200 to cover a region of up to 4 eV:: ExcitedState { @@ -40,18 +40,18 @@ to cover a region of up to 4 eV:: } } -we have set *EnergyWindow = 0.01* to save computational time. We can +we have set ``EnergyWindow = 0.01`` to save computational time. We can choose such a small energy cutoff as titania band-to-band transitions have a rather low collective character. The visible range of the spectrum, which is of most interest, is negligibly affected by this truncation, as the CT absorption bands are away from the energy window frontier. This constraint speeds up the calculation roughly 7 times! -After obtaining the *EXC.DAT* output file (we provide it in the recipe +After obtaining the `EXC.DAT` output file (we provide it in the recipe folder as the calculation will take some time to complete), we can run -the *spectrum.py* script to obtain the absorption spectrum. Only those +the `spectrum.py` script to obtain the absorption spectrum. Only those transition with a spin contamination smaller than 0.5 will be -considered. This value is hard-coded in *spectrum.py*, and the reader +considered. This value is hard-coded in `spectrum.py`, and the reader can modify it at his/her convenience. The absorption spectrum should finally look like this: diff --git a/docs/linresp/rangeseparated.rst b/docs/linresp/rangeseparated.rst index 01ab8193..ebc3d894 100644 --- a/docs/linresp/rangeseparated.rst +++ b/docs/linresp/rangeseparated.rst @@ -19,10 +19,13 @@ corresponding method is named LC-DFTB. You will need a recent version of DFTB+ (>= 21) to perform the calculations in this section. +.. _benz_dimer: Benzene-Tetracyanoethylene dimer (TD-DFTB) ========================================== + + [Input: `recipes/linresp/range-separated/td-dftb`] Let us first do a conventional TD-DFTB calculation for the dimer of @@ -53,12 +56,12 @@ input:: } } -We are loading here the *mio* Slater-Koster files, which have been +We are loading here the `mio` Slater-Koster files, which have been generated using the GGA functional PBE. Note the new entry -*Diagonalizer* in the Casida block. Besides the default *Arpack* -diagonalizer also the *Stratmann* algorithm may be used for the +``Diagonalizer`` in the Casida block. Besides the default ``Arpack`` +diagonalizer also the ``Stratmann`` algorithm may be used for the diagonalization of the response matrix. For small systems like the -present one, the *Stratmann* option is very often faster. +present one, the ``Stratmann`` option is very often faster. The output in EXC.DAT looks like follows:: @@ -78,7 +81,7 @@ The output in EXC.DAT looks like follows:: 4.897 0.00000000 28 -> 38 1.000 4.897 S The lowest excited state at 2.033 eV corresponds to the HOMO->LUMO -transition. We can visualize these orbitals using *waveplot* (see +transition. We can visualize these orbitals using `waveplot` (see :ref:`sec-basics-waveplot`) to obtain more information on the nature of this state (:numref:`fig_dimer_homo` and :numref:`fig_dimer_lumo`). @@ -147,15 +150,15 @@ looks like this:: } TD-LC-DFTB requires special Slater-Koster files that have been -generated for range-separated functionals. We are loading the *ob2* -set here. The block *RangeSeparated* invokes the LC-DFTB method for +generated for range-separated functionals. We are loading the `ob2` +set here. The block ``RangeSeparated`` invokes the LC-DFTB method for the ground state. Several algorithms to speed up the calculation are -available (see manual), we are choosing the *MatrixBased* algorithm -here which involves no approximations. The *ExcitedState* section -requires no changes, although the *Stratmann* diagonalizer is +available (see manual), we are choosing the ``MatrixBased`` algorithm +here which involves no approximations. The ``ExcitedState`` section +requires no changes, although the ``Stratmann`` diagonalizer is mandatory for TD-LC-DFTB. As you will recognize, the calculation is slower than the previous TD-DFTB job. You can play with the parameter -*SubSpaceFactor* (c.f. manual) to see the influence on the execution +``SubSpaceFactor`` (c.f. manual) to see the influence on the execution time. Let us now investigate the output (EXC.DAT) of the job:: diff --git a/docs/linresp/relax.rst b/docs/linresp/relax.rst index 63d277d0..a9556065 100644 --- a/docs/linresp/relax.rst +++ b/docs/linresp/relax.rst @@ -8,7 +8,7 @@ So far we have only looked at excited state calculations at fixed geometry. *DFTB+* supports also geometry relaxations or even MD simulations in a given excited state. In this example we are going to study the absorption and fluorescence energies of the simple molecule -thioformaldehyde (SCH\ :sub:`2`). +thioformaldehyde (:math:`{SCH}_2`). @@ -35,14 +35,44 @@ the following spectrum (EXC.DAT):: 7.327 0.02861414 6 -> 11 1.000 7.224 S 7.446 0.00000000 5 -> 8 1.000 7.446 S 8.964 0.08762770 4 -> 8 1.000 8.685 S + +Note that we are only interested in singlet states here, since +absorption to triplet states is spin forbidden. We will focus on the +first excited state (:math:`{S}_1`). + + + +Thioformaldehyde absorption +=========================== +[Input: `recipes/linresp/range-separated/relax/abs`] + +We are starting with a geometry that has already been relaxed in the +ground state. Performing a TD-DFTB calculation at this geometry yields +the following spectrum (EXC.DAT):: + + w [eV] Osc.Str. Transition Weight KS [eV] Sym. + + ================================================================================ + + 1.848 0.00000000 6 -> 7 1.000 1.848 S + 4.770 0.10134777 5 -> 7 0.999 3.837 S + 5.077 0.00000000 4 -> 7 1.000 5.077 S + 5.467 0.00126721 6 -> 8 1.000 5.457 S + 6.000 0.00000000 3 -> 7 1.000 6.000 S + 7.128 0.00006156 6 -> 9 1.000 7.128 S + 7.138 0.00000000 6 -> 10 1.000 7.138 S + 7.327 0.02861414 6 -> 11 1.000 7.224 S + 7.446 0.00000000 5 -> 8 1.000 7.446 S + 8.964 0.08762770 4 -> 8 1.000 8.685 S + Note that we are only interested in singlet states here, since absorption to triplet states is spin forbidden. We will focus on the -first excited state (S:sub:`1`) at 1.848 eV, which has symmetry -A:sub:`2`. This symmetry can be inferred by inspection of the +first excited state (:math:`S_1`) at 1.848 eV, which has symmetry +:math:`A_2`. This symmetry can be inferred by inspection of the molecular orbitals involved in the transition, but we will not do so in this recipe. The state at 4.77 eV has much larger oscillator -strength, but in real life also the S:sub:`1` state will be very +strength, but in real life also the :math:`S_1` state will be very weakly absorbing due to electron-phonon coupling. This is however not taken into account at the present level of theory. Due to symmetry, the oscillator strength is exactly zero in our example. @@ -91,14 +121,14 @@ We now relax the structure in the first excited state. The input } In contrast to the earlier examples in this recipe, we now set a -*Driver*. We choose LBFGS optimization, but one could also take any +``Driver``. We choose LBFGS optimization, but one could also take any other optimizer available in *DFTB+*. You may also set convergence criteria for the forces like detailed in the recipe -:ref:`sec-basics`. Important is the new entry in the *Casida* block -*StateOfInterest*. It tells the code to optimize on the S:sub:`1` +:ref:`sec-basics`. Important is the new entry in the ``Casida`` block +``StateOfInterest``. It tells the code to optimize on the :math:`S_1` potential energy surface. It is recommended to choose -*NrOfExcitations* always somewhat larger (i.e., +5) as -*StateOfInterest*, since iterative eigensolvers might not converge to +``NrOfExcitations`` always somewhat larger (i.e., +5) as +``StateOfInterest``, since iterative eigensolvers might not converge to the exact solution for boundary eigenvalues. Note also that during a relexation the order of the excited states might change. This is a frequent cause of error in these kind of simulations. @@ -106,9 +136,9 @@ frequent cause of error in these kind of simulations. You should see that the geometry optimization finishes in a few steps. Visualizing the relaxed structure shows that the S-C bond length increased by 0.5 Angstroem. The experimental value for the bond -length in the S:sub:`1` is 1.68 Angstroem. What do you get? +length in the :math:`S_1` is 1.68 Angstroem. What do you get? -During the optimization, the file *EXC.DAT* is constantly updated. Let +During the optimization, the file `EXC.DAT` is constantly updated. Let us have a look at the final result:: w [eV] Osc.Str. Transition Weight KS [eV] Sym. @@ -127,11 +157,11 @@ us have a look at the final result:: 8.818 0.10121357 4 -> 8 1.000 8.487 S -We see that the excitation energy of the S:sub:`1` decreased by 0.11 +We see that the excitation energy of the :math:`S_1` decreased by 0.11 eV. This value corresponds to the so-called Stokes shift, which measures the difference between absorption and fluorescence energies. In the present example, absorption and radiative -de-excitation from the S:sub:`1` (i.e., fluorescence) should be very +de-excitation from the :math:`S_1` (i.e., fluorescence) should be very difficult to detect, as already mentioned above. The following diagram illustrates the energetic landscape: @@ -148,5 +178,5 @@ illustrates the energetic landscape: We will now compute the adiabatic excitation energy. As the diagram :numref:`fig_aee` shows, this requires the ground state energies of the starting structure and the relaxed structure. We can get these -from the respective *detailed.out* files. The experimental value is +from the respective `detailed.out` files. The experimental value is 2.03 eV, what do you get?