46 std::make_shared<DP::Ph1::Switch>(**
mName +
"_Lswitch",
mLogLevel);
61 std::make_shared<DP::Ph1::Switch>(**
mName +
"_Cswitch",
mLogLevel);
71 Real omega = 2. *
PI * frequency;
73 Real LInit = 1e6 / omega;
74 Real CInit = 1e-6 / omega;
81 Complex impedance = LImpedance * CImpedance / (LImpedance + CImpedance);
84 (**mIntfCurrent)(0, 0) = (**
mIntfVoltage)(0, 0) / impedance;
91 SPDLOG_LOGGER_INFO(
mSLog,
"Using Mechanical Model");
94 SPDLOG_LOGGER_INFO(
mSLog,
95 "\n --- Parameters ---"
96 "\n Controller: T = {} K = {}"
97 "\n Reference Voltage {} [kV]"
98 "\n Qmax = {} [var] -> BN = {} [S]"
99 "\n Bmax = {} Bmin = {} [p.u.]"
105 (**mIntfVoltage)(0, 0) - LImpedance * (**
mIntfCurrent)(0, 0);
108 (**mIntfVoltage)(0, 0) - CImpedance * (**
mIntfCurrent)(0, 0);
114 SPDLOG_LOGGER_INFO(
mSLog,
115 "\n--- Initialization from powerflow ---"
117 "\nVoltage across: {:s}"
119 "\nTerminal 0 voltage: {:s}"
120 "\n--- Initialization from powerflow finished ---",
153 attributeDependencies.push_back(leftVector);
172 (**mIntfVoltage)(0, 0) =
177 (**mIntfCurrent)(0, 0) = 0;
178 (**mIntfCurrent)(0, 0) +=
mSubInductor->intfCurrent()(0, 0);
179 (**mIntfCurrent)(0, 0) +=
mSubCapacitor->intfCurrent()(0, 0);
213 SPDLOG_LOGGER_INFO(
mSLog,
"Disconnect SVC because of overvoltage at {}",
237 Real B = (1 / (1 + Fac1)) *
253 Real inductance = 1 / (omega *
B *
mBN);
265 Real capacitance =
B *
mBN / (-omega);
311 SPDLOG_LOGGER_INFO(
mSLog,
313 "\nDecreasing Tap. Reason: Undervoltage"
314 "\nNew Tap Position: {}",
321 SPDLOG_LOGGER_INFO(
mSLog,
323 "\nIncreasing Tap. Reason: Overvoltag"
324 "\nNew Tap Position: {}",
334 SPDLOG_LOGGER_INFO(
mSLog,
"New inductance: {}", inductance);
342 SPDLOG_LOGGER_INFO(
mSLog,
"New capacitance: {}", capacitance);
349 SPDLOG_LOGGER_INFO(
mSLog,
351 "Tap Position: 0. Open both elements",
375 SPDLOG_LOGGER_INFO(
mSLog,
"Inductive Mode: Closed Inductor Switch");
380 SPDLOG_LOGGER_INFO(
mSLog,
"Inductive Mode: Opened Capacitor Switch");
385 SPDLOG_LOGGER_INFO(
mSLog,
"Capacitive Mode: Openend Inductor Switch");
389 SPDLOG_LOGGER_INFO(
mSLog,
"Capacitive Mode: Closed Capcitor Switch");
AttributePointer< Attribute< T > > Ptr
Attribute< Real >::Ptr mDeltaV
Attribute< Real >::Ptr mBPrev
Real mBMax
Maximium susceptance [p.u.].
Attribute< Real >::Ptr mViolationCounter
Real mNomVolt
Nominal Voltage.
Real mBMin
Minimium susceptance [p.u.].
Real mRefVolt
Reference Voltage.
void addMNASubComponent(typename SimPowerComp< Complex >::Ptr subc, MNA_SUBCOMP_TASK_ORDER preStepOrder, MNA_SUBCOMP_TASK_ORDER postStepOrder, Bool contributeToRightVector)
void mnaCompApplyRightSideVectorStamp(Matrix &rightVector) override
CompositePowerComp(String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
void initializeParentFromNodesAndTerminals(Real frequency) override
Initializes states from power flow data (parent-specific part).
void mnaParentPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
MNA post step operations (parent-specific)
void mnaCompUpdateCurrent(const Matrix &leftVector) override
Update interface current from MNA system results.
const Attribute< Real >::Ptr mVpcc
void createSubComponents() override
Constructs subcomponents; idempotent.
std::shared_ptr< DP::Ph1::Capacitor > mSubCapacitor
Internal capacitor.
std::shared_ptr< DP::Ph1::Switch > mSubCapacitorSwitch
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Update interface voltage from MNA system results.
const Attribute< Real >::Ptr mVmeasPrev
void mechanicalModelUpdateSusceptance(Real time)
void checkProtection(Real time)
std::shared_ptr< DP::Ph1::Inductor > mSubInductor
Internal inductor.
void mnaParentAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
add MNA post step dependencies (parent-specific)
void mnaParentPreStep(Real time, Int timeStepCount) override
MNA pre step operations (parent-specific)
std::shared_ptr< DP::Ph1::Switch > mSubInductorSwitch
SVC(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Defines UID, name and log level.
void mnaParentAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override
add MNA pre step dependencies (parent-specific)
const Attribute< String >::Ptr mName
Human readable name.
String uid()
Returns unique id.
AttributeList::Ptr mAttributes
Attribute List.
spdlog::level::level_enum Level
static String phasorToString(const Complex &num)
Attribute< Matrix >::Ptr mRightVector
static Complex complexFromVectorElement(const Matrix &mat, Matrix::Index row, Int maxFreq=1, Int freqIdx=0)
static Real abs(Complex value)
UInt matrixNodeIndex(UInt nodeIndex)
const Attribute< MatrixVar< Complex > >::Ptr mIntfCurrent
SimTerminal< Complex >::List mTerminals
void setVirtualNodeNumber(UInt num)
const Attribute< MatrixVar< Complex > >::Ptr mIntfVoltage
SimNode< Complex >::List mVirtualNodes
Complex initialSingleVoltage(UInt index)
void setTerminalNumber(UInt num)
Logger::Level mLogLevel
Component logger control for internal variables.
Logger::Log mSLog
Component logger.
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > Matrix
Dense matrix for real numbers.
std::complex< Real > Complex