4#include <dpsim-models/Signal/SteamTurbine.h>
7using namespace CPS::Signal;
9Signal::SteamTurbine::SteamTurbine(
const String &name,
10 CPS::Logger::Level logLevel)
12 mPhp(mAttributes->create<Real>(
"Php")),
13 mPip(mAttributes->create<Real>(
"Pip")),
14 mPlp(mAttributes->create<Real>(
"Plp")),
15 mPm(mAttributes->create<Real>(
"Pm")) {}
17void SteamTurbine::setParameters(
18 std::shared_ptr<Base::TurbineParameters> parameters) {
20 std::dynamic_pointer_cast<Signal::SteamTurbineParameters>(parameters);
24 "Type of parameters class of {} has to be SteamTurbineParameters!",
26 throw CPS::TypeException();
28 Real fractionSum = params->Fhp + params->Fip + params->Flp;
29 if (std::abs(fractionSum - 1.0) > 1e-9) {
32 "The sum of power fractions Fhp+Fip+Flp of steam turbine {} must equal "
34 this->name(), fractionSum);
35 throw CPS::InvalidArgumentException();
39 SPDLOG_LOGGER_INFO(
mSLog,
40 "Steam turbine parameters:"
47 mParameters->Fhp, mParameters->Fip, mParameters->Flp,
48 mParameters->Tch, mParameters->Trh, mParameters->Tco);
53 if (Pminit < 0 || Pminit > 1) {
56 "Initial mechanical power of steam turbine {} must be in [0, 1] pu",
68 SPDLOG_LOGGER_INFO(
mSLog,
69 "Turbine initial values:"
74 **mPhp, **mPip, **mPlp, **mPm);
85 if (mParameters->Tch == 0)
88 mPhp_next = **mPhp + (dt / mParameters->Tch) * (Pgv - **mPhp);
91 if (mParameters->Trh == 0)
94 mPip_next = **mPip + (dt / mParameters->Trh) * (**mPhp - **mPip);
97 if (mParameters->Tco == 0)
100 mPlp_next = **mPlp + (dt / mParameters->Tco) * (**mPip - **mPlp);
102 **mPm = mParameters->Fhp * **mPhp + mParameters->Fip * **mPip +
103 mParameters->Flp * **mPlp;
void initializeStates(Real Pminit) final
Set steady-state initial values (call after setParameters, before first step)
Real step(Real Pgv, Real dt) final
Step the turbine with valve/gate opening Pgv and return mechanical power Pm.
Logger::Log mSLog
Component logger.