Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
character(len=MaxNameLength), | public | :: | Name | = | '' | ||
character(len=MaxNameLength), | public | :: | Type | = | '' | ||
integer, | public | :: | TypeNum | = | 0 | ||
logical, | public | :: | IsChilledWaterTank | = | .FALSE. | ||
character(len=MaxNameLength), | public | :: | EndUseSubcategoryName | = | '' | ||
logical, | public | :: | Init | = | .TRUE. | ||
logical, | public | :: | StandAlone | = | .FALSE. | ||
real(kind=r64), | public | :: | Volume | = | 0.0d0 | ||
real(kind=r64), | public | :: | Mass | = | 0.0d0 | ||
real(kind=r64), | public | :: | TimeElapsed | = | 0.0d0 | ||
integer, | public | :: | AmbientTempIndicator | = | 0 | ||
integer, | public | :: | AmbientTempSchedule | = | 0 | ||
integer, | public | :: | AmbientTempZone | = | 0 | ||
integer, | public | :: | AmbientTempOutsideAirNode | = | 0 | ||
real(kind=r64), | public | :: | AmbientTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | AmbientZoneGain | = | 0.0d0 | ||
real(kind=r64), | public | :: | LossCoeff | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycLossCoeff | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycLossFracToZone | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycLossCoeff | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycLossFracToZone | = | 0.0d0 | ||
integer, | public | :: | Mode | = | 0 | ||
integer, | public | :: | SavedMode | = | 0 | ||
integer, | public | :: | ControlType | = | 1 | ||
character(len=MaxNameLength), | public | :: | FuelType | = | '' | ||
real(kind=r64), | public | :: | MaxCapacity | = | 0.0d0 | ||
real(kind=r64), | public | :: | MinCapacity | = | 0.0d0 | ||
real(kind=r64), | public | :: | Efficiency | = | 0.0d0 | ||
integer, | public | :: | PLFCurve | = | 0 | ||
integer, | public | :: | SetpointTempSchedule | = | 0 | ||
real(kind=r64), | public | :: | SetpointTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | DeadbandDeltaTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | TankTempLimit | = | 0.0d0 | ||
real(kind=r64), | public | :: | IgnitionDelay | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaLoad | = | 0.0d0 | ||
character(len=MaxNameLength), | public | :: | OffCycParaFuelType | = | '' | ||
real(kind=r64), | public | :: | OffCycParaFracToTank | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaLoad | = | 0.0d0 | ||
character(len=MaxNameLength), | public | :: | OnCycParaFuelType | = | '' | ||
real(kind=r64), | public | :: | OnCycParaFracToTank | = | 0.0d0 | ||
integer, | public | :: | UseCurrentFlowLock | = | 0 | ||
integer, | public | :: | UseInletNode | = | 0 | ||
real(kind=r64), | public | :: | UseInletTemp | = | 0.0d0 | ||
integer, | public | :: | UseOutletNode | = | 0 | ||
real(kind=r64), | public | :: | UseOutletTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseMassFlowRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseEffectiveness | = | 0.0d0 | ||
real(kind=r64), | public | :: | PlantUseMassFlowRateMax | = | 0.0d0 | ||
real(kind=r64), | public | :: | SavedUseOutletTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseDesignVolFlowRate | = | 0.0d0 | ||
integer, | public | :: | UseBranchControlType | = | 2 | ||
integer, | public | :: | UseSidePlantSizNum | = | 0 | ||
logical, | public | :: | UseSideSeries | = | .TRUE. | ||
integer, | public | :: | UseSideAvailSchedNum | = | 0 | ||
real(kind=r64), | public | :: | UseSideLoadRequested | = | 0.0D0 | ||
integer, | public | :: | UseSidePlantLoopNum | = | 0 | ||
integer, | public | :: | UseSidePlantLoopSide | = | 0 | ||
integer, | public | :: | UseSidePlantBranchNum | = | 0 | ||
integer, | public | :: | UseSidePlantCompNum | = | 0 | ||
integer, | public | :: | SourceCurrentFlowLock | = | 0 | ||
integer, | public | :: | SourceInletNode | = | 0 | ||
real(kind=r64), | public | :: | SourceInletTemp | = | 0.0d0 | ||
integer, | public | :: | SourceOutletNode | = | 0 | ||
real(kind=r64), | public | :: | SourceOutletTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceMassFlowRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceEffectiveness | = | 0.0d0 | ||
real(kind=r64), | public | :: | PlantSourceMassFlowRateMax | = | 0.0d0 | ||
real(kind=r64), | public | :: | SavedSourceOutletTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceDesignVolFlowRate | = | 0.0d0 | ||
integer, | public | :: | SourceBranchControlType | = | 2 | ||
integer, | public | :: | SourceSidePlantSizNum | = | 0 | ||
logical, | public | :: | SourceSideSeries | = | .TRUE. | ||
integer, | public | :: | SourceSideAvailSchedNum | = | 0 | ||
integer, | public | :: | SourceSidePlantLoopNum | = | 0 | ||
integer, | public | :: | SourceSidePlantLoopSide | = | 0 | ||
integer, | public | :: | SourceSidePlantBranchNum | = | 0 | ||
integer, | public | :: | SourceSidePlantCompNum | = | 0 | ||
integer, | public | :: | SourceSideControlMode | = | 0 | ||
integer, | public | :: | SourceSideAltSetpointSchedNum | = | 0 | ||
real(kind=r64), | public | :: | SizingRecoveryTime | = | 0.0d0 | ||
real(kind=r64), | public | :: | MassFlowRateMax | = | 0.0d0 | ||
real(kind=r64), | public | :: | VolFlowRateMin | = | 0.d0 | ||
real(kind=r64), | public | :: | MassFlowRateMin | = | 0.0d0 | ||
integer, | public | :: | FlowRateSchedule | = | 0 | ||
integer, | public | :: | UseInletTempSchedule | = | 0 | ||
real(kind=r64), | public | :: | TankTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | SavedTankTemp | = | 0.0d0 | ||
real(kind=r64), | public | :: | TankTempAvg | = | 0.0d0 | ||
real(kind=r64), | public | :: | Height | = | 0.0d0 | ||
real(kind=r64), | public | :: | Perimeter | = | 0.0d0 | ||
integer, | public | :: | Shape | = | 0 | ||
real(kind=r64), | public | :: | HeaterHeight1 | = | 0.0d0 | ||
integer, | public | :: | HeaterNode1 | = | 0 | ||
logical, | public | :: | HeaterOn1 | = | .FALSE. | ||
logical, | public | :: | SavedHeaterOn1 | = | .FALSE. | ||
real(kind=r64), | public | :: | HeaterHeight2 | = | 0.0d0 | ||
integer, | public | :: | HeaterNode2 | = | 0 | ||
logical, | public | :: | HeaterOn2 | = | .FALSE. | ||
logical, | public | :: | SavedHeaterOn2 | = | .FALSE. | ||
real(kind=r64), | public | :: | AdditionalCond | = | 0.0d0 | ||
real(kind=r64), | public | :: | SetpointTemp2 | = | 0.0d0 | ||
integer, | public | :: | SetpointTempSchedule2 | = | 0 | ||
real(kind=r64), | public | :: | DeadbandDeltaTemp2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | MaxCapacity2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaHeight | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaHeight | = | 0.0d0 | ||
real(kind=r64), | public | :: | SkinLossCoeff | = | 0.0d0 | ||
real(kind=r64), | public | :: | SkinLossFracToZone | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycFlueLossCoeff | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycFlueLossFracToZone | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseInletHeight | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseOutletHeight | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceInletHeight | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceOutletHeight | = | 0.0d0 | ||
integer, | public | :: | UseInletStratNode | = | 0 | ||
integer, | public | :: | UseOutletStratNode | = | 0 | ||
integer, | public | :: | SourceInletStratNode | = | 0 | ||
integer, | public | :: | SourceOutletStratNode | = | 0 | ||
integer, | public | :: | InletMode | = | 1 | ||
real(kind=r64), | public | :: | InversionMixingRate | = | 0.0d0 | ||
real(kind=r64), | public, | DIMENSION(:), ALLOCATABLE | :: | AdditionalLossCoeff | |||
integer, | public | :: | Nodes | = | 0 | ||
type(StratifiedNodeData), | public, | DIMENSION(:), ALLOCATABLE | :: | Node | |||
real(kind=r64), | public | :: | VolFlowRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | VolumeConsumed | = | 0.0d0 | ||
real(kind=r64), | public | :: | UnmetRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | LossRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | FlueLossRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | TotalDemandRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterRate1 | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterRate2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelRate1 | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelRate2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | VentRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaFuelRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaRateToTank | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaFuelRate | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaRateToTank | = | 0.0d0 | ||
real(kind=r64), | public | :: | NetHeatTransferRate | = | 0.0d0 | ||
integer, | public | :: | CycleOnCount | = | 0 | ||
integer, | public | :: | CycleOnCount1 | = | 0 | ||
integer, | public | :: | CycleOnCount2 | = | 0 | ||
real(kind=r64), | public | :: | RuntimeFraction | = | 0.0d0 | ||
real(kind=r64), | public | :: | RuntimeFraction1 | = | 0.0d0 | ||
real(kind=r64), | public | :: | RuntimeFraction2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | PartLoadRatio | = | 0.0d0 | ||
real(kind=r64), | public | :: | UnmetEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | LossEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | FlueLossEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | UseEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | TotalDemandEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | SourceEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterEnergy1 | = | 0.0d0 | ||
real(kind=r64), | public | :: | HeaterEnergy2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelEnergy1 | = | 0.0d0 | ||
real(kind=r64), | public | :: | FuelEnergy2 | = | 0.0d0 | ||
real(kind=r64), | public | :: | VentEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaFuelEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | OffCycParaEnergyToTank | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaFuelEnergy | = | 0.0d0 | ||
real(kind=r64), | public | :: | OnCycParaEnergyToTank | = | 0.0d0 | ||
real(kind=r64), | public | :: | NetHeatTransferEnergy | = | 0.0d0 | ||
logical, | public | :: | FirstRecoveryDone | = | .FALSE. | ||
real(kind=r64), | public | :: | FirstRecoveryFuel | = | 0.0d0 | ||
integer, | public | :: | HeatPumpNum | = | 0 | ||
integer, | public | :: | DesuperheaterNum | = | 0 | ||
logical, | public | :: | ShowSetpointWarning | = | .TRUE. | ||
integer, | public | :: | MaxCycleErrorIndex | = | 0 | ||
type(WaterHeaterSizingData), | public | :: | Sizing |
TYPE WaterThermalTankData
CHARACTER(len=MaxNameLength) :: Name = '' ! Name of water heater
CHARACTER(len=MaxNameLength) :: Type = '' ! Type of water heater (MIXED or STRATIFIED)
INTEGER :: TypeNum = 0 ! integer parameter for water heater(if part of an HPWH,then=HPWH)
LOGICAL :: IsChilledWaterTank = .FALSE. ! logical flag, true if for chilled water, false if for hot water
CHARACTER(len=MaxNameLength) :: EndUseSubcategoryName = '' ! User-defined end-use subcategory name
LOGICAL :: Init = .TRUE. ! Flag for initialization: TRUE means do the init
LOGICAL :: StandAlone = .FALSE. ! Flag for operation with no plant connections (no source or use)
REAL(r64) :: Volume = 0.0d0 ! Tank volume (m3)
REAL(r64) :: Mass = 0.0d0 ! Total mass of fluid in the tank (kg)
REAL(r64) :: TimeElapsed = 0.0d0 ! Fraction of the current hour that has elapsed (h)
! Saved in order to identify the beginning of a new system time
INTEGER :: AmbientTempIndicator = 0 ! Indicator for ambient tank losses (SCHEDULE, ZONE, EXTERIOR)
INTEGER :: AmbientTempSchedule = 0 ! Schedule index pointer
INTEGER :: AmbientTempZone = 0 ! Number of ambient zone around tank
INTEGER :: AmbientTempOutsideAirNode = 0 ! Number of outside air node
REAL(r64) :: AmbientTemp = 0.0d0 ! Ambient temperature around tank (C)
REAL(r64) :: AmbientZoneGain = 0.0d0 ! Internal gain to zone from tank losses (W)
REAL(r64) :: LossCoeff = 0.0d0 ! Overall tank heat loss coefficient, UA (W/K)
REAL(r64) :: OffCycLossCoeff = 0.0d0 ! Off-cycle overall tank heat loss coefficient, UA (W/K)
REAL(r64) :: OffCycLossFracToZone = 0.0d0 ! Fraction of off-cycle losses added to zone
REAL(r64) :: OnCycLossCoeff = 0.0d0 ! On-cycle overall tank heat loss coefficient, UA (W/K)
REAL(r64) :: OnCycLossFracToZone = 0.0d0 ! Fraction of on-cycle losses added to zone
INTEGER :: Mode = 0 ! Indicator for current operating mode
INTEGER :: SavedMode = 0 ! Mode indicator saved from previous time step
INTEGER :: ControlType = 1 ! Indicator for control type
CHARACTER(len=MaxNameLength) :: FuelType = '' ! Fuel type
REAL(r64) :: MaxCapacity = 0.0d0 ! Maximum capacity of auxiliary heater 1 (W)
REAL(r64) :: MinCapacity = 0.0d0 ! Minimum capacity of auxiliary heater 1 (W)
REAL(r64) :: Efficiency = 0.0d0 ! Thermal efficiency of auxiliary heater 1 ()
INTEGER :: PLFCurve = 0 ! Part load factor curve as a function of part load ratio
INTEGER :: SetpointTempSchedule = 0 ! Schedule index pointer
REAL(r64) :: SetpointTemp = 0.0d0 ! Setpoint temperature of auxiliary heater 1 (C)
REAL(r64) :: DeadbandDeltaTemp = 0.0d0 ! Deadband temperature difference of auxiliary heater 1 (deltaC)
REAL(r64) :: TankTempLimit = 0.0d0 ! Maximum tank temperature limit before venting (C)
REAL(r64) :: IgnitionDelay = 0.0d0 ! Time delay before heater is allowed to turn on (s)
REAL(r64) :: OffCycParaLoad = 0.0d0 ! Rate for off-cycle parasitic load (W)
CHARACTER(len=MaxNameLength) :: OffCycParaFuelType = '' ! Fuel type for off-cycle parasitic load
REAL(r64) :: OffCycParaFracToTank = 0.0d0 ! Fraction of off-cycle parasitic energy ending up in tank (W)
REAL(r64) :: OnCycParaLoad = 0.0d0 ! Rate for on-cycle parasitic load (W)
CHARACTER(len=MaxNameLength) :: OnCycParaFuelType = '' ! Fuel type for on-cycle parasitic load
REAL(r64) :: OnCycParaFracToTank = 0.0d0 ! Fraction of on-cycle parasitic energy ending up in tank (W)
INTEGER :: UseCurrentFlowLock = 0 ! current flow lock setting on use side
INTEGER :: UseInletNode = 0 ! Inlet node on the use side; colder water returning to a hottank
REAL(r64) :: UseInletTemp = 0.0d0 ! Use side inlet temperature (C)
INTEGER :: UseOutletNode = 0 ! Outlet node on the use side; hot tank water
REAL(r64) :: UseOutletTemp = 0.0d0 ! Use side outlet temperature (C)
REAL(r64) :: UseMassFlowRate = 0.0d0 ! Mass flow rate on the use side (kg/s)
REAL(r64) :: UseEffectiveness = 0.0d0 ! Heat transfer effectiveness on use side ()
REAL(r64) :: PlantUseMassFlowRateMax = 0.0d0 ! Plant demand-side max flow request on use side (kg/s)
REAL(r64) :: SavedUseOutletTemp = 0.0d0 ! Use side outlet temp saved for demand-side flow control (C)
REAL(r64) :: UseDesignVolFlowRate = 0.0d0 ! Use side plant volume flow rate (input data, autosizable) m3/s
INTEGER :: UseBranchControlType = 2 ! Use side plant branch control type e.g active, passive, bypass
INTEGER :: UseSidePlantSizNum = 0 ! index in plant sizing that the use side is on
LOGICAL :: UseSideSeries = .TRUE.
INTEGER :: UseSideAvailSchedNum = 0 ! use side availability schedule
REAL(r64) :: UseSideLoadRequested = 0.0D0 ! hold MyLoad request from plant management.
INTEGER :: UseSidePlantLoopNum = 0 ! if not zero, then this use side is on plant loop #
INTEGER :: UseSidePlantLoopSide = 0 ! use side is on loop side index
INTEGER :: UseSidePlantBranchNum = 0 ! use side branch num in plant topology
INTEGER :: UseSidePlantCompNum = 0 ! use side component num in plant topology
INTEGER :: SourceCurrentFlowLock = 0 ! current flow lock setting on source side
INTEGER :: SourceInletNode = 0 ! Inlet node for the source side; hot water from supply
REAL(r64) :: SourceInletTemp = 0.0d0 ! Source side inlet temperature (C)
INTEGER :: SourceOutletNode = 0 ! Outlet node for the source side; colder tank water
REAL(r64) :: SourceOutletTemp = 0.0d0 ! Source side outlet temperature (C)
REAL(r64) :: SourceMassFlowRate = 0.0d0 ! Mass flow rate on the source side (kg/s)
REAL(r64) :: SourceEffectiveness = 0.0d0 ! Heat transfer effectiveness on source side ()
REAL(r64) :: PlantSourceMassFlowRateMax = 0.0d0 ! Plant demand-side max flow request on source side (kg/s)
REAL(r64) :: SavedSourceOutletTemp = 0.0d0 ! Source side outlet temp saved for demand-side flow control (C)
REAL(r64) :: SourceDesignVolFlowRate = 0.0d0 ! Source side plant volume flow rate (input , autosizable) m3/s
INTEGER :: SourceBranchControlType = 2 ! source side plant branch control type e.g active, passive, bypass
INTEGER :: SourceSidePlantSizNum = 0 ! index in plant sizing that the source side is on
LOGICAL :: SourceSideSeries = .TRUE.
INTEGER :: SourceSideAvailSchedNum = 0 ! source side availability schedule.
INTEGER :: SourceSidePlantLoopNum = 0 ! if not zero, then this use side is on plant loop #
INTEGER :: SourceSidePlantLoopSide = 0 ! loop side that Source side is one eg. supply or demand
INTEGER :: SourceSidePlantBranchNum = 0 ! Source side branch num in plant topology
INTEGER :: SourceSidePlantCompNum = 0 ! Source side component num in plant topology
INTEGER :: SourceSideControlMode = 0 ! flag for how source side flow is controlled
INTEGER :: SourceSideAltSetpointSchedNum = 0 ! schedule of alternate temperature setpoint values
REAL(r64) :: SizingRecoveryTime = 0.0d0 ! sizing parameter for autosizing indirect water heaters (hr)
REAL(r64) :: MassFlowRateMax = 0.0d0 ! Maximum flow rate for scheduled DHW (kg/s)
REAL(r64) :: VolFlowRateMin = 0.d0 ! Minimum flow rate for heater ignition (kg/s)
REAL(r64) :: MassFlowRateMin = 0.0d0 ! Minimum mass flow rate for heater ignition (kg/s)
INTEGER :: FlowRateSchedule = 0 ! Schedule index pointer
INTEGER :: UseInletTempSchedule = 0 ! Cold water supply temperature schedule index pointer
REAL(r64) :: TankTemp = 0.0d0 ! Temperature of tank fluid (average, if stratified) (C)
REAL(r64) :: SavedTankTemp = 0.0d0 ! Tank temp that is carried from time step to time step (C)
REAL(r64) :: TankTempAvg = 0.0d0 ! Average tank temperature over the time step (C)
! Stratified variables (in addition to the above)
REAL(r64) :: Height = 0.0d0 ! Height of tank (m)
REAL(r64) :: Perimeter = 0.0d0 ! Perimeter of tank (m), only used for OTHER shape
INTEGER :: Shape = 0 ! Tank shape: VERTICAL CYLINDER, HORIZONTAL CYLINDER, or OTHER
REAL(r64) :: HeaterHeight1 = 0.0d0
INTEGER :: HeaterNode1 = 0
LOGICAL :: HeaterOn1 = .FALSE.
LOGICAL :: SavedHeaterOn1 = .FALSE.
REAL(r64) :: HeaterHeight2 = 0.0d0
INTEGER :: HeaterNode2 = 0
LOGICAL :: HeaterOn2 = .FALSE.
LOGICAL :: SavedHeaterOn2 = .FALSE.
REAL(r64) :: AdditionalCond = 0.0d0 ! Additional destratification conductivity (W/m K)
REAL(r64) :: SetpointTemp2 = 0.0d0 ! Setpoint temperature of auxiliary heater 2 (C)
INTEGER :: SetpointTempSchedule2 = 0
REAL(r64) :: DeadbandDeltaTemp2 = 0.0d0
REAL(r64) :: MaxCapacity2 = 0.0d0
REAL(r64) :: OffCycParaHeight = 0.0d0
REAL(r64) :: OnCycParaHeight = 0.0d0
REAL(r64) :: SkinLossCoeff = 0.0d0
REAL(r64) :: SkinLossFracToZone = 0.0d0
REAL(r64) :: OffCycFlueLossCoeff = 0.0d0
REAL(r64) :: OffCycFlueLossFracToZone = 0.0d0
REAL(r64) :: UseInletHeight = 0.0d0 ! Height of use side inlet (m)
REAL(r64) :: UseOutletHeight = 0.0d0 ! Height of use side outlet (m)
REAL(r64) :: SourceInletHeight = 0.0d0 ! Height of source side inlet (m)
REAL(r64) :: SourceOutletHeight = 0.0d0 ! Height of source side outlet (m)
INTEGER :: UseInletStratNode = 0 ! Use-side inlet node number
INTEGER :: UseOutletStratNode = 0 ! Use-side outlet node number
INTEGER :: SourceInletStratNode = 0 ! Source-side inlet node number
INTEGER :: SourceOutletStratNode = 0 ! Source-side outlet node number
INTEGER :: InletMode = 1 ! Inlet position mode: 1 = FIXED; 2 = SEEKING
REAL(r64) :: InversionMixingRate = 0.0d0
REAL(r64), DIMENSION(:), ALLOCATABLE :: AdditionalLossCoeff ! Loss coefficient added to the skin loss coefficient (W/m2-K)
INTEGER :: Nodes = 0 ! Number of nodes
TYPE(StratifiedNodeData), DIMENSION(:), ALLOCATABLE :: Node ! Array of node data
! Report variables
REAL(r64) :: VolFlowRate = 0.0d0 ! Scheduled DHW demand (m3/s)
REAL(r64) :: VolumeConsumed = 0.0d0 ! Volume of DHW consumed (m3)
REAL(r64) :: UnmetRate = 0.0d0 ! Energy demand to heat tank water to setpoint (W)
REAL(r64) :: LossRate = 0.0d0 ! Energy demand to support heat losses due to ambient temp (W)
REAL(r64) :: FlueLossRate = 0.0d0 ! Heat loss rate to flue (W)
REAL(r64) :: UseRate = 0.0d0 ! Energy demand to heat the Use Side water to tank temp (W)
REAL(r64) :: TotalDemandRate = 0.0d0 ! Total demand rate (sum of all above rates) (W)
REAL(r64) :: SourceRate = 0.0d0 ! Energy supplied by the source side to help heat the tank (W)
REAL(r64) :: HeaterRate = 0.0d0 ! The energy the water heater burner puts into the water (W)
REAL(r64) :: HeaterRate1 = 0.0d0 ! The energy heater 1 puts into the water (W)
REAL(r64) :: HeaterRate2 = 0.0d0 ! The energy heater 2 puts into the water (W)
REAL(r64) :: FuelRate = 0.0d0 ! The fuel consumption rate for the water heater burner (W)
REAL(r64) :: FuelRate1 = 0.0d0 ! The fuel consumption rate for heater 1 (W)
REAL(r64) :: FuelRate2 = 0.0d0 ! The fuel consumption rate for heater 2 (W)
REAL(r64) :: VentRate = 0.0d0 ! Heat recovery energy lost due to setpoint temp (W)
REAL(r64) :: OffCycParaFuelRate = 0.0d0 ! Fuel consumption rate for off-cycle parasitic load (W)
REAL(r64) :: OffCycParaRateToTank = 0.0d0 ! Heat rate to tank for off-cycle parasitic load (W)
REAL(r64) :: OnCycParaFuelRate = 0.0d0 ! Fuel consumption rate for on-cycle parasitic load (W)
REAL(r64) :: OnCycParaRateToTank = 0.0d0 ! Heat rate to tank for on-cycle parasitic load (W)
REAL(r64) :: NetHeatTransferRate = 0.0d0 ! Net heat transfer rate to/from tank (W)
INTEGER :: CycleOnCount = 0 ! Number of times heater cycles on in the current time step
INTEGER :: CycleOnCount1 = 0 ! Number of times heater 1 cycles on in the current time step
INTEGER :: CycleOnCount2 = 0 ! Number of times heater 2 cycles on in the current time step
REAL(r64) :: RuntimeFraction = 0.0d0 ! Runtime fraction, fraction of timestep that any heater is running
REAL(r64) :: RuntimeFraction1 = 0.0d0 ! Runtime fraction, fraction of timestep that heater 1 is running
REAL(r64) :: RuntimeFraction2 = 0.0d0 ! Runtime fraction, fraction of timestep that heater 2 is running
REAL(r64) :: PartLoadRatio = 0.0d0 ! Part load ratio, fraction of maximum heater capacity
REAL(r64) :: UnmetEnergy = 0.0d0 ! Energy to heat tank water to setpoint (J)
REAL(r64) :: LossEnergy = 0.0d0 ! Energy to support heat losses due to ambient temp (J)
REAL(r64) :: FlueLossEnergy = 0.0d0 ! Energy to support heat losses to the flue (J)
REAL(r64) :: UseEnergy = 0.0d0 ! Energy to heat the use side water to tank temp (J)
REAL(r64) :: TotalDemandEnergy = 0.0d0 ! Total energy demand (sum of all above energies) (J)
REAL(r64) :: SourceEnergy = 0.0d0 ! Energy supplied by the source side to help heat the tank (J)
REAL(r64) :: HeaterEnergy = 0.0d0 ! The energy the water heater burner puts into the water (J)
REAL(r64) :: HeaterEnergy1 = 0.0d0 ! The energy heater 1 puts into the water (J)
REAL(r64) :: HeaterEnergy2 = 0.0d0 ! The energy heater 2 puts into the water (J)
REAL(r64) :: FuelEnergy = 0.0d0 ! The fuel consumption energy for the water heater burner (J)
REAL(r64) :: FuelEnergy1 = 0.0d0 ! The fuel consumption energy for heater 1 (J)
REAL(r64) :: FuelEnergy2 = 0.0d0 ! The fuel consumption energy for heater 2 (J)
REAL(r64) :: VentEnergy = 0.0d0 ! Heat recovery energy lost due to setpoint temp (J)
REAL(r64) :: OffCycParaFuelEnergy = 0.0d0 ! Fuel consumption energy for off-cycle parasitic load (J)
REAL(r64) :: OffCycParaEnergyToTank = 0.0d0 ! Energy to tank for off-cycle parasitic load (J)
REAL(r64) :: OnCycParaFuelEnergy = 0.0d0 ! Fuel consumption energy for on-cycle parasitic load (J)
REAL(r64) :: OnCycParaEnergyToTank = 0.0d0 ! Energy to tank for on-cycle parasitic load (J)
REAL(r64) :: NetHeatTransferEnergy = 0.0d0 ! Net heat transfer energy to/from tank (J)
LOGICAL :: FirstRecoveryDone = .FALSE. ! Flag to indicate when first recovery to the setpoint is done
REAL(r64) :: FirstRecoveryFuel = 0.0d0 ! Fuel energy needed for first recovery to the setpoint (J)
INTEGER :: HeatPumpNum = 0 ! Index to heat pump water heater
INTEGER :: DesuperheaterNum = 0 ! Index to desuperheating coil
LOGICAL :: ShowSetpointWarning = .TRUE. ! Warn when set point is greater than max tank temp limit
INTEGER :: MaxCycleErrorIndex = 0 ! recurring error index
Type(WaterHeaterSizingData) :: Sizing ! ancillary data for autosizing
END TYPE WaterThermalTankData