diff --git a/AixLib/Fluid/Storage/Examples/StorageBoiler.mo b/AixLib/Fluid/Storage/Examples/StorageBoiler.mo index 7d7c26acd1..264d6730ad 100644 --- a/AixLib/Fluid/Storage/Examples/StorageBoiler.mo +++ b/AixLib/Fluid/Storage/Examples/StorageBoiler.mo @@ -1,7 +1,6 @@ within AixLib.Fluid.Storage.Examples; model StorageBoiler extends Modelica.Icons.Example; - import AixLib; replaceable package Medium = Modelica.Media.Water.ConstantPropertyLiquidWater @@ -28,14 +27,11 @@ model StorageBoiler hConIn=1500, hConOut=15, redeclare package Medium = Medium, - hConHC1=300) annotation (Placement(transformation(extent={{6,-14}, - {-18,16}}))); - Modelica.Thermal.HeatTransfer.Sources.FixedTemperature fixedTemperature(T = 283.15) annotation(Placement(transformation(extent={{-56,-10}, - {-36,10}}))); - AixLib.Fluid.Sources.Boundary_pT - boundary_p( redeclare package Medium = Medium, - nPorts=1) annotation(Placement(transformation(extent={{-48,46}, - {-28,66}}))); + hConHC1=300) annotation (Placement(transformation(extent={{6,-14},{-18,16}}))); + Modelica.Thermal.HeatTransfer.Sources.FixedTemperature fixedTemperature(T = 283.15) + annotation(Placement(transformation(extent={{-56,-10},{-36,10}}))); + AixLib.Fluid.Sources.Boundary_pT boundary_p(redeclare package Medium = Medium,nPorts=1) + annotation(Placement(transformation(extent={{-48,46},{-28,66}}))); Modelica.Blocks.Sources.Constant SetTemp(k=273.15 + 80) annotation (Placement( transformation( extent={{-7,-7},{7,7}}, @@ -46,23 +42,22 @@ model StorageBoiler m_flow_nominal=0.5, dp_nominal=200) annotation (Placement(transformation(extent={{18,-34},{38,-14}}))); - AixLib.Fluid.FixedResistances.HydraulicResistance - hydraulicResistance(zeta = 1000, + AixLib.Fluid.FixedResistances.HydraulicResistance hydraulicResistance(zeta = 1000, redeclare package Medium = Medium, diameter=0.05, - m_flow_nominal=0.001) annotation(Placement(transformation(extent={{46,-34}, + m_flow_nominal=0.001) annotation(Placement(transformation(extent={{46,-34}, {66,-14}}))); - AixLib.Fluid.Sources.Boundary_ph - boundary_ph1(use_p_in = true, h = 0.8e5, + AixLib.Fluid.Sources.Boundary_ph boundary_ph1(use_p_in = true, + h = 0.8e5, nPorts=1, - redeclare package Medium = Medium) annotation(Placement(transformation(extent={{-66,-44}, - {-46,-24}}))); - Modelica.Blocks.Sources.Ramp ramp(duration = 1000, height = 0.00001e5, - offset=101325) annotation(Placement(transformation(extent={{-96,-36}, - {-76,-16}}))); - AixLib.Fluid.Sources.Boundary_pT - boundary_ph2(nPorts=1, redeclare package Medium = Medium) - annotation(Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 180, origin={-38,34}))); + redeclare package Medium = Medium) + annotation(Placement(transformation(extent={{-66,-44},{-46,-24}}))); + Modelica.Blocks.Sources.Ramp ramp(duration = 1000, + height = 0.00001e5, + offset=101325) annotation(Placement(transformation(extent={{-96,-36},{-76,-16}}))); + AixLib.Fluid.Sources.Boundary_pT boundary_ph2(nPorts=1, + redeclare package Medium = Medium) + annotation(Placement(transformation(extent = {{10, -10}, {-10, 10}}, rotation = 180, origin={-38,34}))); AixLib.Fluid.FixedResistances.PressureDrop pipe1( redeclare package Medium = Medium, m_flow_nominal=0.5, @@ -79,10 +74,7 @@ model StorageBoiler m_flow_nominal=pipe1.m_flow_nominal, per(pressure(V_flow={0,pipe.m_flow_nominal/1000,pipe.m_flow_nominal/(1000* 0.8)}, dp={dpSet.k/0.8,dpSet.k,0}), motorCooledByFluid=false)) - annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=90, - origin={2,42}))); + annotation (Placement(transformation(extent={{10,10},{-10,-10}},rotation=90,origin={2,42}))); Modelica.Blocks.Sources.Constant dpSet(k=40000) "Constant set pressure difference for pump" annotation (Placement( transformation( @@ -91,8 +83,8 @@ model StorageBoiler origin={37,27}))); equation connect(pipe.port_b, hydraulicResistance.port_a) annotation(Line(points={{38,-24}, - {46,-24}}, color = {0, 127, 255})); - connect(ramp.y, boundary_ph1.p_in) annotation(Line(points={{-75,-26},{-68,-26}}, color = {0, 0, 127})); + {46,-24}},color = {0, 127, 255})); + connect(ramp.y, boundary_ph1.p_in) annotation(Line(points={{-75,-26},{-68,-26}},color = {0, 0, 127})); connect(boundary_ph1.ports[1], pipe1.port_a) annotation (Line( points={{-46,-34},{-36,-34}}, color={0,127,255})); @@ -119,13 +111,19 @@ equation 28},{24,28},{24,42},{14,42}}, color={0,0,127})); annotation (experiment(Tolerance=1e-6, StopTime=86400, Interval=60), __Dymola_Commands(file="modelica://AixLib/Resources/Scripts/Dymola/Fluid/Storage/Examples/StorageBoiler.mos" "Simulate and plot"), - Documentation(info = "
- This is a simple example of a storage and a boiler.
+ This is a simple example of a storage and an ideal heater.
+ The ideal heater has a constant supply temperature and supplies heat
+ to a thermal energy water storage.
+ The pressure boundary is an idealized consumer with a pressure ramp.
+ This is an example of the simple storage model with two hydronic
+ circuits.
+ A heating rod indirectly supplies heat to the thermal energy
+ storage.
+ A simplified consumer extracts heat from the consumer water
+ circuit
+ based on a daily load profile.
+
This is a simple example of a storage and a solar collector.
AixLib.Fluid.Storage.Examples.BufferStorageCharging + \"AixLib.Fluid.Storage.Examples.StorageDetailed\">AixLib.Fluid.Storage.Examples.StorageDetailed +
++ AixLib.Fluid.Storage.Examples.StorageBoiler +
++ AixLib.Fluid.Storage.Examples.StorageSolarCollector
")); end StorageDetailed; diff --git a/AixLib/Fluid/Storage/StorageSimple.mo b/AixLib/Fluid/Storage/StorageSimple.mo index 74006e767c..e6b49327b0 100644 --- a/AixLib/Fluid/Storage/StorageSimple.mo +++ b/AixLib/Fluid/Storage/StorageSimple.mo @@ -10,16 +10,45 @@ model StorageSimple parameter Modelica.Units.SI.Length d "storage diameter"; parameter Modelica.Units.SI.Length h "storage height"; parameter Modelica.Units.SI.ThermalConductivity lambda_ins - "thermal conductivity of insulation" annotation(Dialog(group = "Heat losses")); + "thermal conductivity of insulation" + annotation(Dialog(group = "Heat losses")); parameter Modelica.Units.SI.Length s_ins "thickness of insulation" annotation(Dialog(group = "Heat losses")); - parameter Modelica.Units.SI.CoefficientOfHeatTransfer hConIn "Iinternal heat transfer coefficient" annotation(Dialog(group="Heat losses")); - parameter Modelica.Units.SI.CoefficientOfHeatTransfer hConOut "External heat transfer coefficient" annotation(Dialog(group="Heat losses")); + parameter Modelica.Units.SI.CoefficientOfHeatTransfer hConIn "Iinternal heat transfer coefficient" + annotation(Dialog(group="Heat losses")); + parameter Modelica.Units.SI.CoefficientOfHeatTransfer hConOut "External heat transfer coefficient" + annotation(Dialog(group="Heat losses")); parameter Modelica.Units.SI.Volume V_HE "heat exchanger volume" annotation(Dialog(group = "Heat exchanger")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer k_HE - "heat exchanger heat transfer coefficient" annotation(Dialog(group = "Heat exchanger")); - parameter Modelica.Units.SI.Area A_HE "heat exchanger area" annotation(Dialog(group = "Heat exchanger")); - parameter Modelica.Units.SI.RelativePressureCoefficient beta = 350e-6 annotation(Dialog(group = "Bouyancy")); + "heat exchanger heat transfer coefficient" annotation(Dialog(group = "Heat exchanger")); + parameter Modelica.Units.SI.Area A_HE "heat exchanger area" + annotation(Dialog(group = "Heat exchanger")); + parameter Modelica.Units.SI.RelativePressureCoefficient beta = 350e-6 + annotation(Dialog(group = "Bouyancy")); parameter Real kappa = 0.4 annotation(Dialog(group = "Bouyancy")); + + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal_layer + "Nominal mass flow rate in layers"; + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal_HE + "Nominal mass flow rate of heat exchanger layers"; + + //Optional temperature outputs + parameter Boolean use_TOut = true "Use temperature real outputs"; + + parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial + "Type of energy balance: dynamic (3 initialization options) or steady state in layers and layers_HE"; + + //Initialization parameters + parameter Modelica.Units.SI.Temperature T_start[n] + "Start value of temperature of each layer, e.g. for 3 layers: {20, 20, 20}" annotation(Dialog(tab="Initialization")); + parameter Modelica.Media.Interfaces.Types.AbsolutePressure p_start=Medium.p_default + "Start value of pressure" annotation(Dialog(tab="Initialization")); + + //Mass flow rates to regulate zero flow + parameter Modelica.Units.SI.MassFlowRate m_flow_small_layer=1E-4*abs(m_flow_nominal_layer) + "Small mass flow rate for regularization of zero flow" annotation(Dialog(tab="Advanced")); + parameter Modelica.Units.SI.MassFlowRate m_flow_small_layer_HE=1E-4*abs(m_flow_nominal_HE) + "Small mass flow rate for regularization of zero flow" annotation(Dialog(tab="Advanced")); + Modelica.Fluid.Interfaces.FluidPort_a port_a_consumer(redeclare final package Medium = Medium) annotation(Placement(transformation(extent = {{-10, -108}, {10, -88}}), iconTransformation(extent = {{-10, -110}, {10, -90}}))); @@ -35,17 +64,20 @@ model StorageSimple each final V = V / n, redeclare final package Medium = Medium, each final nPorts=2, - each final m_flow_nominal=m_flow_nominal_layer) annotation(Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin = {0, 0}))); + each final m_flow_nominal=m_flow_nominal_layer) + annotation(Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin = {0, 0}))); Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a heatPort - "connect to ambient temperature around the storage" annotation(Placement(transformation(extent = {{-116, -10}, {-96, 10}}), iconTransformation(extent = {{-90, -10}, {-70, 10}}))); + "connect to ambient temperature around the storage" + annotation(Placement(transformation(extent = {{-116, -10}, {-96, 10}}), + iconTransformation(extent = {{-90, -10}, {-70, 10}}))); Modelica.Fluid.Interfaces.FluidPort_b - port_b_heatGenerator(redeclare final package Medium = Medium) - annotation(Placement(transformation(extent = {{74, -98}, {94, -78}}), iconTransformation(extent = {{74, -90}, {94, -70}}))); + port_b_heatGenerator(redeclare final package Medium = Medium) + annotation(Placement(transformation(extent = {{74, -98}, {94, -78}}), iconTransformation(extent = {{74, -90}, {94, -70}}))); Modelica.Fluid.Interfaces.FluidPort_a - port_a_heatGenerator(redeclare final package Medium = Medium) - annotation(Placement(transformation(extent = {{74, 78}, {94, 98}}), iconTransformation(extent = {{74, 78}, {94, 98}}))); + port_a_heatGenerator(redeclare final package Medium = Medium) + annotation(Placement(transformation(extent = {{74, 78}, {94, 98}}), iconTransformation(extent = {{74, 78}, {94, 98}}))); Fluid.MixingVolumes.MixingVolume - layer_HE[n]( + layer_HE[n]( each final energyDynamics=energyDynamics, each final p_start=p_start, T_start=T_start, @@ -53,7 +85,7 @@ model StorageSimple each final V = V_HE / n, redeclare final package Medium = Medium, each final nPorts=2, - each final m_flow_nominal=m_flow_nominal_HE) annotation(Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin = {84, 0}))); + each final m_flow_nominal=m_flow_nominal_HE) annotation(Placement(transformation(extent = {{-10, -10}, {10, 10}}, rotation = 90, origin = {84, 0}))); Modelica.Thermal.HeatTransfer.Components.ThermalConductor heatTransfer_HE[n](each final G = k_HE * A_HE / n) annotation(Placement(transformation(extent = {{32, -10}, {52, 10}}))); Modelica.Thermal.HeatTransfer.Components.ThermalConductor heatTransfer[n](final G = cat(1, {G_top_bottom}, array(G_middle for k in 2:n - 1), {G_top_bottom})) annotation(Placement(transformation(extent = {{-80, -10}, {-60, 10}}))); @@ -76,81 +108,41 @@ model StorageSimple each final dx=dx, each final kappa=kappa) annotation (Placement(transformation(extent={{-10,-10},{ 10,10}}, origin={-28,0}))); - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal_layer - "Nominal mass flow rate in layers"; - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal_HE - "Nominal mass flow rate of heat exchanger layers"; - parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial - "Type of energy balance: dynamic (3 initialization options) or steady state in layers and layers_HE"; - - //Initialization parameters - parameter Modelica.Units.SI.Temperature T_start[n] - "Start value of temperature of each layer, e.g. for 3 layers: {20, 20, 20}" annotation(Dialog(tab="Initialization")); - parameter Modelica.Media.Interfaces.Types.AbsolutePressure p_start=Medium.p_default - "Start value of pressure" annotation(Dialog(tab="Initialization")); - - //Mass flow rates to regulate zero flow - parameter Modelica.Units.SI.MassFlowRate m_flow_small_layer=1E-4*abs(m_flow_nominal_layer) - "Small mass flow rate for regularization of zero flow" annotation(Dialog(tab="Advanced")); - parameter Modelica.Units.SI.MassFlowRate m_flow_small_layer_HE=1E-4*abs(m_flow_nominal_HE) - "Small mass flow rate for regularization of zero flow" annotation(Dialog(tab="Advanced")); - - Modelica.Blocks.Interfaces.RealOutput TTopLayer( - final quantity="ThermodynamicTemperature", - final unit="K", - min=0, - displayUnit="degC") "Temperature in the top layer" annotation (Placement( - transformation( - origin={-99,85}, - extent={{5,5},{-5,-5}}, - rotation=0), iconTransformation( - extent={{5,5},{-5,-5}}, - rotation=0, - origin={-76,88}))); - Modelica.Blocks.Interfaces.RealOutput TBottomLayer( - final quantity="ThermodynamicTemperature", - final unit="K", - min=0, - displayUnit="degC") "Temperature in the bottom layer" annotation (Placement( - transformation( - origin={-99,-83}, - extent={{5,5},{-5,-5}}, - rotation=0), iconTransformation( - extent={{5,5},{-5,-5}}, - rotation=0, - origin={-76,-80}))); - Modelica.Blocks.Interfaces.RealOutput TTopLayer_HE( - final quantity="ThermodynamicTemperature", - final unit="K", - min=0, - displayUnit="degC") "Temperature in the top layer" annotation (Placement( + Modelica.Blocks.Interfaces.RealOutput TLayer[n]( + each final quantity="ThermodynamicTemperature", + each final unit="K", + each min=0, + each displayUnit="degC") if use_TOut "Temperature in the top layer" annotation (Placement( transformation( - origin={97,71}, - extent={{-5,5},{5,-5}}, + origin={-112,30}, + extent={{12,12},{-12,-12}}, rotation=0), iconTransformation( - extent={{-5,5},{5,-5}}, + extent={{7.5,7.5},{-7.5,-7.5}}, rotation=0, - origin={102,88}))); - Modelica.Blocks.Interfaces.RealOutput TBottomLayer_HE( - final quantity="ThermodynamicTemperature", - final unit="K", - min=0, - displayUnit="degC") "Temperature in the top layer" annotation (Placement( + origin={-86.5,29.5}))); + Modelica.Blocks.Interfaces.RealOutput TLayer_HE[n]( + each final quantity="ThermodynamicTemperature", + each final unit="K", + each min=0, + each displayUnit="degC") if use_TOut "Temperature in the top layer" annotation (Placement( transformation( - origin={95,-69}, - extent={{-5,5},{5,-5}}, + origin={112,30}, + extent={{-12,12},{12,-12}}, rotation=0), iconTransformation( - extent={{-5,5},{5,-5}}, + extent={{-7.5,7.5},{7.5,-7.5}}, rotation=0, - origin={102,-80}))); + origin={94.5,29.5}))); protected parameter Modelica.Units.SI.Volume V = A * h; parameter Modelica.Units.SI.Area A = Modelica.Constants.pi * d ^ 2 / 4; parameter Modelica.Units.SI.Length dx = V / A / n; - parameter Modelica.Units.SI.ThermalConductance G_middle=2*Modelica.Constants.pi*h/n/(1/(hConIn*d/2) + 1/lambda_ins*log((d/2 + s_ins)/(d/2)) - + 1/(hConOut*(d/2 + s_ins))); - parameter Modelica.Units.SI.ThermalConductance G_top_bottom = G_middle + lambda_ins / s_ins * A; + parameter Modelica.Units.SI.ThermalConductance G_middle= + 2*Modelica.Constants.pi*h/n/(1/(hConIn*d/2) + 1/lambda_ins* + log((d/2 + s_ins)/(d/2)) + 1/(hConOut*(d/2 + s_ins))); + parameter Modelica.Units.SI.ThermalConductance G_top_bottom= + G_middle + lambda_ins / s_ins * A; + equation //Connect layers to the upper and lower ports connect(port_a_consumer, layer[1].ports[1]) annotation (Line( @@ -189,28 +181,29 @@ equation connect(bouyancy[k].port_a, layer[k + 1].heatPort); connect(bouyancy[k].port_b, layer[k].heatPort); end for; - connect(heatPort, heatPort) annotation(Line(points = {{-106, 0}, {-106, 0}}, color = {191, 0, 0})); + connect(heatPort, heatPort) annotation(Line(points={{-106,0},{-106,0}}, color = {191, 0, 0})); /////////////////////////////////////////////////////////////////////////////// /////////////////// connection of Temperature Sensor////////////////////////// /////////////////////////////////////////////////////////////////////////////// - TBottomLayer = layer[1].heatPort.T; - - TTopLayer = layer[n].heatPort.T; + if use_TOut then + for k in 1:n loop - TBottomLayer_HE = layer_HE[1].heatPort.T; + TLayer[k] = layer[k].heatPort.T; - TTopLayer_HE = layer_HE[n].heatPort.T; + TLayer_HE[k] = layer_HE[k].heatPort.T; + end for; + end if; annotation (Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics={ Polygon(points = {{-154, 3}, {-136, -7}, {-110, -3}, {-84, -7}, {-48, -5}, {-18, -9}, {6, -3}, {6, -41}, {-154, -41}, {-154, 3}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {0, 0, 255}, - fillPattern = FillPattern.Solid, origin = {78, -59}, rotation = 360), Polygon(points = {{-154, 3}, {-134, -3}, {-110, 1}, {-84, -1}, {-56, -5}, {-30, -11}, {6, -3}, {6, -41}, {-154, -41}, {-154, 3}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {14, 110, 255}, - fillPattern = FillPattern.Solid, origin = {78, -27}, rotation = 360), Rectangle(extent = {{-80, -71}, {80, 71}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {85, 170, 255}, - fillPattern = FillPattern.Solid, origin = {4, 1}, rotation = 360), Polygon(points = {{-24, -67}, {-16, -67}, {-8, -67}, {4, -67}, {12, -67}, {36, -67}, {76, -67}, {110, -67}, {136, -67}, {136, 39}, {-24, 35}, {-24, -67}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {170, 213, 255}, - fillPattern = FillPattern.Solid, origin = {-52, 33}, rotation = 360), Polygon(points = {{-39, -30}, {-31, -30}, {-11, -30}, {23, -30}, {67, -30}, {93, -30}, {121, -30}, {121, 24}, {-39, 26}, {-39, -30}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {255, 170, 170}, - fillPattern = FillPattern.Solid, origin = {-37, 38}, rotation = 360), Polygon(points = {{-80, 100}, {-80, 54}, {-62, 54}, {-30, 54}, {32, 54}, {80, 54}, {80, 82}, {80, 100}, {-80, 100}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {255, 62, 62}, - fillPattern = FillPattern.Solid, origin = {4, 0}, rotation = 360), Rectangle(extent = {{-76, 100}, {84, -100}}, lineColor = {0, 0, 0}, - lineThickness = 1), Line(points = {{-21, 94}, {-21, 132}}, color = {0, 0, 0}, smooth = Smooth.Bezier, thickness = 1, arrow = {Arrow.Filled, Arrow.None}, origin = {-56, 67}, rotation = 270, visible = use_heatingCoil1), Line(points = {{-54, 88}, {68, 56}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{68, 56}, {-48, 44}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{-48, 44}, {62, 6}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{62, 6}, {-44, -16}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{76, -81}, {-26, -81}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{0, -9}, {0, 9}}, color = {0, 0, 0}, smooth = Smooth.Bezier, thickness = 1, arrow = {Arrow.Filled, Arrow.None}, origin = {-34, -81}, rotation = 90, visible = use_heatingCoil1), Line(points = {{62, -42}, {-44, -16}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{62, -42}, {-42, -80}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{48, 88}, {-54, 88}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1)}), Documentation(info="+ fillPattern = FillPattern.Solid, origin = {78, -59}, rotation = 360), Polygon(points = {{-154, 3}, {-134, -3}, {-110, 1}, {-84, -1}, {-56, -5}, {-30, -11}, {6, -3}, {6, -41}, {-154, -41}, {-154, 3}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {14, 110, 255}, + fillPattern = FillPattern.Solid, origin = {78, -27}, rotation = 360), Rectangle(extent = {{-80, -71}, {80, 71}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {85, 170, 255}, + fillPattern = FillPattern.Solid, origin = {4, 1}, rotation = 360), Polygon(points = {{-24, -67}, {-16, -67}, {-8, -67}, {4, -67}, {12, -67}, {36, -67}, {76, -67}, {110, -67}, {136, -67}, {136, 39}, {-24, 35}, {-24, -67}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {170, 213, 255}, + fillPattern = FillPattern.Solid, origin = {-52, 33}, rotation = 360), Polygon(points = {{-39, -30}, {-31, -30}, {-11, -30}, {23, -30}, {67, -30}, {93, -30}, {121, -30}, {121, 24}, {-39, 26}, {-39, -30}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {255, 170, 170}, + fillPattern = FillPattern.Solid, origin = {-37, 38}, rotation = 360), Polygon(points = {{-80, 100}, {-80, 54}, {-62, 54}, {-30, 54}, {32, 54}, {80, 54}, {80, 82}, {80, 100}, {-80, 100}}, lineColor = {0, 0, 255}, pattern = LinePattern.None, fillColor = {255, 62, 62}, + fillPattern = FillPattern.Solid, origin = {4, 0}, rotation = 360), Rectangle(extent = {{-76, 100}, {84, -100}}, lineColor = {0, 0, 0}, + lineThickness = 1), Line(points = {{-21, 94}, {-21, 132}}, color = {0, 0, 0}, smooth = Smooth.Bezier, thickness = 1, arrow = {Arrow.Filled, Arrow.None}, origin = {-56, 67}, rotation = 270, visible = use_heatingCoil1), Line(points = {{-54, 88}, {68, 56}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{68, 56}, {-48, 44}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{-48, 44}, {62, 6}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{62, 6}, {-44, -16}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{76, -81}, {-26, -81}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{0, -9}, {0, 9}}, color = {0, 0, 0}, smooth = Smooth.Bezier, thickness = 1, arrow = {Arrow.Filled, Arrow.None}, origin = {-34, -81}, rotation = 90, visible = use_heatingCoil1), Line(points = {{62, -42}, {-44, -16}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{62, -42}, {-42, -80}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1), Line(points = {{48, 88}, {-54, 88}}, color = {0, 0, 0}, thickness = 1, smooth = Smooth.Bezier, visible = use_heatingCoil1)}), Documentation(info="
Overview
@@ -257,21 +250,13 @@ equation Example Results
- AixLib.HVAC.Storage.Examples.StorageBoiler -
-- AixLib.HVAC.Storage.Examples.StorageSolarCollector + AixLib.Fluid.Storage.Examples.StorageSimpleExample
+