18 std::shared_ptr<Base::GovernorParameters> parameters) {
20 std::dynamic_pointer_cast<Signal::HydroGovernorParameters>(parameters);
24 "Type of parameters class of {} has to be HydroGovernorParameters!",
29 SPDLOG_LOGGER_ERROR(
mSLog,
"R must be positive for {}", this->
name());
32 if (params->T1 <= 0) {
33 SPDLOG_LOGGER_ERROR(
mSLog,
"T1 must be positive for {}", this->
name());
36 if (params->T3 <= 0) {
37 SPDLOG_LOGGER_ERROR(
mSLog,
"T3 must be positive for {}", this->
name());
40 if (params->T1 == params->T3) {
41 SPDLOG_LOGGER_ERROR(
mSLog,
"T1 must not equal T3 for {}", this->
name());
46 SPDLOG_LOGGER_INFO(
mSLog,
47 "\nHydro Governor parameters:"
55 mParameters->OmRef, mParameters->R, mParameters->T1,
56 mParameters->T2, mParameters->T3, mParameters->Pmax,
62 if (Pref < mParameters->Pmin || Pref > mParameters->Pmax) {
65 "Pref of hydro governor {} must be in [Pmin, Pmax] = [{:f}, {:f}] pu",
66 this->
name(), mParameters->Pmin, mParameters->Pmax);
79 (mParameters->T1 - mParameters->T2) / (mParameters->T1 - mParameters->T3);
81 (mParameters->T2 - mParameters->T3) / (mParameters->T1 - mParameters->T3);
83 SPDLOG_LOGGER_INFO(
mSLog,
84 "\nHydro Governor initial values:"
90 mPref, **mDelOm, **mX1, **mX2, **mPgv);
96 mDelOm_prev = **mDelOm;
101 **mDelOm = mParameters->OmRef - Omega;
104 **mX1 = mX1_prev + (dt / mParameters->T1) * (mDelOm_prev - mX1_prev);
105 **mX2 = mX2_prev + (dt / mParameters->T3) * (mDelOm_prev - mX2_prev);
108 Real Pgv_raw = mPref + (1.0 / mParameters->R) * (**mX1 * mCa + **mX2 * mCb);
111 if (Pgv_raw > mParameters->Pmax)
112 **mPgv = mParameters->Pmax;
113 else if (Pgv_raw < mParameters->Pmin)
114 **mPgv = mParameters->Pmin;
AttributeList::Ptr mAttributes
Attribute List.
spdlog::level::level_enum Level
Real step(Real Omega, Real dt) final
Step the governor and return the valve/gate opening signal Pgv.
HydroTurbineGovernor(const String &name, CPS::Logger::Level logLevel=CPS::Logger::Level::off)
void setParameters(std::shared_ptr< Base::GovernorParameters > parameters) final
void initializeStates(Real Pref) final
Set steady-state initial values (call after setParameters, before first step)
SimSignalComp(String uid, String name, Logger::Level logLevel=Logger::Level::off)
Logger::Log mSLog
Component logger.