15 mPhaseType = PhaseType::ABC;
16 mConductance = Matrix::Zero(3, 3);
17 mSusceptance = Matrix::Zero(3, 3);
18 SPDLOG_LOGGER_INFO(
mSLog,
"Create {} of type {}", this->
type(), name);
40 Real omega = 2. * PI * frequency;
41 MatrixComp admittance = Matrix::Zero(3, 3);
42 admittance << Complex(mConductance(0, 0), mSusceptance(0, 0)), 0, 0, 0,
43 Complex(mConductance(1, 1), mSusceptance(1, 1)), 0, 0, 0,
44 Complex(mConductance(2, 2), mSusceptance(2, 2));
45 MatrixComp vInitABC = MatrixComp::Zero(3, 1);
46 vInitABC(0, 0) = RMS3PH_TO_PEAK1PH *
mTerminals[0]->initialSingleVoltage();
47 vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
48 vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
53 if (mConductance(0, 0) > 0) {
56 mSubResistor->connect({SimNode::GND,
mTerminals[0]->node()});
57 mSubResistor->setParameters(mConductance.inverse());
59 mSubResistor->initializeFromNodesAndTerminals(frequency);
61 MNA_SUBCOMP_TASK_ORDER::TASK_BEFORE_PARENT,
false);
64 if (mSusceptance(0, 0) > 0) {
66 std::make_shared<EMT::Ph3::Capacitor>(**
mName +
"_cap",
mLogLevel);
67 mSubCapacitor->setParameters(mSusceptance * (1 / omega));
68 mSubCapacitor->connect({SimNode::GND,
mTerminals[0]->node()});
70 mSubCapacitor->initializeFromNodesAndTerminals(frequency);
72 MNA_SUBCOMP_TASK_ORDER::TASK_BEFORE_PARENT,
73 MNA_SUBCOMP_TASK_ORDER::TASK_BEFORE_PARENT,
true);
76 SPDLOG_LOGGER_INFO(
mSLog,
77 "\n--- Initialization from powerflow ---"
78 "\nVoltage across: {:s}"
80 "\nTerminal voltage: {:s}"
81 "\n--- Initialization from powerflow finished ---",
84 Logger::phasorToString(initialSingleVoltage(0)));
99 AttributeBase::List &prevStepDependencies,
100 AttributeBase::List &attributeDependencies,
101 AttributeBase::List &modifiedAttributes,
102 Attribute<Matrix>::Ptr &leftVector) {
103 attributeDependencies.push_back(leftVector);
115 (**mIntfVoltage)(0, 0) =
116 Math::realFromVectorElement(leftVector, matrixNodeIndex(0, 0));
117 (**mIntfVoltage)(1, 0) =
118 Math::realFromVectorElement(leftVector, matrixNodeIndex(0, 1));
119 (**mIntfVoltage)(2, 0) =
120 Math::realFromVectorElement(leftVector, matrixNodeIndex(0, 2));
void mnaParentAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) final
add MNA post-step dependencies
Shunt(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Defines UID, name, component parameters and logging level.