32 Real omega = 2 * PI * frequency;
33 MatrixComp susceptance = Matrix::Zero(3, 3);
35 susceptance << Complex(0, omega * (**
mCapacitance)(0, 0)),
46 (**mIntfVoltage)(0, 0) = initialSingleVoltage(1) - initialSingleVoltage(0);
49 (**mIntfVoltage)(1, 0) = Complex(voltMag * cos(voltPhase - 2. / 3. * M_PI),
50 voltMag * sin(voltPhase - 2. / 3. * M_PI));
51 (**mIntfVoltage)(2, 0) = Complex(voltMag * cos(voltPhase + 2. / 3. * M_PI),
52 voltMag * sin(voltPhase + 2. / 3. * M_PI));
56 SPDLOG_LOGGER_INFO(
mSLog,
"\n--- Initialize from power flow ---");
60 Matrix a = timeStep / 2 * (**mCapacitance).inverse();
61 Real b = timeStep * omega / 2.;
63 Matrix equivCondReal = a.inverse();
64 Matrix equivCondImag = b * equivCondReal;
66 mEquivCond << Complex(equivCondReal(0, 0), equivCondImag(0, 0)),
67 Complex(equivCondReal(0, 1), equivCondImag(0, 1)),
68 Complex(equivCondReal(0, 2), equivCondImag(0, 2)),
69 Complex(equivCondReal(1, 0), equivCondImag(1, 0)),
70 Complex(equivCondReal(1, 1), equivCondImag(1, 1)),
71 Complex(equivCondReal(1, 2), equivCondImag(1, 2)),
72 Complex(equivCondReal(2, 0), equivCondImag(2, 0)),
73 Complex(equivCondReal(2, 1), equivCondImag(2, 1)),
74 Complex(equivCondReal(2, 2), equivCondImag(2, 2));
76 Matrix mPrevVoltCoeffReal = equivCondReal;
77 Matrix mPrevVoltCoeffImag = -b * equivCondReal;
80 mPrevVoltCoeff << Complex(mPrevVoltCoeffReal(0, 0), mPrevVoltCoeffImag(0, 0)),
81 Complex(mPrevVoltCoeffReal(0, 1), mPrevVoltCoeffImag(0, 1)),
82 Complex(mPrevVoltCoeffReal(0, 2), mPrevVoltCoeffImag(0, 2)),
83 Complex(mPrevVoltCoeffReal(1, 0), mPrevVoltCoeffImag(1, 0)),
84 Complex(mPrevVoltCoeffReal(1, 1), mPrevVoltCoeffImag(1, 1)),
85 Complex(mPrevVoltCoeffReal(1, 2), mPrevVoltCoeffImag(1, 2)),
86 Complex(mPrevVoltCoeffReal(2, 0), mPrevVoltCoeffImag(2, 0)),
87 Complex(mPrevVoltCoeffReal(2, 1), mPrevVoltCoeffImag(2, 1)),
88 Complex(mPrevVoltCoeffReal(2, 2), mPrevVoltCoeffImag(2, 2));
109 if (terminalNotGrounded(0)) {
110 Math::setVectorElement(rightVector, matrixNodeIndex(0, 0),
112 Math::setVectorElement(rightVector, matrixNodeIndex(0, 1),
114 Math::setVectorElement(rightVector, matrixNodeIndex(0, 2),
117 if (terminalNotGrounded(1)) {
118 Math::setVectorElement(rightVector, matrixNodeIndex(1, 0),
120 Math::setVectorElement(rightVector, matrixNodeIndex(1, 1),
122 Math::setVectorElement(rightVector, matrixNodeIndex(1, 2),
160 if (terminalNotGrounded(1)) {
161 (**mIntfVoltage)(0, 0) =
162 Math::complexFromVectorElement(leftVector, matrixNodeIndex(1, 0));
163 (**mIntfVoltage)(1, 0) =
164 Math::complexFromVectorElement(leftVector, matrixNodeIndex(1, 1));
165 (**mIntfVoltage)(2, 0) =
166 Math::complexFromVectorElement(leftVector, matrixNodeIndex(1, 2));
168 if (terminalNotGrounded(0)) {
169 (**mIntfVoltage)(0, 0) =
171 Math::complexFromVectorElement(leftVector, matrixNodeIndex(0, 0));
172 (**mIntfVoltage)(1, 0) =
174 Math::complexFromVectorElement(leftVector, matrixNodeIndex(0, 1));
175 (**mIntfVoltage)(2, 0) =
177 Math::complexFromVectorElement(leftVector, matrixNodeIndex(0, 2));