Reservoir model

Modelica element

The good practice is to name the input and output variables “Name of the reservoir + _Qturbine, _Qspill, _Inflow_Q”

The modelica model

Code:

model MudMountain_Reservoir__simulation
  import SI = Modelica.SIunits;
  // Schematization elements
  Deltares.ChannelFlow.SimpleRouting.Reservoir.Reservoir ReservoirMudMountain annotation(
    Placement(visible = true, transformation(origin = {-42, 22}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Deltares.ChannelFlow.SimpleRouting.BoundaryConditions.Inflow InflowMudMountain annotation(
    Placement(visible = true, transformation(origin = {-80, 22}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Deltares.ChannelFlow.SimpleRouting.BoundaryConditions.Terminal TerminalDownstream annotation(
    Placement(visible = true, transformation(origin = {30, 22}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

// variable used to represent the absolute value of the derivative of Qturbine, used to smoothen
  //    operation of the turbine.
  //Real ReservoirMudMountain_absQturbder(min = 0);
  //Real ReservoirMudMountain_absQspillder(min = 0);
  // Time series
  input SI.VolumeFlowRate ReservoirMudMountain_Inflow_Q(fixed = true);
  input SI.VolumeFlowRate ReservoirMudMountain_Qturbine(fixed = false);
  input SI.VolumeFlowRate ReservoirMudMountain_Qspill(fixed = false);
  output SI.Volume  ReservoirMudMountain_V(min = 10^5, max = 1.68*10^8);
  output SI.VolumeFlowRate ReservoirMudMountain_Qout(min = 0, max = 8*10^3);
  output SI.VolumeFlowRate Downstream_Q(min = 0, max = 3*10^4);
equation
  connect(ReservoirMudMountain.QOut, TerminalDownstream.QIn) annotation(
    Line(points = {{-34, 22}, {30, 22}}));
  connect(InflowMudMountain.QOut, ReservoirMudMountain.QIn) annotation(
    Line(points = {{-72, 22}, {-50, 22}, {-50, 22}, {-50, 22}}));
  InflowMudMountain.Q = ReservoirMudMountain_Inflow_Q;
  ReservoirMudMountain.Q_spill = ReservoirMudMountain_Qspill;
  ReservoirMudMountain.Q_turbine = ReservoirMudMountain_Qturbine;
  ReservoirMudMountain_V = ReservoirMudMountain.V;
  ReservoirMudMountain_Qout = ReservoirMudMountain.QOut.Q;
  Downstream_Q = TerminalDownstream.QIn.Q;
    end MudMountain_Reservoir__simulation;

The modelica model for optimization