Buildings.Fluid.DXSystems.Heating.BaseClasses

Package with base classes for Buildings.Fluid.DXSystems.Heating

Information

This package contains base classes that are used to construct the models in Buildings.Fluid.DXSystems.Heating.

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

Package Content

Name Description
Buildings.Fluid.DXSystems.Heating.BaseClasses.CoilDefrostTimeCalculations CoilDefrostTimeCalculations Calculates defrost curve value at given temperature and mass flow rate
Buildings.Fluid.DXSystems.Heating.BaseClasses.DefrostCapacity DefrostCapacity Calculates defrost curve value at given temperature and mass flow rate
Buildings.Fluid.DXSystems.Heating.BaseClasses.PartialDXHeatingCoil PartialDXHeatingCoil Partial model for DX heating coil
Buildings.Fluid.DXSystems.Heating.BaseClasses.Types Types Package with base classes for DX heating coils

Buildings.Fluid.DXSystems.Heating.BaseClasses.CoilDefrostTimeCalculations Buildings.Fluid.DXSystems.Heating.BaseClasses.CoilDefrostTimeCalculations

Calculates defrost curve value at given temperature and mass flow rate

Buildings.Fluid.DXSystems.Heating.BaseClasses.CoilDefrostTimeCalculations

Information

Block that calculates the defrost cycling time fraction tDefFra, the heating capacity multiplier heaCapMul and the input power multiplier inpPowMul.

The inputs are the measured temperature TOut and humidity ratio per kg total air XOut of the outdoor air. The calculation is based on Section 15.2.11.4 in the EnergyPlus 22.2 engineering reference document and is as decribed below.

Calculations

The model first estimates the outdoor coil temperature TCoiOut from the outdoor air drybulb temperature TOut using

TCoiOut = 0.82*TOut - 8.589.

The difference between the outdoor air humidity ratio XOutDryAir and the saturated air humidity ratio at outdoor coil temperature is used to determine frost formation on the outdoor coil as

delta_XCoilOut = max(1e-6, (XOutDryAir - XSatOutCoil)).

The block then calculates the time period fraction tDefFra for which the defrost operation is assumed to run, based on defrost calculation mode specified by the parameter defTri.
In the EnergyPlus model, tDefFra represents the fraction of the constant timestep in the simulation model for which the defrost operation is assumed to be active. This is calculated to be a higher value when the outdoor air temperature is lower and the relative humidity is higher. This results in a higher proportion of the consumed power going towards the defrost operation and lower heating of the condenser's air stream.

In this Modelica implementation of the model, while the timestep may not be constant and may vary based on the solver for the simulation, the same assumption is used for calculating the proportion of energy consumed for defrost mode operation. The coil does not actually enter defrost operation (with reverse flow of refrigerant) during this timestep fraction.

If defTri is set to timed, tDefFra is set to the user input parameter for defrost operation timestep fraction tDefRun. The heating capacity multiplier heaCapMul and input power multiplier inpPowMul are calculated as

tDefFra = tDefRun,
heaCapMul = 0.909 - 107.33*delta_XCoilOut,
inpPowMul = 0.9 - 36.45*delta_XCoilOut.

If defTri is set to onDemand, tDefFra, heaCapMul and inpPowMul are calculated as

tDefFra = 1/(1 + (0.01446/delta_XCoilOut)),
heaCapMul = 0.875*(1 - tDefFra),
inpPowMul = 0.954*(1 - tDefFra).

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

Parameters

TypeNameDefaultDescription
DefrostTimeMethodsdefTriBuildings.Fluid.DXSystems.He...Type of method to trigger the defrost cycle
RealtDefRun0.5If defrost operation is timed, timestep fraction for which defrost cycle is run [1]
ThermodynamicTemperatureTDefLim Maximum temperature at which defrost operation is activated [K]
Advanced
TemperatureDifferencedTHys0.5Temperature comparison hysteresis difference [K]

Connectors

TypeNameDescription
input RealInputTOutTemperature of outdoor air [K]
input RealInputXOutHumidity ratio of outdoor air [kg/kg]
output RealOutputtDefFraDefrost operation timestep fraction [1]
output RealOutputheaCapMulHeating capacity multiplier [1]
output RealOutputinpPowMulInput power multiplier [1]

Modelica definition

block CoilDefrostTimeCalculations "Calculates defrost curve value at given temperature and mass flow rate" extends Modelica.Blocks.Icons.Block; parameter Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostTimeMethods defTri=Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostTimeMethods.timed "Type of method to trigger the defrost cycle"; parameter Real tDefRun( final unit="1") = 0.5 "If defrost operation is timed, timestep fraction for which defrost cycle is run"; parameter Modelica.Units.SI.ThermodynamicTemperature TDefLim "Maximum temperature at which defrost operation is activated"; parameter Modelica.Units.SI.TemperatureDifference dTHys = 0.5 "Temperature comparison hysteresis difference"; Modelica.Blocks.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Temperature of outdoor air"; Modelica.Blocks.Interfaces.RealInput XOut( final unit="kg/kg", final quantity="MassFraction") "Humidity ratio of outdoor air"; Modelica.Blocks.Interfaces.RealOutput tDefFra( final unit="1") "Defrost operation timestep fraction"; Modelica.Blocks.Interfaces.RealOutput heaCapMul( final unit="1") "Heating capacity multiplier"; Modelica.Blocks.Interfaces.RealOutput inpPowMul( final unit="1") "Input power multiplier"; Modelica.Units.SI.MassFraction delta_XCoilOut "Difference between outdoor air humidity ratio and the saturated air humidity ratio at estimated outdoor coil temperature"; Modelica.Units.SI.ThermodynamicTemperature TCoiOut "Outdoor coil temperature"; Modelica.Units.SI.MassFraction XOutDryAir "Outdoor air humidity ratio per kg total air"; Buildings.Utilities.Psychrometrics.ToDryAir toDryAir "Convert outdoor air humidity ratio from total air to dry air"; Buildings.Controls.OBC.CDL.Reals.Hysteresis hysTOut( final uLow=-dTHys, final uHigh=dTHys) "Check if outdoor air temperature is below maximum limit for defrost operation"; equation // Estimated outdoor coil surface temperature, based on outdoor air temperature. // 0.82 and 8.589 are empirical coefficients for this conversion, that are valid // only when outdoor air temperature is in degree Celsius. TCoiOut = Modelica.Units.Conversions.from_degC(0.82*Modelica.Units.Conversions.to_degC(TOut) - 8.589); // Provide outdoor air as input to conversion block XOut = toDryAir.XiTotalAir; // Get outdoor air humidity ratio per kg of dry air XOutDryAir = toDryAir.XiDry; // Calculate difference between outdoor air humidity ratio and saturated air humidity // ratio at estimated outdoor coil surface temperature, which will indicate frost formation delta_XCoilOut = Buildings.Utilities.Math.Functions.smoothMax( 1e-6, XOutDryAir - Buildings.Utilities.Psychrometrics.Functions.X_pTphi(101325, TCoiOut, 1), 0.5*1e-6); // Use hysteresis block for comparison of outdoor air temperature with max limit // for defrost operation hysTOut.u = TOut - TDefLim; // Check if defrost operation is allowed if not hysTOut.y then if defTri == Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostTimeMethods.timed then tDefFra = tDefRun; // Empirical coefficients for calculating multipliers valid only for humidity // ratio difference per kg of dry air heaCapMul = 0.909 - 107.33*delta_XCoilOut; inpPowMul = 0.9 - 36.45*delta_XCoilOut; else // Empirical coefficients for calculating multipliers valid only for humidity // ratio per kg of dry air tDefFra = 1/(1 + (0.01446/delta_XCoilOut)); heaCapMul =0.875*(1 - tDefFra); inpPowMul =0.954*(1 - tDefFra); end if; // Condition for when defrost is not operated else tDefFra = 0; heaCapMul = 1; inpPowMul = 1; end if; end CoilDefrostTimeCalculations;

Buildings.Fluid.DXSystems.Heating.BaseClasses.DefrostCapacity Buildings.Fluid.DXSystems.Heating.BaseClasses.DefrostCapacity

Calculates defrost curve value at given temperature and mass flow rate

Buildings.Fluid.DXSystems.Heating.BaseClasses.DefrostCapacity

Information

Block that calculates the heat transfered to airloop QTotDef_flow, the total heating power consumption of the component PTot, the defrost input power consumption PDef and the crankcase heater input power consumption PCra.

The calculation are based on in Section 15.2.11.5 and 11.6 in the the EnergyPlus 22.2 engineering reference document, and are as

Calculations

Based on the type of defrost method defOpe, different calculations are used:

The total power consumption PTot and total heat flowrate to the air stream QTotDef_flow (while accounting for defrost operation) is calculated as follows:

PTot = QTot_flow*EIR*PLR*inpPowMul/PLFra,
QTotDef_flow = QTot_flow*heaCapMul.

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

Parameters

TypeNameDefaultDescription
replaceable package MediumAModelica.Media.Interfaces.Pa...Fluid medium package
RealtDefRun0.5If defrost operation is timed, timestep fraction for which defrost cycle is run [1]
PowerQDefResCapdefCur.QDefResCapCapacity of resistive defrost element [W]
DefrostTimeMethodsdefTriBuildings.Fluid.DXSystems.He...Type of method to trigger the defrost cycle
DefrostOperationdefOpeBuildings.Fluid.DXSystems.He...Type of defrost method
DXCoildefCur Defrost curve parameter record

Connectors

TypeNameDescription
replaceable package MediumAFluid medium package
input RealInputtDefFraCalculated fraction of timestep for which the defrost cycle is assumed to run [1]
input RealInputheaCapMulHeating capacity multiplier [1]
input RealInputinpPowMulInput power multiplier [1]
input RealInputTConInTemperature of air entering indoor condenser unit [K]
input RealInputXConInHumidity ratio of air entering indoor condenser coil [kg/kg]
input RealInputpInPressure of air entering indoor condenser coil [Pa]
input RealInputTOutTemperature of outdoor air [K]
input RealInputQTot_flowTotal heating capacity from heating coil curve calculations [W]
input RealInputEIRTotal energy input ratio from heating coil curve calculations [1]
input RealInputuSpeInput speed signal [1]
output RealOutputQDef_flowPower extracted from airloop to defrost outdoor coil [W]
output RealOutputPDefPower input required for running defrost operation [W]
output RealOutputPTotTotal power input required for running heating coil with defrost operation [W]
output RealOutputQTotDef_flowTotal heat added to airloop after defrost [W]
output RealOutputPCraCrankcase heater power consumption [W]

Modelica definition

block DefrostCapacity "Calculates defrost curve value at given temperature and mass flow rate" extends Modelica.Blocks.Icons.Block; replaceable package MediumA = Modelica.Media.Interfaces.PartialMedium "Fluid medium package"; parameter Real tDefRun( final unit="1") = 0.5 "If defrost operation is timed, timestep fraction for which defrost cycle is run"; parameter Modelica.Units.SI.Power QDefResCap = defCur.QDefResCap "Capacity of resistive defrost element"; parameter Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostTimeMethods defTri= Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostTimeMethods.timed "Type of method to trigger the defrost cycle"; parameter Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostOperation defOpe= Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostOperation.resistive "Type of defrost method"; parameter Buildings.Fluid.DXSystems.Heating.AirSource.Data.Generic.DXCoil defCur "Defrost curve parameter record"; Modelica.Blocks.Interfaces.RealInput tDefFra( final unit="1") "Calculated fraction of timestep for which the defrost cycle is assumed to run"; Modelica.Blocks.Interfaces.RealInput heaCapMul( final unit="1") "Heating capacity multiplier"; Modelica.Blocks.Interfaces.RealInput inpPowMul( final unit="1") "Input power multiplier"; Modelica.Blocks.Interfaces.RealInput TConIn( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Temperature of air entering indoor condenser unit"; Modelica.Blocks.Interfaces.RealInput XConIn( final unit="kg/kg", final quantity="MassFraction") "Humidity ratio of air entering indoor condenser coil"; Modelica.Blocks.Interfaces.RealInput pIn( final unit="Pa", final quantity="Pressure") "Pressure of air entering indoor condenser coil"; Modelica.Blocks.Interfaces.RealInput TOut( final unit="K", displayUnit="degC", final quantity="ThermodynamicTemperature") "Temperature of outdoor air"; Modelica.Blocks.Interfaces.RealInput QTot_flow( final unit="W", final quantity="Power") "Total heating capacity from heating coil curve calculations"; Modelica.Blocks.Interfaces.RealInput EIR( final unit="1") "Total energy input ratio from heating coil curve calculations"; Modelica.Blocks.Interfaces.RealInput uSpe( final unit="1") "Input speed signal"; Modelica.Blocks.Interfaces.RealOutput QDef_flow( final unit="W", final quantity="Power") "Power extracted from airloop to defrost outdoor coil"; Modelica.Blocks.Interfaces.RealOutput PDef( final unit="W", final quantity="Power") "Power input required for running defrost operation"; Modelica.Blocks.Interfaces.RealOutput PTot( final unit="W", final quantity="Power") "Total power input required for running heating coil with defrost operation"; Modelica.Blocks.Interfaces.RealOutput QTotDef_flow( final unit="W", final quantity="Power") "Total heat added to airloop after defrost"; Modelica.Blocks.Interfaces.RealOutput PCra( final unit="W", final quantity="Power") "Crankcase heater power consumption"; Real defMod_T( final unit="1") "Defrost modifier curve value"; Real RTF( final unit="1") "Run-time fraction"; Real PLR( final unit="1") "Part-load ratio"; Real PLFra( final unit="1") "Part-load fraction"; Modelica.Units.SI.ThermodynamicTemperature TConInWetBul "Wet bulb temperature of air entering indoor condenser coil"; Buildings.Utilities.Psychrometrics.TWetBul_TDryBulXi wetBul( redeclare package Medium = MediumA) "Calculate wetbulb temperature of condensor inlet air"; equation // Find wet-bulb temperature of inlet air pIn = wetBul.p; XConIn = wetBul.Xi[1]; TConIn = wetBul.TDryBul; TConInWetBul=wetBul.TWetBul; // Calculate modifying factor for defrost operation power consumption defMod_T =Buildings.Utilities.Math.Functions.smoothMax( x1=Buildings.Utilities.Math.Functions.biquadratic( a=defCur.defEIRFunT, x1=Modelica.Units.Conversions.to_degC(TConInWetBul), x2=Modelica.Units.Conversions.to_degC(TOut)), x2=0.001, deltaX=0.0001); PLR = uSpe; // Calculate heat transferred from airflow to outdoor coil, and power consumed by // compressor for defrost operation. if defOpe == Buildings.Fluid.DXSystems.Heating.BaseClasses.Types.DefrostOperation.resistive then QDef_flow = 0; PDef =QDefResCap*tDefFra*RTF; else // All coefficients are empirical values valid only for temperature in degree // Celsius and heat flow rate in Watts. QDef_flow = 0.01*tDefFra*(7.222 - Modelica.Units.Conversions.to_degC(TOut))* QTot_flow/1.01667; PDef =defMod_T*QTot_flow*tDefFra*RTF/1.01667; end if; QTotDef_flow = QTot_flow*heaCapMul; // Partload fraction for heating coil PLFra = Buildings.Fluid.Utilities.extendedPolynomial( x=PLR, c=defCur.PLFraFunPLR, xMin=0, xMax=1); // Calculate total power consumption, run-time fraction and crankcase heater // power consumption. PTot =QTot_flow*EIR*PLR*inpPowMul/PLFra; RTF = PLR/PLFra; PCra = defCur.QCraCap * (1 - RTF); end DefrostCapacity;

Buildings.Fluid.DXSystems.Heating.BaseClasses.PartialDXHeatingCoil Buildings.Fluid.DXSystems.Heating.BaseClasses.PartialDXHeatingCoil

Partial model for DX heating coil

Buildings.Fluid.DXSystems.Heating.BaseClasses.PartialDXHeatingCoil

Information

This partial model is the base class for Buildings.Fluid.DXSystems.Heating.AirSource.SingleSpeed.

Extends from Buildings.Fluid.Interfaces.TwoPortHeatMassExchanger (Partial model transporting one fluid stream with storing mass or energy).

Parameters

TypeNameDefaultDescription
replaceable package MediumPartialMediumMedium in the component
DXCoildatCoi Performance data
Nominal condition
MassFlowRatem_flow_nominaldatCoi.sta[nSta].nomVal.m_fl...Nominal mass flow rate [kg/s]
PressureDifferencedp_nominal Pressure difference [Pa]
Assumptions
BooleanallowFlowReversaltrue= false to simplify equations, assuming, but not enforcing, no flow reversal
Advanced
MassFlowRatem_flow_small1E-4*abs(m_flow_nominal)Small mass flow rate for regularization of zero flow [kg/s]
TemperatureDifferencedTHys0.5Temperature comparison for hysteresis [K]
Diagnostics
Booleanshow_Tfalse= true, if actual temperature at port is computed
Flow resistance
Booleanfrom_dpfalse= true, use m_flow = f(dp) else dp = f(m_flow)
BooleanlinearizeFlowResistancefalse= true, use linear relation between m_flow and dp for any flow rate
RealdeltaM0.1Fraction of nominal flow rate where flow transitions to laminar
Dynamics
Nominal condition
Timetau30Time constant at nominal flow (if energyDynamics <> SteadyState) [s]
Conservation equations
DynamicsenergyDynamicsModelica.Fluid.Types.Dynamic...Type of energy balance: dynamic (3 initialization options) or steady state
Initialization
AbsolutePressurep_startMedium.p_defaultStart value of pressure [Pa]
TemperatureT_startMedium.T_defaultStart value of temperature [K]
MassFractionX_start[Medium.nX]Medium.X_defaultStart value of mass fractions m_i/m [kg/kg]
ExtraPropertyC_start[Medium.nC]fill(0, Medium.nC)Start value of trace substances

Connectors

TypeNameDescription
replaceable package MediumMedium in the component
FluidPort_aport_aFluid connector a (positive design flow direction is from port_a to port_b)
FluidPort_bport_bFluid connector b (positive design flow direction is from port_a to port_b)
input RealInputTOutOutside air dry bulb temperature for an air cooled condenser or wetbulb temperature for an evaporative cooled condenser [K]
input RealInputphiOutdoor air relative humidity at evaporator inlet (0...1) [1]
output RealOutputPElectrical power consumed [W]
output RealOutputQSen_flowSensible heat flow rate [W]

Modelica definition

partial model PartialDXHeatingCoil "Partial model for DX heating coil" extends Buildings.Fluid.Interfaces.TwoPortHeatMassExchanger( redeclare replaceable package Medium = Modelica.Media.Interfaces.PartialCondensingGases, redeclare final Buildings.Fluid.MixingVolumes.MixingVolume vol( prescribedHeatFlowRate=true), final m_flow_nominal = datCoi.sta[nSta].nomVal.m_flow_nominal); parameter Buildings.Fluid.DXSystems.Heating.AirSource.Data.Generic.DXCoil datCoi "Performance data"; parameter Modelica.Units.SI.TemperatureDifference dTHys( final min=0)=0.5 "Temperature comparison for hysteresis"; Modelica.Blocks.Interfaces.RealInput TOut( final unit="K", displayUnit="degC") "Outside air dry bulb temperature for an air cooled condenser or wetbulb temperature for an evaporative cooled condenser"; Modelica.Blocks.Interfaces.RealInput phi( final unit="1") "Outdoor air relative humidity at evaporator inlet (0...1)"; Modelica.Blocks.Interfaces.RealOutput P( final quantity="Power", final unit="W") "Electrical power consumed"; Modelica.Blocks.Interfaces.RealOutput QSen_flow( final quantity="Power", final unit="W") "Sensible heat flow rate"; Buildings.Fluid.DXSystems.BaseClasses.DryCoil dxCoi( final datCoi=datCoi, final variableSpeedCoil=false, final use_mCon_flow=false) "DX coil"; protected constant String substanceName="water" "Name of species substance"; parameter Integer nSta=datCoi.nSta "Number of stages"; parameter Integer i_x(fixed=false) "Index of substance"; parameter Modelica.Units.SI.AbsolutePressure pAtm(fixed=false) "Atmospheric pressure"; Modelica.Units.SI.SpecificEnthalpy hIn=inStream(port_a.h_outflow) "Enthalpy of air entering the DX coil"; Modelica.Units.SI.Temperature TIn=Medium.temperature_phX( p=port_a.p, h=hIn, X=XIn) "Dry bulb temperature of air entering the DX coil"; Modelica.Units.SI.MassFraction XIn[Medium.nXi]=inStream( port_a.Xi_outflow) "Mass fraction/absolute humidity of air entering the DX coil"; Modelica.Blocks.Sources.RealExpression T( final y=TIn) "Inlet air temperature"; Modelica.Blocks.Sources.RealExpression m( final y=port_a.m_flow) "Inlet air mass flow rate"; Buildings.Fluid.DXSystems.Heating.BaseClasses.CoilDefrostTimeCalculations defTimFra( final defTri=datCoi.defTri, final tDefRun=datCoi.tDefRun, final TDefLim=datCoi.TDefLim, final dTHys=dTHys) "Block to compute defrost time fraction, heat transfer multiplier and input power multiplier"; Buildings.Fluid.DXSystems.Heating.BaseClasses.DefrostCapacity defCap( redeclare package MediumA = Medium, final defTri=datCoi.defTri, final defOpe=datCoi.defOpe, final tDefRun=datCoi.tDefRun, final defCur=datCoi, final QDefResCap=datCoi.QDefResCap) "Block to compute actual heat transferred to medium and power input after accounting for defrost"; Buildings.Utilities.Psychrometrics.X_pTphi x_pTphi( final use_p_in=false, final p=pAtm) "Conversion for relative humidity to water vapor mass fraction"; Buildings.HeatTransfer.Sources.PrescribedHeatFlow q "Heat extracted by coil"; Modelica.Blocks.Sources.RealExpression p_in( final y=port_a.p) "Inlet air pressure"; Modelica.Blocks.Sources.RealExpression X( final y=XIn[i_x]) "Inlet air mass fraction"; initial algorithm // Make sure that |Q_flow_nominal[nSta]| >= |Q_flow_nominal[i]| for all stages because the data // of nSta are used in the evaporation model for i in 1:(nSta-1) loop assert(datCoi.sta[i].nomVal.Q_flow_nominal >= datCoi.sta[nSta].nomVal.Q_flow_nominal, "Error in DX coil performance data: Q_flow_nominal of the highest stage must have the biggest value in magnitude. Obtained " + Modelica.Math.Vectors.toString( {datCoi.sta[i].nomVal.Q_flow_nominal for i in 1:nSta}, "Q_flow_nominal")); end for; // Compute index of species vector that carries the substance name i_x :=-1; for i in 1:Medium.nXi loop if Modelica.Utilities.Strings.isEqual(string1=Medium.substanceNames[i], string2=substanceName, caseSensitive=false) then i_x :=i; end if; end for; assert(i_x > 0, "Substance '" + substanceName + "' is not present in medium '" + Medium.mediumName + "'.\n" + "Change medium model to one that has '" + substanceName + "' as a substance."); pAtm :=port_a.p; equation connect(m.y,dxCoi. m_flow); connect(q.port, vol.heatPort); connect(TOut,dxCoi.TEvaIn); connect(T.y,dxCoi.TConIn); connect(TOut, defTimFra.TOut); connect(defTimFra.tDefFra, defCap.tDefFra); connect(defTimFra.heaCapMul, defCap.heaCapMul); connect(defTimFra.inpPowMul, defCap.inpPowMul); connect(T.y, defCap.TConIn); connect(dxCoi.Q_flow, defCap.QTot_flow); connect(dxCoi.EIR, defCap.EIR); connect(TOut, defCap.TOut); connect(defCap.QTotDef_flow, q.Q_flow); connect(defCap.QTotDef_flow, QSen_flow); connect(defCap.PTot, P); connect(p_in.y, defCap.pIn); connect(X.y, defCap.XConIn); connect(defTimFra.XOut, x_pTphi.X[1]); connect(x_pTphi.T, TOut); connect(x_pTphi.phi, phi); end PartialDXHeatingCoil;