diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse0.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse0.mo index ae6a6c043e..0fd3a4a63d 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse0.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse0.mo @@ -1,99 +1,99 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse0 - "Start file for simple house example" - extends Modelica.Icons.Example; - package MediumAir = IBPSA.Media.Air "Medium model for air"; - package MediumWater = IBPSA.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.Area AWall = 100 "Wall area"; - parameter Modelica.Units.SI.Length dWall = 0.25 "Wall thickness"; - parameter Modelica.Units.SI.ThermalConductivity kWall = 0.04 "Wall thermal conductivity"; - parameter Modelica.Units.SI.Density rhoWall = 2000 "Wall density"; - parameter Modelica.Units.SI.SpecificHeatCapacity cpWall = 1000 "Wall specific heat capacity"; - IBPSA.BoundaryConditions.WeatherData.ReaderTMY3 weaDat(filNam= - ModelicaServices.ExternalReferences.loadResource( - "modelica://IBPSA/Resources/weatherdata/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.mos")) - "Weather data reader" - annotation (Placement(transformation(extent={{-200,-20},{-180,0}}))); - IBPSA.BoundaryConditions.WeatherData.Bus weaBus "Weather data bus" - annotation (Placement(transformation(extent={{-160,-20},{-140,0}}))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedTemperature TOut - "Exterior temperature boundary condition" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); -equation - connect(weaDat.weaBus, weaBus) annotation (Line( - points={{-180,-10},{-150,-10}}, - color={255,204,51}, - thickness=0.5)); - connect(TOut.T, weaBus.TDryBul) - annotation (Line(points={{-82,0},{-150,0},{-150,-10}},color={0,0,127})); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}}), graphics={ - Rectangle( - extent={{-220,40},{-38,-40}}, - fillColor={238,238,238}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Rectangle( - extent={{-220,-60},{180,-200}}, - fillColor={238,238,238}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Rectangle( - extent={{-220,180},{180,60}}, - fillColor={238,238,238}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Rectangle( - extent={{-20,40},{180,-40}}, - fillColor={238,238,238}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Text( - extent={{22,22},{-23,39}}, - textColor={0,0,127}, - fillColor={255,213,170}, - fillPattern=FillPattern.Solid, - textString="Wall"), - Text( - extent={{-157,-79},{-223,-61}}, - textColor={0,0,127}, - fillColor={255,213,170}, - fillPattern=FillPattern.Solid, - textString="Heating"), - Text( - extent={{-118,18},{-214,40}}, - textColor={0,0,127}, - fillColor={255,213,170}, - fillPattern=FillPattern.Solid, - textString="Weather inputs"), - Text( - extent={{-76,158},{-214,180}}, - textColor={0,0,127}, - fillColor={255,213,170}, - fillPattern=FillPattern.Solid, - textString="Cooling and ventilation")}), - experiment(Tolerance=1E-6, StopTime=1e+06), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouseTemplate.mos" - "Simulate and plot"), - Documentation(revisions=" -
-This model is used as the starting point for the SimpleHouse
tutorial.
-It contains a weather data reader and a PrescribedTemperature
component
-that allows the user to connect thermal components to the dry bulb temperature.
-It was based on from the Modelica crash course organised by KU Leuven
-(https://github.com/open-ideas/__CrashCourse__).
-
+This model is used as the starting point for the SimpleHouse
tutorial.
+It contains a weather data reader and a PrescribedTemperature
component
+that allows the user to connect thermal components to the dry bulb temperature.
+It was based on from the Modelica crash course organised by KU Leuven
+(https://github.com/open-ideas/__CrashCourse__).
+
-A very simple building envelope model will be constructed manually using thermal resistors and heat capacitors. -The house consists of a wall represented by a single heat capacitor and a thermal resistor. -The boundary temperature are already included in - -IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse0. -The wall has a surface area of Awall=100 m2, -a thickness of dwall=25 cm, -a thermal conductivity of kwall=0.04 W/(m K), -a density of ρwall=2000 kg/m3, -and a specific heat capacity of cp,wall= 1000 J/(kg K) -
--These parameters are already declared in the equation section of - -IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse0. -You can use this way of declaring parameters in the remainder of this exercise, but this is not required. -
--The conductive thermal resistance value of a wall may be computed as R=d/(A*k). -The heat capacity value of a wall may be computed as C=A*d*cp*ρ -
-
-Connect one side of the thermal resistor to the output of PrescribedTemperature
-and the other side of the thermal resistor to the heat capacitor.
-
-If you correctly added the model of the heat capacitor, -connected it to the resistor and added the parameter values for C, -then you should be able to simulate the model. -To do this, press the Simulation Setup and set the model Stop time to 1e6 seconds. -You can now simulate the model by pressing the Simulate button. -
--You can plot individual variables values by clicking on their name in the variable browser on the left. -Now plot the wall capacitor temperature value T. -It should look like the figure below (1 Ms is around 12 days). -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse1.mos" - "Simulate and plot")); -end SimpleHouse1; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse1 "Building wall model" + extends SimpleHouse0; + + Modelica.Thermal.HeatTransfer.Components.HeatCapacitor walCap( + C=AWall*dWall*cpWall*rhoWall, T(fixed=true)) + "Thermal mass of wall" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=270, + origin={150,0}))); + Modelica.Thermal.HeatTransfer.Components.ThermalResistor walRes(R=dWall/AWall + /kWall) "Thermal resistor for wall: 25 cm of rockwool" + annotation (Placement(transformation(extent={{80,-10},{100,10}}))); +equation + connect(walRes.port_b, walCap.port) annotation (Line(points={{100,0},{112,0}, + {112,1.77636e-15},{140,1.77636e-15}}, color={191,0,0})); + connect(TOut.port, walRes.port_a) + annotation (Line(points={{0,0},{80,0}}, color={191,0,0})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++A very simple building envelope model will be constructed manually using thermal resistors and heat capacitors. +The house consists of a wall represented by a single heat capacitor and a thermal resistor. +The boundary temperature are already included in + +IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse0. +The wall has a surface area of Awall=100 m2, +a thickness of dwall=25 cm, +a thermal conductivity of kwall=0.04 W/(m K), +a density of ρwall=2000 kg/m3, +and a specific heat capacity of cp,wall= 1000 J/(kg K) +
++These parameters are already declared in the equation section of + +IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse0. +You can use this way of declaring parameters in the remainder of this exercise, but this is not required. +
++The conductive thermal resistance value of a wall may be computed as R=d/(A*k). +The heat capacity value of a wall may be computed as C=A*d*cp*ρ +
+
+Connect one side of the thermal resistor to the output of PrescribedTemperature
+and the other side of the thermal resistor to the heat capacitor.
+
+If you correctly added the model of the heat capacitor, +connected it to the resistor and added the parameter values for C, +then you should be able to simulate the model. +To do this, press the Simulation Setup and set the model Stop time to 1e6 seconds. +You can now simulate the model by pressing the Simulate button. +
++You can plot individual variables values by clicking on their name in the variable browser on the left. +Now plot the wall capacitor temperature value T. +It should look like the figure below (1 Ms is around 12 days). +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse1.mos" + "Simulate and plot")); +end SimpleHouse1; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse2.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse2.mo index 3139e7e34c..e9611bdc13 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse2.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse2.mo @@ -1,80 +1,80 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse2 "Building window model" - extends SimpleHouse1; - - parameter Modelica.Units.SI.Area AWin=2 "Window area"; - - Modelica.Blocks.Math.Gain gaiWin(k=AWin) - "Gain for solar irradiance through the window" - annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow win - "Very simple window model" - annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); -equation - connect(gaiWin.y, win.Q_flow) - annotation (Line(points={{21,-20},{40,-20}}, color={0,0,127})); - connect(win.port, walCap.port) annotation (Line(points={{60,-20},{130,-20},{ - 130,1.77636e-15},{140,1.77636e-15}}, - color={191,0,0})); - connect(gaiWin.u, weaBus.HDirNor) annotation (Line(points={{-2,-20},{-150,-20}, - {-150,-10}}, color={0,0,127}), Text( - string="%second", - index=1, - extent={{-6,3},{-6,3}}, - horizontalAlignment=TextAlignment.Right)); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}})), - experiment(Tolerance=1e-6, StopTime=1e+06), - Documentation(revisions=" --The window has a surface area of 2 m2. -In this simple model we will therefore assume that -two times the outdoor solar irradiance is injected as heat onto the inside of the wall. -
-
-To be able to use the value of the outdoor solar irradiance
-you will need to access the weather data reader.
-To do this, make a connection to the weaBus
.
-In the dialog box select <New Variable> and here type HDirNor,
-which is the direct solar irradiance on a surface of 1 m2,
-perpendicular to the sun rays.
-Set the gain factor k to 2,
-in order to get the solar irradiance through the window of 2 m2.
-
-Make a connection with the PrescribedHeatFlow
as well.
-This block makes the connection between the heat flow from the gain, represented as a real value,
-and a heat port that is compatible with the connectors of the thermal capacitance and resistance.
-
-The result with and without the window model is plotted in the figure below. -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse2.mos" - "Simulate and plot")); -end SimpleHouse2; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse2 "Building window model" + extends SimpleHouse1; + + parameter Modelica.Units.SI.Area AWin=2 "Window area"; + + Modelica.Blocks.Math.Gain gaiWin(k=AWin) + "Gain for solar irradiance through the window" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow win + "Very simple window model" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); +equation + connect(gaiWin.y, win.Q_flow) + annotation (Line(points={{21,-20},{40,-20}}, color={0,0,127})); + connect(win.port, walCap.port) annotation (Line(points={{60,-20},{130,-20},{ + 130,1.77636e-15},{140,1.77636e-15}}, + color={191,0,0})); + connect(gaiWin.u, weaBus.HDirNor) annotation (Line(points={{-2,-20},{-150,-20}, + {-150,-10}}, color={0,0,127}), Text( + string="%second", + index=1, + extent={{-6,3},{-6,3}}, + horizontalAlignment=TextAlignment.Right)); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++The window has a surface area of 2 m2. +In this simple model we will therefore assume that +two times the outdoor solar irradiance is injected as heat onto the inside of the wall. +
+
+To be able to use the value of the outdoor solar irradiance
+you will need to access the weather data reader.
+To do this, make a connection to the weaBus
.
+In the dialog box select <New Variable> and here type HDirNor,
+which is the direct solar irradiance on a surface of 1 m2,
+perpendicular to the sun rays.
+Set the gain factor k to 2,
+in order to get the solar irradiance through the window of 2 m2.
+
+Make a connection with the PrescribedHeatFlow
as well.
+This block makes the connection between the heat flow from the gain, represented as a real value,
+and a heat port that is compatible with the connectors of the thermal capacitance and resistance.
+
+The result with and without the window model is plotted in the figure below. +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse2.mos" + "Simulate and plot")); +end SimpleHouse2; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse3.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse3.mo index 154ae4da84..ca649707b4 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse3.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse3.mo @@ -1,87 +1,87 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse3 "Air model" - extends SimpleHouse2; - - parameter Modelica.Units.SI.Volume VZone=8*8*3 "Zone volume"; - parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=1 - "Nominal mass flow rate for air loop"; - parameter Modelica.Units.SI.CoefficientOfHeatTransfer hWall=2 - "Convective heat transfer coefficient at the wall"; - - Modelica.Thermal.HeatTransfer.Components.ThermalResistor conRes(R=1/hWall/ - AWall) "Thermal resistance for convective heat transfer" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=270, - origin={130,20}))); - IBPSA.Fluid.MixingVolumes.MixingVolume zon( - redeclare package Medium = MediumAir, - V=VZone, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - m_flow_nominal=mAir_flow_nominal) "Very simple zone air model" - annotation (Placement(transformation(extent={{110,130},{90,150}}))); -equation - connect(conRes.port_b, walCap.port) annotation (Line(points={{130,10},{130, - 1.77636e-15},{140,1.77636e-15}}, color={191,0,0})); - connect(zon.heatPort, conRes.port_a) - annotation (Line(points={{110,140},{130,140},{130,30}}, color={191,0,0})); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}})), - experiment(Tolerance=1e-6, StopTime=1e+06), - Documentation(revisions=" --To increase the model detail we now add an air model assuming the zone is 8m x 8m x 3m in size. -The air will exchange heat with the wall. -This may be modelled using a thermal resistance representing -the convective heat resistance which is equal to Rconv=1/(h*A), -where A is the heat exchange surface area and h=2 W/(m2*K) is the convective heat transfer coefficient. -
-
-The MixingVolume
Medium parameter contains information about
-the type of fluid and its properties that should be modelled by the MixingVolume
.
-Set its value to MediumAir, which is declared in the template,
-by typing redeclare package Medium = MediumAir.
-For the nominal mass flow rate you may assume a value of 1 kg/m3 for now.
-You will have to change this value once you add a ventilation system to the model (see
-
-IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse6).
-Finally, set the energyDynamics of the MixingVolume
,
-which can be found in the Dynamics tab of the model parameter window, to FixedInitial.
-
-Make a connection with the PrescribedHeatFlow
as well.
-This block makes the connection between the heat flow from the gain, represented as a real value,
-and a heat port that is compatible with the connectors of the thermal capacitance and resistance.
-
-The result with and without the air model is plotted in the figure below. -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse3.mos" - "Simulate and plot")); -end SimpleHouse3; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse3 "Air model" + extends SimpleHouse2; + + parameter Modelica.Units.SI.Volume VZone=8*8*3 "Zone volume"; + parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=1 + "Nominal mass flow rate for air loop"; + parameter Modelica.Units.SI.CoefficientOfHeatTransfer hWall=2 + "Convective heat transfer coefficient at the wall"; + + Modelica.Thermal.HeatTransfer.Components.ThermalResistor conRes(R=1/hWall/ + AWall) "Thermal resistance for convective heat transfer" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=270, + origin={130,20}))); + IBPSA.Fluid.MixingVolumes.MixingVolume zon( + redeclare package Medium = MediumAir, + V=VZone, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + m_flow_nominal=mAir_flow_nominal) "Very simple zone air model" + annotation (Placement(transformation(extent={{110,130},{90,150}}))); +equation + connect(conRes.port_b, walCap.port) annotation (Line(points={{130,10},{130, + 1.77636e-15},{140,1.77636e-15}}, color={191,0,0})); + connect(zon.heatPort, conRes.port_a) + annotation (Line(points={{110,140},{130,140},{130,30}}, color={191,0,0})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++To increase the model detail we now add an air model assuming the zone is 8m x 8m x 3m in size. +The air will exchange heat with the wall. +This may be modelled using a thermal resistance representing +the convective heat resistance which is equal to Rconv=1/(h*A), +where A is the heat exchange surface area and h=2 W/(m2*K) is the convective heat transfer coefficient. +
+
+The MixingVolume
Medium parameter contains information about
+the type of fluid and its properties that should be modelled by the MixingVolume
.
+Set its value to MediumAir, which is declared in the template,
+by typing redeclare package Medium = MediumAir.
+For the nominal mass flow rate you may assume a value of 1 kg/m3 for now.
+You will have to change this value once you add a ventilation system to the model (see
+
+IBPSA.Examples.Tutorial.SimpleHouse.SimpleHouse6).
+Finally, set the energyDynamics of the MixingVolume
,
+which can be found in the Dynamics tab of the model parameter window, to FixedInitial.
+
+Make a connection with the PrescribedHeatFlow
as well.
+This block makes the connection between the heat flow from the gain, represented as a real value,
+and a heat port that is compatible with the connectors of the thermal capacitance and resistance.
+
+The result with and without the air model is plotted in the figure below. +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse3.mos" + "Simulate and plot")); +end SimpleHouse3; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse4.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse4.mo index 4f6207165d..753cb7d1f9 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse4.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse4.mo @@ -1,132 +1,132 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse4 "Heating model" - extends SimpleHouse3; - - parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal=3000 - "Nominal capacity of heating system"; - parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal=0.1 - "Nominal mass flow rate for water loop"; - parameter Boolean use_constantHeater=true - "To enable/disable the connection between the constant source and heater"; - - IBPSA.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 rad( - redeclare package Medium = MediumWater, - T_a_nominal=333.15, - T_b_nominal=313.15, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - allowFlowReversal=false, - Q_flow_nominal=QHea_flow_nominal) "Radiator" - annotation (Placement(transformation(extent={{110,-110},{130,-90}}))); - IBPSA.Fluid.HeatExchangers.HeaterCooler_u heaWat( - redeclare package Medium = MediumWater, - m_flow_nominal=mWat_flow_nominal, - energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - dp_nominal=5000, - Q_flow_nominal=QHea_flow_nominal) "Heater for water circuit" - annotation (Placement(transformation(extent={{60,-110},{80,-90}}))); - IBPSA.Fluid.Movers.FlowControlled_m_flow pum( - redeclare package Medium = MediumWater, - use_inputFilter=false, - m_flow_nominal=mWat_flow_nominal, - energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - nominalValuesDefineDefaultPressureCurve=true, - inputType=IBPSA.Fluid.Types.InputType.Constant) "Pump" - annotation (Placement(transformation(extent={{110,-180},{90,-160}}))); - IBPSA.Fluid.Sources.Boundary_pT bouWat(redeclare package Medium = MediumWater, nPorts=1) - "Pressure bound for water circuit" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - origin={10,-170}))); - Modelica.Blocks.Sources.Constant conHea(k=1) - annotation (Placement(transformation(extent={{80,-80},{60,-60}}))); -equation - connect(heaWat.port_b,rad. port_a) annotation (Line(points={{80,-100},{110,-100}}, - color={0,127,255})); - connect(rad.port_b, pum.port_a) annotation (Line(points={{130,-100},{148,-100}, - {148,-170},{110,-170}}, color={0,127,255})); - connect(heaWat.port_a, pum.port_b) annotation (Line(points={{60,-100},{49.75, - -100},{49.75,-170},{90,-170}}, color={0,127,255})); - connect(rad.heatPortCon, zon.heatPort) annotation (Line(points={{118,-92.8},{ - 118,140},{110,140}}, color={191,0,0})); - connect(rad.heatPortRad, walCap.port) annotation (Line(points={{122,-92.8},{122, - -20},{130,-20},{130,1.77636e-15},{140,1.77636e-15}}, color={191,0,0})); - if use_constantHeater then - connect(conHea.y, heaWat.u) annotation (Line(points={{59,-70},{50,-70},{50, - -94},{58,-94}}, color={0,0,127})); - end if; - connect(bouWat.ports[1], pum.port_b) - annotation (Line(points={{20,-170},{90,-170}}, color={0,127,255})); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}})), - experiment(Tolerance=1e-6, StopTime=1e+06), - Documentation(revisions=" --The wall temperature (and therefore the room temperature) is quite low. -In this step a heating system is added to resolve this. It consists of a radiator, a pump and a heater. -The radiator has a nominal power of 3 kW for an inlet and outlet temperature of the radiator of 60°C -and 40°C, and a room air and radiative temperature of 20°C. -The pump has a (nominal) mass flow rate of 0.1 kg/s. -Since the heating system uses water as a heat carrier fluid, -the media for the models in the heating circuit should be set to MediumWater. -
--The radiator contains one port for convective heat transfer and one for radiative heat transfer. -Connect both in a reasonable way. Since the heating system uses water as a heat carrier fluid, -the media for the models should be set to MediumWater. -
-
-The Boundary_pT
model needs to be used to set an absolute pressure somewhere in the system.
-Otherwise the absolute pressure in the system is undefined.
-Pressure difference modelling may be disregarded in the heating circuit
-since the chosen pump sets a fixed mass flow rate regardless of the pressure drop.
-
-Set the heater input to 1, meaning that it will produce 1 times its nominal power. -
--The result of the air temperature is plotted in the figure below. -The temperature rises very steeply since the wall is relatively well insulated (k=0.04 W/(m*K)) -and the heater is not disabled when it becomes too warm. -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse4.mos" - "Simulate and plot")); -end SimpleHouse4; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse4 "Heating model" + extends SimpleHouse3; + + parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal=3000 + "Nominal capacity of heating system"; + parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal=0.1 + "Nominal mass flow rate for water loop"; + parameter Boolean use_constantHeater=true + "To enable/disable the connection between the constant source and heater"; + + IBPSA.Fluid.HeatExchangers.Radiators.RadiatorEN442_2 rad( + redeclare package Medium = MediumWater, + T_a_nominal=333.15, + T_b_nominal=313.15, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + allowFlowReversal=false, + Q_flow_nominal=QHea_flow_nominal) "Radiator" + annotation (Placement(transformation(extent={{110,-110},{130,-90}}))); + IBPSA.Fluid.HeatExchangers.HeaterCooler_u heaWat( + redeclare package Medium = MediumWater, + m_flow_nominal=mWat_flow_nominal, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + dp_nominal=5000, + Q_flow_nominal=QHea_flow_nominal) "Heater for water circuit" + annotation (Placement(transformation(extent={{60,-110},{80,-90}}))); + IBPSA.Fluid.Movers.FlowControlled_m_flow pum( + redeclare package Medium = MediumWater, + use_inputFilter=false, + m_flow_nominal=mWat_flow_nominal, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + nominalValuesDefineDefaultPressureCurve=true, + inputType=IBPSA.Fluid.Types.InputType.Constant) "Pump" + annotation (Placement(transformation(extent={{110,-180},{90,-160}}))); + IBPSA.Fluid.Sources.Boundary_pT bouWat(redeclare package Medium = MediumWater, nPorts=1) + "Pressure bound for water circuit" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + origin={10,-170}))); + Modelica.Blocks.Sources.Constant conHea(k=1) + annotation (Placement(transformation(extent={{80,-80},{60,-60}}))); +equation + connect(heaWat.port_b,rad. port_a) annotation (Line(points={{80,-100},{110,-100}}, + color={0,127,255})); + connect(rad.port_b, pum.port_a) annotation (Line(points={{130,-100},{148,-100}, + {148,-170},{110,-170}}, color={0,127,255})); + connect(heaWat.port_a, pum.port_b) annotation (Line(points={{60,-100},{49.75, + -100},{49.75,-170},{90,-170}}, color={0,127,255})); + connect(rad.heatPortCon, zon.heatPort) annotation (Line(points={{118,-92.8},{ + 118,140},{110,140}}, color={191,0,0})); + connect(rad.heatPortRad, walCap.port) annotation (Line(points={{122,-92.8},{122, + -20},{130,-20},{130,1.77636e-15},{140,1.77636e-15}}, color={191,0,0})); + if use_constantHeater then + connect(conHea.y, heaWat.u) annotation (Line(points={{59,-70},{50,-70},{50, + -94},{58,-94}}, color={0,0,127})); + end if; + connect(bouWat.ports[1], pum.port_b) + annotation (Line(points={{20,-170},{90,-170}}, color={0,127,255})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++The wall temperature (and therefore the room temperature) is quite low. +In this step a heating system is added to resolve this. It consists of a radiator, a pump and a heater. +The radiator has a nominal power of 3 kW for an inlet and outlet temperature of the radiator of 60°C +and 40°C, and a room air and radiative temperature of 20°C. +The pump has a (nominal) mass flow rate of 0.1 kg/s. +Since the heating system uses water as a heat carrier fluid, +the media for the models in the heating circuit should be set to MediumWater. +
++The radiator contains one port for convective heat transfer and one for radiative heat transfer. +Connect both in a reasonable way. Since the heating system uses water as a heat carrier fluid, +the media for the models should be set to MediumWater. +
+
+The Boundary_pT
model needs to be used to set an absolute pressure somewhere in the system.
+Otherwise the absolute pressure in the system is undefined.
+Pressure difference modelling may be disregarded in the heating circuit
+since the chosen pump sets a fixed mass flow rate regardless of the pressure drop.
+
+Set the heater input to 1, meaning that it will produce 1 times its nominal power. +
++The result of the air temperature is plotted in the figure below. +The temperature rises very steeply since the wall is relatively well insulated (k=0.04 W/(m*K)) +and the heater is not disabled when it becomes too warm. +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse4.mos" + "Simulate and plot")); +end SimpleHouse4; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse5.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse5.mo index aa8c1a4202..bc6bef72b3 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse5.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse5.mo @@ -1,85 +1,85 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse5 "Heating controller model" - extends SimpleHouse4(pum(inputType=IBPSA.Fluid.Types.InputType.Stages, - massFlowRates=mWat_flow_nominal*{1}), final use_constantHeater=false); - - Modelica.Blocks.Math.BooleanToInteger booInt "Boolean to integer" - annotation (Placement(transformation(extent={{0,-150},{20,-130}}))); - Modelica.Blocks.Math.BooleanToReal booRea "Boolean to real" - annotation (Placement(transformation(extent={{0,-110},{20,-90}}))); - Modelica.Blocks.Logical.Hysteresis hysRad(uLow=273.15 + 21, uHigh=273.15 + 23) - "Hysteresis controller for radiator" - annotation (Placement(transformation(extent={{-80,-110},{-60,-90}}))); - Modelica.Blocks.Logical.Not not1 - "Negation for enabling heating when temperature is low" - annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemZonAir - "Zone air temperature sensor" - annotation (Placement(transformation(extent={{90,150},{70,170}}))); -equation - connect(booInt.y, pum.stage) annotation (Line(points={{21,-140},{100,-140},{ - 100,-158}}, color={255,127,0})); - connect(booInt.u, not1.y) annotation (Line(points={{-2,-140},{-11.5,-140},{-11.5, - -100},{-19,-100}}, color={255,0,255})); - connect(booRea.y, heaWat.u) annotation (Line(points={{21,-100},{40.5,-100},{ - 40.5,-94},{58,-94}}, color={0,0,127})); - connect(not1.u,hysRad. y) annotation (Line(points={{-42,-100},{-59,-100}}, - color={255,0,255})); - connect(senTemZonAir.T,hysRad. u) annotation (Line(points={{69,160},{-230,160}, - {-230,-100},{-82,-100}}, color={0,0,127})); - connect(senTemZonAir.port, zon.heatPort) - annotation (Line(points={{90,160},{110,160},{110,140}}, color={191,0,0})); - connect(not1.y, booRea.u) - annotation (Line(points={{-19,-100},{-2,-100}}, color={255,0,255})); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}})), - experiment(Tolerance=1e-6, StopTime=1e+06), - Documentation(revisions=" --Since the zone becomes too warm, a controller is required that disables the heater when a setpoint is reached. -We will implement a hysteresis controller with a setpoint of 295.15 +/- 1K (21-23°C). -A temperature sensor will measure the zone air temperature. -
--The heater modulation level should be set to one when the heater is on and to zero otherwise. -
--The figure below shows the air temperature when the controller is added. -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse5.mos" - "Simulate and plot")); -end SimpleHouse5; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse5 "Heating controller model" + extends SimpleHouse4(pum(inputType=IBPSA.Fluid.Types.InputType.Stages, + massFlowRates=mWat_flow_nominal*{1}), final use_constantHeater=false); + + Modelica.Blocks.Math.BooleanToInteger booInt "Boolean to integer" + annotation (Placement(transformation(extent={{0,-150},{20,-130}}))); + Modelica.Blocks.Math.BooleanToReal booRea "Boolean to real" + annotation (Placement(transformation(extent={{0,-110},{20,-90}}))); + Modelica.Blocks.Logical.Hysteresis hysRad(uLow=273.15 + 21, uHigh=273.15 + 23) + "Hysteresis controller for radiator" + annotation (Placement(transformation(extent={{-80,-110},{-60,-90}}))); + Modelica.Blocks.Logical.Not not1 + "Negation for enabling heating when temperature is low" + annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemZonAir + "Zone air temperature sensor" + annotation (Placement(transformation(extent={{90,150},{70,170}}))); +equation + connect(booInt.y, pum.stage) annotation (Line(points={{21,-140},{100,-140},{ + 100,-158}}, color={255,127,0})); + connect(booInt.u, not1.y) annotation (Line(points={{-2,-140},{-11.5,-140},{-11.5, + -100},{-19,-100}}, color={255,0,255})); + connect(booRea.y, heaWat.u) annotation (Line(points={{21,-100},{40.5,-100},{ + 40.5,-94},{58,-94}}, color={0,0,127})); + connect(not1.u,hysRad. y) annotation (Line(points={{-42,-100},{-59,-100}}, + color={255,0,255})); + connect(senTemZonAir.T,hysRad. u) annotation (Line(points={{69,160},{-230,160}, + {-230,-100},{-82,-100}}, color={0,0,127})); + connect(senTemZonAir.port, zon.heatPort) + annotation (Line(points={{90,160},{110,160},{110,140}}, color={191,0,0})); + connect(not1.y, booRea.u) + annotation (Line(points={{-19,-100},{-2,-100}}, color={255,0,255})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++Since the zone becomes too warm, a controller is required that disables the heater when a setpoint is reached. +We will implement a hysteresis controller with a setpoint of 295.15 +/- 1K (21-23°C). +A temperature sensor will measure the zone air temperature. +
++The heater modulation level should be set to one when the heater is on and to zero otherwise. +
++The figure below shows the air temperature when the controller is added. +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse5.mos" + "Simulate and plot")); +end SimpleHouse5; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse6.mo b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse6.mo index d907559f3a..db5249ee7a 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse6.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse6.mo @@ -1,141 +1,141 @@ -within IBPSA.Examples.Tutorial.SimpleHouse; -model SimpleHouse6 "Free cooling model" - extends SimpleHouse5( - zon(nPorts=2), - mAir_flow_nominal=0.1, - AWin=6); - - parameter Modelica.Units.SI.PressureDifference dpAir_nominal=200 - "Pressure drop at nominal mass flow rate for air loop"; - - IBPSA.Fluid.Actuators.Dampers.Exponential vavDam( - redeclare package Medium = MediumAir, - from_dp=true, - m_flow_nominal=mAir_flow_nominal, - dpDamper_nominal=dpAir_nominal) - "Damper" annotation (Placement(transformation(extent={{-10,10},{10, - -10}}, origin={50,110}))); - IBPSA.Fluid.Movers.FlowControlled_dp fan( - redeclare package Medium = MediumAir, - show_T=true, - dp_nominal=dpAir_nominal, - use_inputFilter=false, - energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, - nominalValuesDefineDefaultPressureCurve=true, - m_flow_nominal=mAir_flow_nominal) - "Constant head fan" annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - origin={-50,110}))); - Modelica.Blocks.Sources.Constant con_dp(k=dpAir_nominal) "Pressure head" - annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); - IBPSA.Fluid.HeatExchangers.ConstantEffectiveness hexRec( - redeclare package Medium1 = MediumAir, - redeclare package Medium2 = MediumAir, - dp1_nominal=10, - dp2_nominal=10, - m1_flow_nominal=mAir_flow_nominal, - m2_flow_nominal=mAir_flow_nominal, - eps=0.85) "Heat exchanger for heat recuperation" - annotation (Placement(transformation(extent={{-80,104},{-110,136}}))); - IBPSA.Fluid.Sources.Boundary_pT - bouAir( - redeclare package Medium = MediumAir, - use_T_in=true, - nPorts=2) "Air boundary with constant temperature" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - origin={-130,130}))); - Modelica.Blocks.Logical.Hysteresis hysAir(uLow=273.15 + 23, uHigh=273.15 + 25) - "Hysteresis controller for damper" - annotation (Placement(transformation(extent={{-20,70},{0,90}}))); - Modelica.Blocks.Math.BooleanToReal booToRea1 "Boolean to real" - annotation (Placement(transformation(extent={{20,70},{40,90}}))); -equation - connect(con_dp.y, fan.dp_in) - annotation (Line(points={{-69,80},{-50,80},{-50,98}}, color={0,0,127})); - connect(hexRec.port_a1, zon.ports[1]) annotation (Line(points={{-80,129.6},{ - 97,129.6},{97,130},{100,130}}, color={0,127,255})); - connect(bouAir.T_in, weaBus.TDryBul) annotation (Line(points={{-142,134},{ - -150,134},{-150,-10}},color={0,0,127})); - connect(hexRec.port_b2, fan.port_a) annotation (Line(points={{-80,110.4},{-69, - 110.4},{-69,110},{-60,110}}, color={0,127,255})); - connect(vavDam.port_b, zon.ports[2]) annotation (Line(points={{60,110},{100, - 110},{100,130}}, color={0,127,255})); - connect(booToRea1.y, vavDam.y) - annotation (Line(points={{41,80},{50,80},{50,98}}, color={0,0,127})); - connect(hysAir.y, booToRea1.u) - annotation (Line(points={{1,80},{18,80}}, color={255,0,255})); - connect(vavDam.port_a, fan.port_b) - annotation (Line(points={{40,110},{-40,110}}, color={0,127,255})); - connect(hysAir.u, hysRad.u) annotation (Line(points={{-22,80},{-30,80},{-30, - 160},{-230,160},{-230,-100},{-82,-100}}, color={0,0,127})); - connect(bouAir.ports[1], hexRec.port_b1) annotation (Line(points={{-120,129}, - {-119,129},{-119,129.6},{-110,129.6}}, color={0,127,255})); - connect(bouAir.ports[2], hexRec.port_a2) annotation (Line(points={{-120,131}, - {-120,110.4},{-110,110.4}}, color={0,127,255})); - annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, - -220},{200,200}})), - experiment(Tolerance=1e-6, StopTime=1e+06), - Documentation(revisions=" --For this last exercise, we first increase the window size -from 2 m2 to 6 m2. -
--We will add a ventilation model that allows to perform free cooling -using outside air when solar irradiation heats up the room too much. -The system consists of a fan, a damper, a controller with an air temperature setpoint -between 23°C and 25°C, -and a heat recovery unit with a constant effectiveness of 85%. -The damper and fan have a nominal pressure drop/raise of 200 Pa. -The heat recovery unit has a nominal pressure drop of 10 Pa at both sides. -The nominal mass flow rate of the ventilation system is 0.1 kg/s. -
-
-Connect the components such that they exchange mass (and therefore also energy)
-with the MixingVolume
representing the zone air.
-Add a boundary_pT
to draw air from the environment.
-Enable its temperature input and connect it to the TDryBul variable in the weather data reader.
-Also reconsider the nominal mass flow rate parameter value in the MixingVolume
-given the flow rate information of the ventilation system.
-
-The figures below show the results. -
-- -
-- -
-"), - __Dymola_Commands(file= - "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse6.mos" - "Simulate and plot")); -end SimpleHouse6; +within IBPSA.Examples.Tutorial.SimpleHouse; +model SimpleHouse6 "Free cooling model" + extends SimpleHouse5( + zon(nPorts=2), + mAir_flow_nominal=0.1, + AWin=6); + + parameter Modelica.Units.SI.PressureDifference dpAir_nominal=200 + "Pressure drop at nominal mass flow rate for air loop"; + + IBPSA.Fluid.Actuators.Dampers.Exponential vavDam( + redeclare package Medium = MediumAir, + from_dp=true, + m_flow_nominal=mAir_flow_nominal, + dpDamper_nominal=dpAir_nominal) + "Damper" annotation (Placement(transformation(extent={{-10,10},{10, + -10}}, origin={50,110}))); + IBPSA.Fluid.Movers.FlowControlled_dp fan( + redeclare package Medium = MediumAir, + show_T=true, + dp_nominal=dpAir_nominal, + use_inputFilter=false, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + nominalValuesDefineDefaultPressureCurve=true, + m_flow_nominal=mAir_flow_nominal) + "Constant head fan" annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + origin={-50,110}))); + Modelica.Blocks.Sources.Constant con_dp(k=dpAir_nominal) "Pressure head" + annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); + IBPSA.Fluid.HeatExchangers.ConstantEffectiveness hexRec( + redeclare package Medium1 = MediumAir, + redeclare package Medium2 = MediumAir, + dp1_nominal=10, + dp2_nominal=10, + m1_flow_nominal=mAir_flow_nominal, + m2_flow_nominal=mAir_flow_nominal, + eps=0.85) "Heat exchanger for heat recuperation" + annotation (Placement(transformation(extent={{-80,104},{-110,136}}))); + IBPSA.Fluid.Sources.Boundary_pT + bouAir( + redeclare package Medium = MediumAir, + use_T_in=true, + nPorts=2) "Air boundary with constant temperature" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + origin={-130,130}))); + Modelica.Blocks.Logical.Hysteresis hysAir(uLow=273.15 + 23, uHigh=273.15 + 25) + "Hysteresis controller for damper" + annotation (Placement(transformation(extent={{-20,70},{0,90}}))); + Modelica.Blocks.Math.BooleanToReal booToRea1 "Boolean to real" + annotation (Placement(transformation(extent={{20,70},{40,90}}))); +equation + connect(con_dp.y, fan.dp_in) + annotation (Line(points={{-69,80},{-50,80},{-50,98}}, color={0,0,127})); + connect(hexRec.port_a1, zon.ports[1]) annotation (Line(points={{-80,129.6},{ + 97,129.6},{97,130},{100,130}}, color={0,127,255})); + connect(bouAir.T_in, weaBus.TDryBul) annotation (Line(points={{-142,134},{ + -150,134},{-150,-10}},color={0,0,127})); + connect(hexRec.port_b2, fan.port_a) annotation (Line(points={{-80,110.4},{-69, + 110.4},{-69,110},{-60,110}}, color={0,127,255})); + connect(vavDam.port_b, zon.ports[2]) annotation (Line(points={{60,110},{100, + 110},{100,130}}, color={0,127,255})); + connect(booToRea1.y, vavDam.y) + annotation (Line(points={{41,80},{50,80},{50,98}}, color={0,0,127})); + connect(hysAir.y, booToRea1.u) + annotation (Line(points={{1,80},{18,80}}, color={255,0,255})); + connect(vavDam.port_a, fan.port_b) + annotation (Line(points={{40,110},{-40,110}}, color={0,127,255})); + connect(hysAir.u, hysRad.u) annotation (Line(points={{-22,80},{-30,80},{-30, + 160},{-230,160},{-230,-100},{-82,-100}}, color={0,0,127})); + connect(bouAir.ports[1], hexRec.port_b1) annotation (Line(points={{-120,129}, + {-119,129},{-119,129.6},{-110,129.6}}, color={0,127,255})); + connect(bouAir.ports[2], hexRec.port_a2) annotation (Line(points={{-120,131}, + {-120,110.4},{-110,110.4}}, color={0,127,255})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-240, + -220},{200,200}})), + experiment(Tolerance=1e-6, StopTime=1e+06), + Documentation(revisions=" ++For this last exercise, we first increase the window size +from 2 m2 to 6 m2. +
++We will add a ventilation model that allows to perform free cooling +using outside air when solar irradiation heats up the room too much. +The system consists of a fan, a damper, a controller with an air temperature setpoint +between 23°C and 25°C, +and a heat recovery unit with a constant effectiveness of 85%. +The damper and fan have a nominal pressure drop/raise of 200 Pa. +The heat recovery unit has a nominal pressure drop of 10 Pa at both sides. +The nominal mass flow rate of the ventilation system is 0.1 kg/s. +
+
+Connect the components such that they exchange mass (and therefore also energy)
+with the MixingVolume
representing the zone air.
+Add a boundary_pT
to draw air from the environment.
+Enable its temperature input and connect it to the TDryBul variable in the weather data reader.
+Also reconsider the nominal mass flow rate parameter value in the MixingVolume
+given the flow rate information of the ventilation system.
+
+The figures below show the results. +
++ +
++ +
+"), + __Dymola_Commands(file= + "modelica://IBPSA/Resources/Scripts/Dymola/Examples/Tutorial/SimpleHouse/SimpleHouse6.mos" + "Simulate and plot")); +end SimpleHouse6; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/package.mo b/IBPSA/Examples/Tutorial/SimpleHouse/package.mo index 2665e07f4d..fbc13637ba 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/package.mo +++ b/IBPSA/Examples/Tutorial/SimpleHouse/package.mo @@ -1,88 +1,88 @@ -within IBPSA.Examples.Tutorial; -package SimpleHouse "Package with example for how to build a simple building envelope with a radiator heating system and ventilation system" -extends Modelica.Icons.ExamplesPackage; - - annotation (Documentation(info=" -
-This package contains examples with step-by-step instructions for how to build a system model
-for a simple house with a heating system, ventilation, and weather boundary conditions.
-It serves as a demonstration case of how the IBPSA
library can be used.
-
-The goal of this exercise is to become familiar with Modelica and the IBPSA library. -Since the IBPSA library components are typically used by combining several components graphically, -the use of equations falls outside of the scope of this exercise. -
--For this exercise you will create a model of a simple house, -consisting of a heating system, one building zone, and a ventilation model. -The exercise starts from a template file that should not produce any errors. -This file will be extended in several steps, adding complexity. -In between each step the user should be able to simulate the model, -i.e., no errors should be produced and simulation results may be compared. -
--The model has been created in the following stages: -
-PrescribedTemperature
component
-and serves as a starting model to implement the entire SimpleHouse
model.
--For each stage, firstly the model part is qualitatively explained. -Next, the names of the required Modelica models (from the Modelica Standard Library and/or IBPSA library) are listed. -Finally, we provide high-level instructions of how to set up the model. -If these instructions are not clear immediately, have a look at the model documentation and at the type of connectors the model has, -try out some things, make an educated guess, etc. -Finally, we provide reference results that allow you to check if your implementation is correct. -Depending on the parameter values that you choose, results may differ. -
--The graphical representation of the final model is given below. -
-- -
-")); -end SimpleHouse; +within IBPSA.Examples.Tutorial; +package SimpleHouse "Package with example for how to build a simple building envelope with a radiator heating system and ventilation system" +extends Modelica.Icons.ExamplesPackage; + + annotation (Documentation(info=" +
+This package contains examples with step-by-step instructions for how to build a system model
+for a simple house with a heating system, ventilation, and weather boundary conditions.
+It serves as a demonstration case of how the IBPSA
library can be used.
+
+The goal of this exercise is to become familiar with Modelica and the IBPSA library. +Since the IBPSA library components are typically used by combining several components graphically, +the use of equations falls outside of the scope of this exercise. +
++For this exercise you will create a model of a simple house, +consisting of a heating system, one building zone, and a ventilation model. +The exercise starts from a template file that should not produce any errors. +This file will be extended in several steps, adding complexity. +In between each step the user should be able to simulate the model, +i.e., no errors should be produced and simulation results may be compared. +
++The model has been created in the following stages: +
+PrescribedTemperature
component
+and serves as a starting model to implement the entire SimpleHouse
model.
++For each stage, firstly the model part is qualitatively explained. +Next, the names of the required Modelica models (from the Modelica Standard Library and/or IBPSA library) are listed. +Finally, we provide high-level instructions of how to set up the model. +If these instructions are not clear immediately, have a look at the model documentation and at the type of connectors the model has, +try out some things, make an educated guess, etc. +Finally, we provide reference results that allow you to check if your implementation is correct. +Depending on the parameter values that you choose, results may differ. +
++The graphical representation of the final model is given below. +
++ +
+")); +end SimpleHouse; diff --git a/IBPSA/Examples/Tutorial/SimpleHouse/package.order b/IBPSA/Examples/Tutorial/SimpleHouse/package.order index c7d826c325..e975e02c46 100644 --- a/IBPSA/Examples/Tutorial/SimpleHouse/package.order +++ b/IBPSA/Examples/Tutorial/SimpleHouse/package.order @@ -1,7 +1,7 @@ -SimpleHouse0 -SimpleHouse1 -SimpleHouse2 -SimpleHouse3 -SimpleHouse4 -SimpleHouse5 -SimpleHouse6 +SimpleHouse0 +SimpleHouse1 +SimpleHouse2 +SimpleHouse3 +SimpleHouse4 +SimpleHouse5 +SimpleHouse6