13#ifndef REAL_TIME_TRANSPORT_RESONANT_LEVEL_H
14#define REAL_TIME_TRANSPORT_RESONANT_LEVEL_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 ResonantLevel&
operator=(ResonantLevel&& other)
noexcept =
default;
61 ResonantLevel&
operator=(
const ResonantLevel& other) =
default;
72 SciCore::Real epsilon,
73 const SciCore::RealVector& T,
74 const SciCore::RealVector& mu,
75 const SciCore::RealVector& Gamma);
128 template <
class Archive>
129 void serialize(Archive& archive)
131 archive(_epsilon, _temperatures, _chemicalPotentials, _gamma);
135 SciCore::Real _epsilon = 0.0;
136 SciCore::RealVector _temperatures;
137 SciCore::RealVector _chemicalPotentials;
138 SciCore::RealVector _gamma;
140 static const std::vector<
int> _blockDimensions;
145CEREAL_REGISTER_TYPE(RealTimeTransport::ResonantLevel)
146CEREAL_REGISTER_POLYMORPHIC_RELATION(RealTimeTransport::Model, RealTimeTransport::ResonantLevel)
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
Abstract class representing a model.
Definition Model.h:47
int dimHilbertSpace() const noexcept override
The Hilbert space dimension is 2 (empty and full state).
SupervectorType vectorize(const OperatorType &op) const override
Vectorizes an operator into its supervector form.
SciCore::Real epsilon() const noexcept
Returns the energy of the level.
ResonantLevel() noexcept=default
Default constructor.
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 numReservoirs() const override
Returns the number of reservoirs the system is connected to.
ResonantLevel(const ResonantLevel &other)=default
Default copy constructor.
ResonantLevel & operator=(ResonantLevel &&other) noexcept=default
Default move assignment operator.
bool isEqual(const Model &other) const override
Returns true if other is the same as *this, otherwise false.
ResonantLevel & operator=(const ResonantLevel &other)=default
Default copy assignment operator.
OperatorType H() const override
Returns the Hamiltonian.
const SciCore::RealVector & chemicalPotentials() const noexcept override
Returns the chemical potentials of the reservoirs the system is connected to.
OperatorType operatorize(const SupervectorType &supervector) const override
Transforms a supervector back into operator form.
SciCore::Complex coupling(int r, int nu, int l) const override
Returns the coupling coefficient in the tunneling Hamiltonian. Both and are always 0.
std::unique_ptr< Model > copy() const override
Returns a deep copy of the model.
int numStates() const noexcept override
Only one single particle state.
const SciCore::RealVector & temperatures() const noexcept override
Returns the temperatures of the reservoirs the system is connected to.
ResonantLevel(SciCore::Real epsilon, const SciCore::RealVector &T, const SciCore::RealVector &mu, const SciCore::RealVector &Gamma)
Constructs a new ResonantLevel object.
ResonantLevel(ResonantLevel &&other) noexcept=default
Default move constructor.
int numChannels() const noexcept override
Reservoirs are not spinful, thus returns 1.
OperatorType d(int l) const override
Returns the annihilation operator. is always 0.