13#ifndef REAL_TIME_TRANSPORT_RENORMALIZED_PT_MEMORY_KERNEL_H
14#define REAL_TIME_TRANSPORT_RENORMALIZED_PT_MEMORY_KERNEL_H
16#include "../BlockMatrices/BlockDiagonalCheb.h"
18#include "../Propagator.h"
19#include "../RealTimeTransport_export.h"
21namespace RealTimeTransport
24namespace RenormalizedPT
72 MemoryKernel(
const Model* model,
Order order, SciCore::Real tMax, SciCore::Real errorGoal,
int block = -1)
74 initialize(model, order, tMax, errorGoal,
nullptr, block);
81 SciCore::Real errorGoal,
82 tf::Executor& executor,
85 initialize(model, order, tMax, errorGoal, &executor, block);
101 const std::unique_ptr<Model>& model,
104 SciCore::Real errorGoal,
107 initialize(model.get(), order, tMax, errorGoal,
nullptr, block);
124 const std::unique_ptr<Model>& model,
127 SciCore::Real errorGoal,
128 tf::Executor& executor,
131 initialize(model.get(), order, tMax, errorGoal, &executor, block);
138 SciCore::Real errorGoal,
139 tf::Executor* executor =
nullptr,
141 SciCore::Real hMin = -1,
142 const std::vector<SciCore::RealVector>* initialChebSections =
nullptr);
194 template <
class Archive>
195 void serialize(Archive& archive)
197 archive(_model, _errorGoal, _minusILInfty, _minusIK);
201 std::unique_ptr<Model> _model;
202 SciCore::Real _errorGoal;
227 const std::unique_ptr<Model>& model,
228 RenormalizedPT::
Order order,
230 SciCore::Real errorGoal,
233 return RenormalizedPT::MemoryKernel(model, order, tMax, errorGoal, block);
252 const std::unique_ptr<Model>& model,
253 RenormalizedPT::
Order order,
255 SciCore::Real errorGoal,
256 tf::Executor& executor,
259 return RenormalizedPT::MemoryKernel(model, order, tMax, errorGoal, executor, block);
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
This class represents a parameter dependent block diagonal matrix.
Definition BlockDiagonalCheb.h:54
Represents a block diagonal matrix.
Definition BlockDiagonalMatrix.h:33
Abstract class representing a model.
Definition Model.h:47
Type representing the propagator (dynamical map).
Definition Propagator.h:23
Defines the renormalized memory kernel.
Definition RenormalizedPT/MemoryKernel.h:55
const BlockDiagonalCheb & K() const noexcept
Returns , where denotes the renormalized memory kernel.
MemoryKernel() noexcept
Constructor.
MemoryKernel(const MemoryKernel &other)
Copy constructor.
SciCore::Real errorGoal() const noexcept
Returns the error goal of the computation.
bool operator!=(const MemoryKernel &other) const noexcept
Operator testing for inequality.
MemoryKernel(const std::unique_ptr< Model > &model, Order order, SciCore::Real tMax, SciCore::Real errorGoal, tf::Executor &executor, int block=-1)
Computes the memory mernel for a given model in parallel.
Definition RenormalizedPT/MemoryKernel.h:123
MemoryKernel(MemoryKernel &&other) noexcept
Move constructor.
Model::OperatorType stationaryState(int block=-1) const
Returns the stationary state. This method assumes that the stationary state is unique.
MemoryKernel & operator=(MemoryKernel &&other)
Move assignment operator.
bool operator==(const MemoryKernel &other) const noexcept
Operator testing for equality.
BlockDiagonalMatrix zeroFrequency() const
Returns , where denotes the renormalized Liouvillian and the renormalized memory kernel at zero fre...
const Model * model() const noexcept
Returns a pointer to the model.
MemoryKernel(const std::unique_ptr< Model > &model, Order order, SciCore::Real tMax, SciCore::Real errorGoal, int block=-1)
Computes the memory kernel for a given model.
Definition RenormalizedPT/MemoryKernel.h:100
const BlockDiagonalMatrix & LInfty() const noexcept
Returns the renormalized Liouvillian .
BlockDiagonalCheb & K() noexcept
Returns , where denotes the renormalized memory kernel.
MemoryKernel & operator=(const MemoryKernel &other)
Copy assignment operator.
SciCore::Real tMax() const
Returns the maximum simulation time.
REALTIMETRANSPORT_EXPORT RenormalizedPT::MemoryKernel computeMemoryKernel(const std::unique_ptr< Model > &model, RenormalizedPT::Order order, SciCore::Real tMax, SciCore::Real errorGoal, int block=-1)
Computes the memory kernel for a given model.
Definition RenormalizedPT/MemoryKernel.h:226
Order
Defines the order of the approximation.
Definition RenormalizedPT/MemoryKernel.h:41
REALTIMETRANSPORT_EXPORT RenormalizedPT::MemoryKernel computeMemoryKernel(const std::unique_ptr< Model > &model, RenormalizedPT::Order order, SciCore::Real tMax, SciCore::Real errorGoal, tf::Executor &executor, int block=-1)
Computes the memory mernel for a given model in parallel.
Definition RenormalizedPT/MemoryKernel.h:251
REALTIMETRANSPORT_EXPORT Propagator computePropagator(const RenormalizedPT::MemoryKernel &memoryKernel, int block=-1)
Computes the propagator corresponding to a given memory kernel.
@ _2
Next-to-leading order.