DPsim
Loading...
Searching...
No Matches
SP_Ph1_varResSwitch.h
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
9#pragma once
10
16
17namespace CPS {
18namespace SP {
19namespace Ph1 {
24
27class varResSwitch : public MNASimPowerComp<Complex>,
28 public Base::Ph1::Switch,
30 public MNASwitchInterface,
31 public SharedFactory<varResSwitch> {
32
33protected:
36 Real mPrevRes; // previous resistance value to multiply with rate of change
37 // because we change the base value mClosedResistance & mOpenResistance to recompute the system Matrix
38 // we need to save the initialisation values to use them as target values in the transition
41
42public:
43 void setInitParameters(Real timestep);
44
47 Logger::Level logLevel = Logger::Level::off);
49 varResSwitch(String name, Logger::Level logLevel = Logger::Level::off)
50 : varResSwitch(name, name, logLevel) {}
51
53
54 // #### General ####
56 void initializeFromNodesAndTerminals(Real frequency) override;
57
58 // #### MNA section ####
60 void mnaCompInitialize(Real omega, Real timeStep,
61 Attribute<Matrix>::Ptr leftVector) override;
63 void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override;
65 void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override;
67 void mnaCompUpdateVoltage(const Matrix &leftVector) override;
69 void mnaCompUpdateCurrent(const Matrix &leftVector) override;
71 void mnaCompPostStep(Real time, Int timeStepCount,
72 Attribute<Matrix>::Ptr &leftVector) override;
74 void
76 AttributeBase::List &attributeDependencies,
77 AttributeBase::List &modifiedAttributes,
78 Attribute<Matrix>::Ptr &leftVector) override;
79
80 // #### MNA section for switch ####
82 Bool mnaIsClosed() override;
85 SparseMatrixRow &systemMatrix,
86 Int freqIdx) override;
89 Bool supportsPrecomputedSystemMatrices() const override { return false; }
90
91 // #### MNA section for variable component ####
92 Bool hasParameterChanged() override;
93};
94} // namespace Ph1
95} // namespace SP
96} // namespace CPS
std::vector< Ptr > List
Definition Attribute.h:123
AttributePointer< Attribute< T > > Ptr
Definition Attribute.h:250
Dynamic Phasor Three-Phase Switch.
String uid()
Returns unique id.
spdlog::level::level_enum Level
Definition Logger.h:33
MNASimPowerComp(String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
MNA interface to be used by switching devices.
MNA interface to be used by elements that require recomputing of the system matrix.
Bool mnaIsClosed() override
Check if switch is closed.
void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override
Stamps system matrix.
void initializeFromNodesAndTerminals(Real frequency) override
Initializes states from power flow data.
void mnaCompApplySwitchSystemMatrixStamp(Bool closed, SparseMatrixRow &systemMatrix, Int freqIdx) override
Stamps system matrix considering the defined switch position.
void mnaCompInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override
Initializes MNA specific variables.
SimPowerComp< Complex >::Ptr clone(String name) override
Returns a modified copy of the component with the given suffix added to the name and without.
varResSwitch(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Defines UID, name and log level.
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Update interface voltage from MNA system results.
Bool hasParameterChanged() override
Returns true if one of the element paramters has changed.
void setInitParameters(Real timestep)
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
add MNA post step dependencies
void mnaCompPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
MNA post step operations.
void mnaCompUpdateCurrent(const Matrix &leftVector) override
Update interface current from MNA system results.
Bool supportsPrecomputedSystemMatrices() const override
void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override
Stamps right side (source) vector.
varResSwitch(String name, Logger::Level logLevel=Logger::Level::off)
Defines name and log level.
std::shared_ptr< SimPowerComp< VarType > > Ptr
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > Matrix
Dense matrix for real numbers.
Definition Definitions.h:81
std::string String
Definition Definitions.h:65
double Real
Definition Definitions.h:62
int Int
Definition Definitions.h:61
bool Bool
Definition Definitions.h:64
Eigen::SparseMatrix< Real, Eigen::RowMajor > SparseMatrixRow
Sparse matrix for real numbers (row major).
Definition Definitions.h:74