13#ifndef REAL_TIME_TRANSPORT_ANDERSON_DOT_H
14#define REAL_TIME_TRANSPORT_ANDERSON_DOT_H
18#include <cereal/archives/binary.hpp>
19#include <cereal/archives/json.hpp>
20#include <cereal/archives/portable_binary.hpp>
21#include <cereal/types/polymorphic.hpp>
23#include <SciCore/Definitions.h>
24#include <SciCore/Serialization.h>
26namespace RealTimeTransport
58 AndersonDot&
operator=(AndersonDot&& other)
noexcept =
default;
61 AndersonDot&
operator=(
const AndersonDot& other) =
default;
74 SciCore::Real epsilon,
77 const SciCore::RealVector& T,
78 const SciCore::RealVector& mu,
79 const SciCore::RealVector& Gamma);
93 SciCore::Real epsilon,
96 const SciCore::RealVector& T,
97 const SciCore::RealVector& mu,
98 const SciCore::RealVector& GammaUp,
99 const SciCore::RealVector& GammaDown);
168 template <
class Archive>
169 void serialize(Archive& archive)
171 archive(_epsilon, _b, _u, _temperatures, _chemicalPotentials, _gammaUp, _gammaDown);
175 SciCore::Real _epsilon = 0.0;
176 SciCore::Real _b = 0.0;
177 SciCore::Real _u = 0.0;
178 SciCore::RealVector _temperatures;
179 SciCore::RealVector _chemicalPotentials;
180 SciCore::RealVector _gammaUp;
181 SciCore::RealVector _gammaDown;
183 static const std::vector<
int> _blockDimensions;
188CEREAL_REGISTER_TYPE(RealTimeTransport::AndersonDot)
189CEREAL_REGISTER_POLYMORPHIC_RELATION(RealTimeTransport::Model, RealTimeTransport::AndersonDot)
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
int numChannels() const noexcept override
Each reservoir is spinful, thus returns 2.
SciCore::Complex coupling(int r, int nu, int l) const override
Returns the coupling coefficient in the tunneling Hamiltonian, given by .
bool isEqual(const Model &other) const override
Returns true if other is the same as *this, otherwise false.
SciCore::Real B() const noexcept
Returns the magnetic field.
int numReservoirs() const override
Returns the number of reservoirs the system is connected to.
OperatorType operatorize(const SupervectorType &supervector) const override
Transforms a supervector back into operator form.
SciCore::Real U() const noexcept
Returns the Coulomb interaction.
AndersonDot() noexcept=default
Default constructor.
AndersonDot(AndersonDot &&other) noexcept=default
Default move constructor.
AndersonDot & operator=(const AndersonDot &other)=default
Default copy assignment operator.
SciCore::Real epsilon() const noexcept
Returns the energy of the level.
std::unique_ptr< Model > copy() const override
Returns a deep copy of the model.
AndersonDot & operator=(AndersonDot &&other) noexcept=default
Default move assignment operator.
const std::vector< int > & blockDimensions() const noexcept override
The memory kernel and propagator are block diagonal. This function returns a reference to a vector co...
int numStates() const noexcept override
The single particle states are and , thus returns 2.
OperatorType d(int l) const override
Returns the annihilation operator of the single particle state indexed by , .
const SciCore::RealVector & GammaDown() const noexcept
Returns the couplings .
const SciCore::RealVector & temperatures() const noexcept override
Returns the temperatures of the reservoirs the system is connected to.
const SciCore::RealVector & GammaUp() const noexcept
Returns the couplings .
OperatorType H() const override
Returns the Hamiltonian.
AndersonDot(SciCore::Real epsilon, SciCore::Real B, SciCore::Real U, const SciCore::RealVector &T, const SciCore::RealVector &mu, const SciCore::RealVector &GammaUp, const SciCore::RealVector &GammaDown)
Constructs a new Anderson dot object.
SupervectorType vectorize(const OperatorType &op) const override
Vectorizes an operator into its supervector form.
AndersonDot(const AndersonDot &other)=default
Default copy constructor.
int dimHilbertSpace() const noexcept override
The Hilbert space dimension is 4.
AndersonDot(SciCore::Real epsilon, SciCore::Real B, SciCore::Real U, const SciCore::RealVector &T, const SciCore::RealVector &mu, const SciCore::RealVector &Gamma)
Constructs a new Anderson dot object.
const SciCore::RealVector & chemicalPotentials() const noexcept override
Returns the chemical potentials of the reservoirs the system is connected to.
Abstract class representing a model.
Definition Model.h:47