DPsim
Loading...
Searching...
No Matches
DataLogger.h
Go to the documentation of this file.
1/* Copyright 2017-2024 Institute for Automation of Complex Power Systems,
2 * EONERC, RWTH Aachen University
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7 *********************************************************************************/
8
9#pragma once
10
11#include <fstream>
12#include <iostream>
13#include <map>
14
19#include <dpsim-models/Task.h>
21#include <dpsim/Definitions.h>
22#include <dpsim/Scheduler.h>
23
24namespace DPsim {
25
27 public SharedFactory<DataLogger> {
28
29protected:
30 std::ofstream mLogFile;
34 fs::path mFilename;
35
36 virtual void logDataLine(Real time, Real data);
37 virtual void logDataLine(Real time, const Matrix &data);
38 virtual void logDataLine(Real time, const MatrixComp &data);
39
40public:
41 typedef std::shared_ptr<DataLogger> Ptr;
42
43 DataLogger(Bool enabled = true);
44 DataLogger(String name, Bool enabled = true, UInt downsampling = 1);
45 virtual ~DataLogger(){};
46
47 virtual void start() override;
48 virtual void stop() override;
49
50 virtual void setColumnNames(std::vector<String> names);
51 void logPhasorNodeValues(Real time, const Matrix &data, Int freqNum = 1);
52 void logEMTNodeValues(Real time, const Matrix &data);
53
54 virtual void log(Real time, Int timeStepCount) override;
55
56 virtual CPS::Task::Ptr getTask() override;
57
58 class Step : public CPS::Task {
59 public:
60 Step(DataLogger &logger) : Task(logger.mName + ".Write"), mLogger(logger) {
61 for (auto attr : logger.mAttributes) {
62 mAttributeDependencies.push_back(attr.second);
63 }
65 }
66
67 void execute(Real time, Int timeStepCount);
68
69 private:
70 DataLogger &mLogger;
71 };
72};
73} // 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::string mName
Definition Task.h:51
Step(DataLogger &logger)
Definition DataLogger.h:60
void execute(Real time, Int timeStepCount)
fs::path mFilename
Definition DataLogger.h:34
virtual void log(Real time, Int timeStepCount) override
void logEMTNodeValues(Real time, const Matrix &data)
virtual CPS::Task::Ptr getTask() override
void logPhasorNodeValues(Real time, const Matrix &data, Int freqNum=1)
virtual void setColumnNames(std::vector< String > names)
virtual void start() override
virtual void logDataLine(Real time, Real data)
std::ofstream mLogFile
Definition DataLogger.h:30
std::shared_ptr< DataLogger > Ptr
Definition DataLogger.h:41
virtual void stop() override
DataLogger(Bool enabled=true)
virtual ~DataLogger()
Definition DataLogger.h:45
std::map< String, CPS::AttributeBase::Ptr > mAttributes
static CPS::AttributeBase::Ptr external
Definition Scheduler.h:63
struct dps_magma_data data
CPS::Real Real
Definition Definitions.h:18
CPS::String String
Definition Definitions.h:20
CPS::Int Int
Definition Definitions.h:22
CPS::Matrix Matrix
Definition Definitions.h:24
CPS::Bool Bool
Definition Definitions.h:21
CPS::UInt UInt
Definition Definitions.h:23
CPS::MatrixComp MatrixComp
Definition Definitions.h:25