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

Revision history [back]

click to hide/show revision 1
initial version

From OutputReportTabular.cc, totalWater = totalOnsiteWater + gatherMains + StorageChange;
where gatherMains = Water Supplied by Utility & totalWater = Total On Site, Change in Storage, and Utility Water Sources

Meters Water:Facility and MainsWater:Facility can be used to understand above results. Report variables on these meters can be found in meter details file (*.mtd) and can be included in idf (search for For Meter=Water:Facility and For Meter=MainsWater:Facility). For example, following output variables will also help in analyzing the results.

  Output:Variable,*,Water Use Equipment Total Volume,Hourly;
  Output:Variable,*,Water Use Equipment Mains Water Volume,hourly;
  Output:Variable,*,Water System Storage Tank Volume,Hourly;
  Output:Variable,*,Water System Storage Tank Mains Water Volume,hourly; !- HVAC Sum [m3]
  Output:Variable,*,Water System Rainwater Collector Volume,Hourly;
  Output:Variable,*,Water System Storage Tank Overflow Water Volume,Hourly;
  Output:Variable,*,Cooling Tower Storage Tank Water Volume,Hourly;
  Output:Variable,*,Cooling Tower Make Up Mains Water Volume,hourly; !- HVAC Sum [m3]
  Output:Variable,*,Water Heater Water Volume,hourly; !- HVAC Sum [m3]
  Output:Variable,*,Water Heater Mains Water Volume,hourly; !- HVAC Sum [m3]

  Output:Meter:MeterFileOnly,Water:Facility,runperiod;
  Output:Meter:MeterFileOnly,MainsWater:Facility,runperiod;

From OutputReportTabular.cc, totalWater = totalOnsiteWater + gatherMains + StorageChange;
where gatherMains = Water Supplied by Utility & totalWater = Total On Site, Change in Storage, and Utility Water Sources

Meters Water:Facility and MainsWater:Facility can be used to understand above results. Report variables on these meters can be found in meter details file (*.mtd) and can be included in idf (search for idf. Running the annual simulation gave the following Water Source Summary summary image description

From the .mtd file

 For Meter=Water:Facility and Meter=Water:Facility [m3], ResourceType=Water, contents are:
  WATER HEATER STRATIFIED:Water Heater Water Volume
  BASE BATH BASIN:Water Use Equipment Total Volume
  MAIN BATH BASIN 1:Water Use Equipment Total Volume
  PARENTS BATH BASIN 1:Water Use Equipment Total Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Total Volume
  KITCHEN BASIN:Water Use Equipment Total Volume
  MAIN BATH TOILET:Water Use Equipment Total Volume
  PARENTS BATH TOILET:Water Use Equipment Total Volume
  BASE TOILET:Water Use Equipment Total Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Total Volume
  BASE SHOWER:Water Use Equipment Total Volume
  MAIN BATH:Water Use Equipment Total Volume
  PARENT SHOWER:Water Use Equipment Total Volume
  CLOTH WASHER:Water Use Equipment Total Volume
  DISHWASHER:Water Use Equipment Total Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Total Volume
  IRRIGATION WATER:Water Use Equipment Total Volume

 For Meter=MainsWater:Facility).
For example, following output variables will also help in analyzing the results.

  Output:Variable,*,Water Use Equipment Total Volume,Hourly;
  Output:Variable,*,Water Use Equipment Mains Water Volume,hourly;
  Output:Variable,*,Water Meter=MainsWater:Facility [m3], ResourceType=MainsWater, contents are:
  WATER HEATER STRATIFIED:Water Heater Mains Water Volume
  RAINWATER TANK:Water System Storage Tank Volume,Hourly;
  Output:Variable,*,Water Mains Water Volume
  GRAYWATER TANK:Water System Storage Tank Mains Water Volume,hourly; !- HVAC Sum [m3]
  Output:Variable,*,Water System Volume
  BASE BATH BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH BASIN 1:Water Use Equipment Mains Water Volume
  PARENTS BATH BASIN 1:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Mains Water Volume
  KITCHEN BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH TOILET:Water Use Equipment Mains Water Volume
  PARENTS BATH TOILET:Water Use Equipment Mains Water Volume
  BASE TOILET:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Mains Water Volume
  BASE SHOWER:Water Use Equipment Mains Water Volume
  MAIN BATH:Water Use Equipment Mains Water Volume
  PARENT SHOWER:Water Use Equipment Mains Water Volume
  CLOTH WASHER:Water Use Equipment Mains Water Volume
  DISHWASHER:Water Use Equipment Mains Water Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Mains Water Volume
  IRRIGATION WATER:Water Use Equipment Mains Water Volume

So reporting above output variables for runperiod gives the following results image description

So the difference between end use and mains water is entirely due to Rainwater Collector Volume,Hourly; Output:Variable,*,Water System Storage Tank Overflow Water Volume,Hourly; Output:Variable,*,Cooling Tower Storage Tank Water Volume,Hourly; Output:Variable,*,Cooling Tower Make Up Mains Water Volume,hourly; !- HVAC Sum [m3] Output:Variable,*,Water Heater Water Volume,hourly; !- HVAC Sum [m3] Output:Variable,*,Water Heater Mains Water Volume,hourly; !- HVAC Sum [m3] Output:Meter:MeterFileOnly,Water:Facility,runperiod; Output:Meter:MeterFileOnly,MainsWater:Facility,runperiod;

and Graywater tanks. Both these tanks use Mains to respond to fill requests made by float valve.

From OutputReportTabular.cc, totalWater = totalOnsiteWater + gatherMains + StorageChange;
where gatherMains = Water Supplied by Utility & totalWater = Total On Site, Change in Storage, and Utility Water Sources

Meters Water:Facility and MainsWater:Facility can be used to understand above results. Report variables on these meters can be found in meter details file (*.mtd) and can be included in idf. Running the annual simulation gave the following Water Source Summary summary image description

From the .mtd file

 For Meter=Water:Facility [m3], ResourceType=Water, contents are:
  WATER HEATER STRATIFIED:Water Heater Water Volume
  BASE BATH BASIN:Water Use Equipment Total Volume
  MAIN BATH BASIN 1:Water Use Equipment Total Volume
  PARENTS BATH BASIN 1:Water Use Equipment Total Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Total Volume
  KITCHEN BASIN:Water Use Equipment Total Volume
  MAIN BATH TOILET:Water Use Equipment Total Volume
  PARENTS BATH TOILET:Water Use Equipment Total Volume
  BASE TOILET:Water Use Equipment Total Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Total Volume
  BASE SHOWER:Water Use Equipment Total Volume
  MAIN BATH:Water Use Equipment Total Volume
  PARENT SHOWER:Water Use Equipment Total Volume
  CLOTH WASHER:Water Use Equipment Total Volume
  DISHWASHER:Water Use Equipment Total Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Total Volume
  IRRIGATION WATER:Water Use Equipment Total Volume

 For Meter=MainsWater:Facility [m3], ResourceType=MainsWater, contents are:
  WATER HEATER STRATIFIED:Water Heater Mains Water Volume
  RAINWATER TANK:Water System Storage Tank Mains Water Volume
  GRAYWATER TANK:Water System Storage Tank Mains Water Volume
  BASE BATH BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH BASIN 1:Water Use Equipment Mains Water Volume
  PARENTS BATH BASIN 1:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Mains Water Volume
  KITCHEN BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH TOILET:Water Use Equipment Mains Water Volume
  PARENTS BATH TOILET:Water Use Equipment Mains Water Volume
  BASE TOILET:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Mains Water Volume
  BASE SHOWER:Water Use Equipment Mains Water Volume
  MAIN BATH:Water Use Equipment Mains Water Volume
  PARENT SHOWER:Water Use Equipment Mains Water Volume
  CLOTH WASHER:Water Use Equipment Mains Water Volume
  DISHWASHER:Water Use Equipment Mains Water Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Mains Water Volume
  IRRIGATION WATER:Water Use Equipment Mains Water Volume

So reporting above output variables for runperiod gives the following results image description

So the difference between end use and mains water is entirely due to Rainwater and Graywater tanks. Both these tanks use Mains to respond to fill requests made by float valve.valve. If Type of Supply Controlled by Float Valve is set to None, then Total Water End Uses will be identical to Water Supplied by Utility.

Irrigation Water, though supplied by Rainwater Tank is showing identical Water Use Equipment Total Volume and Water Use Equipment Mains Water Volume. From WaterUse.cc

SetupOutputVariable( "Water Use Equipment Total Volume [m3]", WaterEquipment( WaterEquipNum ).TotalVolume, "System", "Sum", WaterEquipment( WaterEquipNum ).Name, _, "Water", "WATERSYSTEMS", WaterEquipment( WaterEquipNum ).EndUseSubcatName, "Plant" );

SetupOutputVariable( "Water Use Equipment Mains Water Volume [m3]", WaterEquipment( WaterEquipNum ).TotalVolume, "System", "Sum", WaterEquipment( WaterEquipNum ).Name, _, "MainsWater", "WATERSYSTEMS", WaterEquipment( WaterEquipNum ).EndUseSubcatName, "Plant" );

As can be seen from above, same output variable WaterEquipment( WaterEquipNum ).TotalVolume is used for both the meters.

Looking further into WaterUse.cc, the current code is

if ( WaterConnections( WaterConnNum ).SupplyTankNum > 0 ) {
// Set the demand request for supply water from water storage tank
WaterConnections( WaterConnNum ).ColdVolFlowRate = WaterConnections( WaterConnNum ).ColdMassFlowRate / RhoH2O( DataGlobals::InitConvTemp );
WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotRequestDemand( WaterConnections( WaterConnNum ).TankDemandID ) = WaterConnections( WaterConnNum ).ColdVolFlowRate;

// Check if cold flow rate should be starved by restricted flow from tank
// Currently, the tank flow is not really starved--water continues to flow at the tank water temperature
// But the user can see the error by comparing report variables for TankVolFlowRate < ColdVolFlowRate

WaterConnections( WaterConnNum ).TankVolFlowRate = WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotAvailDemand( WaterConnections( WaterConnNum ).TankDemandID );
WaterConnections( WaterConnNum ).TankMassFlowRate = WaterConnections( WaterConnNum ).TankVolFlowRate * RhoH2O( DataGlobals::InitConvTemp );
}

Perhaps a proposed solution could be as follows

RequestDemandVdot = 0.0;
StarvedVdot = 0.0;
TankSupplyVdot = 0.0;
AvailTankVdot = 0.0;
if ( WaterConnections( WaterConnNum ).SupplyTankNum > 0 ) {

// Set the demand request for supply water from water storage tank

WaterConnections( WaterConnNum ).ColdVolFlowRate = WaterConnections( WaterConnNum ).ColdMassFlowRate / RhoH2O( DataGlobals::InitConvTemp );
WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotRequestDemand( WaterConnections( WaterConnNum ).TankDemandID ) = WaterConnections( WaterConnNum ).ColdVolFlowRate;
RequestDemandVdot = WaterConnections( WaterConnNum ).ColdVolFlowRate;

// Check if cold flow rate should be starved by restricted flow from tank

AvailTankVdot = WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotAvailDemand( WaterConnections( WaterConnNum ).TankDemandID );

TankSupplyVdot = RequestDemandVdot; // init
if ( AvailTankVdot < RequestDemandVdot ) { // calculate starved flow
    StarvedVdot = RequestDemandVdot - AvailTankVdot;
    TankSupplyVdot = AvailTankVdot;
}
}
WaterConnections( WaterConnNum ).TankVolFlowRate = TankSupplyVdot;
WaterConnections( WaterConnNum ).TankMassFlowRate = TankSupplyVdot * RhoH2O( DataGlobals::InitConvTemp );

And then StarvedVdot should be reported for MainsWater meter.

From OutputReportTabular.cc, totalWater = totalOnsiteWater + gatherMains + StorageChange;
where gatherMains = Water Supplied by Utility & totalWater = Total On Site, Change in Storage, and Utility Water Sources

Meters Water:Facility and MainsWater:Facility can be used to understand above results. Report variables on these meters can be found in meter details file (*.mtd) and can be included in idf. Running the annual simulation gave the following Water Source Summary summary image description

From the .mtd file

 For Meter=Water:Facility [m3], ResourceType=Water, contents are:
  WATER HEATER STRATIFIED:Water Heater Water Volume
  BASE BATH BASIN:Water Use Equipment Total Volume
  MAIN BATH BASIN 1:Water Use Equipment Total Volume
  PARENTS BATH BASIN 1:Water Use Equipment Total Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Total Volume
  KITCHEN BASIN:Water Use Equipment Total Volume
  MAIN BATH TOILET:Water Use Equipment Total Volume
  PARENTS BATH TOILET:Water Use Equipment Total Volume
  BASE TOILET:Water Use Equipment Total Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Total Volume
  BASE SHOWER:Water Use Equipment Total Volume
  MAIN BATH:Water Use Equipment Total Volume
  PARENT SHOWER:Water Use Equipment Total Volume
  CLOTH WASHER:Water Use Equipment Total Volume
  DISHWASHER:Water Use Equipment Total Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Total Volume
  IRRIGATION WATER:Water Use Equipment Total Volume

 For Meter=MainsWater:Facility [m3], ResourceType=MainsWater, contents are:
  WATER HEATER STRATIFIED:Water Heater Mains Water Volume
  RAINWATER TANK:Water System Storage Tank Mains Water Volume
  GRAYWATER TANK:Water System Storage Tank Mains Water Volume
  BASE BATH BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH BASIN 1:Water Use Equipment Mains Water Volume
  PARENTS BATH BASIN 1:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM BASIN:Water Use Equipment Mains Water Volume
  KITCHEN BASIN:Water Use Equipment Mains Water Volume
  MAIN BATH TOILET:Water Use Equipment Mains Water Volume
  PARENTS BATH TOILET:Water Use Equipment Mains Water Volume
  BASE TOILET:Water Use Equipment Mains Water Volume
  ENTRANCE RESTROOM TOILET:Water Use Equipment Mains Water Volume
  BASE SHOWER:Water Use Equipment Mains Water Volume
  MAIN BATH:Water Use Equipment Mains Water Volume
  PARENT SHOWER:Water Use Equipment Mains Water Volume
  CLOTH WASHER:Water Use Equipment Mains Water Volume
  DISHWASHER:Water Use Equipment Mains Water Volume
  OUTSIDE UTILITY WATER:Water Use Equipment Mains Water Volume
  IRRIGATION WATER:Water Use Equipment Mains Water Volume

So reporting above Reporting output variables from .mtd files for eters Water:Facility and MainsWater:Facility for runperiod gives the following results image description

So the difference between end use and mains water is entirely due to Rainwater and Graywater tanks. Both these tanks use Mains to respond to fill requests made by float valve. If Type of Supply Controlled by Float Valve is set to None, then Total Water End Uses will be identical to Water Supplied by Utility.

Irrigation Water, though supplied by Rainwater Tank is showing identical Water Use Equipment Total Volume and Water Use Equipment Mains Water Volume. From WaterUse.cc

SetupOutputVariable( "Water Use Equipment Total Volume [m3]", WaterEquipment( WaterEquipNum ).TotalVolume, "System", "Sum", WaterEquipment( WaterEquipNum ).Name, _, "Water", "WATERSYSTEMS", WaterEquipment( WaterEquipNum ).EndUseSubcatName, "Plant" );

SetupOutputVariable( "Water Use Equipment Mains Water Volume [m3]", WaterEquipment( WaterEquipNum ).TotalVolume, "System", "Sum", WaterEquipment( WaterEquipNum ).Name, _, "MainsWater", "WATERSYSTEMS", WaterEquipment( WaterEquipNum ).EndUseSubcatName, "Plant" );

As can be seen from above, same output variable WaterEquipment( WaterEquipNum ).TotalVolume is used for both the meters.

Looking further into WaterUse.cc, the current code is

if ( WaterConnections( WaterConnNum ).SupplyTankNum > 0 ) {
// Set the demand request for supply water from water storage tank
WaterConnections( WaterConnNum ).ColdVolFlowRate = WaterConnections( WaterConnNum ).ColdMassFlowRate / RhoH2O( DataGlobals::InitConvTemp );
WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotRequestDemand( WaterConnections( WaterConnNum ).TankDemandID ) = WaterConnections( WaterConnNum ).ColdVolFlowRate;

// Check if cold flow rate should be starved by restricted flow from tank
// Currently, the tank flow is not really starved--water continues to flow at the tank water temperature
// But the user can see the error by comparing report variables for TankVolFlowRate < ColdVolFlowRate

WaterConnections( WaterConnNum ).TankVolFlowRate = WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotAvailDemand( WaterConnections( WaterConnNum ).TankDemandID );
WaterConnections( WaterConnNum ).TankMassFlowRate = WaterConnections( WaterConnNum ).TankVolFlowRate * RhoH2O( DataGlobals::InitConvTemp );
}

Perhaps a proposed solution could be to calculate starved flow rate and use that for mains water flow rate as followsshown below.

RequestDemandVdot = 0.0;
StarvedVdot = 0.0;
TankSupplyVdot = 0.0;
AvailTankVdot = 0.0;
if ( WaterConnections( WaterConnNum ).SupplyTankNum > 0 ) {

// Set the demand request for supply water from water storage tank

WaterConnections( WaterConnNum ).ColdVolFlowRate = WaterConnections( WaterConnNum ).ColdMassFlowRate / RhoH2O( DataGlobals::InitConvTemp );
WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotRequestDemand( WaterConnections( WaterConnNum ).TankDemandID ) = WaterConnections( WaterConnNum ).ColdVolFlowRate;
RequestDemandVdot = WaterConnections( WaterConnNum ).ColdVolFlowRate;

// Check if cold flow rate should be starved by restricted flow from tank

AvailTankVdot = WaterStorage( WaterConnections( WaterConnNum ).SupplyTankNum ).VdotAvailDemand( WaterConnections( WaterConnNum ).TankDemandID );

TankSupplyVdot = RequestDemandVdot; // init
if ( AvailTankVdot < RequestDemandVdot ) { // calculate starved flow
    StarvedVdot = RequestDemandVdot - AvailTankVdot;
    TankSupplyVdot = AvailTankVdot;
}
}
WaterConnections( WaterConnNum ).TankVolFlowRate = TankSupplyVdot;
WaterConnections( WaterConnNum ).TankMassFlowRate = TankSupplyVdot * RhoH2O( DataGlobals::InitConvTemp );

And then StarvedVdot should be reported for MainsWater meter.