43 SPDLOG_LOGGER_INFO(
mSLog,
44 "\n--- Base Parameters ---"
69 SPDLOG_LOGGER_INFO(
mSLog,
70 "\n--- Parameters ---"
82 SPDLOG_LOGGER_INFO(
mSLog,
83 "\n--- Base Parameters ---"
99 SPDLOG_LOGGER_INFO(
mSLog,
100 "\n--- Parameters ---"
112 SPDLOG_LOGGER_INFO(
mSLog,
113 "\n--- Base Parameters ---"
119 SPDLOG_LOGGER_INFO(
mSLog,
120 "\n--- Parameters Per-Unit ---"
121 "\n Xpd: {:f} [p.u.]",
139 SPDLOG_LOGGER_INFO(
mSLog,
140 "\n--- Parameters ---"
143 "\nInertia: {:f} [s]"
149 Bool convertWithOmegaMech) {
152 SPDLOG_LOGGER_INFO(
mSLog,
153 "\n--- Model flags ---"
154 "\nconvertWithOmegaMech: {:s}",
212 ((**mIntfVoltage)(0, 0) * std::conj(-(**
mIntfCurrent)(0, 0))).real();
214 ((**mIntfVoltage)(0, 0) * std::conj(-(**
mIntfCurrent)(0, 0))).imag();
228 SPDLOG_LOGGER_INFO(
mSLog,
229 "\n--- Initialize according to powerflow ---"
230 "\nTerminal 0 voltage: {:e}<{:e}"
231 "\nVoltage behind reactance: {:e}<{:e}"
232 "\ninitial electrical power: {:e}+j{:e}"
233 "\nactive electrical power: {:e}"
234 "\nreactive electrical power: {:e}"
235 "\nmechanical power: {:e}"
236 "\n--- End of powerflow initialization ---",
250 ((**mIntfVoltage)(0, 0) * std::conj(-(**
mIntfCurrent)(0, 0))).real();
252 ((**mIntfVoltage)(0, 0) * std::conj(-(**
mIntfCurrent)(0, 0))).imag();
284 (**mIntfVoltage)(0, 0).real(), (**mIntfVoltage)(0, 0).imag();
285 SPDLOG_LOGGER_DEBUG(
mSLog,
"\nStates, time {:f}: \n{:s}", time,
293 mMnaTasks.push_back(std::make_shared<AddBStep>(*
this));
311 attributeDependencies.push_back(leftVector);
324 **mGenerator.mRightVector = mGenerator.mSubInductor->mRightVector->get() +
325 mGenerator.mSubVoltageSource->mRightVector->get();
335 const Matrix &leftVector) {
337 (**mIntfVoltage)(0, 0) =
342 const Matrix &leftVector) {
354 SPDLOG_LOGGER_INFO(
mSLog,
"Use of reference omega.");
AttributePointer< Attribute< T > > Ptr
Real mNomFreq
nominal frequency fn [Hz]
Real mTimeStep
Simulation time step.
Real mLmd
d-axis mutual inductance Lmd [H]
SynchronGenerator(CPS::AttributeList::Ptr attributeList)
Constructor.
Real mLlfd
field leakage inductance Llfd [H]
const Attribute< Real >::Ptr mMechPower
mechanical Power Pm [W]
Real mNomVolt
nominal voltage Vn [V] (phase-to-phase RMS)
Real mBase_L
base stator inductance
Real mBase_Z
base stator impedance
const Attribute< Real >::Ptr mRs
stator resistance Rs [Ohm]
const Attribute< Real >::Ptr mElecReactivePower
Reactive part of the electrical power.
const Attribute< Real >::Ptr mElecActivePower
Active part of the electrical power.
ParameterType mParameterType
StateType mStateType
specifies if the machine parameters are transformed to per unit
Real mNomOmega
nominal angular frequency wn [Hz]
const Attribute< Real >::Ptr mLl
leakage inductance Ll [H]
void setBaseParameters(Real nomPower, Real nomVolt, Real nomFreq)
Real mLfd
field inductance Lfd [H]
const Attribute< Real >::Ptr mLd
d-axis inductance Ld [H]
Real mNomPower
nominal power Pn [VA]
const Attribute< Real >::Ptr mOmMech
rotor speed omega_r
Real calcHfromJ(Real J, Real omegaNominal, Int polePairNumber)
const Attribute< Real >::Ptr mInertia
inertia constant H [s] for per unit or moment of inertia J [kg*m^2]
void addMNASubComponent(typename SimPowerComp< Complex >::Ptr subc, MNA_SUBCOMP_TASK_ORDER preStepOrder, MNA_SUBCOMP_TASK_ORDER postStepOrder, Bool contributeToRightVector)
CompositePowerComp(String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
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 matrixToString(const Matrix &mat)
static Complex complexFromVectorElement(const Matrix &mat, Matrix::Index row, Int maxFreq=1, Int freqIdx=0)
static Real phaseDeg(Complex value)
static Real phase(Complex value)
static Real abs(Complex value)
void execute(Real time, Int timeStepCount)
Complex mImpedance
Equivalent impedance for loadflow calculation.
void mnaCompUpdateCurrent(const Matrix &leftVector) override
void mnaParentPreStep(Real time, Int timeStepCount) override
MNA pre and post step operations.
void mnaCompUpdateVoltage(const Matrix &leftVector) override
Bool mConvertWithOmegaMech
Flag for usage of actual mechanical speed for torque conversion (otherwise mNomOmega is used)
void mnaParentPostStep(Real time, Int timeStepCount, Attribute< Matrix >::Ptr &leftVector) override
void mnaParentAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override
Real mKd
Absolute damping coefficient.
SimPowerComp< Complex >::Ptr clone(String name) override
DEPRECATED: Delete method.
void initializeParentFromNodesAndTerminals(Real frequency) override
void setModelFlags(Bool convertWithOmegaMech)
Flags to modify model behavior.
void setInitialValues(Complex elecPower, Real mechPower)
void createSubComponents() override
Constructs and registers MNA subcomponents without emf value; idempotent.
std::shared_ptr< VoltageSource > mSubVoltageSource
Inner voltage source that represents the generator.
const Attribute< Real >::Ptr mRefOmega
const Attribute< Complex >::Ptr mEp
True after createSubComponents() runs; prevents double-construction.
void setStandardParametersPU(Real nomPower, Real nomVolt, Real nomFreq, Real Xpd, Real inertia, Real Rs=0, Real D=0)
Initializes the machine parameters.
const Attribute< Real >::Ptr mDelta_p
Angle by which the emf Ep is leading the terminal voltage.
std::shared_ptr< Inductor > mSubInductor
Inner inductor that represents the generator impedance.
const Attribute< Real >::Ptr mRefDelta
void setReferenceOmega(Attribute< Real >::Ptr refOmegaPtr, Attribute< Real >::Ptr refDeltaPtr)
SynchronGeneratorTrStab(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Real mLpd
Absolute d-axis transient inductance.
const Attribute< Real >::Ptr mEp_phase
void mnaParentInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override
Initializes variables of component.
const Attribute< Real >::Ptr mEp_abs
void setStandardParametersSI(Real nomPower, Real nomVolt, Real nomFreq, Int polePairNumber, Real Rs, Real Lpd, Real inertiaJ, Real Kd=0)
Initializes the machine parameters.
Bool mUseOmegaRef
Flag for usage of attribute of w_ref (otherwise mNomOmega is used)
Real mXpd
Absolute d-axis transient reactance X'd.
void mnaParentAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override
void setFundamentalParametersPU(Real nomPower, Real nomVolt, Real nomFreq, Real Ll, Real Lmd, Real Llfd, Real inertia, Real D=0)
Initializes the machine parameters.
UInt matrixNodeIndex(UInt nodeIndex)
const Attribute< MatrixVar< Complex > >::Ptr mIntfCurrent
SimTerminal< Complex >::Ptr terminal(UInt index)
void setVirtualNodeNumber(UInt num)
const Attribute< MatrixVar< Complex > >::Ptr mIntfVoltage
std::shared_ptr< SimPowerComp< VarType > > Ptr
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.
static std::shared_ptr< SynchronGeneratorTrStab > make(Args &&...args)
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > Matrix
Dense matrix for real numbers.
std::complex< Real > Complex