DPsim
Loading...
Searching...
No Matches
FIRFilter.cpp
Go to the documentation of this file.
1/* Copyright 2017-2021 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
10
11using namespace CPS;
12using namespace CPS::Signal;
13
15 : SimSignalComp(name, name, logLevel), mCurrentIdx(0),
16 mOutput(mAttributes->create<Real>("output")),
17 mInitSample(mAttributes->create<Real>("init_sample", 0.0)) {}
18
19FIRFilter::FIRFilter(String name, std::vector<Real> filterCoefficients,
20 Real initSample, Logger::Level logLevel)
21 : FIRFilter(name, name, logLevel) {
22
23 mFilter = filterCoefficients;
24 mFilterLength = (Int)mFilter.size();
25}
26
29 SPDLOG_LOGGER_INFO(mSLog, "Initialize filter with {}", **mInitSample);
30}
31
33 Real output = 0;
36 for (int i = 0; i < mFilterLength; i++) {
37 output += mFilter[i] * mSignal[getIndex(i)];
38 }
39
41 **mOutput = output;
42 SPDLOG_LOGGER_DEBUG(mSLog, "Set output to {}", output);
43}
44
45void FIRFilter::Step::execute(Real time, Int timeStepCount) {
46 mFilter.step(time);
47}
48
50 return Task::List({std::make_shared<FIRFilter::Step>(*this)});
51}
52
56
58 return (mCurrentIdx + index) % mFilterLength;
59}
60
AttributePointer< Attribute< T > > Ptr
Definition Attribute.h:250
String uid()
Returns unique id.
AttributeList::Ptr mAttributes
Attribute List.
spdlog::level::level_enum Level
Definition Logger.h:33
void execute(Real time, Int timeStepCount)
Definition FIRFilter.cpp:45
void setInput(Attribute< Real >::Ptr input)
Definition FIRFilter.cpp:61
const Attribute< Real >::Ptr mOutput
Definition FIRFilter.h:32
const Attribute< Real >::Ptr mInitSample
This is never explicitely set to reference anything, so the outside code is responsible for setting u...
Definition FIRFilter.h:34
Attribute< Real >::Ptr mInput
Definition FIRFilter.h:24
std::vector< Real > mFilter
Definition FIRFilter.h:22
FIRFilter(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Definition FIRFilter.cpp:14
void initialize(Real timeStep)
Definition FIRFilter.cpp:27
Int getIndex(Int index)
Definition FIRFilter.cpp:57
Task::List getTasks()
Definition FIRFilter.cpp:49
std::vector< Real > mSignal
Definition FIRFilter.h:21
void step(Real time)
Definition FIRFilter.cpp:32
SimSignalComp(String uid, String name, Logger::Level logLevel=Logger::Level::off)
std::vector< Ptr > List
Definition Task.h:28
Logger::Log mSLog
Component logger.
std::string String
Definition Definitions.h:65
double Real
Definition Definitions.h:62
int Int
Definition Definitions.h:61