diff --git a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/HeatPumpCarnot.mo b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/HeatPumpCarnot.mo index 6e08aac203..2e179bc9c7 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/HeatPumpCarnot.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/HeatPumpCarnot.mo @@ -78,7 +78,7 @@ public extent={{10,10},{-10,-10}}, rotation=180, origin={-90,50}))); - Modelica.Blocks.Math.Gain gain(k=cp_default) + Modelica.Blocks.Math.Gain gain(k(unit="J/(kg.K)")=cp_default, y(unit="J/(kg.K)")) annotation (Placement(transformation(extent={{-32,40},{-12,60}}))); Modelica.Blocks.Math.Division hea2MasFlo annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDp.mo b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDp.mo index 050ab1bc9c..40bc9ded68 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDp.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDp.mo @@ -61,7 +61,7 @@ public extent={{10,10},{-10,-10}}, rotation=180, origin={-90,46}))); - Modelica.Blocks.Math.Gain gain(k=cp_default) + Modelica.Blocks.Math.Gain gain(k(unit="J/(kg.K)")=cp_default, y(unit="J/(kg.K)")) annotation (Placement(transformation(extent={{-26,54},{-6,74}}))); Modelica.Blocks.Math.Division hea2MasFlo annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpBypass.mo b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpBypass.mo index e3fa261ac2..e1b44bf712 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpBypass.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpBypass.mo @@ -64,7 +64,7 @@ public extent={{10,10},{-10,-10}}, rotation=180, origin={-90,46}))); - Modelica.Blocks.Math.Gain gain(k=cp_default) + Modelica.Blocks.Math.Gain gain(k(unit="J/(kg.K)")=cp_default, y(unit="J/(kg.K)")) annotation (Placement(transformation(extent={{-26,54},{-6,74}}))); Modelica.Blocks.Math.Division hea2MasFlo annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpFixedTempDifferenceBypass.mo b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpFixedTempDifferenceBypass.mo index e08d00d5d3..0b9ee225f1 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpFixedTempDifferenceBypass.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Demands/OpenLoop/VarTSupplyDpFixedTempDifferenceBypass.mo @@ -54,7 +54,7 @@ public annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=0, origin={80,0}))); - Modelica.Blocks.Math.Gain gain(k=cp_default) + Modelica.Blocks.Math.Gain gain(k(unit="J/(kg.K)")=cp_default, y(unit="J/(kg.K)")) annotation (Placement(transformation(extent={{-40,104},{-20,124}}))); Modelica.Blocks.Math.Division hea2MasFlo annotation (Placement(transformation( extent={{-10,-10},{10,10}}, diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/DHCPipe.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/DHCPipe.mo index 3da3ace663..62680b42ff 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/DHCPipe.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/DHCPipe.mo @@ -1,6 +1,6 @@ within AixLib.Fluid.DistrictHeatingCooling.Pipes; model DHCPipe "Generic pipe model for DHC applications" - extends AixLib.Fluid.Interfaces.PartialTwoPortVector(show_T=true); + extends AixLib.Fluid.Interfaces.PartialTwoPortInterface(show_T=true); parameter Boolean use_zeta=false "= true HydraulicResistance is implemented, zeta value has to be given next" @@ -177,11 +177,11 @@ model DHCPipe "Generic pipe model for DHC applications" // See also AixLib.Fluid.FixedResistances.Validation.PlugFlowPipes.TransportWaterAir // for why mSenFac is 10 and not 1000, as this gives more reasonable // temperature step response - Fluid.MixingVolumes.MixingVolume vol( + AixLib.Fluid.MixingVolumes.MixingVolume vol( redeclare final package Medium = Medium, final m_flow_nominal=m_flow_nominal, final V=if rho_default > 500 then VEqu else VEqu/1000, - final nPorts=nPorts + 1, + final nPorts=2, final T_start=T_start_out, final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final mSenFac = if rho_default > 500 then 1 else 10) @@ -284,11 +284,9 @@ equation der(Q_los) = min(0, pipCor.heatPort.Q_flow); der(Q_gai) = max(0, pipCor.heatPort.Q_flow); - for i in 1:nPorts loop - connect(vol.ports[i + 1], ports_b[i]) - annotation (Line(points={{70,20},{72,20},{72,6},{72,0},{100,0}}, + connect(vol.ports[2], port_b) + annotation (Line(points={{71,20},{72,20},{72,6},{72,0},{100,0}}, color={0,127,255})); - end for; connect(pipCor.port_b, vol.ports[1]) annotation (Line(points={{10,0},{70,0},{70,20}}, color={0,127,255})); diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/DHCPipe.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/DHCPipe.mo index 93b829a206..4ff557128e 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/DHCPipe.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/DHCPipe.mo @@ -15,11 +15,10 @@ model DHCPipe "Simple example of DHCPipe and its four different modes" nPorts=1, p(displayUnit="Pa") = 101325) "Pressure boundary condition" annotation (Placement(transformation(extent={{72,40},{52,60}}))); - AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip( + AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare BaseClassesStatic.StaticCore pipCor "Static core", - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -66,11 +65,10 @@ model DHCPipe "Simple example of DHCPipe and its four different modes" nPorts=1, p(displayUnit="Pa") = 101325) "Pressure boundary condition" annotation (Placement(transformation(extent={{72,0},{52,20}}))); - AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip1( + AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip1( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare FixedResistances.BaseClasses.PlugFlowCore pipCor "PlugFlow core", - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -113,12 +111,11 @@ model DHCPipe "Simple example of DHCPipe and its four different modes" nPorts=1, p(displayUnit="Pa") = 101325) "Pressure boundary condition" annotation (Placement(transformation(extent={{72,-42},{52,-22}}))); - AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip2( + AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip2( redeclare package Medium = Medium, use_soil=true, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare FixedResistances.BaseClasses.PlugFlowCore pipCor "PlugFlow core", - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -161,12 +158,11 @@ model DHCPipe "Simple example of DHCPipe and its four different modes" nPorts=1, p(displayUnit="Pa") = 101325) "Pressure boundary condition" annotation (Placement(transformation(extent={{72,-80},{52,-60}}))); - AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip3( + AixLib.Fluid.DistrictHeatingCooling.Pipes.DHCPipe pip3( redeclare package Medium = Medium, sum_zetas=2.5, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, redeclare FixedResistances.BaseClasses.PlugFlowCore pipCor "PlugFlow core", - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -203,7 +199,7 @@ equation connect(Tin.y, sou.T_in) annotation (Line(points={{-79,54},{-72,54}}, color={0,0,127})); - connect(pip.ports_b[1], senTemOut.port_a) + connect(pip.port_b, senTemOut.port_a) annotation (Line(points={{10,50},{20,50}}, color={0,127,255})); connect(senTemOut.port_b, sin.ports[1]) @@ -219,7 +215,7 @@ equation annotation (Line(points={{-80,90},{0,90},{0,20}}, color={191,0,0})); connect(Tin1.y, sou1.T_in) annotation (Line(points={{-79,14},{-72,14}}, color={0,0,127})); - connect(pip1.ports_b[1], senTemOut1.port_a) + connect(pip1.port_b, senTemOut1.port_a) annotation (Line(points={{10,10},{20,10}}, color={0,127,255})); connect(senTemOut1.port_b, sin1.ports[1]) annotation (Line(points={{40,10},{52,10}}, color={0,127,255})); @@ -231,7 +227,7 @@ equation annotation (Line(points={{-80,90},{0,90},{0,-22}}, color={191,0,0})); connect(Tin2.y, sou2.T_in) annotation (Line(points={{-79,-28},{-72,-28}}, color={0,0,127})); - connect(pip2.ports_b[1], senTemOut2.port_a) + connect(pip2.port_b, senTemOut2.port_a) annotation (Line(points={{10,-32},{20,-32}}, color={0,127,255})); connect(senTemOut2.port_b, sin2.ports[1]) annotation (Line(points={{40,-32},{52,-32}}, color={0,127,255})); @@ -243,7 +239,7 @@ equation annotation (Line(points={{-80,90},{0,90},{0,-60}}, color={191,0,0})); connect(Tin3.y, sou3.T_in) annotation (Line(points={{-79,-66},{-72,-66}}, color={0,0,127})); - connect(pip3.ports_b[1], senTemOut3.port_a) + connect(pip3.port_b, senTemOut3.port_a) annotation (Line(points={{10,-70},{20,-70}}, color={0,127,255})); connect(senTemOut3.port_b, sin3.ports[1]) annotation (Line(points={{40,-70},{52,-70}}, color={0,127,255})); diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeEmbedded.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeEmbedded.mo index abb939f6e8..a9e75adf96 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeEmbedded.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeEmbedded.mo @@ -19,7 +19,6 @@ model PlugFlowPipeEmbedded "Simple example of PlugFlowPipeEmbedded" pip( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyStateInitial, - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -60,7 +59,7 @@ equation color={191,0,0})); connect(Tin.y, sou.T_in) annotation (Line(points={{-71,4},{-62,4}}, color={0,0,127})); - connect(pip.ports_b[1], senTemOut.port_a) + connect(pip.port_b, senTemOut.port_a) annotation (Line(points={{20,0},{30,0}}, color={0,127,255})); connect(senTemOut.port_b, sin.ports[1]) annotation (Line(points={{50,0},{62,0}}, color={0,127,255})); diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeZeta.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeZeta.mo index 581ef000c5..6a3d0babab 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeZeta.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/PlugFlowPipeZeta.mo @@ -17,7 +17,6 @@ model PlugFlowPipeZeta "Simple example of PlugFlowPipe" annotation (Placement(transformation(extent={{82,-10},{62,10}}))); AixLib.Fluid.DistrictHeatingCooling.Pipes.PlugFlowPipeZeta pip( redeclare package Medium = Medium, - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -57,7 +56,7 @@ equation annotation (Line(points={{-20,70},{10,70},{10,10}}, color={191,0,0})); connect(Tin.y, sou.T_in) annotation (Line(points={{-71,4},{-62,4}}, color={0,0,127})); - connect(pip.ports_b[1], senTemOut.port_a) + connect(pip.port_b, senTemOut.port_a) annotation (Line(points={{20,0},{30,0}}, color={0,127,255})); connect(senTemOut.port_b, sin.ports[1]) annotation (Line(points={{50,0},{62,0}}, color={0,127,255})); diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/StaticPipe.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/StaticPipe.mo index e274ce4d09..2ba6eae122 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/StaticPipe.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/Examples/StaticPipe.mo @@ -17,7 +17,6 @@ model StaticPipe "Simple example of StaticPipe" annotation (Placement(transformation(extent={{82,-10},{62,10}}))); AixLib.Fluid.DistrictHeatingCooling.Pipes.StaticPipe pip( redeclare package Medium = Medium, - nPorts=1, dh=0.1, length=100, dIns=0.05, @@ -57,7 +56,7 @@ equation annotation (Line(points={{-20,70},{10,70},{10,10}}, color={191,0,0})); connect(Tin.y, sou.T_in) annotation (Line(points={{-71,4},{-62,4}}, color={0,0,127})); - connect(pip.ports_b[1], senTemOut.port_a) + connect(pip.port_b, senTemOut.port_a) annotation (Line(points={{20,0},{30,0}}, color={0,127,255})); connect(senTemOut.port_b, sin.ports[1]) annotation (Line(points={{50,0},{62,0}}, color={0,127,255})); diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeEmbedded.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeEmbedded.mo index 51b9f7f8c4..a5d95414c5 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeEmbedded.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeEmbedded.mo @@ -2,7 +2,7 @@ model PlugFlowPipeEmbedded "Embedded pipe model using spatialDistribution for temperature delay" - extends AixLib.Fluid.Interfaces.PartialTwoPortVector(show_T=true); + extends AixLib.Fluid.Interfaces.PartialTwoPortInterface(show_T=true); parameter Modelica.Fluid.Types.Dynamics energyDynamics=Modelica.Fluid.Types.Dynamics.DynamicFreeInitial "Type of energy balance: dynamic (3 initialization options) or steady state" @@ -61,11 +61,11 @@ model PlugFlowPipeEmbedded parameter Modelica.Units.SI.Length thickness=0.0035 "Pipe wall thickness" annotation (Dialog(group="Material")); - parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default) = + parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default)= Medium.T_default "Initialization temperature at pipe inlet" annotation (Dialog(tab="Initialization")); - parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default) - = T_start_in "Initialization temperature at pipe outlet" + parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default)= + T_start_in "Initialization temperature at pipe outlet" annotation (Dialog(tab="Initialization")); parameter Boolean initDelay(start=false) = false "Initialize delay for a constant mass flow rate if true, otherwise start from 0" @@ -135,7 +135,6 @@ model PlugFlowPipeEmbedded final R=R, final fac=fac, final sum_zetas=sum_zetas, - nPorts=nPorts, final use_zeta=true) annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -215,7 +214,7 @@ equation annotation (Line(points={{0,90.8},{0,104}}, color={191,0,0})); connect(port_a, plugFlowPipeZeta.port_a) annotation (Line(points={{-100,0},{-10,0}}, color={0,127,255})); - connect(plugFlowPipeZeta.ports_b, ports_b) annotation (Line(points={{10,0},{56, + connect(plugFlowPipeZeta.port_b, port_b) annotation (Line(points={{10,0},{56, 0},{56,0},{100,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeZeta.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeZeta.mo index 534405568f..b2398e1204 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeZeta.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/PlugFlowPipeZeta.mo @@ -1,7 +1,7 @@ within AixLib.Fluid.DistrictHeatingCooling.Pipes; model PlugFlowPipeZeta "Pipe model using spatialDistribution for temperature delay and conditional HydraulicResistance" - extends AixLib.Fluid.Interfaces.PartialTwoPortVector(show_T=true); + extends AixLib.Fluid.Interfaces.PartialTwoPortInterface(show_T=true); parameter Boolean use_zeta=false "= true HydraulicResistance is implemented, zeta value has to be given next" @@ -56,11 +56,11 @@ model PlugFlowPipeZeta parameter Modelica.Units.SI.Length thickness=0.0035 "Pipe wall thickness" annotation (Dialog(group="Material")); - parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default) = + parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default)= Medium.T_default "Initialization temperature at pipe inlet" annotation (Dialog(tab="Initialization")); - parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default) - = T_start_in "Initialization temperature at pipe outlet" + parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default)= + T_start_in "Initialization temperature at pipe outlet" annotation (Dialog(tab="Initialization")); parameter Boolean initDelay(start=false) = false "Initialize delay for a constant mass flow rate if true, otherwise start from 0" @@ -128,7 +128,7 @@ model PlugFlowPipeZeta redeclare final package Medium = Medium, final m_flow_nominal=m_flow_nominal, final V=if rho_default > 500 then VEqu else VEqu/1000, - final nPorts=nPorts + 1, + final nPorts=2, final T_start=T_start_out, final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final mSenFac = if rho_default > 500 then 1 else 10) @@ -178,16 +178,14 @@ equation //calculation of the flow velocity of medium in the pipes v_med = (4 * port_a.m_flow) / (Modelica.Constants.pi * rho_default * dh * dh); - for i in 1:nPorts loop - connect(vol.ports[i + 1], ports_b[i]) - annotation (Line(points={{70,20},{72,20},{72,6},{72,0},{100,0}}, + connect(vol.ports[2], port_b) + annotation (Line(points={{71,20},{72,20},{72,6},{72,0},{100,0}}, color={0,127,255})); - end for; connect(plugFlowCore.heatPort, heatPort) annotation (Line(points={{0,10},{0,10},{0,100}}, color={191,0,0})); connect(plugFlowCore.port_b, vol.ports[1]) - annotation (Line(points={{10,0},{70,0},{70,20}}, color={0,127,255})); + annotation (Line(points={{10,0},{69,0},{69,20}}, color={0,127,255})); if use_zeta then connect(hydraulicResistance.port_b, plugFlowCore.port_a) annotation (Line(points={{-40,20},{-20,20},{-20,0},{-10,0}}, diff --git a/AixLib/Fluid/DistrictHeatingCooling/Pipes/StaticPipe.mo b/AixLib/Fluid/DistrictHeatingCooling/Pipes/StaticPipe.mo index 09ae7f1ff5..5986218d4d 100644 --- a/AixLib/Fluid/DistrictHeatingCooling/Pipes/StaticPipe.mo +++ b/AixLib/Fluid/DistrictHeatingCooling/Pipes/StaticPipe.mo @@ -1,7 +1,7 @@ within AixLib.Fluid.DistrictHeatingCooling.Pipes; model StaticPipe "Static Pipe model using conditional HydraulicResistance" - extends AixLib.Fluid.Interfaces.PartialTwoPortVector(show_T=true); + extends AixLib.Fluid.Interfaces.PartialTwoPortInterface(show_T=true); parameter Boolean use_zeta=false "= true HydraulicResistance is implemented, zeta value has to be given next" @@ -56,11 +56,11 @@ model StaticPipe parameter Modelica.Units.SI.Length thickness=0.0035 "Pipe wall thickness" annotation (Dialog(group="Material")); - parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default) = + parameter Modelica.Units.SI.Temperature T_start_in(start=Medium.T_default)= Medium.T_default "Initialization temperature at pipe inlet" annotation (Dialog(tab="Initialization")); - parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default) - = T_start_in "Initialization temperature at pipe outlet" + parameter Modelica.Units.SI.Temperature T_start_out(start=Medium.T_default)= + T_start_in "Initialization temperature at pipe outlet" annotation (Dialog(tab="Initialization")); parameter Boolean initDelay(start=false) = false "Initialize delay for a constant mass flow rate if true, otherwise start from 0" @@ -129,7 +129,7 @@ model StaticPipe redeclare final package Medium = Medium, final m_flow_nominal=m_flow_nominal, final V=if rho_default > 500 then VEqu else VEqu/1000, - final nPorts=nPorts + 1, + final nPorts=2, final T_start=T_start_out, final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, final mSenFac = if rho_default > 500 then 1 else 10) @@ -179,16 +179,14 @@ equation //calculation of the flow velocity of medium in the pipes v_med = (4 * port_a.m_flow) / (Modelica.Constants.pi * rho_default * dh * dh); - for i in 1:nPorts loop - connect(vol.ports[i + 1], ports_b[i]) - annotation (Line(points={{70,20},{72,20},{72,6},{72,0},{100,0}}, + connect(vol.ports[2], port_b) + annotation (Line(points={{71,20},{72,20},{72,6},{72,0},{100,0}}, color={0,127,255})); - end for; connect(staticCore.heatPort, heatPort) annotation (Line(points={{0,10},{0,10},{0,100}}, color={191,0,0})); connect(staticCore.port_b, vol.ports[1]) - annotation (Line(points={{10,0},{70,0},{70,20}}, color={0,127,255})); + annotation (Line(points={{10,0},{69,0},{69,20}}, color={0,127,255})); //Connect hydraulicResistance if use_zeta then connect(hydraulicResistance.port_b, staticCore.port_a) diff --git a/AixLib/Fluid/HeatExchangers/Examples/HeatingRod.mo b/AixLib/Fluid/HeatExchangers/Examples/HeatingRod.mo index 0aad8d9791..968043fcd2 100644 --- a/AixLib/Fluid/HeatExchangers/Examples/HeatingRod.mo +++ b/AixLib/Fluid/HeatExchangers/Examples/HeatingRod.mo @@ -3,7 +3,7 @@ model HeatingRod "Example for the usage of the heating rod model" extends Modelica.Icons.Example; extends AixLib.Fluid.HeatExchangers.Examples.BaseClasses.Heater( redeclare package Medium = AixLib.Media.Water, - m_flow_nominal=V*heatingRod.rho_default/3600, + m_flow_nominal=V*rhoWat/3600, Q_flow_nominal=100, conPI(k=10), vol(V=V/1000), @@ -23,6 +23,10 @@ model HeatingRod "Example for the usage of the heating rod model" Modelica.Blocks.Interfaces.RealOutput Pel "Electrical power used to provide current heat flow" annotation (Placement(transformation(extent={{120,-70},{140,-50}}))); + +protected + parameter Modelica.Units.SI.Density rhoWat=1000 "Density of water"; + equation connect(mov.port_b, heatingRod.port_a) annotation (Line(points={{-50,-40},{-30,-40}}, color={0,127,255})); diff --git a/AixLib/Fluid/Humidifiers/GenericHumidifier_u.mo b/AixLib/Fluid/Humidifiers/GenericHumidifier_u.mo index 8d7deeb678..524f4f526f 100644 --- a/AixLib/Fluid/Humidifiers/GenericHumidifier_u.mo +++ b/AixLib/Fluid/Humidifiers/GenericHumidifier_u.mo @@ -37,7 +37,7 @@ model GenericHumidifier_u extent={{100,90},{120,110}}), iconTransformation(extent={{100,90},{120, 110}}))); Modelica.Blocks.Sources.RealExpression steamEnthalpyFlow(y= - Medium.enthalpyOfCondensingGas(T=Tsteam.y)*mWat_flow) if steamHumidifier + Medium.enthalpyOfCondensingGas(T=Tsteam_intern)*mWat_flow) if steamHumidifier annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); Modelica.Blocks.Sources.RealExpression waterEnthalpyFlow(y=Medium.enthalpyOfLiquid(T=TLiqWat_in)*mWat_flow) annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow @@ -49,27 +49,28 @@ model GenericHumidifier_u annotation (Placement(transformation(extent={{-100,-104},{-80,-84}}))); Modelica.Blocks.Routing.RealPassThrough Tsteam if steamHumidifier annotation (Placement(transformation(extent={{-60,-98},{-40,-78}}))); - + Modelica.Blocks.Sources.RealExpression realExpression(y = mWat_flow_nominal) annotation( + Placement(visible = true, transformation(origin = {-62, 32}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); + Modelica.Blocks.Math.Product product annotation( + Placement(visible = true, transformation(origin = {-20, 60}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); protected + Modelica.Blocks.Interfaces.RealInput Tsteam_intern; Modelica.Blocks.Nonlinear.Limiter limiter(uMax=1, uMin=0) annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); - Modelica.Blocks.Math.Gain gai(final k=mWat_flow_nominal) "Gain" - annotation (Placement(transformation(extent={{-58,50},{-38,70}}))); - Modelica.Blocks.Math.Add add(k2=-1) if steamHumidifier annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); equation - connect(gai.y, vol.mWat_flow) annotation (Line( - points={{-37,60},{-30,60},{-30,-18},{-11,-18}}, - color={0,0,127})); + if not steamHumidifier then + Tsteam_intern = 273.15; + end if; - connect(gai.y, mWat_flow) - annotation (Line(points={{-37,60},{110,60}}, color={0,0,127})); + connect(Tsteam.y, Tsteam_intern); + connect(product.y, vol.mWat_flow) annotation (Line( + points={{-9,60},{-30,60},{-30,-18},{-11,-18}}, + color={0,0,127})); connect(u, limiter.u) annotation (Line(points={{-120,60},{-92,60}}, color={0,0,127})); - connect(limiter.y, gai.u) - annotation (Line(points={{-69,60},{-60,60}}, color={0,0,127})); connect(prescribedHeatFlow.port, vol.heatPort) annotation (Line(points={{-20,-40}, {-20,-10},{-9,-10}}, color={191,0,0})); @@ -99,142 +100,42 @@ equation points={{-79,-94},{-72,-94},{-72,-88},{-62,-88}}, color={0,0,127}, pattern=LinePattern.Dash)); + connect(limiter.y, product.u1) annotation ( + Line(points={{-69,60},{-48,60},{-48,66},{-32,66}}, color = {0, 0, 127})); + connect(realExpression.y, product.u2) annotation ( + Line(points={{-51,32},{-40,32},{-40,54},{-32,54}}, color = {0, 0, 127})); + connect(product.y, mWat_flow) annotation ( + Line(points = {{-9, 60}, {110, 60}}, color = {0, 0, 127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, - -100},{100,100}}), graphics={ - Text( - extent={{-52,-60},{58,-120}}, - textString="m=%m_flow_nominal", - pattern=LinePattern.None, - lineColor={0,0,127}), - Rectangle( - extent={{-100,61},{-70,58}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={0,0,127}, - fillPattern=FillPattern.Solid), - Text( - extent={{-118,104},{-74,76}}, - lineColor={0,0,127}, - textString="u"), - Rectangle( - extent={{-100,5},{101,-5}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-70,60},{70,-60}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={95,95,95}, - fillPattern=FillPattern.Solid), - Polygon( - points={{42,42},{54,34},{54,34},{42,28},{42,30},{50,34},{50,34},{42, - 40},{42,42}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{58,-54},{54,52}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{70,61},{100,58}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={0,0,127}, - fillPattern=FillPattern.Solid), - Text( - extent={{32,98},{98,44}}, - lineColor={0,0,127}, - textString="mWat_flow"), - Polygon( - points={{42,10},{54,2},{54,2},{42,-4},{42,-2},{50,2},{50,2},{42,8},{ - 42,10}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{42,-26},{54,-34},{54,-34},{42,-40},{42,-38},{50,-34},{50,-34}, - {42,-28},{42,-26}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text(extent={{30,130},{96,76}}, - lineColor={0,0,127}, - textString="powerEva", - visible=steamHumidifier), - Ellipse(visible=steamHumidifier, - extent={{-14,44},{10,30}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{24,38},{34,32}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{26,30},{8,42}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{-28,12},{-4,-2}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{12,-2},{-6,10}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{10,6},{20,0}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{-12,-24},{12,-38}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{28,-38},{10,-26}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse(visible=steamHumidifier, - extent={{26,-30},{36,-36}}, - lineColor={28,108,200}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line(visible=not steamHumidifier, - points={{28,40},{14,40}}, color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{-6,36},{-20,30}},color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{30,4},{16,6}}, color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{0,4},{-14,-2}}, color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{30,-32},{16,-30}}, color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{0,-34},{-14,-40}}, color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{-32,-24},{-42,-38}},color={28, - 108,200}, - thickness=0.5), - Line(visible=not steamHumidifier,points={{-32,10},{-42,-4}}, color={28, - 108,200}, - thickness=0.5)}), + -100},{100,100}}), graphics={Text(lineColor = {0, 0, 127}, extent = {{-52, -60}, {58, -120}}, textString = "m=%m_flow_nominal"), + Rectangle(lineColor = {0, 0, 255}, fillColor = {0, 0, 127}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-100, 61}, {-70, 58}}), + Text(lineColor = {0, 0, 127}, extent = {{-118, 104}, {-74, 76}}, textString = "u"), + Rectangle(lineColor = {0, 0, 255}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-100, 5}, {101, -5}}), + Rectangle(lineColor = {0, 0, 255}, fillColor = {95, 95, 95}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{-70, 60}, {70, -60}}), + Polygon(lineColor = {255, 255, 255}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, points = {{42, 42}, {54, 34}, {54, 34}, {42, 28}, {42, 30}, {50, 34}, {50, 34}, {42, 40}, {42, 42}}), + Rectangle(lineColor = {255, 255, 255}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{58, -54}, {54, 52}}), + Rectangle(lineColor = {0, 0, 255}, fillColor = {0, 0, 127}, pattern = LinePattern.None, fillPattern = FillPattern.Solid, extent = {{70, 61}, {100, 58}}), + Text(lineColor = {0, 0, 127}, extent = {{32, 98}, {98, 44}}, textString = "mWat_flow"), + Polygon(lineColor = {255, 255, 255}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, points = {{42, 10}, {54, 2}, {54, 2}, {42, -4}, {42, -2}, {50, 2}, {50, 2}, {42, 8}, {42, 10}}), + Polygon(lineColor = {255, 255, 255}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, points = {{42, -26}, {54, -34}, {54, -34}, {42, -40}, {42, -38}, {50, -34}, {50, -34}, {42, -28}, {42, -26}}), + Text(lineColor = {0, 0, 127}, extent = {{30, 130}, {96, 76}}, textString = "powerEva"), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-14, 44}, {10, 30}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{24, 38}, {34, 32}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{26, 30}, {8, 42}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-28, 12}, {-4, -2}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{12, -2}, {-6, 10}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{10, 6}, {20, 0}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-12, -24}, {12, -38}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{28, -38}, {10, -26}}), + Ellipse(lineColor = {28, 108, 200}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{26, -30}, {36, -36}}), + Line(visible = false, points = {{28, 40}, {14, 40}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{-6, 36}, {-20, 30}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{30, 4}, {16, 6}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{0, 4}, {-14, -2}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{30, -32}, {16, -30}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{0, -34}, {-14, -40}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{-32, -24}, {-42, -38}}, color = {28, 108, 200}, thickness = 0.5), + Line(visible = false, points = {{-32, 10}, {-42, -4}}, color = {28, 108, 200}, thickness = 0.5)}), defaultComponentName="hum", Documentation(info="
Model for an air humidifier. @@ -264,6 +165,9 @@ Documentation(info="
", revisions="
This example compares the simulated behavior with measured data. The input filter of the valve is deactivated because the measured actual @@ -165,6 +169,9 @@ equation
", revisions="This example compares the simulated behavior with measured data. The input filter of the valve is deactivated because the measured actual diff --git a/AixLib/Systems/ModularAHU/Validation/AHU2_Preheater.mo b/AixLib/Systems/ModularAHU/Validation/AHU2_Preheater.mo index b318f937e6..45717feb75 100644 --- a/AixLib/Systems/ModularAHU/Validation/AHU2_Preheater.mo +++ b/AixLib/Systems/ModularAHU/Validation/AHU2_Preheater.mo @@ -98,6 +98,8 @@ model AHU2_Preheater "Heating register of ahu 2 in E.ON ERC testhall" BaseClasses.RegisterBus registerBus1 annotation (Placement(transformation(extent={{-48,0},{-28,20}}))); + Modelica.Blocks.Sources.BooleanConstant pumpOn annotation( + Placement(visible = true, transformation(origin = {-80, -24}, extent = {{-10, -10}, {10, 10}}, rotation = 0))); equation connect(toKelvin.Kelvin, boundaryWaterSource.T_in) annotation (Line(points={{-57,-92},{-16,-92}}, color={0,0,127})); @@ -143,6 +145,8 @@ equation connect(boundaryWaterSource.ports[1], registerModule.port_a2) annotation ( Line(points={{-20,-70},{-22,-70},{-22,0.461538},{-22,0.461538}}, color={0, 127,255})); + connect(pumpOn.y, registerBus1.hydraulicBus.pumpBus.onSet) annotation( + Line(points = {{-68, -24}, {-38, -24}, {-38, 10}}, color = {255, 0, 255})); annotation (Documentation(info="
This example compares the simulated behavior with measured data. The input filter of the valve is deactivated because the measured actual diff --git a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/AirFlowRateSplit.mo b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/AirFlowRateSplit.mo index 86a6e00d4d..6ed5652791 100644 --- a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/AirFlowRateSplit.mo +++ b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/AirFlowRateSplit.mo @@ -23,8 +23,8 @@ block AirFlowRateSplit "VolumeFlowRate", final unit="m3/s") "Aggregated air flow rate" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Modelica.Blocks.Interfaces.RealOutput airFlowOut[dimension](final quantity= - "VolumeFlowRate", final unit="1/h") "Splitted air flow rate" + Modelica.Blocks.Interfaces.RealOutput airFlowOut[dimension](each final quantity= + "VolumeFlowRate", each final unit="1/h") "Splitted air flow rate" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/MultizonePostProcessing.mo b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/MultizonePostProcessing.mo index 199ae74ebc..e41c46612a 100644 --- a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/MultizonePostProcessing.mo +++ b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/MultizonePostProcessing.mo @@ -1,8 +1,8 @@ -within AixLib.ThermalZones.ReducedOrder.Multizone.BaseClasses; +within AixLib.ThermalZones.ReducedOrder.Multizone.BaseClasses; model MultizonePostProcessing "Calculates and outputs values of interest for multizone model" parameter Modelica.Units.SI.Volume VAir "Indoor air volume of building"; - parameter Integer numZones(min=1) + parameter Integer numZones(min=1)=1 "Number of zones"; parameter AixLib.DataBase.ThermalZones.ZoneBaseRecord zoneParam[numZones] "Setup for zones" annotation (choicesAllMatching=false); @@ -26,31 +26,31 @@ model MultizonePostProcessing "Average temperature of all zones" annotation (Placement(transformation(extent={{58,88},{74,104}}))); - Modelica.Blocks.Interfaces.RealInput TAir[numZones](final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit= "°C") "Air temperature of each zone" + Modelica.Blocks.Interfaces.RealInput TAir[numZones](each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC") "Air temperature of each zone" annotation (Placement(transformation(extent={{-140,80}, {-100,120}}), iconTransformation(extent={{-140,80},{-100,120}}))); Modelica.Blocks.Interfaces.RealInput TRad[numZones]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="°C") "Radiative temperature of each zone" + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC") "Radiative temperature of each zone" annotation (Placement(transformation(extent={{-140,56}, {-100,96}}), iconTransformation(extent={{-140,56},{-100, 96}}))); Modelica.Blocks.Interfaces.RealInput X_w[numZones]( - final quantity="MassFraction", - final unit="1") if calc_rel_humidity + each final quantity="MassFraction", + each final unit="1") if calc_rel_humidity "Absolute humidity in thermal zone" annotation ( Placement(transformation(extent={{-140,28},{-100,68}}), iconTransformation(extent={{-140,22},{-100,62}}))); - Modelica.Blocks.Interfaces.RealInput PCooler[numZones](final quantity="HeatFlowRate", - final unit="W") + Modelica.Blocks.Interfaces.RealInput PCooler[numZones](each final quantity="HeatFlowRate", + each final unit="W") "Power consumed for cooling with ideal coolers by each zone" annotation ( Placement(transformation(extent={{-140,-34},{-100,6}}), iconTransformation(extent={{-140,-34},{-100,6}}))); - Modelica.Blocks.Interfaces.RealInput PHeater[numZones](final quantity="HeatFlowRate", - final unit="W") + Modelica.Blocks.Interfaces.RealInput PHeater[numZones](each final quantity="HeatFlowRate", + each final unit="W") "Power consumed for heating ling with ideal heaters by each zone" annotation (Placement(transformation(extent={{-140,-6},{-100,34}}), iconTransformation(extent={{-140,-6},{-100,34}}))); @@ -145,7 +145,7 @@ model MultizonePostProcessing Utilities.Psychrometrics.Phi_pTX calcPhi[numZones] if calc_rel_humidity "Calculates relative humdity" annotation (Placement(transformation(extent={{-22,32},{-2,52}}))); - Modelica.Blocks.Sources.Constant constPressure[numZones](k=PAirConstant) + Modelica.Blocks.Sources.Constant constPressure[numZones](each k=PAirConstant) if calc_rel_humidity annotation (Placement(transformation(extent={{-78,20},{-62,36}}))); Modelica.Blocks.Interfaces.RealOutput TOperativeMean( @@ -169,14 +169,14 @@ model MultizonePostProcessing "Average relative humidity of all zones" annotation (Placement(transformation(extent={{58,48},{74,64}}))); Modelica.Blocks.Interfaces.RealOutput QIntGains[numZones,3]( - final quantity="Energy", - final unit="J", - displayUnit="kWh") + each final quantity="Energy", + each final unit="J", + each displayUnit="kWh") "Heat gains based on internal gains for each zone from persons, machines, and light" annotation (Placement(transformation(extent={{100,-122},{120,-102}}), iconTransformation(extent={{100,-130},{120,-110}}))); - Modelica.Blocks.Interfaces.RealInput QIntGains_flow[numZones,3](final - quantity="HeatFlowRate", final unit="W") + Modelica.Blocks.Interfaces.RealInput QIntGains_flow[numZones,3](each final + quantity="HeatFlowRate", each final unit="W") "Heat flow based on internal gains for each zone from persons, machines, and light" annotation ( Placement(transformation(extent={{-140,-140},{-100,-100}}), diff --git a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/PartialMultizone.mo b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/PartialMultizone.mo index fd691ea0f2..91e69cfea0 100644 --- a/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/PartialMultizone.mo +++ b/AixLib/ThermalZones/ReducedOrder/Multizone/BaseClasses/PartialMultizone.mo @@ -55,16 +55,16 @@ partial model PartialMultizone "Partial model for multizone models" rotation=90, origin={60,-110}))); Modelica.Blocks.Interfaces.RealOutput TAir[size(zone, 1)]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="degC") if ASurTot > 0 or VAir > 0 + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC") if ASurTot > 0 or VAir > 0 "Indoor air temperature" annotation (Placement(transformation(extent={{100,71},{120,91}}), iconTransformation(extent={{80,19},{100,40}}))); Modelica.Blocks.Interfaces.RealOutput TRad[size(zone, 1)]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="degC") if ASurTot > 0 + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC") if ASurTot > 0 "Mean indoor radiation temperature" annotation (Placement(transformation(extent={{100,49},{120,69}}), iconTransformation(extent={{80,0},{100,20}}))); @@ -149,10 +149,10 @@ partial model PartialMultizone "Partial model for multizone models" enable=not recOrSep)); Modelica.Blocks.Interfaces.RealInput TSetHeat[numZones]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="degC", - min=0) "Set point for heater - used only if zoneParam[i].HeaterOn is true" + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC", + each min=0) "Set point for heater - used only if zoneParam[i].HeaterOn is true" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=270, @@ -161,10 +161,10 @@ partial model PartialMultizone "Partial model for multizone models" rotation=270, origin={-52,-110}))); Modelica.Blocks.Interfaces.RealInput TSetCool[numZones]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="degC", - min=0) "Set point for cooler - used only if zoneParam[i].CoolerOn is true" + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC", + each min=0) "Set point for cooler - used only if zoneParam[i].CoolerOn is true" annotation (Placement(transformation( extent={{20,-20},{-20,20}}, rotation=270, @@ -172,20 +172,20 @@ partial model PartialMultizone "Partial model for multizone models" extent={{10,-10},{-10,10}}, rotation=270, origin={-74,-110}))); - Modelica.Blocks.Interfaces.RealOutput PHeater[numZones](final quantity="HeatFlowRate", - final unit="W") + Modelica.Blocks.Interfaces.RealOutput PHeater[numZones](each final quantity="HeatFlowRate", + each final unit="W") "Power for heating" annotation ( Placement(transformation(extent={{100,-56},{120,-36}}), iconTransformation(extent={{80,-80},{100,-60}}))); - Modelica.Blocks.Interfaces.RealOutput PCooler[numZones](final quantity="HeatFlowRate", - final unit="W") + Modelica.Blocks.Interfaces.RealOutput PCooler[numZones](each final quantity="HeatFlowRate", + each final unit="W") "Power for cooling" annotation ( Placement(transformation(extent={{100,-70},{120,-50}}),iconTransformation( extent={{80,-100},{100,-80}}))); - Modelica.Blocks.Interfaces.RealOutput QIntGains_flow[numZones,3](final - quantity="HeatFlowRate", final unit="W") if ASurTot > 0 or VAir > 0 + Modelica.Blocks.Interfaces.RealOutput QIntGains_flow[numZones,3](each final + quantity="HeatFlowRate", each final unit="W") if ASurTot > 0 or VAir > 0 "Heat flow based on internal gains for each zone from persons, machines, and light" annotation (Placement(transformation(extent={{100,-90},{ 120,-70}}), iconTransformation(extent={{80,-100},{100,-80}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Multizone/Multizone.mo b/AixLib/ThermalZones/ReducedOrder/Multizone/Multizone.mo index 85e207d39e..2efa4672da 100644 --- a/AixLib/ThermalZones/ReducedOrder/Multizone/Multizone.mo +++ b/AixLib/ThermalZones/ReducedOrder/Multizone/Multizone.mo @@ -6,18 +6,18 @@ model Multizone Modelica.Blocks.Interfaces.RealInput ventTemp[numZones]( - final quantity="ThermodynamicTemperature", - final unit="K", - displayUnit="degC", - min=0) + each final quantity="ThermodynamicTemperature", + each final unit="K", + each displayUnit="degC", + each min=0) "Ventilation and infiltration temperature" annotation (Placement(transformation(extent={{-120,-12},{-80,28}}), iconTransformation( extent={{-10,-10},{10,10}}, rotation=0, origin={-90,0}))); - Modelica.Blocks.Interfaces.RealInput ventRate[numZones](final - quantity="VolumeFlowRate", final unit="1/h") + Modelica.Blocks.Interfaces.RealInput ventRate[numZones]( + each final quantity="VolumeFlowRate", each final unit="1/h") "Ventilation and infiltration rate" annotation (Placement(transformation(extent={{-120,-40},{-80,0}}), iconTransformation(extent={{-100,-36},{-80,-16}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Multizone/MultizoneEquipped.mo b/AixLib/ThermalZones/ReducedOrder/Multizone/MultizoneEquipped.mo index 399c7c0c19..76f398a74f 100644 --- a/AixLib/ThermalZones/ReducedOrder/Multizone/MultizoneEquipped.mo +++ b/AixLib/ThermalZones/ReducedOrder/Multizone/MultizoneEquipped.mo @@ -114,7 +114,7 @@ model MultizoneEquipped "CO2 concentration in the thermal zone in ppm" annotation (Placement(transformation(extent={{100,10},{120,30}}))); protected - parameter Real zoneFactor[numZones,1](fixed=false) + parameter Real zoneFactor[numZones,1](each fixed=false) "Calculated zone factors"; parameter Real VAirRes(fixed=false) "Resulting air volume in zones supplied by the AHU"; diff --git a/AixLib/ThermalZones/ReducedOrder/SolarGain/BaseClasses/PartialCorrectionGTaue.mo b/AixLib/ThermalZones/ReducedOrder/SolarGain/BaseClasses/PartialCorrectionGTaue.mo index 7a16da9cdc..9ef361b6d3 100644 --- a/AixLib/ThermalZones/ReducedOrder/SolarGain/BaseClasses/PartialCorrectionGTaue.mo +++ b/AixLib/ThermalZones/ReducedOrder/SolarGain/BaseClasses/PartialCorrectionGTaue.mo @@ -2,73 +2,73 @@ within AixLib.ThermalZones.ReducedOrder.SolarGain.BaseClasses; partial model PartialCorrectionGTaue "Partial model for correction of the solar gain factor and for the translucence" - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin "Thermal transmission coefficient of whole window" annotation (dialog(group="window")); parameter Modelica.Units.SI.Angle xi(displayUnit="degree") = 0 "Elevation angle"; - parameter Modelica.Units.SI.Angle[n] til(displayUnit="degree") + parameter Modelica.Units.SI.Angle[n] til(each displayUnit="degree") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (dialog(group="window")); Modelica.Blocks.Interfaces.RealOutput[n] corG_Dir( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for direct radiation" annotation (Placement(transformation(extent={{80,-30},{100,-10}}), iconTransformation(extent={{80,-30},{100,-10}}))); Modelica.Blocks.Interfaces.RealOutput[n] corG_DifCle( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for diffuse radiation while clear sky" annotation (Placement(transformation(extent={{80,-50},{100,-30}}), iconTransformation(extent={{80,-50},{100,-30}}))); Modelica.Blocks.Interfaces.RealOutput[n] corG_DifCov( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for diffuse radiation while covered sky" annotation (Placement(transformation(extent={{80,-70},{100,-50}}), iconTransformation(extent={{80,-70},{100,-50}}))); Modelica.Blocks.Interfaces.RealOutput[n] corG_Gro( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for ground reflection radiation" annotation (Placement(transformation(extent={{80,-90},{100,-70}}), iconTransformation(extent={{80,-90},{100,-70}}))); Modelica.Blocks.Interfaces.RealOutput[n] corTaue_Dir( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for direct irradiation" annotation (Placement(transformation(extent={{80,10},{100,30}}), iconTransformation(extent={{80,10},{100,30}}))); Modelica.Blocks.Interfaces.RealOutput[n] corTaue_DifCle( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for diffuse irradiation during clear sky" annotation (Placement(transformation(extent={{80,30},{100,50}}), iconTransformation(extent={{80,30},{100,50}}))); Modelica.Blocks.Interfaces.RealOutput[n] corTaue_DifCov( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for diffuse irradiation during covered sky" annotation (Placement(transformation(extent={{80,50},{100,70}}), iconTransformation(extent={{80,50},{100,70}}))); Modelica.Blocks.Interfaces.RealOutput[n] corTaue_Gro( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for ground reflection radiation" annotation (Placement(transformation(extent={{80,70},{100,90}}), iconTransformation(extent={{80,70},{100,90}}))); Modelica.Blocks.Interfaces.RealInput incAng[n]( - final quantity="Angle", - final unit="rad", - displayUnit="degree") + each final quantity="Angle", + each final unit="rad", + each displayUnit="degree") "Incidence angles of the sun beam on a tilted surface" annotation (Placement(transformation(extent={{-120,-10},{-80,30}}), iconTransformation(extent={{-100,10},{-80,30}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/SolarGain/CorrectionGTaueDoublePane.mo b/AixLib/ThermalZones/ReducedOrder/SolarGain/CorrectionGTaueDoublePane.mo index 5a936eb05a..c207bb5185 100644 --- a/AixLib/ThermalZones/ReducedOrder/SolarGain/CorrectionGTaueDoublePane.mo +++ b/AixLib/ThermalZones/ReducedOrder/SolarGain/CorrectionGTaueDoublePane.mo @@ -41,6 +41,8 @@ model CorrectionGTaueDoublePane "Correction of the solar gain factor and the Real[n] qSek2_Gro "Overall coefficient of heat transfer for double pane window"; protected + parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin_dimless=1 + "Auxiliary parameter for dimensionless UWin"; parameter Modelica.Units.SI.TransmissionCoefficient g_Dir0=taue_Dir0 + q210 + q220 "Reference vertical parallel transmission coefficient for direct radiation for double pane window"; @@ -66,36 +68,28 @@ protected 2)/xn2_DifCov "Energetic degree of transmission for second pane"; parameter Modelica.Units.SI.Emissivity a_1DifCov=1 - tau_1DifCov - rho_1DifCov "Degree of absorption for single pane window"; - parameter Modelica.Units.SI.CoefficientOfHeatTransfer q21_DifCov=a_1DifCov*(1 - + (tau_1DifCov*rho_1DifCov/xn2_DifCov))*UWin/25 - "Coefficient of heat transfer for exterior pane of double pane window"; - parameter Modelica.Units.SI.CoefficientOfHeatTransfer q22_DifCov=a_1DifCov*( - tau_1DifCov/xn2_DifCov)*(1 - (UWin/7.7)) - "Coefficient of heat transfer for interior pane of double pane window"; - parameter Modelica.Units.SI.CoefficientOfHeatTransfer qSek2_DifCov=q21_DifCov + parameter Real q21_DifCov=a_1DifCov*(1 + + (tau_1DifCov*rho_1DifCov/xn2_DifCov))*UWin/UWin_dimless/25 + "Auxiliary variable for exterior pane of double pane window"; + parameter Real q22_DifCov=a_1DifCov*( + tau_1DifCov/xn2_DifCov)*(1 - (UWin/UWin_dimless/7.7)) + "Auxiliary variable for interior pane of double pane window"; + parameter Real qSek2_DifCov=q21_DifCov + q22_DifCov - "Overall coefficient of heat transfer for double pane window"; + "Auxiliary variable for whole double pane window"; equation for i in 1:n loop //Calculating variables for the overall degree of energy passage for //direct irradiation - if (1-rho_1Dir[i]^2)==0 then - xn2_Dir[i]=10^(-20); - else - xn2_Dir[i]= 1-rho_1Dir[i]^2; - end if; + xn2_Dir[i]=max(10^(-20),1-rho_1Dir[i]^2); q21_Dir[i]=a_1Dir[i]*(1+(tau_1Dir[i]*rho_1Dir[i]/xn2_Dir[i]))*UWin/25; q22_Dir[i]= a_1Dir[i]*(tau_1Dir[i]/xn2_Dir[i])*(1-(UWin/7.7)); qSek2_Dir[i]=q21_Dir[i]+q22_Dir[i]; tau_2Dir[i]= tau_1Dir[i]^2/xn2_Dir[i]; //Calculating variables for diffuse irradiation at clear sky - if (1-rho_1DifCle[i]^2)==0 then - xn2_DifCle[i]=10^(-20); - else - xn2_DifCle[i]= 1-rho_1DifCle[i]^2; - end if; + xn2_DifCle[i]=max(10^(-20),1-rho_1DifCle[i]^2); q21_DifCle[i]=a_1DifCle[i]*(1+(tau_1DifCle[i]*rho_1DifCle[i]/ xn2_DifCle[i]))*UWin/25; q22_DifCle[i]= a_1DifCle[i]*(tau_1DifCle[i]/xn2_DifCle[i])*(1-(UWin/7.7)); @@ -104,11 +98,7 @@ equation //Calculating variables for the overall degree of energy passage for ground //reflection radiation - if (1-rho_1Gro[i]^2)==0 then - xn2_Gro[i]=10^(-20); - else - xn2_Gro[i]= 1-rho_1Gro[i]^2; - end if; + xn2_Gro[i]=max(10^(-20),1-rho_1Gro[i]^2); q21_Gro[i]=a_1Gro[i]*(1+(tau_1Gro[i]*rho_1Gro[i]/xn2_Gro[i]))*UWin/25; q22_Gro[i]= a_1Gro[i]*(tau_1Gro[i]/xn2_Gro[i])*(1-(UWin/7.7)); qSek2_Gro[i]=q21_Gro[i]+q22_Gro[i]; diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HVisible.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HVisible.mo index 613b062a11..aa1b1f19a0 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HVisible.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HVisible.mo @@ -2,7 +2,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses; model HVisible "Calculates the solar energy entering the room in the visible area" extends Modelica.Blocks.Icons.Block; - parameter Integer n(min=1) "Number of windows" + parameter Integer n(min=1)=1 "Number of windows" annotation (Dialog(group="window")); parameter Modelica.Units.SI.TransmissionCoefficient tau_vis[n] @@ -14,7 +14,7 @@ model HVisible "Degree of light transmission for diffuse irradiation, with sunscreen" annotation (Dialog(group="window")); - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); final parameter Modelica.Units.SI.ReflectionCoefficient rho=0.2 "Degree of ground reflection"; @@ -24,30 +24,30 @@ model HVisible annotation (Placement(transformation(extent={{-120,-40},{-80,0}}), iconTransformation(extent={{-114,-6},{-100,8}}))); Modelica.Blocks.Interfaces.RealInput corTaue_Dir[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for direct irradiation" annotation (Placement(transformation(extent={{-128,78},{-108,98}}), iconTransformation(extent={{-114,-106},{-100,-92}}))); Modelica.Blocks.Interfaces.RealInput corTaue_DifCle[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for diffuse irradiation during clear sky" annotation (Placement(transformation(extent={{-120,-92},{-100,-72}}), iconTransformation(extent={{-114,-86},{-100,-72}}))); Modelica.Blocks.Interfaces.RealInput corTaue_DifCov[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for diffuse irradiation during covered sky" annotation (Placement(transformation(extent={{-120,-72},{-100,-52}}), iconTransformation(extent={{-114,-66},{-100,-52}}))); Modelica.Blocks.Interfaces.RealInput corTaue_Gro[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for ground reflection radiation" annotation (Placement(transformation(extent={{-120,-52},{-100,-32}}), iconTransformation(extent={{-114,-46},{-100,-32}}))); @@ -59,8 +59,8 @@ model HVisible iconTransformation(extent={{-114,-26},{-100,-12}}))); Modelica.Blocks.Interfaces.RealInput HDirTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Direct irradition on tilted surface" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Direct irradition on tilted surface" annotation (Placement(transformation(extent={{-114,76},{-100,90}}), iconTransformation(extent={{-114,76},{-100,90}}))); @@ -83,22 +83,22 @@ model HVisible iconTransformation(extent={{-114,12},{-100,26}}))); Modelica.Blocks.Interfaces.RealInput HDifTilCov[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface at covered sky" annotation (Placement(transformation(extent={{-116,42},{-100,58}}), iconTransformation(extent={{-114,44},{-100,58}}))); Modelica.Blocks.Interfaces.RealInput HDifTilCle[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface at clear sky" annotation (Placement(transformation(extent={{-116,58},{-100,74}}), iconTransformation(extent={{-114,60},{-100,74}}))); Modelica.Blocks.Interfaces.RealOutput HVis[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "solar energy entering the room in the visible area" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={{100,-10},{120,10}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HWindow.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HWindow.mo index 5a4a628e2a..7834150ccd 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HWindow.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/HWindow.mo @@ -2,7 +2,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses; model HWindow "Calculates the solar heat input through the window" extends Modelica.Blocks.Icons.Block; - parameter Integer n(min=1) "Number of windows" + parameter Integer n(min=1)=1 "Number of windows" annotation (Dialog(group="window")); parameter Modelica.Units.SI.TransmissionCoefficient g[n] "Total energy transmittance of windows" annotation (Dialog(group="window")); @@ -10,7 +10,7 @@ model HWindow "Calculates the solar heat input through the window" radiation" annotation (Dialog(group="window")); parameter Modelica.Units.SI.TransmissionCoefficient g_TotDif[n] "Total energy transmittance of windows with closed sunscreen for diffuse radiation" annotation (Dialog(group="window")); - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); final parameter Modelica.Units.SI.ReflectionCoefficient rho=0.2 "Degree of ground reflection"; @@ -21,14 +21,14 @@ model HWindow "Calculates the solar heat input through the window" annotation (Placement(transformation(extent={{-120,8},{-100,28}}), iconTransformation(extent={{-114,14},{-100,28}}))); Modelica.Blocks.Interfaces.RealInput HDifTilCov[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface at covered sky" annotation (Placement(transformation(extent={{-116,-68},{-100,-52}}), iconTransformation(extent={{-114,-66},{-100,-52}}))); Modelica.Blocks.Interfaces.RealInput HDifTilCle[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface at clear sky" annotation (Placement(transformation(extent={{-116,-88},{-100,-72}}), iconTransformation(extent={{-114,-86},{-100,-72}}))); @@ -43,8 +43,8 @@ model HWindow "Calculates the solar heat input through the window" annotation (Placement(transformation(extent={{-116,-108},{-100,-92}}), iconTransformation(extent={{-114,-106},{-100,-92}}))); Modelica.Blocks.Interfaces.RealInput HDirTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Direct irradition on tilted surface" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Direct irradition on tilted surface" annotation (Placement(transformation(extent={{-120,-26},{-106,-12}}), iconTransformation(extent={{-114,-26},{-100,-12}}))); Modelica.Blocks.Interfaces.BooleanInput sunscreen[n] @@ -52,34 +52,34 @@ model HWindow "Calculates the solar heat input through the window" annotation (Placement(transformation(extent={{-120,-40},{-80,0}}), iconTransformation(extent={{-114,-6},{-100,8}}))); Modelica.Blocks.Interfaces.RealInput corG_Dir[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for direct radiation" annotation (Placement(transformation(extent={{-120,86},{-100,106}}), iconTransformation(extent={{-114,92},{-100,106}}))); Modelica.Blocks.Interfaces.RealInput corG_DifCle[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for diffuse radiation while clear sky" annotation (Placement(transformation(extent={{-130,68},{-110,88}}), iconTransformation(extent={{-114,74},{-100,88}}))); Modelica.Blocks.Interfaces.RealInput corG_DifCov[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for diffuse radiation while covered sky" annotation (Placement(transformation(extent={{-120,48},{-100,68}}), iconTransformation(extent={{-114,54},{-100,68}}))); Modelica.Blocks.Interfaces.RealInput corG_Gro[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Transmission coefficient correction factor for ground reflection radiation" annotation (Placement(transformation(extent={{-120,28},{-100,48}}), iconTransformation(extent={{-114,34},{-100,48}}))); Modelica.Blocks.Interfaces.RealOutput HWin[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar radiation transmitted through aggregated window" annotation (Placement(transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={{100,-10},{120,10}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Illumination.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Illumination.mo index 8c2cd8ce01..8aee1a2414 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Illumination.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Illumination.mo @@ -7,9 +7,9 @@ model Illumination "Radiation equivalent for uniformly overcast skies"; //Window parameter - parameter Integer n(min=1) "Number of windows" + parameter Integer n(min=1)=1 "Number of windows" annotation (Dialog(group="window")); - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); parameter Real r[n] "Frame share" annotation (Dialog(group="window")); @@ -25,22 +25,22 @@ model Illumination annotation (Placement(transformation(extent={{98,-10},{118,10}}), iconTransformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput HVis[n](final quantity= - "RadiantEnergyFluenceRate", final unit="W/m2") + Modelica.Blocks.Interfaces.RealInput HVis[n](each final quantity= + "RadiantEnergyFluenceRate", each final unit="W/m2") "Solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{-120,70},{-100,90}}), iconTransformation(extent={{-120,70},{-100,90}}))); Modelica.Blocks.Interfaces.RealInput corTaue_DifCov[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for diffuse irradiation during covered sky" annotation (Placement(transformation(extent={{-120,-70},{-100,-50}}), iconTransformation(extent={{-120,-70},{-100,-50}}))); Modelica.Blocks.Interfaces.RealInput corTaue_Gro[n]( - final quantity="TransmissionCoefficient", - final unit="1") + each final quantity="TransmissionCoefficient", + each final unit="1") "Correction value for translucence for ground reflection radiation" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30},{-100,50}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SelfShadowing.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SelfShadowing.mo index bb7c6501e7..ac2b850747 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SelfShadowing.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SelfShadowing.mo @@ -1,7 +1,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses; block SelfShadowing "Self-shadowing due to projections for direct radiation" - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); extends Modelica.Blocks.Icons.Block; parameter Modelica.Units.SI.Length b[n] "Width of window" @@ -28,16 +28,16 @@ block SelfShadowing parameter Modelica.Units.SI.Length dBel[n] "Distance between projection (below) and window" annotation (Dialog(group="Window parameter")); - parameter Modelica.Units.SI.Angle azi[n](displayUnit="degree") "Surface azimuth. azi=-90 degree if surface outward unit normal points + parameter Modelica.Units.SI.Angle azi[n](each displayUnit="deg") "Surface azimuth. azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (Dialog(group="Window parameter")); - parameter Modelica.Units.SI.Angle til[n](displayUnit="degree") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="Window parameter")); Modelica.Blocks.Interfaces.RealInput incAng[n]( - final quantity="Angle", - final unit="rad", - displayUnit="degree") + each final quantity="Angle", + each final unit="rad", + each displayUnit="deg") "Incidence angle of the sun beam on a tilted surface" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-120,-80},{-100,-60}}))); @@ -53,20 +53,20 @@ block SelfShadowing displayUnit="deg") "Solar altitude angle" annotation (Placement(transformation(extent={{-140,-30},{-100,10}}), iconTransformation(extent={{-120,-10},{-100,10}}))); - Modelica.Blocks.Interfaces.RealOutput x_As[n](min=0, - final unit="1") "Not shaded percentage of window area" + Modelica.Blocks.Interfaces.RealOutput x_As[n](each min=0, + each final unit="1") "Not shaded percentage of window area" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-8},{118,10}}))); protected Real e_hn[n] "Horizontal calculation factor"; Real e_vn[n] "Vertical calculation factor"; - Modelica.Units.SI.Distance x1[n] "Auxiliary variable for shadow from left"; - Modelica.Units.SI.Distance x2[n] "Auxiliary variable for shadow from right"; - Modelica.Units.SI.Distance x3[n] "Auxiliary variable for shadow from above"; - Modelica.Units.SI.Distance x4[n] "Auxiliary variable for shadow from below"; - Modelica.Units.SI.Distance s_h[n] "Horizontal reduction of window"; - Modelica.Units.SI.Distance s_v[n] "Vertical reduction of window"; + Modelica.Units.SI.Length x1[n] "Auxiliary variable for shadow from left"; + Modelica.Units.SI.Length x2[n] "Auxiliary variable for shadow from right"; + Modelica.Units.SI.Length x3[n] "Auxiliary variable for shadow from above"; + Modelica.Units.SI.Length x4[n] "Auxiliary variable for shadow from below"; + Modelica.Units.SI.Length s_h[n] "Horizontal reduction of window"; + Modelica.Units.SI.Length s_v[n] "Vertical reduction of window"; Modelica.Units.SI.Area A_S[n] "Auxiliary variable for effective area"; Modelica.Units.SI.Area A_s[n] "Effective windowarea"; equation diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/ShadedWindow.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/ShadedWindow.mo index db3acc46d3..ae1a79e557 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/ShadedWindow.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/ShadedWindow.mo @@ -2,7 +2,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses; model ShadedWindow "Calculation of solar energy transmitted through windows considering shadowing." - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin "Thermal transmission coefficient of whole window" @@ -23,7 +23,7 @@ model ShadedWindow annotation (dialog(group="sunscreen")); parameter Modelica.Units.SI.Angle xi(displayUnit="degree") = 0 "Elevation angle"; - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); parameter Modelica.Units.SI.Length b[n] "Width of window" annotation (Dialog(group="window")); @@ -49,12 +49,12 @@ model ShadedWindow parameter Modelica.Units.SI.Length dBel[n] "Distance between projection (below) and window" annotation (Dialog(group="window")); - parameter Modelica.Units.SI.Angle azi[n](displayUnit="degree") "Surface azimuth. azi=-90 degree if surface outward unit normal points + parameter Modelica.Units.SI.Angle azi[n](each displayUnit="deg") "Surface azimuth. azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (Dialog(group="window")); - parameter Integer nCorPoi(min = 1) "Number of corner points" + parameter Integer nCorPoi(min = 1)=1 "Number of corner points" annotation(dialog(group="skyline")); - parameter Modelica.Units.SI.Angle[nCorPoi] alpha(displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, + parameter Modelica.Units.SI.Angle[nCorPoi] alpha(each displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (dialog(group="skyline")); parameter Modelica.Units.SI.Height[nCorPoi] deltaH @@ -71,9 +71,9 @@ model ShadedWindow parameter Modelica.Units.SI.TransmissionCoefficient g_TotDif[n] "Total energy transmittance of windows with closed sunscreen for diffuse radiation" annotation (Dialog(group="window")); Modelica.Blocks.Interfaces.RealInput incAng[n]( - final quantity="Angle", - final unit="rad", - displayUnit="degree") + each final quantity="Angle", + each final unit="rad", + each displayUnit="degree") "Incidence angles of the sun beam on a tilted surface" annotation (Placement(transformation(extent={{-124,84},{-100,108}}), iconTransformation(extent={{-120,88},{-100,108}}))); @@ -95,8 +95,8 @@ model ShadedWindow annotation (Placement(transformation(extent={{-124,60},{-100,84}}), iconTransformation(extent={{-120,64},{-100,84}}))); Modelica.Blocks.Interfaces.RealInput HDirTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Direct irradition on tilted surface" annotation (Placement(transformation(extent={{-124,30},{-100,54}}), iconTransformation(extent={{-120,34},{-100,54}}))); @@ -115,21 +115,21 @@ model ShadedWindow iconTransformation(extent={{-120,-106},{-100,-86}}))); Modelica.Blocks.Interfaces.RealInput HDifTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface from the sky" annotation (Placement(transformation(extent={{-124,-88},{-100,-64}}), iconTransformation(extent={{-120,-84},{-100,-64}}))); Modelica.Blocks.Interfaces.RealOutput HVis[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{100,30},{120,50}}), iconTransformation(extent={{100,30},{120,50}}))); Modelica.Blocks.Interfaces.RealOutput HWin[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar radiation transmitted through aggregated window" annotation (Placement(transformation(extent={{100,-50},{120,-30}}), iconTransformation(extent={{100,-50},{120,-30}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SkylineShadowing.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SkylineShadowing.mo index 27a0e84919..aaa924e5ef 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SkylineShadowing.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/SkylineShadowing.mo @@ -3,9 +3,9 @@ model SkylineShadowing "Calculation of the limit elevation angle for shadowing by a skyline (for direct solar irradiation)" extends Modelica.Blocks.Icons.Block; - parameter Integer n(min = 1) "Number of corner points" + parameter Integer n(min = 1)=1 "Number of corner points" annotation(dialog(group="skyline")); - parameter Modelica.Units.SI.Angle[n] alpha(displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, + parameter Modelica.Units.SI.Angle[n] alpha(each displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (dialog(group="skyline")); parameter Modelica.Units.SI.Height[n] deltaH @@ -34,12 +34,12 @@ model SkylineShadowing protected Modelica.Units.SI.Angle[n - 1] X "Calculation factor to simplify equations"; Modelica.Units.SI.Angle[n - 1] Y "Calculation factor to simplify equations"; - Modelica.Units.SI.Angle altLimi[n - 1](displayUnit="deg") + Modelica.Units.SI.Angle altLimi[n - 1](each displayUnit="deg") "Limit elevation angle for shadowing by a skyline for point i and i+1"; Modelica.Units.SI.Angle gamma[n]( - min=0, - max=Modelica.Constants.pi/2, - displayUnit="deg") "Elevation angle of the obstruction for point i"; + each min=0, + each max=Modelica.Constants.pi/2, + each displayUnit="deg") "Elevation angle of the obstruction for point i"; equation //Calculating gamma for i in 1:n loop diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Window.mo b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Window.mo index 0786b02bb1..7b296eb990 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Window.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/BaseClasses/Window.mo @@ -1,6 +1,6 @@ within AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses; model Window "Calculation of solar energy transmitted through windows" - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin "Thermal transmission coefficient of whole window" @@ -25,13 +25,13 @@ model Window "Calculation of solar energy transmitted through windows" annotation (dialog(group="sunscreen")); parameter Modelica.Units.SI.Angle xi(displayUnit="degree") = 0 "Elevation angle"; - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); Modelica.Blocks.Interfaces.RealInput incAng[n]( - final quantity="Angle", - final unit="rad", - displayUnit="degree") + each final quantity="Angle", + each final unit="rad", + each displayUnit="degree") "Incidence angles of the sun beam on a tilted surface" annotation (Placement(transformation(extent={{-124,68},{-100,92}}), iconTransformation(extent={{-120,72},{-100,92}}))); @@ -47,8 +47,8 @@ model Window "Calculation of solar energy transmitted through windows" annotation (Placement(transformation(extent={{-124,42},{-100,66}}), iconTransformation(extent={{-120,46},{-100,66}}))); Modelica.Blocks.Interfaces.RealInput HDirTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Direct irradition on tilted surface" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Direct irradition on tilted surface" annotation (Placement(transformation(extent={{-124,-92},{-100,-68}}), iconTransformation(extent={{-120,-88},{-100,-68}}))); @@ -65,27 +65,27 @@ model Window "Calculation of solar energy transmitted through windows" iconTransformation(extent={{-120,-32},{-100,-12}}))); Modelica.Blocks.Interfaces.RealInput HDifTil[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Hemispherical diffuse solar irradiation on a tilted surface from the sky" annotation (Placement(transformation(extent={{-124,-12},{-100,12}}), iconTransformation(extent={{-120,-8},{-100,12}}))); Modelica.Blocks.Interfaces.RealOutput HVis[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Solar energy entering the room in the visible area" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{100,30},{120,50}}), iconTransformation(extent={{100,30},{120,50}}))); Modelica.Blocks.Interfaces.RealOutput HWin[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar radiation transmitted through aggregated window" annotation (Placement(transformation(extent={{100,-50},{120,-30}}), iconTransformation(extent={{100,-50},{120,-30}}))); AixLib.ThermalZones.ReducedOrder.Windows.BaseClasses.Sunblind sunblind[n]( - final lim=lim) + each final lim=lim) annotation (Placement(transformation(extent={{-68,-42},{-56,-30}}))); AixLib.ThermalZones.ReducedOrder.SolarGain.CorrectionGTaueDoublePane CorGTaue( final n=n, diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Examples/ShadedWindow.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Examples/ShadedWindow.mo index 3006156cba..0a697a28b7 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Examples/ShadedWindow.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Examples/ShadedWindow.mo @@ -27,7 +27,7 @@ model ShadedWindow "Testmodel for ShadedWindow" bBel={0,0}, dAbo={0.5,0.5}, dBel={0,0}, - azi(displayUnit="deg") = {0,1.5707963267949}, + azi={0,1.5707963267949}, deltaH={5,5,10,10}, s={100,100,20,20}, gap={false,true,false}, diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/ShadedWindow.mo b/AixLib/ThermalZones/ReducedOrder/Windows/ShadedWindow.mo index 4b60729b35..7d9e56c451 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/ShadedWindow.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/ShadedWindow.mo @@ -2,7 +2,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows; model ShadedWindow "Calculation of solar energy transmitted through windows considering shadowing." parameter Modelica.Units.SI.Angle lat "Latitude"; - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin "Thermal transmission coefficient of whole window" @@ -23,7 +23,7 @@ model ShadedWindow annotation (dialog(group="sunscreen")); parameter Modelica.Units.SI.Angle xi(displayUnit="degree") = 0 "Elevation angle"; - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); parameter Modelica.Units.SI.Length b[n] "Width of window" annotation (Dialog(group="window")); @@ -49,12 +49,12 @@ model ShadedWindow parameter Modelica.Units.SI.Length dBel[n] "Distance between projection (below) and window" annotation (Dialog(group="window")); - parameter Modelica.Units.SI.Angle azi[n](displayUnit="degree") "Surface azimuth. azi=-90 degree if surface outward unit normal points + parameter Modelica.Units.SI.Angle azi[n](each displayUnit="deg") "Surface azimuth. azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (Dialog(group="window")); - parameter Integer nCorPoi(min = 1) "Number of corner points" + parameter Integer nCorPoi(min = 1)=1 "Number of corner points" annotation(dialog(group="skyline")); - parameter Modelica.Units.SI.Angle[nCorPoi] alpha(displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, + parameter Modelica.Units.SI.Angle[nCorPoi] alpha(each displayUnit="deg") "Azimuth of corner points, sorted from north to east to south to west, azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south" annotation (dialog(group="skyline")); parameter Modelica.Units.SI.Height[nCorPoi] deltaH @@ -72,14 +72,14 @@ model ShadedWindow radiation" annotation (Dialog(group="window")); Modelica.Blocks.Interfaces.RealOutput HVis[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Solar energy entering the room in the visible area" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{100,30},{120,50}}), iconTransformation(extent={{100,30},{120,50}}))); Modelica.Blocks.Interfaces.RealOutput HWin[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar radiation transmitted through aggregated window" annotation (Placement(transformation(extent={{100,-50},{120,-30}}), iconTransformation(extent={{100,-50},{120,-30}}))); diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/BaseClasses/IncidenceAngleVDI6007.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/BaseClasses/IncidenceAngleVDI6007.mo index 409fe77484..0c6ba41390 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/BaseClasses/IncidenceAngleVDI6007.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/BaseClasses/IncidenceAngleVDI6007.mo @@ -2,9 +2,9 @@ within AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses; block IncidenceAngleVDI6007 "The solar incidence angle on a tilted surface" extends Modelica.Blocks.Icons.Block; - parameter Modelica.Units.SI.Angle azi(displayUnit="degree") "Surface azimuth. azi=-90 degree if surface outward unit normal points + parameter Modelica.Units.SI.Angle azi(displayUnit="deg") "Surface azimuth. azi=-90 degree if surface outward unit normal points toward east; azi=0 if it points toward south"; - parameter Modelica.Units.SI.Angle til(displayUnit="degree") + parameter Modelica.Units.SI.Angle til(displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof"; Modelica.Blocks.Interfaces.RealInput solAzi(final quantity="Angle", final unit="rad") diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestAbove.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestAbove.mo index 1aed5f6d06..b0401985dc 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestAbove.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestAbove.mo @@ -14,11 +14,12 @@ model SelfShadowingTestAbove final bBel={0}, final dAbo={0.01}, final dBel={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}) + final azi={0}, + final til={1.5707963267949}) "Shadowing due to a projection above the window" annotation (Placement(transformation(extent={{56,46},{88,74}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til= + 1.5707963267949) "Incidence angle for the window" annotation (Placement(transformation(extent={{-26,40},{-6,60}}))); Modelica.Blocks.Sources.Constant solAzi(k=0) @@ -42,11 +43,12 @@ model SelfShadowingTestAbove final bBel={0}, final dAbo={0.01}, final dBel={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}) + final azi={0}, + final til={1.5707963267949}) "Shadowing due to a projection above the window" annotation (Placement(transformation(extent={{56,-32},{88,-4}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng2(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng2(azi=0, til= + 1.5707963267949) "Incidence angle for the window" annotation (Placement(transformation(extent={{-26,-38},{-6,-18}}))); Modelica.Blocks.Sources.Sine solAziSine(f=0.25, amplitude=2*Modelica.Constants.pi) diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestBelow.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestBelow.mo index c52f551db4..0c84cd59f7 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestBelow.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestBelow.mo @@ -12,12 +12,13 @@ model SelfShadowingTestBelow final dLef={0}, final bAbo={0}, final dAbo={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}, + final azi={0}, + final til={1.5707963267949}, final dBel={0.01}, final bBel={1}) "Shadowing due to a projection below" annotation (Placement(transformation(extent={{56,46},{88,74}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til= + 1.5707963267949) "Incidence Angle for the window" annotation (Placement(transformation(extent={{-26,40},{-6,60}}))); Modelica.Blocks.Sources.Constant solAzi(k=0) @@ -36,12 +37,13 @@ model SelfShadowingTestBelow final dLef={0}, final bAbo={0}, final dAbo={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}, + final azi={0}, + final til={1.5707963267949}, final bBel={1}, final dBel={-0.2}) "Shadowing due to a balkony" annotation (Placement(transformation(extent={{56,-40},{88,-12}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng2(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng2(azi=0, til= + 1.5707963267949) "Incidence angle for the window" annotation (Placement(transformation(extent={{-26,-46},{-6,-26}}))); Modelica.Blocks.Sources.Constant solAzi1(k=0) diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestLeft.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestLeft.mo index ca4e8308e0..d63251fd42 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestLeft.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestLeft.mo @@ -12,13 +12,14 @@ model SelfShadowingTestLeft final bBel={0}, final dAbo={0}, final dBel={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}, + final azi={0}, + final til={1.5707963267949}, final bLef={1}, final dLef={0.01}) "Shadowing due to a projection on the left-hand side of the window" annotation (Placement(transformation(extent={{62,-4},{94,24}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til= + 1.5707963267949) "Incidence angle for the window" annotation (Placement(transformation(extent={{-10,-12},{10,8}}))); Modelica.Blocks.Sources.Constant alt(k=0.3490658504) diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestRight.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestRight.mo index 34aad61e24..a79c8f6e3c 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestRight.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/SelfShadowing/SelfShadowingTestRight.mo @@ -10,15 +10,16 @@ model SelfShadowingTestRight final dLef={0}, final bBel={0}, final dBel={0}, - final azi(displayUnit="deg") = {0}, - final til(displayUnit="deg") = {1.5707963267949}, + final azi={0}, + final til={1.5707963267949}, final bRig={1}, final dRig={0.01}, final bAbo={0}, final dAbo={0}) "Shadowing due to a projection on the right-hand side" annotation (Placement(transformation(extent={{60,-4},{92,24}}))); - AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til=90) + AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.IncidenceAngleVDI6007 incAng1(azi=0, til= + 1.5707963267949) "Incidence Angle for the window" annotation (Placement(transformation(extent={{-10,-12},{10,8}}))); Modelica.Blocks.Sources.Constant alt(k=0.3490658504) diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/VDI2078/TestCase1_Illumination.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/VDI2078/TestCase1_Illumination.mo index cabe43122e..434715be66 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Validation/VDI2078/TestCase1_Illumination.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Validation/VDI2078/TestCase1_Illumination.mo @@ -288,7 +288,7 @@ model TestCase1_Illumination n=1, UWin=1.4, xi=0, - til(displayUnit="deg") = {1.5707963267949}) + til={1.5707963267949}) "Correction values for non-parallel and non-vertical irradiation for VDI2078 test case 1" annotation (Placement(transformation(extent={{-52,46},{-32,66}}))); @@ -808,8 +808,8 @@ model TestCase1_Illumination annotation (Placement(transformation(extent={{-76,-98},{-68,-90}}))); AixLib.BoundaryConditions.SolarGeometry.BaseClasses.IncidenceAngle incAng( - azi(displayUnit="deg") = 0, - til(displayUnit="deg") = 1.5707963267949, + azi(displayUnit="deg")=0, + til(displayUnit="deg")=1.5707963267949, lat=0.86393797973719) "Solar incidence angle on the tilted window" annotation (Placement(transformation(extent={{-54,-94},{-44,-84}}))); AixLib.ThermalZones.ReducedOrder.Windows.Validation.BaseClasses.SolarDeclinationAngleVDI6007 solarDeclinationAngleVDI diff --git a/AixLib/ThermalZones/ReducedOrder/Windows/Window.mo b/AixLib/ThermalZones/ReducedOrder/Windows/Window.mo index 2a1ab91157..27f50a436b 100644 --- a/AixLib/ThermalZones/ReducedOrder/Windows/Window.mo +++ b/AixLib/ThermalZones/ReducedOrder/Windows/Window.mo @@ -1,7 +1,7 @@ within AixLib.ThermalZones.ReducedOrder.Windows; model Window "Calculation of solar energy transmitted through windows" parameter Modelica.Units.SI.Angle lat "Latitude"; - parameter Integer n(min = 1) "Number of windows" + parameter Integer n(min = 1)=1 "Number of windows" annotation(dialog(group="window")); parameter Modelica.Units.SI.CoefficientOfHeatTransfer UWin "Thermal transmission coefficient of whole window" @@ -24,22 +24,22 @@ model Window "Calculation of solar energy transmitted through windows" parameter Modelica.Units.SI.RadiantEnergyFluenceRate lim "Limit for the sunscreen to become active" annotation (dialog(group="sunscreen")); - parameter Modelica.Units.SI.Angle xi(displayUnit="degree") = 0 + parameter Modelica.Units.SI.Angle xi(displayUnit="deg") = 0 "Elevation angle"; - parameter Modelica.Units.SI.Angle til[n](displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for + parameter Modelica.Units.SI.Angle til[n](each displayUnit="deg") "Surface tilt. til=90 degree for walls; til=0 for ceilings; til=180 for roof" annotation (Dialog(group="window")); parameter Modelica.Units.SI.Angle azi[n] "Surface azimuth" annotation (Dialog(group="window")); extends Modelica.Blocks.Icons.Block; Modelica.Blocks.Interfaces.RealOutput HVis[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") "Solar energy entering the room in the visible area" + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar energy entering the room in the visible area" annotation (Placement(transformation(extent={{100,30},{120,50}}), iconTransformation(extent={{100,30},{120,50}}))); Modelica.Blocks.Interfaces.RealOutput HWin[n]( - final quantity="RadiantEnergyFluenceRate", - final unit="W/m2") + each final quantity="RadiantEnergyFluenceRate", + each final unit="W/m2") "Solar radiation transmitted through aggregated window" annotation (Placement(transformation(extent={{100,-50},{120,-30}}), iconTransformation(extent={{100,-50},{120,-30}}))); diff --git a/AixLib/Utilities/Sensors/ExergyMeter/FlowExergyMeter.mo b/AixLib/Utilities/Sensors/ExergyMeter/FlowExergyMeter.mo index 67577f02b1..a5d0d5005e 100644 --- a/AixLib/Utilities/Sensors/ExergyMeter/FlowExergyMeter.mo +++ b/AixLib/Utilities/Sensors/ExergyMeter/FlowExergyMeter.mo @@ -5,7 +5,7 @@ model FlowExergyMeter extends Modelica.Icons.RoundSensor; Modelica.Blocks.Interfaces.RealInput X_ref[Medium.nX]( - final quantity="MassFraction", final unit="1", min=0, max=1) + each final quantity="MassFraction", each final unit="1", each min=0, each max=1) "Reference composition" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=90, diff --git a/AixLib/Utilities/Sensors/ExergyMeter/StoredExergyMeter.mo b/AixLib/Utilities/Sensors/ExergyMeter/StoredExergyMeter.mo index 84155d4702..7d8f8b6d8f 100644 --- a/AixLib/Utilities/Sensors/ExergyMeter/StoredExergyMeter.mo +++ b/AixLib/Utilities/Sensors/ExergyMeter/StoredExergyMeter.mo @@ -75,10 +75,10 @@ model StoredExergyMeter origin={0,0}))); Modelica.Blocks.Interfaces.RealInput T[n]( - final unit="K", - displayUnit="degC", - final quantity="ThermodynamicTemperature", - min=0) "Actual temperature" + each final unit="K", + each displayUnit="degC", + each final quantity="ThermodynamicTemperature", + each min=0) "Actual temperature" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=90, origin={0,-108}), iconTransformation( @@ -139,16 +139,16 @@ model StoredExergyMeter rotation=180, origin={27,-32}))); Modelica.Blocks.Interfaces.RealInput X_ref[Medium.nX]( - final quantity="MassFraction", final unit="1", min=0, max=1) + each final quantity="MassFraction", each final unit="1", each min=0, each max=1) "Reference composition" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, rotation=0, origin={-100,-70}))); Modelica.Blocks.Interfaces.RealInput X[Medium.nX]( - final quantity="MassFraction", - final unit="1", - min=0, - max=1) "Actual composition" annotation (Placement(transformation( + each final quantity="MassFraction", + each final unit="1", + each min=0, + each max=1) "Actual composition" annotation (Placement(transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={50,-108}))); diff --git a/AixLib/package.mo b/AixLib/package.mo index 7b429a0090..db44fbca58 100644 --- a/AixLib/package.mo +++ b/AixLib/package.mo @@ -4,9 +4,9 @@ package AixLib annotation ( uses( SDF(version="0.4.2"), - Modelica_DeviceDrivers(version="2.0.0"), + Modelica_DeviceDrivers(version="2.1.1"), Modelica(version="4.0.0")), - version="1.3.1", + version="1.3.2", conversion(from( version="0.3.2", script="modelica://AixLib/Resources/Scripts/ConvertAixLib_from_0.3.2_to_0.4.mos", @@ -89,7 +89,9 @@ package AixLib version="1.2.1", script="modelica://AixLib/Resources/Scripts/ConvertAixLib_from_1.2.1_to_1.2.2.mos", version="1.3.0", - script="modelica://AixLib/Resources/Scripts/ConvertAixLib_from_1.3.0_to_1.3.1.mos") + script="modelica://AixLib/Resources/Scripts/ConvertAixLib_from_1.3.0_to_1.3.1.mos", + version="1.3.1", + script="modelica://AixLib/Resources/Scripts/ConvertAixLib_from_1.3.1_to_1.3.2.mos") ), Documentation(info = "
The free open-source AixLib
library is being developed