4#include <dpsim-models/Signal/HydroTurbine.h>
7using namespace CPS::Signal;
9Signal::HydroTurbine::HydroTurbine(
const String &name,
10 CPS::Logger::Level logLevel)
11 :
SimSignalComp(name, name, logLevel), mX1(mAttributes->create<Real>(
"X1")),
12 mPm(mAttributes->create<Real>(
"Pm")) {}
14void HydroTurbine::setParameters(
15 std::shared_ptr<Base::TurbineParameters> parameters) {
17 std::dynamic_pointer_cast<Signal::HydroTurbineParameters>(parameters);
21 "Type of parameters class of {} has to be HydroTurbineParameters!",
23 throw CPS::TypeException();
25 if (params->Tw == 0) {
26 SPDLOG_LOGGER_ERROR(
mSLog,
"Tw must not be zero for {}", this->name());
27 throw CPS::InvalidArgumentException();
31 SPDLOG_LOGGER_INFO(
mSLog,
32 "Hydro turbine parameters:"
39 if (Pminit < 0 || Pminit > 1) {
42 "Initial mechanical power of hydro turbine {} must be in [0, 1] pu",
50 SPDLOG_LOGGER_INFO(
mSLog,
51 "Hydro turbine initial values:"
63 mX1_next = **mX1 + (2.0 * dt / mParameters->Tw) * (Pgv - **mX1);
66 **mPm = 3.0 * **mX1 - 2.0 * Pgv;
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.