13#ifndef REAL_TIME_TRANSPORT_MODEL_H
14#define REAL_TIME_TRANSPORT_MODEL_H
20#include <SciCore/Definitions.h>
22namespace RealTimeTransport
62 virtual ~Model()
noexcept;
156template <
typename ConcreteModelType,
typename... Params>
157 requires std::is_base_of_v<Model, ConcreteModelType>
158std::unique_ptr<Model> createModel(Params&&... params)
160 return std::make_unique<ConcreteModelType>(std::forward<Params>(params)...);
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
Abstract class representing a model.
Definition Model.h:47
virtual int numStates() const noexcept=0
Returns the number of single particle states (including spin).
virtual bool isEqual(const Model &other) const =0
Returns true if other is the same as *this, otherwise false.
virtual OperatorType operatorize(const SupervectorType &supervector) const
Transforms a supervector back into operator form.
virtual OperatorType P() const
Returns the parity operator.
virtual const SciCore::RealVector & temperatures() const noexcept=0
Returns the temperatures of the reservoirs the system is connected to.
virtual OperatorType d(int l) const =0
Returns the annihilation operator of the single particle state indexed by l.
virtual std::unique_ptr< Model > copy() const =0
Returns a deep copy of the model.
bool operator!=(const Model &other) const
Inequality comparison operator.
virtual const SciCore::RealVector & chemicalPotentials() const noexcept=0
Returns the chemical potentials of the reservoirs the system is connected to.
virtual SupervectorType vectorize(const OperatorType &op) const
Vectorizes an operator into its supervector form.
virtual int dimHilbertSpace() const noexcept=0
Returns the dimension of the Hilbert space.
virtual int numReservoirs() const =0
Returns the number of reservoirs the system is connected to.
virtual OperatorType H() const =0
Returns the Hamiltonian.
virtual int numChannels() const noexcept=0
Returns the number of channels in each reservoir (e.g. spin).
bool operator==(const Model &other) const
Equality comparison operator.
virtual const std::vector< int > & blockDimensions() const noexcept=0
The memory kernel and propagator are block diagonal. This function returns a reference to a vector co...
virtual SciCore::Complex coupling(int r, int nu, int l) const =0
Returns the coupling coefficient in the tunneling Hamiltonian, given by .