Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses

Models of variable-speed thermal wheels

Information

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.

Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).

Package Content

Name Description
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent SpeedCorrectionLatent Enthalpy wheels
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible SpeedCorrectionSensible Sensible heat wheels
Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.Validation Validation Collection of validation models

Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent

Enthalpy wheels

Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionLatent

Information

This model calculates the power consumption, the sensible heat exchange effectiveness correction, and the latent heat exchange effectiveness correction of an enthalpy wheel when it is in different rotational speed.

The calculation of the power consumption and the sensible heat exchange effectiveness correction is described in Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible.

The latent heat exchange effectiveness correction is calculated using a cubic hermite spline interpolation of the latent heat exchange effectiveness dataset (see Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Characteristics.HeatExchangerEffectiveness).

Extends from Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible (Sensible heat wheels).

Parameters

TypeNameDefaultDescription
Genericper Record with performance data

Connectors

TypeNameDescription
input RealInputuSpeWheel speed ratio [1]
output RealOutputPElectric power consumption [W]
output RealOutputepsSenCorSensible heat exchanger effectiveness correction [1]
output RealOutputepsLatCorLatent heat exchanger effectiveness correction [1]

Modelica definition

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"; protected parameter Real[size(per.latEff.uSpe, 1)] dEpsLatCor(each fixed=false, each final unit="1") "Derivatives at the support points for latent heat exchanger effectiveness correction"; initial equation dEpsLatCor = Buildings.Utilities.Math.Functions.splineDerivatives( x=per.latEff.uSpe, y=per.latEff.epsCor, ensureMonotonicity=Buildings.Utilities.Math.Functions.isMonotonic(per.latEff.epsCor, strict=false)); equation epsLatCor = Buildings.Utilities.Math.Functions.interpolate( u=uSpe, xd=per.latEff.uSpe, yd=per.latEff.epsCor, d=dEpsLatCor) "Calculate the latent heat exchanger effectiveness correction"; end SpeedCorrectionLatent;

Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible

Sensible heat wheels

Buildings.Fluid.HeatExchangers.ThermalWheels.BaseClasses.SpeedCorrectionSensible

Information

This model calculates the power consumption and the sensible heat exchanger effectiveness correction of a sensible heat wheel when it is in the different rotational speed.

Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).

Parameters

TypeNameDefaultDescription
Genericper Record with performance data

Connectors

TypeNameDescription
input RealInputuSpeWheel speed ratio [1]
output RealOutputPElectric power consumption [W]
output RealOutputepsSenCorSensible heat exchanger effectiveness correction [1]

Modelica definition

model SpeedCorrectionSensible "Sensible heat wheels" extends Modelica.Blocks.Icons.Block; final parameter Real xSpe[:] = if per.use_defaultMotorEfficiencyCurve then per.relMotEff_default.y else per.relMotEff.uSpe "x-axis support points of the power efficiency curve"; final parameter Real[size(xSpe,1)] yEta = if per.use_defaultMotorEfficiencyCurve then per.relMotEff_default.eta else per.relMotEff.eta "y-axis support points of the power efficiency curve"; parameter Buildings.Fluid.HeatExchangers.ThermalWheels.Data.Generic per "Record with performance data"; Buildings.Controls.OBC.CDL.Interfaces.RealInput uSpe( final unit="1", final max=1) "Wheel speed ratio"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput P(final unit="W") "Electric power consumption"; Buildings.Controls.OBC.CDL.Interfaces.RealOutput epsSenCor(final unit="1") "Sensible heat exchanger effectiveness correction"; 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"; parameter Real[nSpe] dP(each fixed=false, each final unit="W") "Derivatives at the support points for electric power consumption"; parameter Real[size(per.senEff.uSpe, 1)] dEpsSenCor(each fixed=false, each final unit="1") "Derivatives at the support points for sensible heat exchanger effectiveness correction"; 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"; dP = Buildings.Utilities.Math.Functions.splineDerivatives( x=xSpe, y=yEta, ensureMonotonicity=Buildings.Utilities.Math.Functions.isMonotonic(yEta, strict=false)); dEpsSenCor = Buildings.Utilities.Math.Functions.splineDerivatives( x=per.senEff.uSpe, y=per.senEff.epsCor, ensureMonotonicity=Buildings.Utilities.Math.Functions.isMonotonic(per.senEff.epsCor, strict=false)); equation P = per.P_nominal*uSpe/Buildings.Utilities.Math.Functions.interpolate( u=uSpe, xd=xSpe, yd=yEta, d=dP) "Calculate the wheel power consumption"; epsSenCor = Buildings.Utilities.Math.Functions.interpolate( u=uSpe, xd=per.senEff.uSpe, yd=per.senEff.epsCor, d=dEpsSenCor) "Calculate the sensible heat exchanger effectiveness correction"; end SpeedCorrectionSensible;