votca 2024.2-dev
Loading...
Searching...
No Matches
bsecoupling.h
Go to the documentation of this file.
1
2/*
3 * Copyright 2009-2020 The VOTCA Development Team
4 * (http://www.votca.org)
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License")
7 *
8 * You may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 *
19 */
20
21#pragma once
22#ifndef VOTCA_XTP_BSECOUPLING_H
23#define VOTCA_XTP_BSECOUPLING_H
24
25// Local VOTCA includes
26#include "couplingbase.h"
27#include "qmstate.h"
28
29namespace votca {
30namespace xtp {
31
40class BSECoupling : public CouplingBase {
41 public:
42 void Initialize(tools::Property& options) override;
43 std::string Identify() const { return "bsecoupling"; }
44
45 void Addoutput(tools::Property& type_summary, const Orbitals& orbitalsA,
46 const Orbitals& orbitalsB) const override;
47
55 void CalculateCouplings(const Orbitals& orbitalsA, const Orbitals& orbitalsB,
56 const Orbitals& orbitalsAB) override;
57
58 private:
59 void WriteToProperty(tools::Property& summary, const QMState& stateA,
60 const QMState& stateB) const;
61
62 double getSingletCouplingElement(Index levelA, Index levelB,
63 Index methodindex) const;
64
65 double getTripletCouplingElement(Index levelA, Index levelB,
66 Index methodindex) const;
67
68 Eigen::MatrixXd SetupCTStates(Index bseA_vtotal, Index bseB_vtotal,
69 Index bseAB_vtotal, Index bseAB_ctotal,
70 const Eigen::MatrixXd& A_AB,
71 const Eigen::MatrixXd& B_AB) const;
72
73 Eigen::MatrixXd ProjectFrenkelExcitons(const Eigen::MatrixXd& BSE_Coeffs,
74 const Eigen::MatrixXd& X_AB,
75 Index bseX_vtotal, Index bseX_ctotal,
76 Index bseAB_vtotal,
77 Index bseAB_ctotal) const;
78
79 template <class BSE_OPERATOR>
80 std::array<Eigen::MatrixXd, 2> ProjectExcitons(Eigen::MatrixXd& FE_AB,
81 Eigen::MatrixXd& CTStates,
82 BSE_OPERATOR H) const;
83 template <class BSE_OPERATOR>
84 Eigen::MatrixXd CalcJ_dimer(BSE_OPERATOR& H,
85 Eigen::MatrixXd& projection) const;
86
87 Eigen::MatrixXd OrthogonalizeCTs(Eigen::MatrixXd& FE_AB,
88 Eigen::MatrixXd& CTStates) const;
89
90 Eigen::MatrixXd Fulldiag(const Eigen::MatrixXd& J_dimer) const;
91
92 Eigen::MatrixXd Perturbation(const Eigen::MatrixXd& J_dimer) const;
93
94 std::array<Eigen::MatrixXd, 2> JAB_singlet;
95 std::array<Eigen::MatrixXd, 2> JAB_triplet;
96
106};
107
108} // namespace xtp
109} // namespace votca
110
111#endif // VOTCA_XTP_BSECOUPLING_H
class to manage program options with xml serialization functionality
Definition property.h:55
Evaluates electronic coupling elements.
Definition bsecoupling.h:40
double getSingletCouplingElement(Index levelA, Index levelB, Index methodindex) const
double getTripletCouplingElement(Index levelA, Index levelB, Index methodindex) const
std::string Identify() const
Definition bsecoupling.h:43
void CalculateCouplings(const Orbitals &orbitalsA, const Orbitals &orbitalsB, const Orbitals &orbitalsAB) override
evaluates electronic couplings
void Addoutput(tools::Property &type_summary, const Orbitals &orbitalsA, const Orbitals &orbitalsB) const override
void WriteToProperty(tools::Property &summary, const QMState &stateA, const QMState &stateB) const
std::array< Eigen::MatrixXd, 2 > JAB_triplet
Definition bsecoupling.h:95
Eigen::MatrixXd Perturbation(const Eigen::MatrixXd &J_dimer) const
void Initialize(tools::Property &options) override
std::array< Eigen::MatrixXd, 2 > JAB_singlet
Definition bsecoupling.h:94
Eigen::MatrixXd ProjectFrenkelExcitons(const Eigen::MatrixXd &BSE_Coeffs, const Eigen::MatrixXd &X_AB, Index bseX_vtotal, Index bseX_ctotal, Index bseAB_vtotal, Index bseAB_ctotal) const
Eigen::MatrixXd SetupCTStates(Index bseA_vtotal, Index bseB_vtotal, Index bseAB_vtotal, Index bseAB_ctotal, const Eigen::MatrixXd &A_AB, const Eigen::MatrixXd &B_AB) const
std::array< Eigen::MatrixXd, 2 > ProjectExcitons(Eigen::MatrixXd &FE_AB, Eigen::MatrixXd &CTStates, BSE_OPERATOR H) const
Eigen::MatrixXd Fulldiag(const Eigen::MatrixXd &J_dimer) const
Eigen::MatrixXd CalcJ_dimer(BSE_OPERATOR &H, Eigen::MatrixXd &projection) const
Eigen::MatrixXd OrthogonalizeCTs(Eigen::MatrixXd &FE_AB, Eigen::MatrixXd &CTStates) const
Base Class to derive DFT and BSE coupling from.
container for molecular orbitals
Definition orbitals.h:46
Identifier for QMstates. Strings like S1 are converted into enum +zero indexed int.
Definition qmstate.h:132
base class for all analysis tools
Definition basebead.h:33
Eigen::Index Index
Definition types.h:26