DPsim
EMT_Ph3_SeriesSwitch.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/MNASimPowerComp.h>
13 #include <dpsim-models/Solver/MNAInterface.h>
14 #include <dpsim-models/Solver/MNASwitchInterface.h>
15 
16 namespace CPS {
17 namespace EMT {
18 namespace Ph3 {
25 class SeriesSwitch : public MNASimPowerComp<Real>,
26  public Base::Ph1::Switch,
27  public SharedFactory<SeriesSwitch>,
28  public MNASwitchInterface {
29 
30 public:
32  SeriesSwitch(String uid, String name,
33  Logger::Level loglevel = Logger::Level::off);
35  SeriesSwitch(String name, Logger::Level logLevel = Logger::Level::off)
36  : SeriesSwitch(name, name, logLevel) {}
37 
38  // #### General ####
40  SimPowerComp<Real>::Ptr clone(String name) override;
42  void initializeFromNodesAndTerminals(Real frequency) override;
43 
44  // #### General MNA section ####
46  void mnaCompInitialize(Real omega, Real timeStep,
47  Attribute<Matrix>::Ptr leftVector) override;
49  void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override;
51  void mnaCompUpdateVoltage(const Matrix &leftVector) override;
53  void mnaCompUpdateCurrent(const Matrix &leftVector) override;
54 
55  // #### Switch specific MNA section ####
57  Bool mnaIsClosed() override;
59  void mnaCompApplySwitchSystemMatrixStamp(Bool closed,
60  SparseMatrixRow &systemMatrix,
61  Int freqIdx) override;
62  void mnaCompPostStep(Real time, Int timeStepCount,
63  Attribute<Matrix>::Ptr &leftVector) override;
64 
66  void
67  mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies,
68  AttributeBase::List &attributeDependencies,
69  AttributeBase::List &modifiedAttributes,
70  Attribute<Matrix>::Ptr &leftVector) override;
71 };
72 } // namespace Ph3
73 } // namespace EMT
74 } // namespace CPS
Dynamic Phasor Three-Phase Switch.
EMT three-phase switch.
Bool mnaIsClosed() override
Check if switch is closed.
void mnaCompUpdateCurrent(const Matrix &leftVector) override
Update interface voltage from MNA system results.
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
Add MNA post step dependencies.
SeriesSwitch(String uid, String name, Logger::Level loglevel=Logger::Level::off)
Defines UID, name and log level.
void initializeFromNodesAndTerminals(Real frequency) override
Initializes states from power flow data.
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Update interface voltage from MNA system results.
SeriesSwitch(String name, Logger::Level logLevel=Logger::Level::off)
Defines name and log level.
void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override
Stamps system matrix.
SimPowerComp< Real >::Ptr clone(String name) override
Return new instance with the same parameters.
void mnaCompInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override
Initializes MNA specific variables.
void mnaCompApplySwitchSystemMatrixStamp(Bool closed, SparseMatrixRow &systemMatrix, Int freqIdx) override
Stamps system matrix considering the defined switch position.
String uid()
Returns unique id.
Base class for all MNA components that are transmitting power.
MNA interface to be used by switching devices.
Base class for all components that are transmitting power.
Definition: SimPowerComp.h:17