13#ifndef REAL_TIME_TRANSPORT_UTILITY_H
14#define REAL_TIME_TRANSPORT_UTILITY_H
18#include "BlockMatrices/BlockDiagonalMatrix.h"
19#include "BlockMatrices/BlockMatrix.h"
23namespace RealTimeTransport
75 const std::unique_ptr<Model>& model)
77 return computeSuperfermion(p, eta, l, model.get());
89 return computeAllSuperfermions(p, model.get());
104 return computeGamma(eta, r, l1, l2, model.get());
115 return computeLiouvillian(model.get());
119 const std::vector<BlockMatrix>& superfermion,
120 const std::vector<BlockMatrix>& superfermionAnnihilation,
128 const std::vector<BlockMatrix>& superfermion,
129 const std::vector<BlockMatrix>& superfermionAnnihilation,
130 const std::unique_ptr<Model>& model)
132 return computeSigmaInfty(superfermion, superfermionAnnihilation, model.get());
137 const std::vector<BlockMatrix>& superfermionAnnihilation,
148 return computeSigmaInftyCurrent(r, superfermionAnnihilation, model.get());
152 const SciCore::Matrix& A,
156 const Model::SuperoperatorType& M,
160 const Model::SuperoperatorType& M,
161 const std::unique_ptr<Model>& model)
163 return computeStationaryState(M, model.get());
167 const BlockDiagonalMatrix& M,
172 const BlockDiagonalMatrix& M,
173 const std::unique_ptr<Model>& model,
176 return computeStationaryState(M, model.get(), tol);
183 const SciCore::Matrix& M,
188inline Model::OperatorType computeStationaryState(
189 const SciCore::Matrix& M,
190 const std::unique_ptr<Model>& model,
194 return computeStationaryState(M, model.get(), blockIndex, tol);
221 return singleToMultiIndex(eta, l, model.get());
238 return multiToSingleIndices(i, model.get());
255 const std::unique_ptr<Model>& model)
257 return gammaMinus(t, eta, l1, l2, r, model.get());
267 const std::unique_ptr<Model>& model)
269 return gammaMinus(t, eta, l1, l2, model.get());
287 const std::unique_ptr<Model>& model)
289 return d_dmu_gammaMinus(t, eta, l1, l2, r, model.get());
296 const std::vector<BlockMatrix>& superfermion,
302 const std::vector<BlockMatrix>& superfermion,
303 const std::unique_ptr<Model>& model)
305 return computeGammaGG(blockIndex, t, superfermion, model.get());
310computeGammaGG(SciCore::Real t,
const std::vector<BlockMatrix>& superfermion,
const Model* model);
314 const std::vector<BlockMatrix>& superfermion,
315 const std::unique_ptr<Model>& model)
317 return computeGammaGG(t, superfermion, model.get());
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
REALTIMETRANSPORT_EXPORT int singleToMultiIndex(Eta eta, int l, const std::unique_ptr< Model > &model)
Converts multiple single indices into a multiindex.
Definition Utility.h:219
REALTIMETRANSPORT_EXPORT BlockDiagonalMatrix computeLiouvillian(const std::unique_ptr< Model > &model)
Returns for a given specific model, where denotes the bare Liouvillian.
Definition Utility.h:113
Eta
Particle-hole index.
Definition Utility.h:30
Keldysh
Keldysh index .
Definition Utility.h:44
REALTIMETRANSPORT_EXPORT std::vector< BlockMatrix > computeAllSuperfermions(Keldysh p, const std::unique_ptr< Model > &model)
Computes all creation or annihilation superfermions (for p=+,- respectively) for a given model.
Definition Utility.h:85
REALTIMETRANSPORT_EXPORT Indices multiToSingleIndices(int i, const std::unique_ptr< Model > &model)
Converts a multiindex into multiple single indices.
Definition Utility.h:236
REALTIMETRANSPORT_EXPORT BlockMatrix computeSuperfermion(Keldysh p, Eta eta, int l, const std::unique_ptr< Model > &model)
Computes a superfermion for a given model.
Definition Utility.h:71
REALTIMETRANSPORT_EXPORT BlockDiagonalMatrix computeSigmaInfty(const std::vector< BlockMatrix > &superfermion, const std::vector< BlockMatrix > &superfermionAnnihilation, const std::unique_ptr< Model > &model)
Returns the -singular part of the infinite temperature memory kernel for a given fermionic wideband ...
Definition Utility.h:127
REALTIMETRANSPORT_EXPORT SciCore::Complex computeGamma(Eta eta, int r, int l1, int l2, const std::unique_ptr< Model > &model)
Convenience function to compute .
Definition Utility.h:97
REALTIMETRANSPORT_EXPORT Model::SuperRowVectorType computeSigmaInftyCurrent(int r, const std::vector< BlockMatrix > &superfermionAnnihilation, const std::unique_ptr< Model > &model)
Returns the -singular part of the current kernel, , for a given fermionic wideband model.
Definition Utility.h:143
Represents a block diagonal matrix.
Definition BlockDiagonalMatrix.h:33
Abstract class representing a model.
Definition Model.h:47