Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue1744 option for non-constant TGround in equivalent air temperature (VDI 6007) #1749

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
last-generated=2023-09-14
statistics-initialization=
{
"linear": "5"
}
statistics-simulation=
{
"linear": "0, 3, 0",
"nonlinear": " ",
"number of continuous time states": "4",
"numerical Jacobians": "0"
}
time=[0e+00, 3.1536e+07]
eqAirTemp.TEqAir=[2.789571533203125e+02, 2.813718017578125e+02, 2.7872587890625e+02, 2.807901184082031e+02, 2.835259521484375e+02, 2.823024597167969e+02, 2.827985473632813e+02, 2.822135131835938e+02, 2.784553283691406e+02, 2.797283508300781e+02, 2.843675231933594e+02, 2.796825317382812e+02, 2.830658447265625e+02, 2.863615112304688e+02, 2.829901916503906e+02, 2.81193115234375e+02, 2.834943542480469e+02, 2.822643676757813e+02, 2.849333984375e+02, 2.8688466796875e+02, 2.813687744140625e+02, 2.854065185546875e+02, 2.824746765136719e+02, 2.820121215820312e+02, 2.881613098144531e+02, 2.850013122558594e+02, 2.823730773925781e+02, 2.873432434082031e+02, 2.857710876464844e+02, 2.85406591796875e+02, 2.900100402832031e+02, 2.826182189941406e+02, 2.84790185546875e+02, 2.966639404296875e+02, 2.837040283203125e+02, 2.864047241210938e+02, 2.959377624511719e+02, 2.883143005371094e+02, 2.897021667480469e+02, 2.957674682617188e+02, 2.864564819335938e+02, 2.896947265625e+02, 2.955205017089844e+02, 2.871305236816406e+02, 2.91426025390625e+02, 2.9104345703125e+02, 2.86251953125e+02, 2.90456201171875e+02, 2.876586730957031e+02, 2.879760803222656e+02, 2.924863586425781e+02, 2.866445068359375e+02, 2.888368591308594e+02, 2.952922973632812e+02, 2.882718566894531e+02, 2.897318420410156e+02, 2.960734008789062e+02, 2.874204406738281e+02, 2.916609802246094e+02, 2.970692016601562e+02, 2.87395751953125e+02, 2.934731872558594e+02, 2.889349975585938e+02, 2.884504028320313e+02, 2.923549438476563e+02, 2.880719299316406e+02, 2.882120971679688e+02, 2.9177724609375e+02, 2.858329772949219e+02, 2.879469116210938e+02, 2.915469055175781e+02, 2.855946655273438e+02, 2.865959594726563e+02, 2.939826416015625e+02, 2.875797424316406e+02, 2.867238159179688e+02, 2.938005920410156e+02, 2.847250549316406e+02, 2.881406921386719e+02, 2.924451721191406e+02, 2.846399841308594e+02, 2.869987976074219e+02, 2.848623596191406e+02, 2.824324584960938e+02, 2.857318481445312e+02, 2.833520812988281e+02, 2.841896728515625e+02, 2.867588134765625e+02, 2.826075927734375e+02, 2.824429504394531e+02, 2.851797180175781e+02, 2.797426086425781e+02, 2.819598083496094e+02, 2.841822814941406e+02, 2.791549987792969e+02, 2.806098937988281e+02, 2.82980029296875e+02, 2.807776794433594e+02, 2.813313049316406e+02, 2.808358093261719e+02, 2.823453063964844e+02]
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
simulateModel("IBPSA.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElementsNonConstantTGround", tolerance=1e-6, stopTime=3.1536e+007, numberOfIntervals=0, outputInterval=3600, method="CVode", resultFile="SimpleRoomTwoElementsNonConstantTGround");
createPlot(id = 1,
position = {55, 50, 697, 502},
x = "time",
y = {"eqAirTemp.TEqAir"},
autoscale = true,
autoerase = true,
autoreplot = true,
grid = true,
color = true,
leftTitleType = 1,
bottomTitleType = 1);
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@ partial model PartialVDI6007
parameter Real wfGro(unit="1")
"Weight factor of the ground (0 if not considered)";
parameter Modelica.Units.SI.Temperature TGro
"Temperature of the ground in contact with floor plate";
"Constant temperature of the ground in contact with floor plate"
annotation(Dialog(enable=not TGroundFromInput));
parameter Modelica.Units.SI.CoefficientOfHeatTransfer hConWallOut
"Exterior walls convective coefficient of heat transfer (outdoor)";
parameter Modelica.Units.SI.CoefficientOfHeatTransfer hRad
"Coefficient of heat transfer for linearized radiation";
parameter Boolean withLongwave=true
"Set to true to include longwave radiation exchange"
annotation(choices(checkBox = true));
parameter Boolean TGroundFromInput=false
"Set to true to use TGro_in input connector instead of TGro constant"
annotation(choices(checkBox = true));

Modelica.Units.SI.Temperature TEqWall[n] "Equivalent wall temperature";
Modelica.Units.SI.Temperature TEqWin[n] "Equivalent window temperature";
Expand Down Expand Up @@ -61,6 +65,24 @@ partial model PartialVDI6007
extent={{-20,-20},{20,20}},
rotation=-90,
origin={0,120})));
Modelica.Blocks.Interfaces.RealInput TGro_in(
final quantity="ThermodynamicTemperature",
final unit="K",
displayUnit="degC") if TGroundFromInput
"Temperature of the ground in contact with floor plate"
annotation (Placement(
transformation(
extent={{-20,-20},{20,20}},
rotation=90,
origin={0,-120})));

protected
SourceSelector TGroSouSel(final useInput=TGroundFromInput, p=TGro)
"Input selector for ground temperature" annotation (Placement(
transformation(
extent={{-10,-10},{10,10}},
rotation=90,
origin={8,-40})));

initial equation
assert(noEvent(abs(sum(wfWall) + sum(wfWin) + wfGro) > 0.1),
Expand All @@ -80,6 +102,8 @@ equation
TEqWall=TDryBul.+delTEqSW;
end if;

connect(TGro_in, TGroSouSel.uCon)
annotation (Line(points={{0,-120},{0,-51}}, color={0,0,127}));
annotation ( Icon(coordinateSystem(preserveAspectRatio=false,
extent={{-100,-100},{100,100}}),
graphics={
Expand Down Expand Up @@ -120,6 +144,12 @@ equation
revisions="<html>
<ul>
<li>
May 5, 2023, by Philip Groesdonk:<br/>
Added an option for non-constant ground temperature from an input connector.
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1744\">#1744</a>.
</li>
<li>
July 11, 2019, by Katharina Brinkmann:<br/>
Renamed <code>alphaRad</code> to <code>hRad</code>,
<code>alphaWinOut</code> to <code>hConWallOut</code>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
within IBPSA.ThermalZones.ReducedOrder.EquivalentAirTemperature.BaseClasses;
block SourceSelector
"Block that selects as its output either a parameter value or its input"
extends Modelica.Blocks.Interfaces.SO;
parameter Boolean useInput "Use input (if true) or parameter value (if false)"
annotation(Evaluate=true);
parameter Real p "Parameter value";
Modelica.Blocks.Interfaces.RealInput uCon if useInput
"Input signal from input connector"
annotation (Placement(transformation(extent={{-140,40},{-100,80}}),
iconTransformation(extent={{-120,70},{-100,90}})));
equation
if not useInput then
y = p;
end if;
connect(uCon, y);
annotation (
defaultComponentName="souSel",
Documentation(info="<html>
<p>
Block that produces at its output the input value <code>uCon</code>
or the parameter value <code>p</code> depending on the parameter value
<code>useInput</code>.
</p>
</html>", revisions="<html>
<ul>
<li>
June 28, 2023, by Philip Groesdonk:<br/>
First implementation.
</li>
</ul>
</html>"),
Icon(graphics={
Rectangle(
extent={{-100,100},{100,-100}},
fillColor={210,210,210},
fillPattern=FillPattern.Solid,
borderPattern=BorderPattern.Raised),
Line(points={{12,0},{100,0}},
color={0,0,127}),
Line(points={{-100,80},{-38,80}},
color={0,0,127}),
Line(points={{-40,80},{8,0}},
color={0,0,127},
visible=useInput,
thickness=1),
Ellipse(lineColor={0,0,255},
pattern=LinePattern.None,
fillPattern=FillPattern.Solid,
extent={{2,-8},{18,8}})}));
end SourceSelector;
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
PartialVDI6007
SourceSelector
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,16 @@ initial equation

equation
delTEqLWWin=delTEqLW;
TEqAir = TEqWall*wfWall + TEqWin*wfWin + TGro*wfGro;
TEqAir = TEqWall*wfWall + TEqWin*wfWin + TGroSouSel.y*wfGro;
annotation (defaultComponentName = "equAirTem",Documentation(revisions="<html>
<ul>
<li>
May 5, 2023, by Philip Groesdonk:<br/>
Added an option for non-constant ground temperature from an input connector.
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1744\">#1744</a>.
</li>
<li>
September 26, 2016, by Moritz Lauster:<br/>
Moved calculations to <a href=\"modelica://IBPSA.ThermalZones.ReducedOrder.EquivalentAirTemperature.BaseClasses.PartialVDI6007\">
IBPSA.ThermalZones.ReducedOrder.EquivalentAirTemperature.BaseClasses.PartialVDI6007</a>.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,17 @@ initial equation

equation
delTEqLWWin=(TBlaSky - TDryBul)*hRad/(hRad + hConWinOut);
TEqAir = TEqWall*wfWall + TGro*wfGro;
TEqAir = TEqWall*wfWall + TGroSouSel.y*wfGro;
TEqAirWin = TEqWin*wfWin;
annotation (defaultComponentName = "equAirTem",Documentation(revisions="<html>
<ul>
<li>
May 5, 2023, by Philip Groesdonk:<br/>
Added an option for non-constant ground temperature from an input connector.
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1744\">#1744</a>.
</li>
<li>
July 11, 2019, by Katharina Brinkmann:<br/>
Renamed <code>alphaWinOut</code> to <code>hConWinOut</code>
</li>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
within IBPSA.ThermalZones.ReducedOrder.Examples;
model SimpleRoomTwoElementsNonConstantTGround
"Illustrates the use of non-constant ground temperature for equivalent air temperature calculation"
extends Modelica.Icons.Example;
extends IBPSA.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements(eqAirTemp(
wfWall={0.15,0.35},
wfGro=0.5,
TGroundFromInput=true));



Modelica.Blocks.Sources.Trapezoid TGroTrapezoidSource(
amplitude=10,
rising=7884000,
width=7884000,
falling=7884000,
period=31536000,
offset=280.15,
startTime=5184000) "Trapezoid-shaped source for ground temperature"
annotation (Placement(transformation(extent={{-42,-52},{-22,-32}})));
equation

connect(TGroTrapezoidSource.y, eqAirTemp.TGro_in)
annotation (Line(points={{-21,-42},{-14,-42},{-14,-16}}, color={0,0,127}));
annotation ( Documentation(info="<html>
<p>
This example shows the application of
<a href=\"IBPSA.ThermalZones.ReducedOrder.RC.TwoElements\">
IBPSA.ThermalZones.ReducedOrder.RC.TwoElements</a>
in connection with equivalent air temperature calculation in
<a href=\"IBPSA.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow\">
IBPSA.ThermalZones.ReducedOrder.EquivalentAirTemperature.VDI6007WithWindow</a>,
where the ground temperature is not a constant, but has a trapezoid source.
Apart from that, it is identical to <a href=\"IBPSA.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements\">
IBPSA.ThermalZones.ReducedOrder.Examples.SimpleRoomTwoElements</a>.
<h4>References</h4>
<p>VDI. German Association of Engineers Guideline VDI 6007-1
March 2012. Calculation of transient thermal response of rooms
and buildings - modelling of rooms.</p>
</html>", revisions="<html>
<ul>
<li>
June 29, 2023, by Philip Groesdonk:<br/>
First implementation.<br/>
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1744\">IBPSA, #1744</a>.
</li>
</ul>
</html>"),
experiment(
StopTime=31536000,
Interval=3600,
Tolerance=1e-06,
__Dymola_Algorithm="Dassl"),
__Dymola_Commands(file=
"modelica://IBPSA/Resources/Scripts/Dymola/ThermalZones/ReducedOrder/Examples/SimpleRoomTwoElementsNonConstantTGround.mos"
"Simulate and plot"),
Diagram(coordinateSystem(extent={{-100,-120},{100,100}})),
Icon(coordinateSystem(extent={{-100,-100},{100,100}})));
end SimpleRoomTwoElementsNonConstantTGround;
1 change: 1 addition & 0 deletions IBPSA/ThermalZones/ReducedOrder/Examples/package.order
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ SimpleRoomFourElementsTraceSubstance
SimpleRoomOneElement
SimpleRoomThreeElements
SimpleRoomTwoElements
SimpleRoomTwoElementsNonConstantTGround