Revision history  [back]

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Inlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,     !- Name
  RainWaterPump,                        !- Actuated Component Unique Name
  Exterior:Lights,                      ! Actuated Component Type
  Electric Power;                       ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
  RainWaterTank,                       !- Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Inlet Volume Flow Rate; !- Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Model_RainWaterPump_CallingManager,                         !- Name
  AfterPredictorAfterHVACManagers ,       !- EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Inlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,     !- Name
  RainWaterPump,                        !- Actuated Component Unique Name
  Exterior:Lights,                      ! Actuated Component Type
  Electric Power;                       ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
  RainWaterTank,                       !- Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Inlet Volume Flow Rate; !- Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Model_RainWaterPump_CallingManager, Initialize EMS for Run ,                         !- Name
  AfterPredictorAfterHVACManagers ,       !- EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Inlet Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,     !- Name
  RainWaterPump,                        !- Actuated Component Unique Name
  Exterior:Lights,                      ! Actuated Component Type
  Electric Power;                       ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
  RainWaterTank,                       !- Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Inlet Outlet Volume Flow Rate; !- Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Initialize EMS for Run ,                         !- Name
  AfterPredictorAfterHVACManagers ,       !- EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,     !- Name
  RainWaterPump,                         !- Actuated Component Unique Name
  Exterior:Lights,                       ! Actuated Component Type
  Electric Power;                        ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
  RainWaterTank,                       !- Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Outlet Volume Flow Rate; !- Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Initialize EMS for Run ,                         !- Name
  AfterPredictorAfterHVACManagers ,       !- EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,     !- Name
  RainWaterPump,                                    !- Actuated Component Unique Name
  Exterior:Lights,                                       ! Actuated Component Type
  Electric Power;                                       ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
  RainWaterTank,                        !- Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Outlet Volume Flow Rate; !- Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Initialize EMS for Run ,                         !- Name
  AfterPredictorAfterHVACManagers ,       !- EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,      !- Name
  RainWaterPump,                                     !- Actuated Component Unique Name
  Exterior:Lights,                                       ! Actuated Component Type
  Electric Power;                                        ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !- Name
!Name
  RainWaterTank,                                     !- ! Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Outlet Volume Flow Rate; !- ! Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Initialize EMS for Run ,                         !- ! Name
  AfterPredictorAfterHVACManagers ,       !- ! EnergyPlus Model Calling Point
  Model_RainWaterPump;                        !- ! Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316[1] . Set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.


Here's a completely untested, written on the fly and manually (problems/typos expected), EMS snippet. I think the calling point should be about right, but you may have to change it.

Exterior:Lights,
  RainWaterPump,
  [...],
  Rain Water Pump; !- End Use Subcategory


EnergyManagementSystem:Actuator,
  RainWaterPump_ElecPower_Override,                             !- Name
  RainWaterPump,                                                   !- Actuated Component Unique Name
  Exterior:Lights,                                       ! Actuated Component Type
  Electric Power;                                             ! Actuated Component Control Type

WaterUse:Storage,
   RainWaterTank, !- Name
   [....]

EnergyManagementSystem:Sensor,
  RainWaterTank_OutletFlowRate_Sensor, !Name
  RainWaterTank, ! Output:Variable or Output:Meter Index Key Name
  Water System Storage Tank Outlet Volume Flow Rate; ! Output:Variable or Output:Meter Name

EnergyManagementSystem:ProgramCallingManager,
  Initialize EMS for Run , ! Name
  AfterPredictorAfterHVACManagers ,       ! EnergyPlus Model Calling Point
  Model_RainWaterPump;                 ! Program Name 1

EnergyManagementSystem:Program,
  Model_RainWaterPump ,         ! Name
  IF RainWaterTank_OutletFlowRate_Sensor > 0,
    ! ### IMPLEMENT PUMP POWER CALC HERE, assuming 30 ft of head and 0.5 total pump eff ###
    SET RainWaterPump_ElecPower_Override =  RainWaterTank_OutletFlowRate_Sensor * 89,672 / 0.5,
  ! This IF/ELSE statement is useless here (if flow is zero, power is zero), but I wanted to show the syntax
  ELSE,
     SET RainWaterPump_ElecPower_Override = 0.0,
  ENDIF;

You should be able to use EnergyManagementSystem to do this:

  • Create an exterior equipment. I think you'll need to use Exterior:Lights here, because it has an actuator called "Electric Power", Try with Exterior:FuelEquipment doesn't look it has one. See source: ExteriorEnergyUse.cc#L316, request the EMS actuator dictionary (see here[1] . Set ), check if there is indeed an actuator for this object. Worst case, I am 100% certain there is an Actuator for "Exterior:Lights" called "Electric Power" (set the Exterior:Lights End-Use Subcategory to "Water Pump" or whatever you want in order to have the right reporting in your eplustbl.htm.

    eplustbl.htm)
  • Add an EMS Sensor for your flow rate, probably capturing the WaterUse:Storage's output variable Water System Storage Tank Outlet Volume Flow Rate [m3/s] (ref here)

  • Declare an EMS Actuator for your chosen Exterior equipment's Electric Power.
  • Write an EMS program that will compute the power used by the pump based on the flow rate given by the EMS Sensor.

Debug, look at outputs.

I hope it helps.

[1] You could make sure: try with Exterior:FuelEquipment, request the EMS actuator dictionary (see here), check if there is indeed an actuator for this object or not.