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 103 commits into
base: master
Choose a base branch
from
Open

Thermal wheels #3554

wants to merge 103 commits into from

Conversation

JayHuLBL
Copy link
Contributor

@JayHuLBL JayHuLBL commented Oct 9, 2023

This closes #3538.

@mwetter
Copy link
Member

mwetter commented Oct 25, 2023

@JayHuLBL : What are the next steps, and who needs to act on them?

@JayHuLBL
Copy link
Contributor Author

@mwetter The PR will be ready for your review when CI test passed.

One questions however is about the base class Buildings.Fluid.HeatExchangers.AirToAirHeatRecovery.BaseClasses.HeatExchagerWithInputEffectiveness. The class is similar as Buildings.Fluid.MassExchangers.ConstantEffectiveness, with the difference that the effectiveness espS and espL are inputs rather than parameter. Is it a good choice to duplicate the class and change the effectiveness to be inputs (as implemented here.)?
Or making the changes in Buildings.Fluid.MassExchangers.ConstantEffectiveness so that the effectiveness could be conditional inputs. But in this case, the class name ConstantEffectiveness will need to be changed.

@mwetter
Copy link
Member

mwetter commented Oct 26, 2023

I think HeatExchagerWithInputEffectiveness is fine as I don't see an elegant way to change the effectiveness to be a conditional input, and remove the parameter if the input is enabled.

Copy link
Member

@mwetter mwetter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a quick review and it is clear that this model is not yet ready for a final review. Please see comments and review first the code; afterwards I am happy to do a last review.

vRat = v_ave/v_sup_nom,
</pre>
<p>
where <code>v_ave</code> is the average volumetric air flow rate,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See how we otherwise refer to volume or mass flow rates. (Moreover, if you were to use mass flow rate, then the sensor would be simpler, and the result would in my opinion not change much if at all).

Comment on lines 70 to 71
m1_flow(start=5),
m2_flow(start=5),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are there start attribute set?

Comment on lines 74 to 75
dp1_nominal=100,
dp2_nominal=100,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is that realistic for a wheel? I think more common are around 300 Pa.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@SenHuang19 In class Examples.WheelWithBypassDamper and Examples.WheelWithVariableSpeed, the dp1_nominal and dp2_nominal are still set to be 100. Is it typical?

epsL_heat_nominal=0.7,
epsL_heat_partload=0.6) "Wheel"
annotation (Placement(transformation(extent={{6,-4},{26,16}})));
Modelica.Blocks.Sources.Ramp DamPos(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Naming convention.

Comment on lines 89 to 90
inner Modelica.Fluid.System system
"Ambient environment"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

@JayHuLBL
Copy link
Contributor Author

@mwetter It's ready for your review.

Comment on lines 80 to 83
epsSenPL = Buildings.Utilities.Math.Functions.regStep(TSup-TExh, epsSenCooPL, epsSenHeaPL, 1e-5);
epsSen_nominal = Buildings.Utilities.Math.Functions.regStep(TSup-TExh, epsSenCoo_nominal, epsSenHea_nominal, 1e-5);
epsLatPL = Buildings.Utilities.Math.Functions.regStep(TSup-TExh, epsLatCooPL, epsLatHeaPL, 1e-5);
epsLat_nominal = Buildings.Utilities.Math.Functions.regStep(TSup-TExh, epsLatCoo_nominal, epsLatHea_nominal, 1e-5);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These 4 calls to regStep should be changed: There should only be one call to regStep as the first argument is always the same.
In many configurations, the parameters for the efficiency are the same, in which case no regStep (or weighting of the two values) is needed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed these calls.

@JayHuLBL
Copy link
Contributor Author

@SenHuang19 Would you please address the comments?

@mwetter mwetter changed the title Issue3538 air2 air recovery Thermal wheels Apr 24, 2024
Comment on lines +119 to +129
Modelica.Blocks.Sources.RealExpression VSup_flow(
final y(final unit="m3/s")=hex.port_a1.m_flow/
Medium1.density(state=Medium1.setState_phX(
p=hex.port_a1.p,
h=hex.port_a1.h_outflow,
X=hex.port_a1.Xi_outflow)))
"Supply air volume flow rate"
annotation (Placement(transformation(extent={{-160,30},{-140,50}})));
Modelica.Blocks.Sources.RealExpression VExh_flow(
final y(final unit="m3/s")=hex.port_a2.m_flow/
Medium2.density(state=Medium2.setState_phX(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All efficiency calculations must be based on mass flow rate.

Comment on lines +17 to +33
Buildings.Fluid.Actuators.Dampers.Exponential bypDamSup(
redeclare package Medium = Medium1,
final m_flow_nominal=m1_flow_nominal,
final dpDamper_nominal=dp1_nominal)
"Supply air bypass damper"
annotation (Placement(transformation(extent={{-60,70},{-40,90}})));
Buildings.Fluid.Actuators.Dampers.Exponential damSup(
redeclare package Medium = Medium1,
final m_flow_nominal=m1_flow_nominal,
final dpDamper_nominal=dp1_nominal)
"Supply air damper"
annotation (Placement(transformation(
extent={{-10,-10},{10,10}},rotation=0,origin={-50,40})));
Buildings.Fluid.Actuators.Dampers.Exponential damExh(
redeclare package Medium = Medium2,
final m_flow_nominal=m2_flow_nominal,
final dpDamper_nominal=dp2_nominal)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is unreasonable -- and wrong -- to set the damper pressure drops to the same value as the heat exchanger pressure drop, which is by default 500 Pa.

@SenHuang19
Copy link

@SenHuang19 Would you please address the comments?

Sure, will do.

@SenHuang19
Copy link

SenHuang19 commented May 13, 2024

@SenHuang19
Copy link

SenHuang19 commented May 13, 2024

Change the way to define the wheel energy efficiency for #3554 (comment)

Current Implementation

  • The sensible and latent heat exchange effectiveness under a lower speed ratio = the speed ratio * the sensible and latent heat exchange effectiveness under the full speed
  • The power of the wheel under a lower speed ratio = the rated power * the speed ratio/motor efficiency

Literature Review

  1. EnergyPlus
  • The sensible and latent heat exchange effectiveness under a lower speed ratio = the speed ratio * the sensible and latent heat exchange effectiveness under the full speed source_code
  • The power of the wheel under a lower speed ratio = the rated power source_code
  1. ASHRAE Handbook
  • The sensible and latent heat exchange effectiveness under a lower speed ratio is described in the following figure (source)
    image
  • No description regarding the power of the wheel under a lower speed ratio
  1. Manufacturing Data
  • The sensible and latent heat exchange effectiveness under a lower speed ratio is sometimes provided (source)
    image
  • No description regarding the power of the wheel under a lower speed ratio
  • The power-related information includes 1) rated power, 2)rated RPM, 3) wheel weight, and 4) wheel radius (source)
    image

Proposed calculation

  1. Parameters
  • Rated power (W)
  • Rated RPM (rad/s)
  • Wheel weight (kg)
  • Wheel radius (m)
  • Rated motor efficiency (default = 0.8)
  • Motor efficiency under lower speed ratios (Table 1)
  • Sensible and latent heat exchange effectiveness under lower speed ratios (Table 2 and 3)
  • Boolean for using the default motor efficiency curve
  • Boolean for using the default effectiveness curves
  1. Preflight
  • Rated torque = rated power * 9549 / rated RPM * rated motor efficiency
  • Inertia moment = wheel weight * wheel radius * wheel radius
  1. Calculation
  • Actual wheel power = (static torque + dynamic torque) * angular velocity/motor efficiency
  • Dynamic torque = inertia moment * der(angular velocity)
  • Static torque = 0.5 * inertia moment * angular velocity * angular velocity
  • Motor efficiency = f1(speed ratio), f1() is from Table 1 or default DOE curve
  • Sensible heat exchange effectiveness = f2(speed ratio, sensible heat exchange effectiveness at full speed), f2() is from Table 2 or default ASHRAE curve
  • Latent heat exchange effectiveness = f3(speed ratio, latent heat exchange effectiveness at full speed), f3() is from Table 3 or default ASHRAE curve
  1. Assert
  • Static torque + dynamic torque < rated torque

@mwetter and @JayHuLBL could you please take a look at the proposed change?

Based on the discussion on 5/21/2024, the followings are the required changes:

  • The wheel power = rated power * rated efficiency * speed ratio / motor efficiency = rated power * rated efficiency * (rated efficiency/motor efficiency)
  • Sensible/latent heat exchange effectiveness = sensible/latent effectiveness correction at part speed ratios* sensible heat exchange effectiveness at full speed
  • Create records for the (rated efficiency/motor efficiency) and sensible/latent effectiveness correction at part speed ratios, respectively
  • Modify the ASHRAE data record so that the heat exchanger effectiveness equal to 0 when the speed ratio is 0
  • Move the above implementation to Buildings.Fluid.HeatExchangers.BaseClasses
  • Duplicate theBuildings.Fluid.Movers.BaseClasses.Characteristics.efficiencyParameters_yMot to Buildings.Fluid.HeatExchangers.BaseClasses.VariableSpeedWheel.BaseClasses.Characteristics

@SenHuang19
Copy link

SenHuang19 commented May 13, 2024

Add realistic examples

  • Add a control loop to the wheel
  • Change the zone controller from on-off to PI
  • Making the mass flow rate of the air through the wheel equals 0 for some times during the simulation period

@SenHuang19
Copy link

SenHuang19 commented Jun 13, 2024

Based on the discussion on 6/12/2024.

  • Modify the layout of the connection lines in the icons so that they don't lay on top of other lines, and are aligned with the grid
  • Change the Buildings.Fluid.HeatExchangers.BaseClasses.VariableSpeedWheel into Buildings.Fluid.HeatExchangers.BaseClasses.VariableSpeedThermalWheels

@mwetter
Copy link
Member

mwetter commented Jun 13, 2024

@SenHuang19 : Note that it should be plural not singular, e.g., VariableSpeedThermalWheels as the models are also in the package ThermalWheels (plural).

Also, the first and last bullet are the same. What needs to be corrected is the layout of the connection lines so that they don't lay on top of other lines, and are aligned with the grid.

@SenHuang19
Copy link

@SenHuang19 : Note that it should be plural not singular, e.g., VariableSpeedThermalWheels as the models are also in the package ThermalWheels (plural).

Also, the first and last bullet are the same. What needs to be corrected is the layout of the connection lines so that they don't lay on top of other lines, and are aligned with the grid.

@mwetter thank you so much for your clarification. I have updated the task list.

@SenHuang19 SenHuang19 mentioned this pull request Jun 22, 2024
9 tasks
@SenHuang19
Copy link

Updates are made in #3909, which is ready for Jianjun's review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Air-to-Air Heat recovery
3 participants