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 ^^^^^^^^^^^^^^^^^^ .. highlight:: Modelica 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 .. highlight:: Python .. literalinclude:: /../mudmountain/model/MudMountain_Reservoir.mo :lines: 1-15