DPsim
Loading...
Searching...
No Matches
SP_Ph1_Switch.h
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
11#include <dpsim-models/Base/Base_Ph1_Switch.h>
12#include <dpsim-models/Definitions.h>
13#include <dpsim-models/Logger.h>
14#include <dpsim-models/MNASimPowerComp.h>
15#include <dpsim-models/Solver/MNASwitchInterface.h>
16#include <dpsim-models/Solver/MNAVariableCompInterface.h>
17
18namespace CPS {
19namespace SP {
20namespace Ph1 {
25class Switch : public MNASimPowerComp<Complex>,
26 public Base::Ph1::Switch,
27 public SharedFactory<Switch>,
29 public MNASwitchInterface {
30
31public:
33 Switch(String uid, String name, Logger::Level loglevel = Logger::Level::off);
35 Switch(String name, Logger::Level logLevel = Logger::Level::off)
36 : Switch(name, name, logLevel) {}
37
38 SimPowerComp<Complex>::Ptr clone(String name) override;
39
40 // #### General ####
42 void initializeFromNodesAndTerminals(Real frequency) override;
43
44 // #### General MNA section ####
45 void mnaCompInitialize(Real omega, Real timeStep,
46 Attribute<Matrix>::Ptr leftVector) override;
48 void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override;
50 void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override;
52 void mnaCompUpdateVoltage(const Matrix &leftVector) override;
54 void mnaCompUpdateCurrent(const Matrix &leftVector) override;
56 void mnaCompPostStep(Real time, Int timeStepCount,
57 Attribute<Matrix>::Ptr &leftVector) override;
59 void
60 mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies,
61 AttributeBase::List &attributeDependencies,
62 AttributeBase::List &modifiedAttributes,
63 Attribute<Matrix>::Ptr &leftVector) override;
64
65 // #### MNA section for switch ####
67 Bool mnaIsClosed() override;
70 SparseMatrixRow &systemMatrix,
71 Int freqIdx) override;
72
73 // #### MNA section for variable component ####
74 Bool hasParameterChanged() override;
75};
76} // namespace Ph1
77} // namespace SP
78} // namespace CPS
Dynamic Phasor Three-Phase Switch.
String uid()
Returns unique id.
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 mnaCompApplySwitchSystemMatrixStamp(Bool closed, SparseMatrixRow &systemMatrix, Int freqIdx) override
Stamps system matrix considering the defined switch position.
void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override
Stamps right side (source) vector.
SimPowerComp< Complex >::Ptr clone(String name) override
Returns a modified copy of the component with the given suffix added to the name and without.
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
Add MNA post step dependencies.
Switch(String uid, String name, Logger::Level loglevel=Logger::Level::off)
Defines UID, name, component parameters and logging level.
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Update interface voltage from MNA system result.
Switch(String name, Logger::Level logLevel=Logger::Level::off)
Defines name, component parameters and logging level.
void mnaCompUpdateCurrent(const Matrix &leftVector) override
Update interface current from MNA system result.
void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override
Stamps system matrix.
void mnaCompPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
MNA post step operations.
Bool hasParameterChanged() override
Returns true if one of the element paramters has changed.
void initializeFromNodesAndTerminals(Real frequency) override
Initializes component from power flow data.