New Features for Liquid-cooled Data Centers - #11667
Conversation
JasonGlazer
left a comment
There was a problem hiding this comment.
Thanks for proposing to add such an important new feature for EnergyPlus.
| \object-list ScheduleNames | ||
| \note Schedule (0.0 to 1.0) defining the fraction of the total IT liquid load directed to this specific coil. | ||
| \note If blank, defaults to 1.0. | ||
| A10, \field Cooling Coil Object Type 2 |
There was a problem hiding this comment.
I'm struggling to understand how multiple cooling coil objects could physically be present on a single server or chip? Do you really need multiple coils?
There was a problem hiding this comment.
The intention is to allow for something like 50% of the cooling load is handled by single-phase cold plate, and 50% handled by other forms of cooling, like rear door HX.
|
|
||
| ## Outputs Description ## | ||
|
|
||
| N/A |
There was a problem hiding this comment.
Please describe any new output variables or output tables that would be added.
There was a problem hiding this comment.
Thanks. Added some output variables to this section
|
|
||
| At the rack level, a new ElectricEquipment:ITE:LiquidCooled parent object natively represents liquid-cooled data center IT equipment racks. This object calculates the total transient IT power load, scales the system using a multiplier for rapid block-modeling of identical racks, and references a specific cooling coil component (e.g., Coil:Cooling:ITE:ColdPlate). By acting as the parent, the IT object calculates the raw thermal load and passes it down to the coil to determine the physical heat transfer split between the liquid loop and the zone air. | ||
|
|
||
| At the cooling coil level, the simulation establishes the absolute maximum physical cooling capacity based on the user-defined maximum allowable chip temperature, the real-time fluid inlet conditions provided by the plant loop, and the cold plate's overall thermal resistance (or heat transfer coefficient). During the simulation, the engine continuously scales the nominal thermal resistance using a bivariate modifier curve to account for changing system conditions like varying flow fractions and fluid temperatures. For standard single-phase systems, this physical heat transfer ceiling is calculated using the sensible heat capacity of the liquid and the combined solid and convective thermal resistances. |
There was a problem hiding this comment.
How much would it take to add two phase refrigerant support? I understand that is also an approach that is being used (essentially the circuit board including the chips are in a refrigerant bath).
There was a problem hiding this comment.
The two-phased one is handled with the Coil:Cooling:ITE:UserDefined. The necessary fields in this object still needs some further thought.
|
|
||
| ## Approach ## | ||
|
|
||
| The development approach focuses on adding a suite of native data center IT and cooling coil objects that integrate directly into the existing EnergyPlus plant loop architecture. By formatting the liquid cooling hardware as standard EnergyPlus coil objects, this approach leverages the robust, existing plant network solver, allowing users to model Coolant Distribution Units (CDUs) using standard HeatExchanger:FluidToFluid and pump objects. Figure 2 shows a schematic diagram of the added components and their relationships. |
There was a problem hiding this comment.
This field seems to be moving so fast with new approaches being applied almost yearly. Have you considered ways to "future-proof" this approach more? You know much more about this field than me but perhaps approaches to IT cooling that seem on the horizon should be thought about and see if these additions could support them.
There was a problem hiding this comment.
For the Coil:Cooling:ITE:* objects, currently there's just the Coil:Cooling:ITE:ColdPlate and Coil:Cooling:ITE:UserDefined, but we would like to implement things like Coil:Cooling:ITE: to handle future technology like immersion cooling.
|
@JasonGlazer thanks for the feedback. We're still iterating on this one, so I think you (and others) can hold off on reviewing for now. Edit: just converted to a draft. |
idd/Energy+.idd.in: new IDD object with all 18 alpha / 8 numeric fields from the NFP, placed after ElectricEquipment:ITE:AirCooled (fixed the Zone/Space Name field to use the real ZoneNames/SpaceNames reference groups rather than the NFP's placeholder). DataHeatBalance.hh: IntGainType::ElectricEquipmentITELiquidCooled, ITECoolingCoilType enum, LiquidITERptVars enum, ITEquipDataLiquidCooled struct (with a 4-slot ITELiquidCoolingCoilSpec array for the Cooling Coil references), matching ZoneReportVars fields for zone/space rollups, and the ZoneITELiquidCooled/TotITELiquidCooledEquip containers. InternalHeatGains.cc/.hh: GetInput parsing block (schedules, optional power modifier curve, coil slot parsing/validation), new CalcZoneITEqLiquidCooled calc function, wired into InitInternalHeatGains, and three-tier (object/zone/space) output variables in setupIHGOutputs. since Coil:Cooling:ITE:ColdPlate/UserDefined don't exist yet, the coil reference fields are fully parsed/validated but not simulated — Liquid Heat Gain = Total Heat Generation × Liquid Heat Capture Fraction with no capacity cap, and Air Heat Gain = Total Heat Generation − Liquid Heat Gain is registered as the zone's convective spillover gain.
InternalHeatGains_CheckZoneComponentLoadSubtotals fails: a guard test that specifically checks whether a newly added IntGainType was wired into all the hardcoded subtotal lists. Fixed by adding ElectricEquipmentITELiquidCooled alongside ElectricEquipmentITEAirCooled in four places: IntGainTypesEquip and TradIntGainTypes in InternalHeatGains.cc, and IntGainTypesOccupied in both UFADManager.cc and DisplacementVentMgr.hh (used by CrossVentMgr too) — so the new liquid-cooled air-spillover gain now participates correctly in zone component-load subtotals and UFAD/displacement/cross-ventilation room air models, same as the air-cooled object.
|
@yujiex it has been 28 days since this pull request was last updated. |
Pull request overview
Introduction
The data center industry is rapidly shifting toward higher adoption of liquid cooling technologies, often involving supply water temperatures between 80F and 120F. Currently, EnergyPlus lacks native support for water-cooled or liquid-cooled IT equipment. Users must rely on complex and inefficient workarounds combining the existing air-cooled IT equipment object with plant load profiles and Energy Management System (EMS) scripting. Previous modeling efforts, such as the MOSTCOOL project, had to rely on PlantComponent:UserDefined to link with external piping modules or use HeatExchanger:FluidToFluid to approximate a Coolant Distribution Unit (CDU). These workarounds are not robust, and relying on external modules defeats the goal of having a native, self-contained EnergyPlus solution. Furthermore, using simple load profiles like LoadProfile:Plant on the fluid side fails to generate an accurate electrical load for proper meter reporting and cannot dynamically monitor actual chip performance constraints. There is also no native capability to accurately model hybrid data centers that utilize a combination of liquid cooling for high-density chips and air cooling for the remaining components not on the liquid loop.
The proposal introduces three new IDD objects: ElectricEquipment:ITE:LiquidCooled (a parent object modeling transient rack power and passing thermal load downstream), Coil:Cooling:ITE:ColdPlate (a physics-based single-phase cold plate coil connecting directly to standard EnergyPlus plant loops), and Coil:Cooling:ITE:UserDefined (an EMS-driven hook for two-phase, RDHx, or immersion cooling research). Together these integrate liquid-cooled IT equipment into the existing plant network solver—enabling use of standard HeatExchanger:FluidToFluid and pump objects to represent Coolant Distribution Units—while dynamically splitting captured heat between the liquid loop and zone air based on cold plate thermal limits.
Pull Request Author
Reviewer