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

Thermal wheels #3554

Open
wants to merge 173 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
173 commits
Select commit Hold shift + click to select a range
3685a5b
first implementation
Sep 28, 2023
12eb4b8
enhance the example by adding one use case
Sep 29, 2023
07dbf26
cleanup
Sep 29, 2023
b149ee5
update the model doc
Sep 29, 2023
c85a367
improve model doc
Oct 9, 2023
0501e4c
update the release note
Oct 9, 2023
bd60f25
Merge pull request #3541 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Oct 9, 2023
aa48571
merged master
JayHuLBL Oct 9, 2023
1d1107a
renamed example model, removed obsolete example
JayHuLBL Oct 9, 2023
dc5a245
removed Modelica.Fluid.System
JayHuLBL Oct 10, 2023
7d6d0e0
reverted changes, changed example models name
JayHuLBL Oct 11, 2023
ea482fd
fixed html syntax, corrected release note
JayHuLBL Oct 11, 2023
e2cc156
renamed model
JayHuLBL Oct 25, 2023
9ad06bf
merged master
JayHuLBL Oct 25, 2023
6aa884a
fix typos
Nov 1, 2023
80aa7ed
change parameter names and replace if with approximation
Nov 2, 2023
3b4bddb
reimplement the wheels with different controls
Nov 2, 2023
d0a6f99
fixing naming and icon
Nov 3, 2023
1280ac1
Merge branch 'master' into issue3538_Air2Air_recovery
Nov 8, 2023
6291751
model clean up
Nov 10, 2023
4bfe833
model doc update and clean up
Nov 13, 2023
0c47509
fix issues in examples
Nov 14, 2023
e7720a1
diagram and info updated
Nov 14, 2023
fce7045
model doc enhance
Nov 15, 2023
13e1010
fix typos
Nov 15, 2023
1e772d6
merge the changes from the forked repo
Nov 15, 2023
e596b73
fix html issue and obsolete files
Nov 15, 2023
34a4738
format enhancement
Nov 15, 2023
28288e8
fix model doc
Nov 15, 2023
9043c75
typo fix
Nov 15, 2023
04c4078
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Nov 27, 2023
2b6df81
Merge branch 'lbl-srg:issue3538_Air2Air_recovery' into issue3538_Air2…
SenHuang19 Nov 28, 2023
0b4a86d
update model doc
Nov 28, 2023
ec1e7c6
model doc update
Nov 29, 2023
2028e45
Merge pull request #3577 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Dec 4, 2023
481c258
corrected package order, removed redundant digits
JayHuLBL Dec 4, 2023
f14f28f
improved documentation and the format
JayHuLBL Dec 4, 2023
9804347
fixed html error
JayHuLBL Dec 4, 2023
250f8e3
added git status
JayHuLBL Dec 5, 2023
4296f4a
reverted conf.yml change
JayHuLBL Dec 5, 2023
29e2b79
improved warning messages [ci skip]
JayHuLBL Dec 14, 2023
54ec5d8
improved warning messages [ci skip]
JayHuLBL Dec 14, 2023
1d32a41
renamed connectors [ci skip]
JayHuLBL Dec 14, 2023
e4610fc
removed final for the displayUnit
JayHuLBL Dec 14, 2023
47f9fdf
input limit update and model doc improve
Dec 15, 2023
3cb0b93
Merge pull request #3608 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Dec 15, 2023
f8e4d44
improved graphic [ci skip]
JayHuLBL Dec 18, 2023
4b76bcd
add power calculation and remove sensors
Dec 19, 2023
5bc3276
ref data update
Dec 19, 2023
8a466d5
model doc improved
Dec 19, 2023
a76755b
Merge pull request #3615 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Dec 19, 2023
cdbaf03
improved comments [ci skip]
JayHuLBL Dec 20, 2023
3291ad3
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Dec 20, 2023
c50cf08
changed revision note
JayHuLBL Dec 20, 2023
9765dc1
improved error message
JayHuLBL Dec 21, 2023
56163fa
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Dec 22, 2023
07c23a5
improved text
JayHuLBL Jan 3, 2024
739b7a3
improved comments
JayHuLBL Jan 3, 2024
79ca115
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Jan 3, 2024
344478b
corrected assertion check
JayHuLBL Jan 3, 2024
c2b9351
Rearranged compoents and connections [ci skip]
mwetter Jan 5, 2024
2dd9393
Added block icon
mwetter Jan 5, 2024
516a325
Corrected typo
mwetter Jan 5, 2024
f8892c9
Corrected typo
mwetter Jan 5, 2024
89bc2a8
Updated assertion message to the same as other models use
mwetter Jan 5, 2024
417263d
Renamed package and models
mwetter Jan 5, 2024
b35367a
Updated comments and default parameter bindings
mwetter Jan 6, 2024
1d88681
Changed dp_nominal to more realistic value
mwetter Jan 6, 2024
e186be0
Removed default values in base class
mwetter Jan 6, 2024
2d2be9d
Moved to Latent package so that Sensible wheels can be added too
mwetter Jan 6, 2024
9716db3
Refactored models to use common base class
mwetter Jan 6, 2024
4c57394
Formatted file
mwetter Jan 6, 2024
18c8160
merged master, correcter package order [ci skip]
JayHuLBL Jan 9, 2024
7ece958
add the sensible wheel package
Jan 10, 2024
3c807aa
model doc update and remove unneeded settings
Jan 10, 2024
0aa1165
add the rest files for sensible wheel
Jan 10, 2024
c9abfbf
update the om scripts
Jan 10, 2024
c51ff77
reference data update
Jan 10, 2024
0b2e9c7
Merge branch 'issue3538_Air2Air_recovery' of https://github.com/SenHu…
Jan 10, 2024
13d5792
model doc update
Jan 12, 2024
6c5932e
release note update
Jan 12, 2024
003bf58
Merge pull request #3636 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Mar 1, 2024
22124d8
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Mar 1, 2024
4c00241
Merge branch 'issue3538_Air2Air_recovery' of https://github.com/lbl-s…
JayHuLBL Mar 1, 2024
4f865a6
changed interface connectors
JayHuLBL Mar 1, 2024
3a63f0a
moved instance to be protected, improved comment
JayHuLBL Mar 4, 2024
d73e1ad
merged master [ci skip]
JayHuLBL Apr 10, 2024
a95f2d2
improved graphics
JayHuLBL Apr 12, 2024
77d6ba5
merged master
JayHuLBL Apr 12, 2024
3cbc5a1
improved text
JayHuLBL Apr 12, 2024
d5549c9
Merge branch 'master' into issue3538_Air2Air_recovery
mwetter Apr 23, 2024
fcff2bf
Improved implementation to avoid non-needed call to regStep
mwetter Apr 23, 2024
5f85b77
Revised implementation and documentation
mwetter Apr 23, 2024
b7c4161
Improved implementation to avoid non-needed call to regStep
mwetter Apr 23, 2024
526249d
Updated comment
mwetter Apr 23, 2024
292edbf
Changed graphical layout
mwetter Apr 24, 2024
ddc8734
Added icons
mwetter Apr 24, 2024
234038d
Updated icon
mwetter Apr 24, 2024
15d5370
Removed connector to itself
mwetter Apr 24, 2024
0fa5da9
Updated release notes
mwetter Apr 24, 2024
dfbe906
Corrected html
mwetter Apr 24, 2024
c973468
Restricted ratio of flow rates
mwetter Apr 24, 2024
40b5d7c
Removed assertion that would trigger each time the fan switches off
mwetter Apr 24, 2024
de43d6c
model implementation improve
SenHuang19 May 6, 2024
40a863c
improve the implementation and examples
SenHuang19 May 8, 2024
e265a62
model improve and clean
SenHuang19 May 9, 2024
c803b24
update the scripts
SenHuang19 May 9, 2024
a11281b
update the reference data
SenHuang19 May 9, 2024
8a14a33
model doc update and example improves
SenHuang19 May 13, 2024
cfdf906
update the power calculation
SenHuang19 Jun 10, 2024
01c29ac
update the model directory
SenHuang19 Jun 14, 2024
0c728c6
update the thermal wheels
SenHuang19 Jun 14, 2024
4c757ae
update scripts
SenHuang19 Jun 14, 2024
d60cb27
update the reference dataset
SenHuang19 Jun 14, 2024
206d94f
improve the model doc
SenHuang19 Jun 17, 2024
c63596a
model doc improve and typo fix
SenHuang19 Jun 20, 2024
030d1cc
reference data update
SenHuang19 Jun 20, 2024
49341ae
model doc update
SenHuang19 Jun 20, 2024
3a28f6d
model doc improve
SenHuang19 Jun 21, 2024
84f9d01
format update
SenHuang19 Jun 22, 2024
822e498
format update
SenHuang19 Jun 22, 2024
5711f57
minor changes to model implementation
SenHuang19 Jun 24, 2024
81b0f28
reference data update
SenHuang19 Jun 24, 2024
1af8bcb
minor change
SenHuang19 Jun 24, 2024
3b4309d
model doc update
SenHuang19 Jul 5, 2024
df18e6b
improve the model doc
SenHuang19 Aug 14, 2024
37f3c7d
model doc improve
SenHuang19 Aug 30, 2024
ee21c9f
model doc update
SenHuang19 Sep 3, 2024
4da862d
change the performance dataset into parameters
Sep 26, 2024
0b7f334
minor doc format update
SenHuang19 Sep 27, 2024
d27b421
fix typos
Nov 22, 2024
1e96958
update reference
Nov 22, 2024
ba6c61e
Merge pull request #3909 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Nov 22, 2024
78303a3
use abs path
Dec 3, 2024
c2ef139
improve model doc
Dec 3, 2024
cbe53f4
fix typo
Dec 3, 2024
78ad81d
improve implementation
Dec 3, 2024
d231f09
update refer
Dec 3, 2024
433a7f6
avoid issues in running regression test
Dec 3, 2024
f316242
Merge pull request #4070 from SenHuang19/issue3538_Air2Air_recovery
JayHuLBL Dec 11, 2024
f734d4e
merged master
JayHuLBL Dec 11, 2024
2ed8ca9
updated references
JayHuLBL Dec 11, 2024
017d710
unified the tolerance
JayHuLBL Dec 11, 2024
38263a3
corrected pacakge order
JayHuLBL Dec 11, 2024
1e8016f
Merge branch 'master' into issue3538_Air2Air_recovery
JayHuLBL Dec 17, 2024
b445be5
propagated parameters
JayHuLBL Dec 18, 2024
0c915b7
Removed import (used only once)
mwetter Jan 2, 2025
dcdc95f
Added units
mwetter Jan 2, 2025
4a9797a
Formatted code
mwetter Jan 2, 2025
b443b29
Added units
mwetter Jan 2, 2025
323be23
Added default component name and prefix
mwetter Jan 2, 2025
d71244b
Revised documentation
mwetter Jan 2, 2025
c793e8d
Moved files
mwetter Jan 2, 2025
c8cb04f
Moved models
mwetter Jan 2, 2025
83adadb
Moved models
mwetter Jan 2, 2025
1fcb0e3
Moved models, removed import
mwetter Jan 2, 2025
36fc074
Corrected documentation
mwetter Jan 2, 2025
25aaba5
Removed show_T and made hex protected
mwetter Jan 2, 2025
8bee6c2
Removed show_T
mwetter Jan 2, 2025
bfe91fc
Fixed instance name
mwetter Jan 2, 2025
bcc360d
Changed assertion so it does not trigger when system is off
mwetter Jan 3, 2025
ed8898a
Changed initial damper position so not all are open, revised models
mwetter Jan 3, 2025
3d2d904
Formatted file
mwetter Jan 3, 2025
b3b13b6
Corrected variable name
mwetter Jan 3, 2025
66d8689
Revised documentation
mwetter Jan 3, 2025
9e2c7a7
Formatted code
mwetter Jan 3, 2025
afb528d
Updated reference results due to new damper initialization
mwetter Jan 3, 2025
bec22f0
Updated documentation
mwetter Jan 3, 2025
61aca53
Formatted code
mwetter Jan 3, 2025
2721786
Updated documentation
mwetter Jan 3, 2025
679efae
Renamed instance for clarity
mwetter Jan 3, 2025
c3c3c57
Renamed models for clarity
mwetter Jan 3, 2025
d9f6b54
Removed trailing white spaces
mwetter Jan 3, 2025
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,53 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses;
model SpeedCorrectionLatent "Enthalpy wheels"
extends Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible;
Buildings.Controls.OBC.CDL.Interfaces.RealOutput epsLatCor(
final unit="1")
"Latent heat exchanger effectiveness correction" annotation (Placement(
transformation(extent={{100,-100},{140,-60}}), iconTransformation(
extent={{100,-100},{140,-60}})));
equation
epsLatCor = Buildings.Utilities.Math.Functions.smoothInterpolation(
x=uSpe,
xSup=per.latHeatExchangeEffectiveness.uSpe,
ySup=per.latHeatExchangeEffectiveness.epsCor)
"Calculate the latent heat exchanger effectiveness correction";

annotation (
defaultComponentName="speCor",
Documentation(info="<html>
<p>
This model calculates the power consumption, and the corrections
due to different rotational speeds for the sensible
heat exchange effectiveness and the latent
heat exchange effectiveness of an enthalpy wheel.
</p>
<p>
The calculation of the power consumption and the sensible
heat exchange effectiveness correction is described in
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible\">
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible</a>.
</p>
<p>
The latent heat exchange effectiveness correction is calculated using
a cubic hermite spline interpolation of the latent heat exchange
effectiveness dataset (see
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.HeatExchangerEffectiveness\">
Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.HeatExchangerEffectiveness</a>).
</p>
</html>", revisions="<html>
<ul>
<li>
May 28, 2024, by Sen Huang:<br/>
First implementation.
</li>
</ul>
</html>"),
Icon(graphics={
Line(points={{10,86},{4,74}}, color={0,140,72},
thickness=0.5),
Line(points={{-26,50},{10,86},{-2,78},{10,86}}, color={0,140,72},
thickness=0.5),
Ellipse(extent={{-42,64},{52,-58}}, lineColor={0,140,72},
lineThickness=0.5)}));
end SpeedCorrectionLatent;
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses;
model SpeedCorrectionSensible "Sensible heat wheels"
extends Modelica.Blocks.Icons.Block;

final parameter Real xSpe[:] = if per.useDefaultMotorEfficiencyCurve
then per.motorEfficiency_default.y else per.motorEfficiency.uSpe
"x-axis support points of the power efficiency curve"
annotation (Dialog(group="Efficiency"));
final parameter Real[size(xSpe,1)] yEta = if per.useDefaultMotorEfficiencyCurve
then per.motorEfficiency_default.eta else per.motorEfficiency.eta
"y-axis support points of the power efficiency curve"
annotation (Dialog(group="Efficiency"));
parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Generic per
"Record with performance data"
annotation (Placement(transformation(extent={{60,60},{80,80}})));
Buildings.Controls.OBC.CDL.Interfaces.RealInput uSpe(
final unit="1",
final max=1)
"Wheel speed ratio"
annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),
iconTransformation(extent={{-140,-20},{-100,20}})));
Buildings.Controls.OBC.CDL.Interfaces.RealOutput P(final unit="W")
"Electric power consumption"
annotation (Placement(transformation(extent={{100,60},{140,100}}),
iconTransformation(extent={{100,60},{140,100}})));
Buildings.Controls.OBC.CDL.Interfaces.RealOutput epsSenCor(final unit="1")
"Sensible heat exchanger effectiveness correction"
annotation (Placement(transformation(extent={{100,-20},{140,20}}),
iconTransformation(extent={{100,-20},{140,20}})));

protected
parameter Integer nSpe = size(yEta,1)
"Number of the points in the power efficiency curve";
parameter Real s = max(xSpe[i]/yEta[i] for i in 1:size(yEta,1)-1)
"Maximum ratio of x-axis to y-axis in the power efficiency curve";


initial equation
assert(s < 1 + 1E-4,
"In " + getInstanceName() + ": The motor efficiency curve is wrong.
The ratio of the speed ratio to the motor percent
full-load efficiency must be less than 1.",
level=AssertionLevel.error)
"Check if the motor efficiency curve is correct";
assert(abs(yEta[nSpe]-1) < 1E-4,
"In " + getInstanceName() + ": The motor efficiency curve is wrong.
The motor percent full-load efficiency at the full seepd must be 1.",
level=AssertionLevel.error)
"Check if the motor efficiency curve is consistent with the nominal condition";
equation
P = per.P_nominal*uSpe/Buildings.Utilities.Math.Functions.smoothInterpolation(
x=uSpe,
xSup=xSpe,
ySup=yEta)
"Calculate the wheel power consumption";
epsSenCor = Buildings.Utilities.Math.Functions.smoothInterpolation(
x=uSpe,
xSup=per.senHeatExchangeEffectiveness.uSpe,
ySup=per.senHeatExchangeEffectiveness.epsCor)
"Calculate the sensible heat exchanger effectiveness correction";
annotation (
defaultComponentName="speCor",
Documentation(info="<html>
<p>
This model calculates the power consumption and the sensible heat exchanger
effectiveness correction due to different rotational speed of a sensible heat wheel.
</p>
<ul>
<li>
The power consumption of this wheel is calculated as
<p align=\"center\" style=\"font-style:italic;\">
P = P_nominal * uSpe / eta,
</p>
<p>
where <code>P_nominal</code> is the nominal wheel power consumption,
<code>uSpe</code> is the wheel speed ratio,
and <code>eta</code> is the motor percent full-load efficiency,
which is calculated as
<p align=\"center\" style=\"font-style:italic;\">
eta = eff(uSpe=x) / eff(uSpe=1),
</p>
<p>
where <code>eff(uSpe=x)</code> is the motor efficiency when the speed ratio is <code>x</code>.
The efficiency <code>eta</code> is obtained based on a cubic hermite spline interpolation of
the motor percent full-load efficiency dataset (see
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.MotorEfficiency\">
Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.MotorEfficiency</a>).
Please note that <code>uSpe/eta</code> must be less or equal to 1.
</p>
</li>
<li>
The sensible heat exchanger effectiveness correction is calculated based
on a cubic hermite spline interpolation of the sensible heat exchanger effectiveness
dataset (see <a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.HeatExchangerEffectiveness\">
Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.HeatExchangerEffectiveness</a>).
</li>
</ul>
</html>", revisions="<html>
<ul>
<li>
May 28, 2024, by Sen Huang:<br/>
First implementation.
</li>
</ul>
</html>"),
Icon(graphics={
Ellipse(extent={{-42,64},{52,-58}}, lineColor={28,108,200},
lineThickness=0.5),
Line(points={{-26,50},{10,86},{-2,78},{10,86}}, color={28,108,200},
thickness=0.5),
Line(points={{10,86},{4,74}}, color={28,108,200},
thickness=0.5),
Text(
extent={{-38,96},{-8,56}},
textColor={0,0,88},
textString="u")}));
end SpeedCorrectionSensible;
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.Validation;
model VariableSpeedThermalWheels
"Model that tests the variable-speed thermal wheels"
extends Modelica.Icons.Example;
parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.ASHRAE
perSenWhe(
motorEfficiency(uSpe={0.1,0.6,0.8,1}, eta={0.3,0.8,0.85,1}),
haveLatentHeatExchange=false,
useDefaultMotorEfficiencyCurve=false)
"Performance record for the sensible heat wheel"
annotation (Placement(transformation(extent={{-80,74},{-60,94}})));
parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.ASHRAE perLatWhe(
motorEfficiency(uSpe={0.1,0.6,0.8,1}, eta={0.3,0.8,0.85,1}),
haveLatentHeatExchange=true,
useDefaultMotorEfficiencyCurve=false)
"Performance record for the enthalpy wheel"
annotation (Placement(transformation(extent={{-40,74},{-20,94}})));
parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.ASHRAE perLatWheDefMotCur(
haveLatentHeatExchange=true,
useDefaultMotorEfficiencyCurve=true)
"Performance record for the enthalpy wheel with default motor dataset"
annotation (Placement(transformation(extent={{0,74},{20,94}})));
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible
senWhe(per=perSenWhe)
"Sensible heat wheel"
annotation (Placement(transformation(extent={{-10,40},{10,60}})));

Modelica.Blocks.Sources.Ramp uSpe(
duration=1,
startTime=0,
offset=0,
height=1)
"Speed ratio"
annotation (Placement(transformation(extent={{-60,-10},{-40,10}})));
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent latWhe(
per=perLatWhe)
"Enthalpy wheel"
annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent latWheDefMotCur(
per=perLatWheDefMotCur)
"Enthalpy wheel with default motor curve"
annotation (Placement(transformation(extent={{-10,-60},{10,-40}})));

equation
connect(uSpe.y, senWhe.uSpe)
annotation (Line(points={{-39,0},{-28,0},{-28,50},
{-12,50}}, color={0,0,127}));
connect(latWhe.uSpe, uSpe.y)
annotation (Line(points={{-12,0},{-39,0}}, color={0,0,127}));
connect(latWheDefMotCur.uSpe, uSpe.y)
annotation (Line(points={{-12,-50},{-28,
-50},{-28,0},{-39,0}}, color={0,0,127}));
annotation (
__Dymola_Commands(file=
"modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/ThermalWheels/BaseClasses/Validation/VariableSpeedThermalWheels.mos"
"Simulate and plot"),
experiment(
StopTime=1,
Tolerance=1e-06),
Documentation(info="<html>
<p>
Example for the model
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible\">
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible</a> and the model
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent\">
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.latent</a>.
</p>
<p>
The input signals are configured as follows:
</p>
<ul>
<li>
The wheel speed <code>uSpe</code> changes from <i>0</i> to <i>1</i>
during the period from 0 to 1 second.
</li>
</ul>
<p>
The expected outputs are:
</p>
<ul>
<li>
The power consumption of all three wheels increases over time
and equals the nominal value when <code>uSpe=1</code>.
</li>
<li>
The heat exchange effectiveness corrections increase by time
and equal 1 when <code>uSpe=1</code>.
</li>
</ul>
</html>", revisions="<html>
<ul>
<li>
May 28, 2024, by Sen Huang:<br/>
First implementation.
</li>
</ul>
</html>"));
end VariableSpeedThermalWheels;
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses;
package Validation "Collection of validation models"
extends Modelica.Icons.ExamplesPackage;

annotation (Documentation(info="<html>
<p>
This package contains validation models for the classes in
<a href=\"modelica://Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses\">
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses</a>.
</p>
<p>
Note that most validation models contain simple input data
which may not be realistic, but for which the correct
output can be obtained through an analytic solution.
The examples plot various outputs, which have been verified against these
solutions. These model outputs are stored as reference data and
used for continuous validation whenever models in the library change.
</p>
</html>"));
end Validation;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VariableSpeedThermalWheels
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels;
package BaseClasses "Models of variable-speed thermal wheels"
extends Modelica.Icons.BasesPackage;

annotation (Documentation(info="<html>
<p>
This package contains models for capturing the impacts of
the wheel speed ratio on the power consumption and the heat
exchange effectiveness of thermal wheels.
</p>
</html>"));
end BaseClasses;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
SpeedCorrectionLatent
SpeedCorrectionSensible
Validation
35 changes: 35 additions & 0 deletions Buildings/Fluid/HeatExchangers/ThermalWheels/Data/ASHRAE.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.Data;
record ASHRAE = Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Generic(
senHeatExchangeEffectiveness(
uSpe={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1},
epsCor={0,0.40,0.71,0.83,0.90,0.93,0.96,0.97,0.98,0.99,1}),
latHeatExchangeEffectiveness(
uSpe={0,0.15,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1},
epsCor={0,0.26,0.37,0.58,0.72,0.81,0.86,0.90,0.96,1}))
"ASHRAE data record for variable-speed thermal wheels"
annotation (
defaultComponentPrefixes = "parameter",
defaultComponentName = "per",
Documentation(revisions="<html>
<ul>
<li>
May 28, 2024, by Sen Huang:<br/>
First implementation.
</li>
</ul>
</html>", info="<html>
<p>
ASHRAE performance dataset for the variable-speed wheel model.
</p>
<p>
It is developed based on Figure 7 in ASHRAE (2024).
However, the original data set was extrapolated to cover lower values
of speed ratio, i.e. <code> &lt;= 0.2</code>, by setting the heat exchange effectiveness
corrections to 0 when the speed ratio is 0.
</p>
<h4>References</h4>
<p>
ASHRAE (2024).
<i>Chapter 26, Air-to-Air Energy Recovery Equipment, ASHRAE Handbook—HVAC Systems and Equipment.</i>
</p>
</html>"));
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
within Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics;
record HeatExchangerEffectiveness
"Parameters for defining heat exchanger effectiveness at different wheel speed ratios"
extends Modelica.Icons.Record;

parameter Real uSpe[:](
each final min=0,
each final unit="1")
"Wheel speed ratio";
parameter Real epsCor[:](
each final max=1,
each final unit="1")
"Correction of the heat exchange effectiveness for speed ratios between 0 and 1";
annotation (
defaultComponentPrefixes = "parameter",
defaultComponentName = "per",
Documentation(info="<html>
<p>
Data record that describes wheel speed ratio <code>uSpe</code> versus
heat exchange effectiveness corrections <code>epsCor</code>, i.e., the ratio of the heat exchange effectiveness
to that when the <code>uSpe</code> is <i>1</i>.
The elements of the vector <code>uSpe</code> should be in ascending order,
i.e.,<code>uSpe[i] &lt; uSpe[i+1]</code>.
Both vectors, <code>uSpe</code> and <code>epsCor</code>
must have the same size.
</p>
</html>", revisions="<html>
<ul>
<li>
May 28, 2024, by Sen Huang:<br/>
First implementation.
</li>
</ul>
</html>"));
end HeatExchangerEffectiveness;
Loading