First time here? Check out the Help page!
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;
2 | No.2 Revision |
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
From the .mtd file
and Graywater tanks. Both these tanks useFor
andMeter=Water:FacilityMeter=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
). For example, following output variables will also help in analyzing the results.Meter=MainsWater:FacilityOutput: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,*,WaterMains Water Volume GRAYWATER TANK:Water System Storage Tank Mains WaterVolume,hourly; !- HVAC Sum [m3] Output:Variable,*,Water SystemVolume 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 VolumeSo reporting above output variables for runperiod gives the following results
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;
Mains
to respond to fill requests made by float valve. 3 | No.3 Revision |
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
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
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.
4 | No.4 Revision |
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
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
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.