Commit 89663e9b authored by Jan Dinkelbach's avatar Jan Dinkelbach Committed by Markus Mirz
Browse files

adaptions to use in EMT_Ph3 models phase-to-ground peak variables with...

adaptions to use in EMT_Ph3 models phase-to-ground peak variables with initialization from phase-to-phase RMS variables
parent d9c39111
......@@ -44,6 +44,8 @@
#define SHIFT_TO_PHASE_B Complex(cos(-2 * M_PI / 3), sin(-2 * M_PI / 3))
#define SHIFT_TO_PHASE_C Complex(cos(2 * M_PI / 3), sin(2 * M_PI / 3))
#define RMS3PH_TO_PEAK1PH sqrt(2./3.)
#define PEAK1PH_TO_RMS3PH sqrt(3./2.)
namespace CPS {
......
......@@ -10,8 +10,8 @@
#include <cps/SimPowerComp.h>
#include <cps/Solver/MNAInterface.h>
#include <cps/EMT/EMT_Ph3_RxLine.h>
#include <cps/EMT/EMT_Ph3_Inductor.h>
#include <cps/EMT/EMT_Ph3_Resistor.h>
#include <cps/Base/Base_Ph3_Transformer.h>
namespace CPS {
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::AvVoltSourceInverterStateSpace::AvVoltSourceInverterStateSpace(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel){
setTerminalNumber(2);
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::AvVoltageSourceInverterDQ::AvVoltageSourceInverterDQ(String uid, String name, Logger::Level logLevel, Bool withTrafo) :
Base::AvVoltageSourceInverterDQ(uid, name, logLevel),
SimPowerComp<Real>(uid,name,logLevel),
......
......@@ -38,7 +38,7 @@ void EMT::Ph3::Capacitor::initializeFromPowerflow(Real frequency) {
Complex(0, omega * mCapacitance(2, 0)), Complex(0, omega * mCapacitance(2, 1)), Complex(0, omega * mCapacitance(2, 2));
MatrixComp vInitABC = Matrix::Zero(3, 1);
vInitABC(0, 0) = initialSingleVoltage(1) - initialSingleVoltage(0);
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(1) - RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
mIntfVoltage = vInitABC.real();
......@@ -54,8 +54,8 @@ void EMT::Ph3::Capacitor::initializeFromPowerflow(Real frequency) {
"\n--- Initialization from powerflow finished ---",
Logger::matrixToString(mIntfVoltage),
Logger::matrixToString(mIntfCurrent),
Logger::phasorToString(initialSingleVoltage(0)),
Logger::phasorToString(initialSingleVoltage(1)));
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(1)));
}
void EMT::Ph3::Capacitor::mnaInitialize(Real omega, Real timeStep, Attribute<Matrix>::Ptr leftVector) {
......
......@@ -11,6 +11,8 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::ControlledVoltageSource::ControlledVoltageSource(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
......
......@@ -38,7 +38,7 @@ void EMT::Ph3::Inductor::initializeFromPowerflow(Real frequency) {
Complex(0, omega * mInductance(2, 0)), Complex(0, omega * mInductance(2, 1)), Complex(0, omega * mInductance(2, 2));
MatrixComp vInitABC = Matrix::Zero(3, 1);
vInitABC(0, 0) = initialSingleVoltage(1) - initialSingleVoltage(0);
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(1) - RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
mIntfVoltage = vInitABC.real();
......@@ -55,8 +55,8 @@ void EMT::Ph3::Inductor::initializeFromPowerflow(Real frequency) {
"\n--- Initialization from powerflow finished ---",
Logger::matrixToString(mIntfVoltage),
Logger::matrixToString(mIntfCurrent),
Logger::phasorToString(initialSingleVoltage(0)),
Logger::phasorToString(initialSingleVoltage(1)));
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(1)));
}
void EMT::Ph3::Inductor::mnaInitialize(Real omega, Real timeStep, Attribute<Matrix>::Ptr leftVector) {
......
......@@ -43,22 +43,21 @@ void EMT::Ph3::NetworkInjection::initializeFromPowerflow(Real frequency) {
mVoltageRef = attribute<MatrixComp>("V_ref");
mSrcFreq = attribute<Real>("f_src");
mSrcFreq->set(frequency);
//if (mVoltageRef->) {
MatrixComp vInitABC = MatrixComp::Zero(3, 1);
vInitABC(0, 0) = initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
//mVoltageRef->set(Complex(std::abs(initialSingleVoltage(0).real()), std::abs(initialSingleVoltage(0).imag())));
mVoltageRef->set(vInitABC);
//}
MatrixComp vInitABC = MatrixComp::Zero(3, 1);
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
mVoltageRef->set(vInitABC);
mSLog->info(
"\n--- Initialization from node voltages ---"
"\nReference voltage: {:s}"
"\nTerminal 0 voltage: {:s}"
"\n--- Initialization from node voltages ---",
Logger::matrixCompToString(mVoltageRef->get()),
Logger::phasorToString(initialSingleVoltage(0)));
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)));
mSLog->flush();
}
......@@ -74,19 +73,7 @@ void EMT::Ph3::NetworkInjection::mnaInitialize(Real omega, Real timeStep, Attrib
mRightVector = Matrix::Zero(leftVector->get().rows(), 1);
}
//void EMT::Ph3::NetworkInjection::mnaInitializeHarm(Real omega, Real timeStep, std::vector<Attribute<Matrix>::Ptr> leftVectors) {
// MNAInterface::mnaInitialize(omega, timeStep);
// updateMatrixNodeIndices();
//
// mIntfVoltage(0, 0) = mVoltageRef->get();
//
// mMnaTasks.push_back(std::make_shared<MnaPreStepHarm>(*this));
// mMnaTasks.push_back(std::make_shared<MnaPostStepHarm>(*this, leftVectors));
// mRightVector = Matrix::Zero(leftVectors[0]->get().rows(), mNumFreqs);
//}
void EMT::Ph3::NetworkInjection::mnaApplySystemMatrixStamp(Matrix& systemMatrix) {
// TODO: error when setMatrixElement applied here
Math::addToMatrixElement(systemMatrix, mVirtualNodes[0]->matrixNodeIndex(PhaseType::A), matrixNodeIndex(0, 0), 1);
Math::addToMatrixElement(systemMatrix, matrixNodeIndex(0, 0), mVirtualNodes[0]->matrixNodeIndex(PhaseType::A), 1);
Math::addToMatrixElement(systemMatrix, mVirtualNodes[0]->matrixNodeIndex(PhaseType::B), matrixNodeIndex(0, 1), 1);
......@@ -104,14 +91,6 @@ void EMT::Ph3::NetworkInjection::mnaApplySystemMatrixStamp(Matrix& systemMatrix)
mSLog->flush();
}
//void EMT::Ph3::NetworkInjection::mnaApplySystemMatrixStampHarm(Matrix& systemMatrix, Int freqIdx) {
// Math::setMatrixElement(systemMatrix, mVirtualNodes[0]->matrixNodeIndex(), matrixNodeIndex(0), Complex(1, 0));
// Math::setMatrixElement(systemMatrix, matrixNodeIndex(0), mVirtualNodes[0]->matrixNodeIndex(), Complex(1, 0));
// mSLog->info("-- Stamp frequency {:d} ---", freqIdx);
// mSLog->info("Add {:f} to system at ({:d},{:d})", 1., matrixNodeIndex(0), mVirtualNodes[0]->matrixNodeIndex());
// mSLog->info("Add {:f} to system at ({:d},{:d})", 1., mVirtualNodes[0]->matrixNodeIndex(), matrixNodeIndex(0));
//}
void EMT::Ph3::NetworkInjection::mnaApplyRightSideVectorStamp(Matrix& rightVector) {
Math::setVectorElement(rightVector, mVirtualNodes[0]->matrixNodeIndex(PhaseType::A), mIntfVoltage(0, 0));
Math::setVectorElement(rightVector, mVirtualNodes[0]->matrixNodeIndex(PhaseType::B), mIntfVoltage(1, 0));
......@@ -128,14 +107,6 @@ void EMT::Ph3::NetworkInjection::mnaApplyRightSideVectorStamp(Matrix& rightVecto
mSLog->flush();
}
//void EMT::Ph3::NetworkInjection::mnaApplyRightSideVectorStampHarm(Matrix& rightVector) {
// for (UInt freq = 0; freq < mNumFreqs; freq++) {
// // TODO: Is this correct with two nodes not gnd?
// Math::setVectorElement(rightVector, mVirtualNodes[0]->matrixNodeIndex(), mIntfVoltage(0, freq), 1, 0, freq);
// SPDLOG_LOGGER_DEBUG(mSLog, "Add {:s} to source vector at {:d}",
// Logger::complexToString(mIntfVoltage(0, freq)), mVirtualNodes[0]->matrixNodeIndex());
// }
//}
void EMT::Ph3::NetworkInjection::updateVoltage(Real time) {
if (mSrcFreq->get() < 0) {
......@@ -156,51 +127,13 @@ void EMT::Ph3::NetworkInjection::MnaPreStep::execute(Real time, Int timeStepCoun
mNetworkInjection.mnaApplyRightSideVectorStamp(mNetworkInjection.mRightVector);
}
//void EMT::Ph3::NetworkInjection::MnaPreStepHarm::execute(Real time, Int timeStepCount) {
// mNetworkInjection.updateVoltage(time);
// mNetworkInjection.mnaApplyRightSideVectorStampHarm(mNetworkInjection.mRightVector);
//}
void EMT::Ph3::NetworkInjection::MnaPostStep::execute(Real time, Int timeStepCount) {
mNetworkInjection.mnaUpdateCurrent(*mLeftVector);
}
//void EMT::Ph3::NetworkInjection::MnaPostStepHarm::execute(Real time, Int timeStepCount) {
// mNetworkInjection.mnaUpdateCurrent(*mLeftVectors[0]);
//}
void EMT::Ph3::NetworkInjection::mnaUpdateCurrent(const Matrix& leftVector) {
mIntfCurrent(0, 0) = Math::realFromVectorElement(leftVector, mVirtualNodes[0]->matrixNodeIndex(PhaseType::A));
mIntfCurrent(1, 0) = Math::realFromVectorElement(leftVector, mVirtualNodes[0]->matrixNodeIndex(PhaseType::B));
mIntfCurrent(2, 0) = Math::realFromVectorElement(leftVector, mVirtualNodes[0]->matrixNodeIndex(PhaseType::C));
}
//void EMT::Ph3::NetworkInjection::daeResidual(double ttime, const double state[], const double dstate_dt[], double resid[], std::vector<int>& off) {
// /* new state vector definintion:
// state[0]=node0_voltage
// state[1]=node1_voltage
// ....
// state[n]=noden_voltage
// state[n+1]=component0_voltage
// state[n+2]=component0_inductance (not yet implemented)
// ...
// state[m-1]=componentm_voltage
// state[m]=componentm_inductance
// */
//
// int Pos1 = matrixNodeIndex(0);
// int Pos2 = matrixNodeIndex(1);
// int c_offset = off[0] + off[1]; //current offset for component
// int n_offset_1 = c_offset + Pos1 + 1;// current offset for first nodal equation
// int n_offset_2 = c_offset + Pos2 + 1;// current offset for second nodal equation
// resid[c_offset] = (state[Pos2] - state[Pos1]) - state[c_offset]; // Voltage equation for Resistor
// //resid[++c_offset] = ; //TODO : add inductance equation
// resid[n_offset_1] += mIntfCurrent(0, 0).real();
// resid[n_offset_2] += mIntfCurrent(0, 0).real();
// off[1] += 1;
//}
//
//Complex EMT::Ph3::NetworkInjection::daeInitialize() {
// mIntfVoltage(0, 0) = mVoltageRef->get();
// return mVoltageRef->get();
//}
......@@ -58,7 +58,7 @@ void EMT::Ph3::PiLine::initializeFromPowerflow(Real frequency) {
Complex(mSeriesRes(2, 0), omega * mSeriesInd(2, 0)), Complex(mSeriesRes(2, 1), omega * mSeriesInd(2, 1)), Complex(mSeriesRes(2, 2), omega * mSeriesInd(2, 2));
MatrixComp vInitABC = MatrixComp::Zero(3, 1);
vInitABC(0, 0) = initialSingleVoltage(1) - initialSingleVoltage(0);
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(1) - RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
MatrixComp iInit = impedance.inverse() * vInitABC;
......@@ -68,11 +68,11 @@ void EMT::Ph3::PiLine::initializeFromPowerflow(Real frequency) {
// Initialization of virtual node
// Initial voltage of phase B,C is set after A
MatrixComp vInitTerm0 = MatrixComp::Zero(3, 1);
vInitTerm0(0, 0) = initialSingleVoltage(0);
vInitTerm0(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitTerm0(1, 0) = vInitTerm0(0, 0) * SHIFT_TO_PHASE_B;
vInitTerm0(2, 0) = vInitTerm0(0, 0) * SHIFT_TO_PHASE_C;
mVirtualNodes[0]->setInitialVoltage(vInitTerm0 + mSeriesRes * iInit);
mVirtualNodes[0]->setInitialVoltage(PEAK1PH_TO_RMS3PH*(vInitTerm0 + mSeriesRes * iInit));
// Create series sub components
mSubSeriesResistor = std::make_shared<EMT::Ph3::Resistor>(mName + "_res", mLogLevel);
......@@ -139,8 +139,8 @@ void EMT::Ph3::PiLine::initializeFromPowerflow(Real frequency) {
"\n--- Initialization from powerflow finished ---",
Logger::matrixToString(mIntfVoltage),
Logger::matrixToString(mIntfCurrent),
Logger::phasorToString(initialSingleVoltage(0)),
Logger::phasorToString(initialSingleVoltage(1)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(1)),
Logger::phasorToString(mVirtualNodes[0]->initialSingleVoltage()));
mSLog->flush();
}
......
......@@ -59,28 +59,28 @@ void EMT::Ph3::RXLoad::initialize(Matrix frequencies) {
void EMT::Ph3::RXLoad::initializeFromPowerflow(Real frequency) {
checkForUnconnectedTerminals();
if (initPowerFromTerminal) {
mActivePower = Matrix::Zero(3, 3);
mActivePower(0, 0) = mTerminals[0]->singleActivePower();
mActivePower(1, 1) = mTerminals[0]->singleActivePower();
mActivePower(2, 2) = mTerminals[0]->singleActivePower();
mReactivePower = Matrix::Zero(3, 3);
mReactivePower(0, 0) = mTerminals[0]->singleReactivePower();
mReactivePower(1, 1) = mTerminals[0]->singleReactivePower();
mReactivePower(2, 2) = mTerminals[0]->singleReactivePower();
// complex power
mPower = MatrixComp::Zero(3, 3);
mPower(0, 0) = { mActivePower(0, 0), mReactivePower(0, 0) };
mPower(1, 1) = { mActivePower(1, 1), mReactivePower(1, 1) };
mPower(2, 2) = { mActivePower(2, 2), mReactivePower(2, 2) };
mNomVoltage = std::abs(mTerminals[0]->initialSingleVoltage());
if (initPowerFromTerminal) {
mActivePower = Matrix::Zero(3, 3);
mActivePower(0, 0) = mTerminals[0]->singleActivePower() / 3.;
mActivePower(1, 1) = mTerminals[0]->singleActivePower() / 3.;
mActivePower(2, 2) = mTerminals[0]->singleActivePower() / 3.;
mReactivePower = Matrix::Zero(3, 3);
mReactivePower(0, 0) = mTerminals[0]->singleReactivePower() / 3.;
mReactivePower(1, 1) = mTerminals[0]->singleReactivePower() / 3.;
mReactivePower(2, 2) = mTerminals[0]->singleReactivePower() / 3.;
// complex power
mPower = MatrixComp::Zero(3, 3);
mPower(0, 0) = { mActivePower(0, 0), mReactivePower(0, 0) };
mPower(1, 1) = { mActivePower(1, 1), mReactivePower(1, 1) };
mPower(2, 2) = { mActivePower(2, 2), mReactivePower(2, 2) };
mNomVoltage = std::abs(mTerminals[0]->initialSingleVoltage());
}
if (mActivePower(0,0) != 0) {
mResistance = std::pow(mNomVoltage, 2) * mActivePower.inverse();
mResistance = std::pow(mNomVoltage/sqrt(3), 2) * mActivePower.inverse();
mConductance = mResistance.inverse();
mSubResistor = std::make_shared<EMT::Ph3::Resistor>(mName + "_res", mLogLevel);
mSubResistor->setParameters(mResistance);
......@@ -90,7 +90,7 @@ void EMT::Ph3::RXLoad::initializeFromPowerflow(Real frequency) {
}
if (mReactivePower(0, 0) != 0)
mReactance = std::pow(mNomVoltage, 2) * mReactivePower.inverse();
mReactance = std::pow(mNomVoltage/sqrt(3), 2) * mReactivePower.inverse();
else
mReactance = Matrix::Zero(0, 0);
......@@ -114,7 +114,7 @@ void EMT::Ph3::RXLoad::initializeFromPowerflow(Real frequency) {
}
MatrixComp vInitABC = MatrixComp::Zero(3, 1);
vInitABC(0, 0) = mTerminals[0]->initialSingleVoltage();
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * mTerminals[0]->initialSingleVoltage();
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
mIntfVoltage = vInitABC.real();
......@@ -123,6 +123,7 @@ void EMT::Ph3::RXLoad::initializeFromPowerflow(Real frequency) {
// v i^T* = S
// v^T v i^T* = v^T S
// i^T*= (|v|^2)^(-1) v^T S
Complex v_ = vInitABC(0, 0)*vInitABC(0, 0) + vInitABC(1, 0)*vInitABC(1, 0) + vInitABC(2, 0)*vInitABC(2, 0);
MatrixComp rhs_ = Complex(1, 0) / v_ * vInitABC.transpose() * mPower;
iInitABC = rhs_.conjugate().transpose();
......@@ -140,7 +141,7 @@ void EMT::Ph3::RXLoad::initializeFromPowerflow(Real frequency) {
"\n--- Initialization from powerflow finished ---",
Logger::matrixToString(mIntfVoltage),
Logger::matrixToString(mIntfCurrent),
Logger::phasorToString(initialSingleVoltage(0)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)),
Logger::matrixToString(mActivePower),
Logger::matrixToString(mReactivePower),
Logger::matrixToString(mResistance),
......
......@@ -31,7 +31,7 @@ void EMT::Ph3::Resistor::initializeFromPowerflow(Real frequency) {
// IntfVoltage initialization for each phase
MatrixComp vInitABC = Matrix::Zero(3, 1);
vInitABC(0, 0) = initialSingleVoltage(1) - initialSingleVoltage(0);
vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(1) - RMS3PH_TO_PEAK1PH * initialSingleVoltage(0);
vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
mIntfVoltage = vInitABC.real();
......@@ -47,8 +47,8 @@ void EMT::Ph3::Resistor::initializeFromPowerflow(Real frequency) {
"\n--- Initialization from powerflow finished ---",
Logger::matrixToString(mIntfVoltage),
Logger::matrixToString(mIntfCurrent),
Logger::phasorToString(initialSingleVoltage(0)),
Logger::phasorToString(initialSingleVoltage(1)));
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(0)),
Logger::phasorToString(RMS3PH_TO_PEAK1PH * initialSingleVoltage(1)));
}
void EMT::Ph3::Resistor::mnaInitialize(Real omega, Real timeStep, Attribute<Matrix>::Ptr leftVector) {
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::RxLine::RxLine(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
mPhaseType = PhaseType::ABC;
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SeriesResistor::SeriesResistor(String uid, String name,
Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SeriesSwitch::SeriesSwitch(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
mPhaseType = PhaseType::ABC;
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::Switch::Switch(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
setTerminalNumber(2);
......
......@@ -10,6 +10,8 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SynchronGeneratorDQ::SynchronGeneratorDQ(String uid, String name, Logger::Level logLevel)
: SimPowerComp<Real>(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SynchronGeneratorDQODE::SynchronGeneratorDQODE(String uid, String name, Logger::Level logLevel)
: SynchronGeneratorDQ(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
}
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SynchronGeneratorDQSmpl::SynchronGeneratorDQSmpl(String name,
Real nomPower, Real nomVolt, Real nomFreq, Int poleNumber, Real nomFieldCur,
Real Rs, Real Ll, Real Lmd, Real Lmd0, Real Lmq, Real Lmq0,
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SynchronGeneratorDQSmplCompSource::SynchronGeneratorDQSmplCompSource(String name,
Real nomPower, Real nomVolt, Real nomFreq, Int poleNumber, Real nomFieldCur,
Real Rs, Real Ll, Real Lmd, Real Lmd0, Real Lmq, Real Lmq0,
......
......@@ -10,6 +10,9 @@
using namespace CPS;
// !!! TODO: Adaptions to use in EMT_Ph3 models phase-to-ground peak variables
// !!! with initialization from phase-to-phase RMS variables
EMT::Ph3::SynchronGeneratorDQTrapez::SynchronGeneratorDQTrapez(String uid, String name, Logger::Level logLevel)
: SynchronGeneratorDQ(uid, name, logLevel), TopologicalPowerComp(uid, name, logLevel) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment