First time here? Check out the Help page!
1 | initial version |
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.
2 | No.2 Revision |
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.
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.
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.