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

Water Source Summary anomaly

asked 2017-10-18 13:48:14 -0600

Avi's avatar

updated 2020-01-27 18:45:34 -0600

I was using an E+ measure I wrote to add Rainwater collection to the model. The outcome of the simulation regarding the water use was opposite to what I had expected; Water Supplied by Utility was increased by the amount of rainwater collected through the simulated year minus the Change in Storage volume. The water source summary was as follows: image description

I was making sure that no overflow occurred during simulation period. Am I missing something?

edit retag flag offensive close merge delete

Comments

If someone could direct me to the code lines where it is calculated (I suppose it is E+ code) it would be a great help.

Avi's avatar Avi  ( 2017-10-19 23:51:28 -0600 )edit

2 Answers

Sort by ยป oldest newest most voted
3

answered 2017-10-20 06:56:53 -0600

Chandan Sharma's avatar

updated 2017-10-23 22:17:53 -0600

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

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 shown 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.

edit flag offensive delete link more

Comments

I was opening an E+ issue as I think that the formula used to calculate gatherMains is wrong.

Avi's avatar Avi  ( 2017-10-21 07:30:07 -0600 )edit

Searching for keyword Mains Water Volume and Mains Supply Water Volume, in InputOutput Reference will show other report variables which are included in gatherMains besides Water Use Equipment Mains Water Volume. That is why reporting outputs from *.mtd file as mentioned above would tell exactly what is causing the difference. If you can send the idf or attach it here, I would be happy to take a look.

Chandan Sharma's avatar Chandan Sharma  ( 2017-10-22 01:54:22 -0600 )edit

To my opinion the table you provided proves my point; end uses water is 260.82, change in storage tanks is -2.4 so water supplied by utility should be less than 256.42 (much less, since greywater reclaimed from showers and baths are used for toilet flush and some rain water is used for irrigation). Am I confusing the meaning of water supplied by utility? Shouldn't that be the amount of water supplied by outside sources?

Avi's avatar Avi  ( 2017-10-22 05:00:21 -0600 )edit
2

answered 2017-10-23 10:11:51 -0600

Avi's avatar

OK, For some reason water coming out of the Storage tank are counted as Mains water no mater what their true source was. Attached is simulation output showing that: image description

edit flag offensive delete link more

Comments

I see that you have already filed a related issue. Not sure if this should be rolled into the same or is a separate issue.

__AmirRoth__'s avatar __AmirRoth__  ( 2017-10-23 10:16:19 -0600 )edit

I think that the above describes the root cause of the same issue

Avi's avatar Avi  ( 2017-10-23 10:41:16 -0600 )edit

Tried to add some more information as to what I think is happening. StarvedVDot calculation is missing in the WaterUse.cc (and maybe intentionally so for some reason). Same report variable is used for both end use as well as mains water meters reporting. What the above plot shows is also shown in the table above.

Chandan Sharma's avatar Chandan Sharma  ( 2017-10-23 13:03:51 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops

Careers

Question Tools

1 follower

Stats

Asked: 2017-10-18 13:48:14 -0600

Seen: 934 times

Last updated: Oct 23 '17