Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f1f7250
set dp_turbulent to 0.01 (temporarily)
kldjonge Sep 12, 2025
7bb9353
Avoid event for exterior convection coefficients of roofs and floors
kldjonge Sep 12, 2025
ed1e927
Increase door-model performance, avoid state-events and chattering
kldjonge Sep 12, 2025
a028260
Explicitly set causality of mExc (error check state) to output
kldjonge Sep 12, 2025
cc6e080
Revert "set dp_turbulent to 0.01 (temporarily)"
kldjonge Sep 17, 2025
98604dd
Set dpAB nominal to correspond to the pressure that fits 1m³/h
kldjonge Sep 17, 2025
75afa8c
Align nominal values with actual order of magnitude in typical large …
kldjonge Sep 19, 2025
f671ed3
Minimum dp_turbulent in CrackOrOperableDoor
kldjonge Sep 19, 2025
4e5100d
Switch to more efficiënt door model if not really operable
kldjonge Sep 19, 2025
350b3de
Minimum dp_turbulent in CrackOrOperableDoor
kldjonge Sep 19, 2025
98de45f
Merge branch 'HeriTace_twoportrobust' of https://github.com/kldjonge/…
kldjonge Sep 23, 2025
b93e885
Merge branch 'master' into HeriTace_twoportrobust
kldjonge Sep 29, 2025
36aba30
Merge remote-tracking branch 'upstream/ibpsa_merged' into HeriTace_tw…
kldjonge Sep 30, 2025
1b6d227
set dp_turbulent to fix 0.01 for now
kldjonge Oct 20, 2025
f8524e7
Fixed unintentional annotation for ouput mBA_flow
kldjonge Oct 20, 2025
dc43c2b
Merge remote-tracking branch 'upstream/master' into HeriTace_twoportr…
kldjonge Oct 22, 2025
0896fbf
Updates to shading to avoid warnings about causality
kldjonge Oct 24, 2025
810593f
Unlink shading and outdoor air boundary condition in window
kldjonge Oct 24, 2025
f9d2ea2
Update Window.mo
kldjonge Oct 24, 2025
76bc224
Shading updates
kldjonge Oct 24, 2025
29fa13a
Merge branch 'master' into HeriTace_twoportrobust
kldjonge Mar 19, 2026
3be7553
Merge branch 'master' into HeriTace_twoportrobust
kldjonge Apr 2, 2026
11d01c3
Merge branch 'master' into HeriTace_twoportrobust
kldjonge Jul 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions IDEAS/Airflow/Multizone/BaseClasses/DoorDiscretized.mo
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ partial model DoorDiscretized
displayUnit="Pa") = 0.01
"Pressure difference where laminar and turbulent flow relation coincide. Recommended: 0.01";

Modelica.Units.SI.PressureDifference dpAB[nCom](each nominal=1)
Modelica.Units.SI.PressureDifference dpAB[nCom](each nominal=((1/3600)/(A*sqrt(2/rho_default)))^(1/m))
"Pressure difference between compartments";
Modelica.Units.SI.Velocity v[nCom](each nominal=0.01)
Modelica.Units.SI.Velocity v[nCom](each nominal=0.001)
"Velocity in compartment from A to B";
Modelica.Units.SI.Velocity vTop "Velocity at top of opening from A to B";
Modelica.Units.SI.Velocity vBot "Velocity at bottom of opening from A to B";
Expand Down
9 changes: 5 additions & 4 deletions IDEAS/Airflow/Multizone/CrackOrOperableDoor.mo
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,11 @@ model CrackOrOperableDoor
final parameter Boolean openDoorOnePort = useDoor and interZonalAirFlowType == IDEAS.BoundaryConditions.Types.InterZonalAirFlow.OnePort
"Sets whether a door is open or closed in one port configuration" ;

parameter Modelica.Units.SI.PressureDifference dp_turbulent(min=0,displayUnit="Pa") =
if useDoor then (MFtrans/(rho_default*(CDOpe * hOpe*wOpe * sqrt(2/rho_default))))^(1/mOpe) else 0.01
"Pressure difference where laminar and turbulent flow relation coincide for large cavities"
annotation (Dialog(tab="Advanced",group="Model regularisation", enable=useDoor));
parameter Modelica.Units.SI.PressureDifference dp_turbulent(min=0,displayUnit="Pa") =
0.01
"Pressure difference where laminar and turbulent flow relation coincide for large cavities"
annotation (Dialog(tab="Advanced",group="Model regularisation", enable=useDoor));
//dp_turbulent(min=0,displayUnit="Pa") = if useDoor then max(10e-10, (MFtrans/(rho_default*(CDOpe * hOpe*wOpe * sqrt(2/rho_default))))^(1/mOpe)) else 0.01
parameter Modelica.Units.SI.MassFlowRate MFtrans=(hOpe*wOpe)*VItrans*REtrans/DOpe
"Mass flow rate used for reguralisation"
annotation (Dialog(tab="Advanced",group="Model regularisation", enable=useDoor));
Expand Down
6 changes: 3 additions & 3 deletions IDEAS/Buildings/Components/Shading/Box.mo
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,9 @@ equation
connect(TDryBul, sideFins.TDryBul) annotation (Line(points={{40,-10},{3.5,-10},
{3.5,26.6667}}, color={0,0,127}));
connect(m_flow, sideFins.m_flow) annotation(
Line(points = {{40, -90}, {2, -90}, {2, 20}}, color = {0, 0, 127}));
Line(points={{40,-90},{2.5,-90},{2.5,20}}, color = {0, 0, 127}));
connect(m_flow, overhang.m_flow) annotation(
Line(points = {{40, -90}, {4, -90}, {4, 60}}, color = {0, 0, 127}));
Line(points={{40,-90},{4.5,-90},{4.5,60}}, color = {0, 0, 127}));
annotation (Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,
-100},{100,200}})), Documentation(info="<html>
<p>
Expand Down Expand Up @@ -199,4 +199,4 @@ Cleaned up implementation and documentation.
</html>"),
Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,
200}})));
end Box;
end Box;
24 changes: 17 additions & 7 deletions IDEAS/Buildings/Components/Shading/BuildingShade.mo
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@ within IDEAS.Buildings.Components.Shading;
model BuildingShade
"Component for modeling shade cast by distant objects such as buildings and treelines"
extends IDEAS.Buildings.Components.Shading.Interfaces.PartialShadingDevice(
final controlled=false);
use_m_flow=false, final controlled=false);

parameter Modelica.Units.SI.Length L(min=0)
"Distance to object perpendicular to window"
annotation (Dialog(group="Dimensions (see illustration in documentation)"));
parameter Modelica.Units.SI.Length dh
"Height difference between top of object and top of window glazing"
annotation (Dialog(group="Dimensions (see illustration in documentation)"));
parameter Modelica.Units.SI.Length hWin(min=0) = 1
parameter Modelica.Units.SI.Length hWin(min=0)=1
"Window height: distance between top and bottom of window glazing"
annotation (Dialog(group="Dimensions (see illustration in documentation)"));
parameter Real fraSha(min=0,max=1) = 1
parameter Real fraSha(
max=1,
min=0)=1
"Fraction of the light that is shaded, e.g. smaller than 1 for shading cast by tree lines.";
final parameter Real fraSunDifSky(final min=0,final max=1, final unit="1") = 1-vieAngObj/(Modelica.Constants.pi/2)
"Fraction of window area exposed to diffuse sun light";
Expand All @@ -23,6 +25,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";
Expand Down Expand Up @@ -57,13 +64,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="<html>
Expand Down
16 changes: 13 additions & 3 deletions IDEAS/Buildings/Components/Shading/HorizontalFins.mo
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ protected
Modelica.Units.SI.Length dy3Dif=max(0, min(dzDif*tan(angAltDif), s));
Modelica.Units.SI.Length dzDif=dx/cos(angAltDif);

public
Modelica.Blocks.Sources.RealExpression HShaDirexpr(y=(1 - shaFrac)*HDirTil)
annotation (Placement(transformation(extent={{-32,40},{-12,60}})));
Modelica.Blocks.Sources.RealExpression HShaSkyDifexpr(y=(1 - shaFracDif)*
HSkyDifTil)
annotation (Placement(transformation(extent={{-32,20},{-12,40}})));
initial equation
if not use_betaInput then
assert(beta >= 0 and beta < acos(t/s), "In " + getInstanceName() + ": Beta must be within the feasible range.");
Expand Down Expand Up @@ -84,12 +90,16 @@ equation
shaFracDif = disp_internal*(1 - (dy1-min(dy1,dy3Dif))/s);
end if;

HShaDirTil = (1-shaFrac)*HDirTil;
HShaSkyDifTil = (1-shaFracDif)*HSkyDifTil;

angInc = iAngInc;
connect(HGroDifTil, HShaGroDifTil);


connect(HGroDifTil, HShaSkyGro.u)
annotation (Line(points={{-60,10},{-1.2,10}}, color={0,0,127}));
connect(HShaDirexpr.y, HShaDir.u)
annotation (Line(points={{-11,50},{-1.2,50}}, color={0,0,127}));
connect(HShaSkyDifexpr.y, HShaSkyDif.u)
annotation (Line(points={{-11,30},{-1.2,30}}, color={0,0,127}));
annotation (
Icon(coordinateSystem(extent = {{-100, -100}, {100, 200}})),
Documentation(info="<html>
Expand Down
14 changes: 7 additions & 7 deletions IDEAS/Buildings/Components/Shading/Interfaces/DoubleShading.mo
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ model DoubleShading "Two shading components in series"
extends PartialShading(
final controlled=stateShading1.controlled or
stateShading2.controlled);
replaceable PartialShading stateShading1
replaceable PartialShading stateShading1(use_m_flow=use_m_flow)
constrainedby PartialShading(
haveFrame=haveFrame,
A_glazing=A_glazing,
Expand All @@ -19,7 +19,7 @@ model DoubleShading "Two shading components in series"
azi=azi)
"First shading device"
annotation (Placement(transformation(extent={{-28,-18},{-18,2}})));
replaceable PartialShading stateShading2
replaceable PartialShading stateShading2(use_m_flow=use_m_flow)
constrainedby PartialShading(
haveFrame=haveFrame,
A_glazing=A_glazing,
Expand Down Expand Up @@ -109,16 +109,16 @@ equation
connect(stateShading1.TDryBul, TDryBul) annotation (
Line(points={{-20.5,-11.3333},{40,-11.3333},{40,-10}},
color = {0, 0, 127}));
connect(Te, stateShading1.Te) annotation (Line(points={{-60,130},{-6,130},{-6,
connect(Te, stateShading1.Te) annotation (Line(points={{-60,130},{-8,130},{-8,
-2},{-25.5,-2}},color={0,0,127}));
connect(hForcedConExt, stateShading1.hForcedConExt) annotation (Line(points={{-60,110},
{-8,110},{-8,-3.33333},{-25.5,-3.33333}}, color={0,0,127}));
connect(TEnv, stateShading1.TEnv) annotation (Line(points={{-60,90},{-10,90},
{-10,-4.66667},{-25.5,-4.66667}},color={0,0,127}));
{-10,-4.66667},{-25.5,-4.66667}},color={0,0,127}));
connect(stateShading2.m_flow, m_flow) annotation(
Line(points = {{2, -18}, {40, -18}, {40, -90}}, color = {0, 0, 127}));
Line(points={{2.5,-18},{40,-18},{40,-90}}, color = {0, 0, 127}));
connect(stateShading1.m_flow, m_flow) annotation(
Line(points = {{-22, -18}, {40, -18}, {40, -90}}, color = {0, 0, 127}));
Line(points={{-21.5,-18},{40,-18},{40,-90}}, color = {0, 0, 127}));
annotation (Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 200}})), Documentation(revisions="<html>
<ul>
<li>
Expand All @@ -144,4 +144,4 @@ First implementation.
<p>This model can be extended or used if two shading models need to be combined.</p>
</html>"),
Icon(coordinateSystem(extent = {{-100, -100}, {100, 200}}, preserveAspectRatio = false)));
end DoubleShading;
end DoubleShading;
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ partial model PartialShading "Window shading partial"
annotation (Dialog(group="Window properties"));

parameter Boolean haveBoundaryPorts = true "Include ports for setting boundary conditions";
parameter Boolean use_m_flow = false "conditonally remove m_flow input connector";
parameter Boolean haveFrame = A_frame*epsLw_frame > 0 "Frame enabled";
parameter Modelica.Units.SI.CoefficientOfHeatTransfer hSha = 12
"Equivalent thermal conductance of the shading device";
Expand Down Expand Up @@ -97,7 +98,8 @@ partial model PartialShading "Window shading partial"
Placement(visible = true, transformation(extent = {{-80, 90}, {-40, 130}}, rotation = 0), iconTransformation(origin = {-50, 120}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Interfaces.RealOutput TDryBul if haveBoundaryPorts "Exterior surface air temperature" annotation (
Placement(visible = true, transformation(extent = {{20, -30}, {60, 10}}, rotation = 0), iconTransformation(extent = {{40, -10}, {60, 10}}, rotation = 0)));
Modelica.Blocks.Interfaces.RealInput m_flow annotation(
Modelica.Blocks.Interfaces.RealInput m_flow if use_m_flow
annotation(
Placement(visible = true, transformation(origin = {-20, 0}, extent = {{80, -110}, {40, -70}}, rotation = 0), iconTransformation(origin = {30, -100}, extent = {{10, -10}, {-10, 10}}, rotation = -90)));
protected
Modelica.Blocks.Interfaces.RealInput Te_internal(unit="K");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Expand All @@ -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 (
Expand All @@ -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 (
Expand All @@ -79,6 +81,21 @@ 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="<html>
<ul>
Expand Down
12 changes: 6 additions & 6 deletions IDEAS/Buildings/Components/Shading/None.mo
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ equation
points={{-60,-50},{-16,-50},{-16,-50},{40,-50}},
color={0,0,127},
smooth=Smooth.None));
connect(HDirTil, HShaDirTil)
annotation (Line(points={{-60,50},{40,50},{40,50}}, color={0,0,127}));
connect(HSkyDifTil, HShaSkyDifTil) annotation (Line(points={{-60,30},{-17,30},
{-17,30},{40,30}}, color={0,0,127}));
connect(HGroDifTil, HShaGroDifTil) annotation (Line(points={{-60,10},{-14,10},
{-14,10},{40,10}}, color={0,0,127}));
connect(HGroDifTil, HShaSkyGro.u)
annotation (Line(points={{-60,10},{-1.2,10}}, color={0,0,127}));
connect(HSkyDifTil, HShaSkyDif.u)
annotation (Line(points={{-60,30},{-1.2,30}}, color={0,0,127}));
connect(HDirTil, HShaDir.u)
annotation (Line(points={{-60,50},{-1.2,50}}, color={0,0,127}));
annotation (Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 200}})), Documentation(revisions="<html>
<ul>
<li>
Expand Down
16 changes: 12 additions & 4 deletions IDEAS/Buildings/Components/Shading/Overhang.mo
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ protected
Modelica.Units.SI.Angle verAzi
"Angle between projection of sun's rays and normal to vertical surface";

public
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}})));
initial equation

assert(dep > 0, "The depth of the overhang must be larger than zero.");
Expand Down Expand Up @@ -94,15 +100,17 @@ 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 = fraSunDir*HDirTil;
HShaSkyDifTil=fraSunDifSky*HSkyDifTil;

connect(angInc, iAngInc) annotation (Line(
points={{-60,-50},{-14,-50},{-14,-50},{40,-50}},
color={0,0,127},
smooth=Smooth.None));
connect(HGroDifTil, HShaGroDifTil) annotation (Line(points={{-60,10},{-14,10},
{-14,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(HShaSkyGro.u, HGroDifTil)
annotation (Line(points={{-1.2,10},{-60,10}}, color={0,0,127}));
annotation ( Documentation(info="<html>
<p>
Shading model of an overhang above a window where
Expand Down
Loading
Loading