RealTimeTransport 1.0.0
Real-time simulation of quantum transport processes
Loading...
Searching...
No Matches
RenormalizedPT/Diagrams.h
1//
2// This Source Code Form is subject to the terms of the Mozilla Public
3// License, v. 2.0. If a copy of the MPL was not distributed with this
4// file, You can obtain one at https://mozilla.org/MPL/2.0/.
5//
6
7#ifndef REAL_TIME_TRANSPORT_RENORMALIZED_PT_DIAGRAMS_H
8#define REAL_TIME_TRANSPORT_RENORMALIZED_PT_DIAGRAMS_H
9
10#include "../BlockMatrices/BlockVector.h"
11#include "../Model.h"
12#include "../Utility.h"
13
14#include <functional>
15
16namespace RealTimeTransport::RenormalizedPT::Detail
17{
18
19// _____________
20// | |
21// | |
22// 0===========0
23//
24SciCore::Matrix diagram_1_regular(
25 int blockIndex,
26 SciCore::Real t,
27 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
28 const std::vector<BlockMatrix>& superfermions,
29 const Model* model);
30
31// _____________
32// | |
33// | |
34// 0===========0
35//
36SciCore::Matrix diagram_1_small_t(
37 int blockIndex,
38 SciCore::Real t,
39 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePiMinusOne,
40 const std::vector<BlockMatrix>& superfermion,
41 const Model* model);
42
43// _____________
44// | |
45// | |
46// 0===========0
47//
48SciCore::Matrix diagram_1(
49 int blockIndex,
50 SciCore::Real t,
51 SciCore::Real tCrit,
52 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
53 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePiMinusOne,
54 const std::vector<BlockMatrix>& superfermion,
55 const Model* model);
56
57//
58// __
59// ______|______
60// | | |
61// | | |
62// 0=====0=====0
63// t τ s
64// i2 i1 \bar{i2}
65//
66// Computes the column col of the above diagram with middle index i1
67BlockVector effectiveVertexDiagram1_col(
68 int i1,
69 int col,
70 SciCore::Real t_minus_tau,
71 SciCore::Real tau_minus_s,
72 SciCore::Real tCrit,
73 SciCore::Real epsAbs,
74 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
75 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePiMinusOne,
76 const std::vector<BlockMatrix>& superfermion,
77 const Model* model);
78
79// Computes the complete representation of the effective vertex i1 if col == -1.
80// Otherwise, if col >= 0, only the column col is computed.
81BlockMatrix effectiveVertexDiagram1_fromCols(
82 int i1,
83 SciCore::Real t_minus_tau,
84 SciCore::Real tau_minus_s,
85 const std::function<BlockVector(int, int, SciCore::Real, SciCore::Real)>& computeD_col,
86 int col,
87 const Model* model);
88
89// _____________
90// | |
91// | |
92// 0===========O <-- effectiveVertex
93//
94SciCore::Matrix diagram_2(
95 int blockIndex,
96 SciCore::Real t,
97 SciCore::Real epsAbs,
98 SciCore::Real epsRel,
99 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
100 const std::function<BlockVector(int, int, SciCore::Real, SciCore::Real)>& computeD_col,
101 const std::vector<BlockMatrix>& superfermion,
102 const Model* model);
103
104// _________________________
105// | _________ |
106// | | | |
107// 0-------0-------0-------0
108//
109SciCore::Matrix diagram_2_2(
110 int blockIndex,
111 SciCore::Real t,
112 SciCore::Real epsAbs,
113 SciCore::Real epsRel,
114 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
115 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computeDiagram_1,
116 const std::vector<BlockMatrix>& superfermion,
117 const Model* model);
118
119// _____________
120// | |
121// | |
122// X===========0
123//
124Model::SuperRowVectorType currentDiagram_1(
125 SciCore::Real t,
126 int r,
127 SciCore::Real tCrit,
128 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
129 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePiMinusOne,
130 const Model::SuperRowVectorType& idRow,
131 const std::vector<Model::SuperRowVectorType>& Tr_superfermionAnnihilation,
132 const std::vector<BlockMatrix>& superfermion,
133 const std::vector<int>& blockStartIndices,
134 const Model* model);
135
136// _____________
137// | |
138// | |
139// X===========O <-- effectiveVertex
140//
141Model::SuperRowVectorType currentDiagram_2(
142 SciCore::Real t,
143 int r,
144 SciCore::Real epsAbs,
145 SciCore::Real epsRel,
146 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
147 const std::function<BlockVector(int, int, SciCore::Real, SciCore::Real)>& computeD_col,
148 const std::vector<Model::SuperRowVectorType>& Tr_superfermionAnnihilation,
149 const std::vector<int>& blockStartIndices,
150 int block,
151 const Model* model);
152
153// _________________________
154// | _________ |
155// | | | |
156// X-------0-------0-------0
157//
158Model::SuperRowVectorType currentDiagram_2_2(
159 SciCore::Real t,
160 int r,
161 SciCore::Real epsAbs,
162 SciCore::Real epsRel,
163 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computePi,
164 const std::function<BlockDiagonalMatrix(SciCore::Real)>& computeDiagram_1,
165 const std::vector<BlockMatrix>& superfermion,
166 const std::vector<Model::SuperRowVectorType>& Tr_superfermionAnnihilation,
167 const std::vector<int>& blockStartIndices,
168 const Model* model);
169
170} // namespace RealTimeTransport::RenormalizedPT::Detail
171
172#endif // REAL_TIME_TRANSPORT_RENORMALIZED_PT_DIAGRAMS_H
Abstract class representing a model.
Definition Model.h:47