13#ifndef REAL_TIME_TRANSPORT_ITERATED_RG_MEMORY_KERNEL_H
14#define REAL_TIME_TRANSPORT_ITERATED_RG_MEMORY_KERNEL_H
16#include "../BlockMatrices/BlockDiagonalCheb.h"
17#include "../BlockMatrices/BlockDiagonalMatrix.h"
19#include "../Propagator.h"
20#include "../RealTimeTransport_export.h"
22namespace RealTimeTransport
73 MemoryKernel(
const Model* model,
Order order, SciCore::Real tMax, SciCore::Real errorGoal)
75 initialize(model, order, tMax, errorGoal,
nullptr);
78 MemoryKernel(
const Model* model,
Order order, SciCore::Real tMax, SciCore::Real errorGoal, tf::Executor& executor)
80 initialize(model, order, tMax, errorGoal, &executor);
93 MemoryKernel(
const std::unique_ptr<Model>& model,
Order order, SciCore::Real tMax, SciCore::Real errorGoal)
95 initialize(model.get(), order, tMax, errorGoal,
nullptr);
110 const std::unique_ptr<Model>& model,
113 SciCore::Real errorGoal,
114 tf::Executor& executor)
116 initialize(model.get(), order, tMax, errorGoal, &executor);
123 SciCore::Real errorGoal,
124 tf::Executor* executor,
125 SciCore::Real hMin = -1,
126 const std::vector<SciCore::RealVector>* initialChebSections =
nullptr);
178 template <
class Archive>
179 void serialize(Archive& archive)
181 archive(_model, _errorGoal, _minusILInfty, _minusIK);
185 std::unique_ptr<Model> _model;
186 SciCore::Real _errorGoal;
195 SciCore::Real errorGoal,
196 tf::Executor* executor,
198 const std::vector<SciCore::RealVector>* initialChebSections);
218 const std::unique_ptr<Model>& model,
219 IteratedRG::
Order order,
221 SciCore::Real errorGoal)
223 return IteratedRG::MemoryKernel(model, order, tMax, errorGoal);
240 const std::unique_ptr<Model>& model,
241 IteratedRG::
Order order,
243 SciCore::Real errorGoal,
244 tf::Executor& executor)
246 return IteratedRG::MemoryKernel(model, order, tMax, errorGoal, executor);
#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
Defines the RG memory kernel.
Definition IteratedRG/MemoryKernel.h:56
MemoryKernel(const std::unique_ptr< Model > &model, Order order, SciCore::Real tMax, SciCore::Real errorGoal, tf::Executor &executor)
Computes the memory mernel for a given model in parallel.
Definition IteratedRG/MemoryKernel.h:109
bool operator!=(const MemoryKernel &other) const noexcept
Operator testing for inequality.
SciCore::Real tMax() const
Returns the maximum simulation time.
const BlockDiagonalCheb & K() const noexcept
Returns , where denotes the memory kernel.
MemoryKernel & operator=(MemoryKernel &&other)
Move assignment operator.
BlockDiagonalMatrix zeroFrequency() const
Returns , where denotes the renormalized Liouvillian and the memory kernel at zero frequency.
bool operator==(const MemoryKernel &other) const noexcept
Operator testing for equality.
SciCore::Real errorGoal() const noexcept
Returns the error goal of the computation.
const BlockDiagonalMatrix & LInfty() const noexcept
Returns the renormalized Liouvillian .
MemoryKernel(MemoryKernel &&other) noexcept
Move constructor.
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)
Computes the memory kernel for a given model.
Definition IteratedRG/MemoryKernel.h:93
MemoryKernel & operator=(const MemoryKernel &other)
Copy assignment operator.
MemoryKernel(const MemoryKernel &other)
Copy constructor.
Model::OperatorType stationaryState(int block=-1) const
Returns the stationary state. This method assumes that the stationary state is unique.
MemoryKernel() noexcept
Constructor.
BlockDiagonalCheb & K() noexcept
Returns , where denotes the memory kernel.
Abstract class representing a model.
Definition Model.h:47
Type representing the propagator (dynamical map).
Definition Propagator.h:23
REALTIMETRANSPORT_EXPORT IteratedRG::MemoryKernel computeMemoryKernel(const std::unique_ptr< Model > &model, IteratedRG::Order order, SciCore::Real tMax, SciCore::Real errorGoal)
Computes the memory kernel for a given model.
Definition IteratedRG/MemoryKernel.h:217
REALTIMETRANSPORT_EXPORT IteratedRG::MemoryKernel computeMemoryKernel(const std::unique_ptr< Model > &model, IteratedRG::Order order, SciCore::Real tMax, SciCore::Real errorGoal, tf::Executor &executor)
Computes the memory mernel for a given model in parallel.
Definition IteratedRG/MemoryKernel.h:239
REALTIMETRANSPORT_EXPORT Propagator computePropagator(const IteratedRG::MemoryKernel &memoryKernel)
Computes the propagator corresponding to a given memory kernel.
Order
Defines the order of the approximation.
Definition IteratedRG/MemoryKernel.h:42
@ _2
Two-loop approximation.
@ _3
Three-loop approximation.