DPsim
Loading...
Searching...
No Matches
RealTimeDataLogger.h
Go to the documentation of this file.
1/* A data logger for real-time simulation data logging.
2 *
3 * Author: Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
4 * SPDX-FileCopyrightText: 2024 Niklas Eiling <niklas.eiling@eonerc.rwth-aachen.de>
5 * SPDX-License-Identifier: Apache-2.0
6 */
7#pragma once
8
9#include <filesystem>
10#include <fstream>
11#include <iostream>
12#include <map>
13#include <system_error>
14
18#include <dpsim-models/Task.h>
20#include <dpsim/Definitions.h>
21#include <dpsim/Scheduler.h>
22
23namespace DPsim {
24
26 public SharedFactory<RealTimeDataLogger> {
27
28protected:
29 std::filesystem::path mFilename;
30 size_t mRowNumber;
33
34 std::vector<std::vector<Real>> mAttributeData;
35
36public:
37 typedef std::shared_ptr<RealTimeDataLogger> Ptr;
38
39 RealTimeDataLogger(std::filesystem::path &filename, Real finalTime,
40 Real timeStep);
41 RealTimeDataLogger(std::filesystem::path &filename, size_t rowNumber);
42
43 virtual void start() override;
44 virtual void stop() override;
45
46 virtual void log(Real time, Int timeStepCount) override;
47
48 virtual CPS::Task::Ptr getTask() override;
49
50 class Step : public CPS::Task {
51 public:
53 : Task("RealTimeDataLogger.Write"), mLogger(logger) {
54 for (auto attr : logger.mAttributes) {
55 mAttributeDependencies.push_back(attr.second);
56 }
58 }
59
60 void execute(Real time, Int timeStepCount);
61
62 private:
63 RealTimeDataLogger &mLogger;
64 };
65};
66} // namespace DPsim
Tasks to be defined by every component.
Definition Task.h:25
std::vector< AttributeBase::Ptr > mModifiedAttributes
Definition Task.h:53
Task()
Definition Task.h:30
std::shared_ptr< Task > Ptr
Definition Task.h:27
std::map< String, CPS::AttributeBase::Ptr > mAttributes
Step(RealTimeDataLogger &logger)
void execute(Real time, Int timeStepCount)
virtual void stop() override
RealTimeDataLogger(std::filesystem::path &filename, Real finalTime, Real timeStep)
virtual CPS::Task::Ptr getTask() override
virtual void start() override
virtual void log(Real time, Int timeStepCount) override
std::filesystem::path mFilename
std::shared_ptr< RealTimeDataLogger > Ptr
std::vector< std::vector< Real > > mAttributeData
static CPS::AttributeBase::Ptr external
Definition Scheduler.h:63
CPS::Real Real
Definition Definitions.h:18
CPS::Int Int
Definition Definitions.h:22