diff --git a/IDEAS/Buildings/Components/Shading/BuildingShade.mo b/IDEAS/Buildings/Components/Shading/BuildingShade.mo
index 45cb396064..fece583a87 100644
--- a/IDEAS/Buildings/Components/Shading/BuildingShade.mo
+++ b/IDEAS/Buildings/Components/Shading/BuildingShade.mo
@@ -23,6 +23,11 @@ model BuildingShade
// Computation assumes that window base is at ground level.
// Viewing angle computed from center of glazing.
+ Modelica.Blocks.Sources.RealExpression HShaDirexpr(y=fraSunDir*HDirTil)
+ annotation (Placement(transformation(extent={{-30,40},{-10,60}})));
+ Modelica.Blocks.Sources.RealExpression HShaSkyDifexpr(y=fraSunDifSky*
+ HSkyDifTil)
+ annotation (Placement(transformation(extent={{-30,20},{-10,40}})));
protected
parameter Modelica.Units.SI.Angle vieAngObj=atan((hWin/2 + dh)/L)
"Viewing angle of opposite object";
@@ -57,13 +62,16 @@ equation
fraSunDir=1;
end if;
- HShaDirTil=fraSunDir*HDirTil;
- HShaSkyDifTil = fraSunDifSky*HSkyDifTil;
+
connect(angInc, iAngInc) annotation (Line(points={{-60,-50},{-14,-50},{-14,-50},
{40,-50}}, color={0,0,127}));
- connect(HGroDifTil, HShaGroDifTil)
- annotation (Line(points={{-60,10},{40,10},{40,10}}, color={0,0,127}));
+ connect(HShaDirexpr.y, HShaDir.u)
+ annotation (Line(points={{-9,50},{-1.2,50}}, color={0,0,127}));
+ connect(HShaSkyDifexpr.y, HShaSkyDif.u)
+ annotation (Line(points={{-9,30},{-1.2,30}}, color={0,0,127}));
+ connect(HGroDifTil, HShaSkyGro.u)
+ annotation (Line(points={{-60,10},{-1.2,10}}, color={0,0,127}));
annotation (
Icon(coordinateSystem(extent = {{-100, -100}, {100, 200}})),
Documentation(info="
@@ -96,6 +104,10 @@ can be modelled by changing the value of parameter fraSha according
", revisions="
Ctrl_to_beta_internal=0 when not using beta input.
Otherwise the variable is undefined, resulting in a singular system.
diff --git a/IDEAS/Buildings/Components/Shading/Interfaces/PartialShadingDevice.mo b/IDEAS/Buildings/Components/Shading/Interfaces/PartialShadingDevice.mo
index d3944d2afa..5a62daecbb 100644
--- a/IDEAS/Buildings/Components/Shading/Interfaces/PartialShadingDevice.mo
+++ b/IDEAS/Buildings/Components/Shading/Interfaces/PartialShadingDevice.mo
@@ -30,13 +30,21 @@ partial model PartialShadingDevice
linearise = linCon) if haveBoundaryPorts annotation (
Placement(visible = true, transformation(extent = {{12, 104}, {-8, 124}}, rotation = 0)));
Modelica.Blocks.Math.Add solDif(k1 = 1, k2 = 1) if haveBoundaryPorts and haveFrame annotation (
- Placement(visible = true, transformation(origin = {90, 30}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
+ Placement(visible = true, transformation(origin={50,90}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.RealExpression TeExpr(y=Te_internal)
"Expression for Te"
annotation (Placement(transformation(extent={{-68,178},{-48,198}})));
Modelica.Blocks.Sources.RealExpression TEnvExpr(y=TEnv_internal)
"Expression for TEnv"
annotation (Placement(transformation(extent={{-68,160},{-48,180}})));
+ Modelica.Blocks.Sources.RealExpression TDryBulExp(y=TDryBul_internal)
+ annotation (Placement(transformation(extent={{-20,-20},{0,0}})));
+ Modelica.Blocks.Routing.RealPassThrough HShaDir
+ annotation (Placement(transformation(extent={{0,44},{12,56}})));
+ Modelica.Blocks.Routing.RealPassThrough HShaSkyDif
+ annotation (Placement(transformation(extent={{0,24},{12,36}})));
+ Modelica.Blocks.Routing.RealPassThrough HShaSkyGro
+ annotation (Placement(transformation(extent={{0,4},{12,16}})));
protected
Modelica.Blocks.Interfaces.RealInput TDryBul_internal = Te_internal
"Internal variable to avoid assigning a value to a non-input in the model extends statement";
@@ -48,7 +56,6 @@ equation
TEnv_internal = 273.15;
end if;
- connect(TDryBul,TDryBul_internal);
connect(skyRadFra.port_a, port_frame) annotation (
Line(points = {{10, 192}, {55, 192}, {55, 160}, {100, 160}}, color = {191, 0, 0}));
connect(eConFra.port_a, port_frame) annotation (
@@ -57,14 +64,9 @@ equation
Line(points = {{-12, 172}, {-36, 172}, {-36, 110}, {-60, 110}}, color = {0, 0, 127}));
connect(solAbs.port_a, port_frame) annotation (
Line(points = {{10, 160}, {100, 160}}, color = {191, 0, 0}));
- connect(solDif.u2, HShaGroDifTil) annotation (
- Line(points = {{78, 24}, {40, 24}, {40, 10}}, color = {0, 0, 127}));
- connect(solDif.u1, HShaSkyDifTil) annotation (
- Line(points = {{78, 36}, {40, 36}, {40, 30}}, color = {0, 0, 127}));
connect(solDif.y, solAbs.solDif) annotation (
- Line(points = {{101, 30}, {108, 30}, {108, 142}, {-10, 142}, {-10, 162}}, color = {0, 0, 127}));
- connect(solAbs.solDir, HShaDirTil) annotation (
- Line(points = {{-10, 166}, {-14, 166}, {-14, 90}, {40, 90}, {40, 50}}, color = {0, 0, 127}));
+ Line(points={{61,90},{64,90},{64,106},{16,106},{16,100},{-18,100},{-18,142},
+ {-20,142},{-20,162},{-10,162}}, color = {0, 0, 127}));
connect(eCon.hForcedConExt, hForcedConExt) annotation (
Line(points = {{-10, 110}, {-60, 110}}, color = {0, 0, 127}));
connect(eCon.port_a, port_glazing) annotation (
@@ -79,10 +81,29 @@ equation
{-24,170},{-47,170}}, color={0,0,127}));
connect(skyRadFra.Tenv, TEnvExpr.y) annotation (Line(points={{-10,192},{-24,
192},{-24,170},{-47,170}}, color={0,0,127}));
+ connect(TDryBulExp.y, TDryBul)
+ annotation (Line(points={{1,-10},{40,-10}}, color={0,0,127}));
+ connect(HShaDir.y, HShaDirTil)
+ annotation (Line(points={{12.6,50},{40,50}}, color={0,0,127}));
+ connect(HShaDir.y, solAbs.solDir) annotation (Line(points={{12.6,50},{16,50},
+ {16,98},{-20,98},{-20,112},{-22,112},{-22,166},{-10,166}}, color={0,0,
+ 127}));
+ connect(HShaSkyDif.y, HShaSkyDifTil)
+ annotation (Line(points={{12.6,30},{40,30}}, color={0,0,127}));
+ connect(HShaSkyGro.y, HShaGroDifTil)
+ annotation (Line(points={{12.6,10},{40,10}}, color={0,0,127}));
+ connect(HShaSkyDif.y, solDif.u1) annotation (Line(points={{12.6,30},{16,30},{
+ 16,96},{38,96}}, color={0,0,127}));
+ connect(HShaSkyGro.y, solDif.u2) annotation (Line(points={{12.6,10},{16,10},{
+ 16,84},{38,84}}, color={0,0,127}));
annotation (
Documentation(revisions="
Shading model of an overhang above a window where @@ -116,6 +124,10 @@ and wLeft and wRight are respectively the horizontal overhang widths. ", revisions="
shaCorr is converted into diffuse light that enters the
", revisions="
Ctrl by Ctrl_internal to avoid using a conditional component in a connect statement.
See #1367.
diff --git a/IDEAS/Buildings/Components/Shading/SideFins.mo b/IDEAS/Buildings/Components/Shading/SideFins.mo
index cb264f3dd8..17aedffa65 100644
--- a/IDEAS/Buildings/Components/Shading/SideFins.mo
+++ b/IDEAS/Buildings/Components/Shading/SideFins.mo
@@ -61,6 +61,13 @@ protected
Real verAzi;
Real lambda;
+public
+ Modelica.Blocks.Sources.RealExpression HShaDirexpr(y=HDirTil*fraSunDir)
+ annotation (Placement(transformation(extent={{-30,40},{-10,60}})));
+ Modelica.Blocks.Sources.RealExpression HShaSkyDifexpr(y=fraSunDif*HSkyDifTil)
+ annotation (Placement(transformation(extent={{-30,20},{-10,40}})));
+ Modelica.Blocks.Sources.RealExpression HShaGroDifexpr(y=fraSunDif*HGroDifTil)
+ annotation (Placement(transformation(extent={{-30,0},{-10,20}})));
initial equation
assert(dep > 0, "The depth of the sidefins must be larger than zero.");
@@ -90,14 +97,18 @@ equation
crShdArea=IDEAS.Utilities.Math.Functions.smoothMax(x1=crShdArea1,x2=crShdArea2,deltaX=0.01);
fraSunDir = IDEAS.Utilities.Math.Functions.smoothMin( x1=IDEAS.Utilities.Math.Functions.smoothMax(x1=1-crShdArea/AWin,x2=0,deltaX=0.01),x2=1.0,deltaX=0.01);
- HShaDirTil = HDirTil * fraSunDir;
- HShaSkyDifTil = fraSunDif * HSkyDifTil;
- HShaGroDifTil = fraSunDif * HGroDifTil;
+
connect(angInc, iAngInc) annotation (Line(
points={{-60,-50},{-14,-50},{-14,-50},{40,-50}},
color={0,0,127},
smooth=Smooth.None));
+ connect(HShaDirexpr.y, HShaDir.u)
+ annotation (Line(points={{-9,50},{-1.2,50}}, color={0,0,127}));
+ connect(HShaSkyDifexpr.y, HShaSkyDif.u)
+ annotation (Line(points={{-9,30},{-1.2,30}}, color={0,0,127}));
+ connect(HShaGroDifexpr.y, HShaSkyGro.u)
+ annotation (Line(points={{-9,10},{-1.2,10}}, color={0,0,127}));
annotation ( Documentation(info="
Shading model of side fins (or similar objects) @@ -118,6 +129,10 @@ towards the window. ", revisions="