9#include <dpsim-models/DP/DP_Ph1_PQLoadCS.h>
24 Real reactivePower, Real nomVolt,
25 Logger::Level logLevel)
28 setParameters(activePower, reactivePower, nomVolt);
35 Real nomVolt, Logger::Level logLevel)
36 :
PQLoadCS(name, name, activePower, reactivePower, nomVolt, logLevel) {}
38void DP::Ph1::PQLoadCS::setParameters(Real activePower, Real reactivePower,
40 **mActivePower = activePower;
41 **mReactivePower = reactivePower;
42 **mNomVoltage = nomVolt;
43 mParametersSet =
true;
48 auto copy = PQLoadCS::make(name,
mLogLevel);
49 copy->setParameters(**mActivePower, **mReactivePower, **mNomVoltage);
59 std::make_shared<DP::Ph1::CurrentSource>(**
mName +
"_cs",
mLogLevel);
63 MNA_SUBCOMP_TASK_ORDER::TASK_AFTER_PARENT,
64 MNA_SUBCOMP_TASK_ORDER::TASK_BEFORE_PARENT,
true);
69 if (**mActivePower == 0 && **mReactivePower == 0 && !
mParametersSet) {
70 **mActivePower =
mTerminals[0]->singleActivePower();
71 **mReactivePower =
mTerminals[0]->singleReactivePower();
72 **mNomVoltage = std::abs(
mTerminals[0]->initialSingleVoltage());
74 Complex power = Complex(**mActivePower, **mReactivePower);
76 (**mNomVoltage != 0) ? std::conj(power / **mNomVoltage) : Complex(0);
82 SPDLOG_LOGGER_INFO(
mSLog,
83 "\n--- Initialization from powerflow ---"
84 "\nVoltage across: {:s}"
86 "\nTerminal 0 voltage: {:s}"
87 "\nCurrent set point: {:s}"
88 "\n--- Initialization from powerflow finished ---",
91 Logger::phasorToString(initialSingleVoltage(0)),
92 Logger::phasorToString(current));
97 Complex power = {**mActivePower, **mReactivePower};
98 Complex current = power / **mNomVoltage;
102 SPDLOG_LOGGER_DEBUG(
mSLog,
103 "\n--- update set points ---"
106 Logger::phasorToString(power),
107 Logger::phasorToString(std::conj(current)));
110void DP::Ph1::PQLoadCS::mnaParentAddPreStepDependencies(
111 AttributeBase::List &prevStepDependencies,
112 AttributeBase::List &attributeDependencies,
113 AttributeBase::List &modifiedAttributes) {
114 attributeDependencies.push_back(mActivePower);
115 attributeDependencies.push_back(mReactivePower);
116 attributeDependencies.push_back(mNomVoltage);
119void DP::Ph1::PQLoadCS::mnaParentAddPostStepDependencies(
120 AttributeBase::List &prevStepDependencies,
121 AttributeBase::List &attributeDependencies,
122 AttributeBase::List &modifiedAttributes,
123 Attribute<Matrix>::Ptr &leftVector) {
124 modifiedAttributes.push_back(mIntfCurrent);
125 modifiedAttributes.push_back(mIntfVoltage);
133void DP::Ph1::PQLoadCS::updateIntfValues() {
134 **mIntfCurrent = mSubCurrentSource->intfCurrent();
135 **mIntfVoltage = mSubCurrentSource->intfVoltage();
138void DP::Ph1::PQLoadCS::mnaParentPostStep(Real time, Int timeStepCount,
139 Attribute<Matrix>::Ptr &leftVector) {
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)
PQLoadCS(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Defines UID, name and logging level.
void initializeParentFromNodesAndTerminals(Real frequency) override
Initializes component from power flow data.
void mnaParentPreStep(Real time, Int timeStepCount) override
MNA pre and post step operations.
SimPowerComp< Complex >::Ptr clone(String name) override
DEPRECATED: Delete method.
void createSubComponents() override
Constructs and registers MNA subcomponents; idempotent.
void updateSetPoint()
True after createSubComponents() runs; prevents double-construction.
std::shared_ptr< DP::Ph1::CurrentSource > mSubCurrentSource
Internal current source.
const Attribute< String >::Ptr mName
Human readable name.
String uid()
Returns unique id.
AttributeList::Ptr mAttributes
Attribute List.
Attribute< Matrix >::Ptr mRightVector
const Attribute< MatrixVar< Complex > >::Ptr mIntfCurrent
SimTerminal< Complex >::List mTerminals
const Attribute< MatrixVar< Complex > >::Ptr mIntfVoltage
Logger::Level mLogLevel
Component logger control for internal variables.
bool mParametersSet
Flag indicating that parameters are set via setParameters() function.
Logger::Log mSLog
Component logger.