DPsim
Loading...
Searching...
No Matches
DP_Ph1_Transformer.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
17
18namespace CPS {
19namespace DP {
20namespace Ph1 {
22class Transformer : public CompositePowerComp<Complex>,
23 public SharedFactory<Transformer>,
25private:
27 std::shared_ptr<DP::Ph1::Resistor> mSubResistor;
29 std::shared_ptr<DP::Ph1::Inductor> mSubInductor;
30
32 std::shared_ptr<DP::Ph1::Resistor> mSubResistor2;
34 std::shared_ptr<DP::Ph1::Inductor> mSubInductor2;
36 std::shared_ptr<DP::Ph1::Resistor> mSubMagnetizingResistor;
38 std::shared_ptr<DP::Ph1::Inductor> mSubMagnetizingInductor;
39
41 Real mMagnetizingResistance;
43 Real mMagnetizingInductance;
45 Real mNoLoadCurrent = 0.01;
47 Real mNoLoadLoss = 1e-3;
48
50 Bool mWithResistiveLosses;
51
53 UInt mReferenceTerminal = 0;
55 UInt nonReferenceTerminal() const { return 1 - mReferenceTerminal; }
57 Complex mRatioFromReference;
59 Real mOrientationSign = 1.;
61 WindingReference mReferenceWinding = WindingReference::Auto;
63 void resolveWindingRoles();
65
66public:
68 void setMagnetizingBranch(Real noLoadCurrent, Real noLoadLoss) {
69 mNoLoadCurrent = noLoadCurrent;
70 mNoLoadLoss = noLoadLoss;
71 }
72
73 void setReferenceWinding(WindingReference referenceWinding) {
74 mReferenceWinding = referenceWinding;
75 }
76
78 Logger::Level logLevel = Logger::Level::off,
79 Bool withResistiveLosses = false);
81 Transformer(String name, Logger::Level logLevel = Logger::Level::off)
82 : Transformer(name, name, logLevel) {}
83
85
86 // #### General ####
88 void setParameters(Real nomVoltagePrimary, Real nomVoltageSecondary,
89 Real ratioAbs, Real ratioPhase, Real resistance,
90 Real inductance);
92 void setParameters(Real nomVoltagePrimary, Real nomVoltageSecondary,
93 Real ratedPower, Real ratioAbs, Real ratioPhase,
94 Real resistance, Real inductance);
96 void createSubComponents() override;
98 void initializeParentFromNodesAndTerminals(Real frequency) override;
99
100 // #### MNA section ####
102 void mnaParentInitialize(Real omega, Real timeStep,
103 Attribute<Matrix>::Ptr leftVector) override;
105 void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override;
107 void mnaCompUpdateCurrent(const Matrix &leftVector) override;
109 void mnaCompUpdateVoltage(const Matrix &leftVector) override;
111 void mnaParentPreStep(Real time, Int timeStepCount) override;
113 void mnaParentPostStep(Real time, Int timeStepCount,
114 Attribute<Matrix>::Ptr &leftVector) override;
117 AttributeBase::List &prevStepDependencies,
118 AttributeBase::List &attributeDependencies,
119 AttributeBase::List &modifiedAttributes) override;
121 void
123 AttributeBase::List &attributeDependencies,
124 AttributeBase::List &modifiedAttributes,
125 Attribute<Matrix>::Ptr &leftVector) override;
126};
127} // namespace Ph1
128} // namespace DP
129} // namespace CPS
std::vector< Ptr > List
Definition Attribute.h:123
AttributePointer< Attribute< T > > Ptr
Definition Attribute.h:249
CompositePowerComp(String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
void setReferenceWinding(WindingReference referenceWinding)
Selects the winding the nameplate impedance is referred to.
Transformer(String name, Logger::Level logLevel=Logger::Level::off)
Defines name and logging level.
Transformer(String uid, String name, Logger::Level logLevel=Logger::Level::off, Bool withResistiveLosses=false)
Defines UID, name and logging level.
void setParameters(Real nomVoltagePrimary, Real nomVoltageSecondary, Real ratioAbs, Real ratioPhase, Real resistance, Real inductance)
Defines component parameters.
void createSubComponents() override
Constructs and registers MNA subcomponents (incl. terminal swap); idempotent.
void mnaCompApplySystemMatrixStamp(SparseMatrixRow &systemMatrix) override
Stamps system matrix.
void setMagnetizingBranch(Real noLoadCurrent, Real noLoadLoss)
True after createSubComponents() runs; prevents double-construction.
void mnaParentPreStep(Real time, Int timeStepCount) override
MNA pre step operations.
void mnaParentInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override
Initializes internal variables of the component.
void initializeParentFromNodesAndTerminals(Real frequency) override
Initializes component from power flow data.
void mnaParentAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
Add MNA post step dependencies.
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Updates internal voltage variable of the component.
SimPowerComp< Complex >::Ptr clone(String name) override
DEPRECATED: Delete method.
void mnaCompUpdateCurrent(const Matrix &leftVector) override
Updates internal current variable of the component.
void mnaParentAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override
Add MNA pre step dependencies.
void mnaParentPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
MNA post step operations.
String uid()
Returns unique id.
spdlog::level::level_enum Level
Definition Logger.h:33
std::shared_ptr< SimPowerComp< VarType > > Ptr
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > Matrix
Dense matrix for real numbers.
Definition Definitions.h:79
std::string String
Definition Definitions.h:63
double Real
Definition Definitions.h:60
int Int
Definition Definitions.h:59
std::complex< Real > Complex
Definition Definitions.h:61
WindingReference
bool Bool
Definition Definitions.h:62
unsigned int UInt
Definition Definitions.h:58
Eigen::SparseMatrix< Real, Eigen::RowMajor > SparseMatrixRow
Sparse matrix for real numbers (row major).
Definition Definitions.h:72