Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Revision history [back]

I'm having the same problem as you. Since you didn't provide the actual error, here it is (in this case, for 2004 - Houston):

** Severe  ** Problem found in EMS EnergyPlus Runtime Language.
**   ~~~   ** Erl program name: DATACENTER_MAIN
**   ~~~   ** Erl program line number: 12
**   ~~~   ** Erl program line text: SET DATACENTER_PREHEATDELTAT = HEATGAIN/(1.08*FLOWRATE)
**   ~~~   ** Error message:  *** Error: EvaluateExpression: Divide By Zero in EMS Program! *** 
**   ~~~   **  During Warmup, Environment=HOUSTON BUSH INTERCONTINENTAL ANN HTG 99.6% CONDNS DB, at Simulation time=01/21 00:00 - 00:15
**  Fatal  ** Previous EMS error caused program termination.
...Summary of Errors that led to program termination:
..... Reference severe error count=1
..... Last severe error=Problem found in EMS EnergyPlus Runtime Language.
** Warning ** There is no BYPASS component in the demand-side of PlantLoop =COOLSYS1
**   ~~~   ** You may be able to fix the fatal error above by adding a demand-side BYPASS PIPE.

I'm having the same problem as you. Since you didn't provide the actual error, here it is (in this case, for 2004 - Houston):

** Severe  ** Problem found in EMS EnergyPlus Runtime Language.
**   ~~~   ** Erl program name: DATACENTER_MAIN
**   ~~~   ** Erl program line number: 12
**   ~~~   ** Erl program line text: SET DATACENTER_PREHEATDELTAT = HEATGAIN/(1.08*FLOWRATE)
**   ~~~   ** Error message:  *** Error: EvaluateExpression: Divide By Zero in EMS Program! *** 
**   ~~~   **  During Warmup, Environment=HOUSTON BUSH INTERCONTINENTAL ANN HTG 99.6% CONDNS DB, at Simulation time=01/21 00:00 - 00:15
**  Fatal  ** Previous EMS error caused program termination.
...Summary of Errors that led to program termination:
..... Reference severe error count=1
..... Last severe error=Problem found in EMS EnergyPlus Runtime Language.
** Warning ** There is no BYPASS component in the demand-side of PlantLoop =COOLSYS1
**   ~~~   ** You may be able to fix the fatal error above by adding a demand-side BYPASS PIPE.

Quick Fix

But, if you want to fix it quickly without questions asked, replace the line (circa line 14735)

 IF T_OA < 10,,

With:

 IF T_OA < 10 && DataCenter_HeatC_Status >0,

I got this idea by looking at the 2013 vintage.

A discussion about this EMS program

The faulty EMS program is here:

EnergyManagementSystem:Program,
    DataCenter_Main,          !- Name
    IF DataCenter_Humidifier_Status > 0,   !- Program Line 1
    SET DataCenter_ExtraElecHeatC_Status = 1,   !- Program Line 2
    SET DataCenter_ExtraElecHeatC_SP = DataCenter_AfterHumidifier_Temp + 1.4,   !- <none>
    ELSE,                     !- <none>
    SET DataCenter_ExtraElecHeatC_Status = 0,   !- <none>
    SET DataCenter_ExtraElecHeatC_SP = NULL,   !- <none>
    ENDIF,                    !- <none>
    IF T_OA < 10,,                        !- <none>
    SET HeatGain = 0 * (DataCenter_FanDesignMass/1.2) *2118,  !- <none>
    SET FlowRate = (DataCenter_FanMassFlow/1.2)*2118,  !- <none>
    SET DataCenter_PreheatDeltaT = HeatGain/(1.08*FlowRate),  !- <none>
    SET DataCenter_ExtraWaterHeatC_Status = 1,  !- <none>
    SET DataCenter_ExtraWaterHeatC_SP = DataCenter_AfterElecHeatC_Temp + DataCenter_PreheatDeltaT,  !- <none>
    ELSE,                    !- <none>
    SET DataCenter_ExtraWaterHeatC_Status = 0,  !- <none>
    SET DataCenter_ExtraWaterHeatC_SP = NULL,  !- <none>
    ENDIF;                   !- <none>

The guilty line is the last of these three:

SET HeatGain = 0 * (DataCenter_FanDesignMass/1.2) *2118,  !- <none>
SET FlowRate = (DataCenter_FanMassFlow/1.2)*2118,
SET DataCenter_PreheatDeltaT = HeatGain/(1.08*FlowRate),  !- <none>

Here's the related sensor:

  EnergyManagementSystem:Sensor,
    DataCenter_FanMassFlow,  !- Name
    AirLoop DataCenter Basement Supply Fan Outlet,  !- Output:Variable or Output:Meter Index Key Name
    System Node Mass Flow Rate;  !- Output:Variable or Output:Meter Name

So when the mass flow rate of the fan is zero, you're in effect dividing by zero in the EMS program.

I think the biggest question is actually why HeatGain is in an expression that always evaluates to zero, which means DataCenter_PreheatDeltaT would always be zero regardless of the fan mass flow rate. Second question is why HeatGain is a calculated on the Fan Maximum Mass Flow Rate since it's based on this internal variable:

  EnergyManagementSystem:InternalVariable,
    DataCenter_FanDesignMass,!- Name
    DataCenter Basement Supply Fan,  !- Internal Data Index Key Name
    Fan Maximum Mass Flow Rate;  !- Internal Data Type

Long story short, I'd welcome input from people who created these files to explain this EMS program.