RealTimeTransport 1.0.0
Real-time simulation of quantum transport processes
Loading...
Searching...
No Matches
Propagator.h
1//
2// This Source Code Form is subject to the terms of the Mozilla Public
3// License, v. 2.0. If a copy of the MPL was not distributed with this
4// file, You can obtain one at https://mozilla.org/MPL/2.0/.
5//
6
7#ifndef REAL_TIME_TRANSPORT_PROPAGATOR_H
8#define REAL_TIME_TRANSPORT_PROPAGATOR_H
9
10#include <vector>
11
12#include "BlockMatrices/BlockDiagonalCheb.h"
13#include "Model.h"
15
16namespace RealTimeTransport
17{
18
19///
20/// @brief Type representing the propagator (dynamical map).
21///
23{
24 public:
25 Propagator() noexcept;
26 Propagator(Propagator&& other) noexcept;
27 Propagator(const Propagator& other);
28 Propagator& operator=(Propagator&& other) noexcept;
29 Propagator& operator=(const Propagator& other);
30
31 Propagator(const std::unique_ptr<Model>& model, BlockDiagonalCheb&& Pi);
32 Propagator(const Model* model, BlockDiagonalCheb&& Pi);
33
34 Model::OperatorType operator()(SciCore::Real t, const Model::OperatorType& rho0) const;
35 std::vector<Model::OperatorType> operator()(const SciCore::RealVector& t, const Model::OperatorType& rho0) const;
36
37 const Model* model() const noexcept;
38
39 Propagator diff() const;
40
41 BlockDiagonalCheb& Pi() noexcept;
42 const BlockDiagonalCheb& Pi() const noexcept;
43
44 void serialize(cereal::BinaryInputArchive& archive);
45 void serialize(cereal::BinaryOutputArchive& archive);
46 void serialize(cereal::PortableBinaryInputArchive& archive);
47 void serialize(cereal::PortableBinaryOutputArchive& archive);
48
49 private:
50 std::unique_ptr<Model> _model;
51 BlockDiagonalCheb _propagator;
52};
53
54} // namespace RealTimeTransport
55
56#endif // REAL_TIME_TRANSPORT_PROPAGATOR_H
#define REALTIMETRANSPORT_EXPORT
Definition RealTimeTransport_export.h:15
This class represents a parameter dependent block diagonal matrix.
Definition BlockDiagonalCheb.h:54
Abstract class representing a model.
Definition Model.h:47
Type representing the propagator (dynamical map).
Definition Propagator.h:23