Navigation Menu

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include fan heat when sizing zone cooling coils and adjust airloop coil inlet/outlet conditions #6753

Merged

Conversation

rraustad
Copy link
Contributor

@rraustad rraustad commented May 18, 2018

Pull request overview

Overview: Include fan heat when sizing zone cooling coils.
Description: Zone equipment that include use of a cooling coil have sized that equipment using only the zone load. This update includes design fan heat in the cooling coil sizing algorithms. For all coil types the design coil load now includes the zone load plus a term for design fan heat. For water coils, the additional fan heat increases the required water flow rate and the coil inlet air temperature (for blow-thru fans) or decreases the outlet air temperature (for draw-thru fans) used during sizing. Although system cooling coils, those cooling coils in air loops that reside directly on the main branch, have previously included fan heat, this update also adjusts the coil air inlet/outlet temperature (same as implemented with this update for zone coils). Heating coils are not affected by this change and do not currently include fan heat or an adjustment to coil entering or exiting air condition in the sizing algorithms.

Equipment modified by this change include:

  • Packaged Terminal Unit
  • Window AC
  • Fan Coil Unit
  • VRF Terminal Unit
  • Outdoor Air Unit
  • Unit Heater (in case fan heat is ever used to adjust heating coils)
  • Unit Ventilator
  • Ventilated Slab
  • Coil:Cooling:WaterToAirHeatPump:EquationFit (doesn't call RequestSizing)
  • Coil:Cooling:DX:VariableSpeed (doesn't call RequestSizing)
  • Coil:Cooling:DX:VariableSpeedEquationFit (doesn't call RequestSizing)
  • HVACMultispeedHeatPump
  • HVACUnitaryBypassVAV

Equipment not modified

  • AirTerminal:SingleDuct:ConstantVolume:FourPipeInduction (no local fan object)
  • AirTerminal:SingleDuct:ConstantVolume:FourPipeBeam (no local fan object)
  • AirTerminal:SingleDuct:ConstantVolume:CooledBeam (no local fan object)
  • AirTerminal:SingleDuct:ParallelPIU:Reheat (no fan type field, heating only)
  • AirTerminal:SingleDuct:SeriesPIU:Reheat (no fan type field, heating only)

Work Checklist

  • Initial NFP
  • Final NFP
  • Design Doc
  • Code and Unit Tests
  • Documentation Initial Draft
    • Design fan heat
    • Design fan temperature rise
  • Coil component sizing
    • Coil:Cooling:Water
    • Coil:Cooling:WaterToAirHeatPump:EquationFit
    • Coil:Cooling:WaterToAirHeatPump:VariableSpeedEquationFit
    • Coil:Cooling:DX:SingleSpeed and TwoSpeed
    • Coil:Cooling:DX:VariableSpeed
  • Documentation Final

Add to this list or remove from it as applicable. This is a simple templated set of guidelines.

  • Title of PR should be user-synopsis style (clearly understandable in a standalone changelog context)
  • At least one of the following appropriate labels must be added to this PR to be consumed into the changelog:
    • Defect: This pull request repairs a github defect issue. The github issue should be referenced in the PR description
    • Refactoring: This pull request includes code changes that don't change the functionality of the program, just perform refactoring
    • NewFeature: This pull request includes code to add a new feature to EnergyPlus
    • Performance: This pull request includes code changes that are directed at improving the runtime performance of EnergyPlus
    • DoNoPublish: This pull request includes changes that shouldn't be included in the changelog

Review Checklist

This will not be exhaustively relevant to every PR.

  • Code style (parentheses padding, variable names)
  • Functional code review (it has to work!)
  • If defect, results of running current develop vs this branch should exhibit the fix
  • CI status: all green or justified
  • Performance: CI Linux results include performance check -- verify this
  • Unit Test(s)
  • C++ checks:
    • Argument types
    • If any virtual classes, ensure virtual destructor included, other things
  • IDD changes n/a
  • Documentation changes in place
  • Changed docs build successfully

@rraustad rraustad changed the title Apply example method for adding fan heat in sizing PTUnit New Feature - Include fan heat when sizing zone cooling coils May 18, 2018
@rraustad
Copy link
Contributor Author

@Myoldmopar these results concern me since this change should have shown diff's for the i386-Windows-7-VisualStudio-14 build. I'm seeing the same thing (intermittently) on the FSEC CI. Any ideas?

@mjwitte
Copy link
Contributor

mjwitte commented May 21, 2018

@rraustad I haven't trusted diffs on the Win platforms for a long time. I frequently see no diffs from Win when the other platforms show diffs. I don't think it's building the correct baseline branch, but I can't prove that. I focus on the diffs from Mac and Linux and only address failures on Win.

@rraustad
Copy link
Contributor Author

There is a section in CI.rb that tests for a build folder and skips the regression tests if that folder exists. My guess is that the build folders on i386 Win are not getting completely deleted.

at line 337:

              if !File.directory?(regression_base.get_build_dir(compiler))
                $logger.info "Beginning regression baseline (#{regression_base.descriptive_string}) build for #{compiler} #{p.descriptive_string}"
                regression_base.do_build compiler, nil
                regression_base.do_test compiler, nil
              else
                $logger.info "Skipping already completed regression baseline (#{regression_base.descriptive_string}) build for #{compiler} #{p.descriptive_string}"
              end

@Myoldmopar
Copy link
Member

You might be onto something big time @rraustad.... That code right there does a couple things:

  • Gets the build directory for a specific compiler. That's going to result in a path like <clone_folder>/build, where clone_folder has the platform and architecture and SHA or tag in it, so it should be unique across the dimensions we need it to be unique
  • If that build folder already exists, then presumably we have already built that unique configuration and we don't have to rebuild it; time saved! If it doesn't exist, we build that configuration so that we can do regressions.

I do know we have had trouble deleting some folders in the past because the operating system thought a process was still holding onto a random file deep in the build folder. If that's the case, then this code will fallthrough and the build folder will be there so the code won't rebuild. Then when regressions run, the base folder won't be there, so the regressions won't show up as failures. This could explain how @mjwitte doesn't see diffs on Windows when he expects to see them.

Unfortunately, @lefticus has tried really hard to delete the build folders using a variety of methods. If you recall, we used to have trouble with the CI machine hard drives filling up because the old builds wouldn't get deleted. I believe he exhausted his known options the last time we had to deal with this issue, but maybe there's something new we can try.

I'll add this to my list of things to look into, and in the meantime keep looking to the Linux and Mac boxes for diffs, and we'll rely on Windows for unit and integration test failures, and Windows-only build issues.

(How acceptable would it be to just disable regressions on Windows...? If we can rely on diffs being reported by Linux and Mac, it would drastically speed up the Windows CI runs to not have to build a wasted baseline.)

@mjwitte
Copy link
Contributor

mjwitte commented May 23, 2018

No regressions on Windows? Short-term, sure, but long-term should work to reliably restore them, even if we always build regardless of an existing build folder. But even then, would we still have trouble with possibly locked files?

@rraustad rraustad added the NewFeature Includes code to add a new feature to EnergyPlus label May 25, 2018
@rraustad
Copy link
Contributor Author

After some edits in the scripts, we are getting identical answers between i386 and Win64, as it should be.

fsec_ci_results

@Myoldmopar
Copy link
Member

Myoldmopar commented May 27, 2018 via email

@rraustad
Copy link
Contributor Author

Well I may have simplified the answer. Our IT has been looking into how to reliably delete the build folders and the answer may be outside the scripts so a PR wouldn't be possible. I'll let you know what I find.

@Myoldmopar
Copy link
Member

Thanks for letting me know anything you do find @rraustad; I'm excited to see the build folders get reliably deleted.

As for this feature, I was thinking I'd just comment on the NFP here? I didn't see a separate conversation, so my apologies if some of these have already been discussed.

  • First, the NFP is provided to the team over in the dev support repo, but that's private, so unless you have a reason to keep it private, please drop it into the design folder right here in this public repo, on this branch. Then the NFP/design can live and evolve alongside the code (and docs, idd, tests, etc.).
  • As for keeping a different variable for the fan index based on fan type, this is indeed because of the disjointed index nature of the fans, helping to ensure that developers are more cautious and it makes it more difficult to grab the wrong index. I think the idea is that as the older fan models are refactored, they will become a part of the vector and the IF blocks and multiple variables will fall away.
  • As for as the implementation you laid out, it looks reasonable to me.

OutAirUnit(OAUnitNum).EFanMaxAirVolFlow = HVACFan::fanObjs[OutAirUnit(OAUnitNum).SFan_Index]->designAirVolFlowRate;
OutAirUnit(OAUnitNum).ExtFanAvailSchedPtr = HVACFan::fanObjs[OutAirUnit(OAUnitNum).SFan_Index]->availSchedIndex;
OutAirUnit(OAUnitNum).EFanMaxAirVolFlow = HVACFan::fanObjs[OutAirUnit(OAUnitNum).ExtFan_Index]->designAirVolFlowRate;
OutAirUnit(OAUnitNum).ExtFanAvailSchedPtr = HVACFan::fanObjs[OutAirUnit(OAUnitNum).ExtFan_Index]->availSchedIndex;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed typo in exhaust fan.

@rraustad
Copy link
Contributor Author

rraustad commented Jun 8, 2018

Adding documentation to Engineering Reference. The fan heat calculations are in section Loop, Equipment Sizing and other Design Data, right after Fan Sizing is a new section for Design Fan Heat.

designfanheat_componentsizing

Then in the coil objects, a term for design fan heat is added to the design coil load calculation and the fan heat section is referenced in the equation variable description (i.e., see Section 10.7.3).

\item
  \(\dot{Q}_{fan,heat,des}\) : is the design fan heat (W) - see Section \ref{design-fan-heat}

watercoilcapacity_systemcoil_componentsizing

@@ -968,8 +1019,10 @@ \subsubsection{System Coils}\label{system-coils-5}

\emph{CapModFac} = \emph{CurveValue}(CCapFTemp,\emph{T\(_{mix,wb}\)},\emph{T\(_{outside}\)})

\emph{Q\(_{fan,heat,des}\)} = design fan heat (W) - see Section \ref{design-fan-heat}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How do I get the \dot{Q} inside the \emph{}. I tried a few different ways and nothing worked.

\frac{\dot{m}_{air,des}\PB{48000 -H_{out}}}{TotCapTempModFac} & otherwise
\end{array}
\right.
\dot{Q}_{coil,des,total} = \frac{\dot{m}_{air,des}\PB{H_{in}-H_{out}}}{TotCapTempModFac} + \dot{Q}_{fan,heat,des}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Coil:Cooling:WaterToAirHeatPump:EquationFit model doesn't check for Hin>Hout, the variable speed model does. So I corrected the doc. I could have corrected the code but I never did like that test. If Hin<Hout then there should be 0 capacity.

@rraustad
Copy link
Contributor Author

rraustad commented Jun 9, 2018

I don't see anything unexpected in the CI diff's. Coil sizes are a little larger and associated coil properties (e.g., water coil UA and DX coil SHR) are adjusted accordingly.

@rraustad
Copy link
Contributor Author

rraustad commented Jun 9, 2018

@Myoldmopar I'll need some help with the warning. I didn't change that?

  | location | message -- | -- | -- warning | src/EnergyPlus/DataAirSystems.hh:404:44 | unused variable EnergyPlus::DataAirSystems::PrimaryAirSystem' [-Wunused-variable]

@Myoldmopar
Copy link
Member

The full error message is several lines long, so the CI parser doesn't grab the whole thing. Here's what I see when I compile locally:

In file included from /6eplus/src/EnergyPlus/HVACVariableRefrigerantFlow.cc:64:0:
/6eplus/src/EnergyPlus/DataAirSystems.hh: In function ‘void EnergyPlus::HVACVariableRefrigerantFlow::SizeVRF(int)’:
/6eplus/src/EnergyPlus/DataAirSystems.hh:404:44: warning: unused variable ‘EnergyPlus::DataAirSystems::PrimaryAirSystem’ [-Wunused-variable]
     extern Array1D<DefinePrimaryAirSystem> PrimaryAirSystem;

This tells me that in the SizeVRF function, you now have a using statement for PrimaryAirSystem that isn't actually being used anymore. I took out the problematic line and it looks to be building fine without it just fine so I'll push the code back up now.

@rraustad
Copy link
Contributor Author

I am looking at the results of water coil sizing. I was bothered about the first water coil I looked at where the reported coil capacity increased by only 1 W. The fan heat is getting added to the coil capacity calculation. for example file 5ZoneFanCoilDOASCool fan heat is on the order of 17 W. This additional load does translate directly to an increase in water flow rate of 6E-7 m3/s.

MaxColdWaterVolFlowDes = DesCoilLoad / (WaterCoilSizDeltaT * Cp * rho);
where 17 W / (6.67 * 4198 * 999.9 ) = 6E-7

- Component Sizing Information, ZoneHVAC:FourPipeFanCoil, SPACE1-1 FAN COIL, Design Size Maximum Cold Water Flow [m3/s], 9.66956E-005
- Component Sizing Information, Coil:Cooling:Water, SPACE1-1 COOLING COIL, Design Size Design Water Flow Rate [m3/s], 9.66956E-005
+ Component Sizing Information, ZoneHVAC:FourPipeFanCoil, SPACE1-1 FAN COIL, Design Size Maximum Cold Water Flow [m3/s], 9.73168E-005
+ Component Sizing Information, Coil:Cooling:Water, SPACE1-1 COOLING COIL, Design Size Design Water Flow Rate [m3/s], 9.73168E-005

However, this resulted in a reported coil capacity increase of 1 W and a UA decrease of 2 W/C and corresponding decrease in coil surface area.

! <Water Cooling Coil Capacity Information>,Component Type,Name,Nominal Total Capacity {W},Nominal Sensible Capacity {W},Nominal Latent Capacity {W},Nominal Sensible Heat Ratio, Nominal Coil UA Value {W/C}, Nominal Coil Surface Area {m2}
-Water Cooling Coil Capacity Information,Coil:Cooling:Water,SPACE1-1 COOLING COIL,3592.51,2570.41,1022.11,0.72,399.02,4.05
+Water Cooling Coil Capacity Information,Coil:Cooling:Water,SPACE1-1 COOLING COIL,3593.64,2570.26,1023.38,0.72,397.67,4.03

So something is wrong here.
Note that the design size inlet air temperature did not change and if we are going to include fan heat, for either blow-thru or draw-thru, then I think the inlet temp needs adjusting. @mjwitte @EnergyArchmage @Myoldmopar what do you think about that?

Component Sizing Information, Coil:Cooling:Water, SPACE1-1 COOLING COIL, Design Size Design Inlet Air Temperature [C], 23.99567

This is a fan coil unit.

} else if (SizingType == CoolingWaterDesAirInletTempSizing) {
    if (TermUnitIU) {
        AutosizeDes = FinalZoneSizing(CurZoneEqNum).ZoneTempAtCoolPeak;
    } else if (ZoneEqFanCoil) {
        if (FinalZoneSizing(CurZoneEqNum).DesCoolMassFlow > 0.0) {
            OutAirFrac = min(StdRhoAir * ZoneEqSizing(CurZoneEqNum).OAVolFlow / FinalZoneSizing(CurZoneEqNum).DesCoolMassFlow, 1.0);
        } else {
            OutAirFrac = 0.0;
        }
        AutosizeDes = OutAirFrac * FinalZoneSizing(CurZoneEqNum).OutTempAtCoolPeak +
                                  (1.0 - OutAirFrac) * FinalZoneSizing(CurZoneEqNum).ZoneTempAtCoolPeak;
    } else {
        AutosizeDes = FinalZoneSizing(CurZoneEqNum).DesCoolCoilInTemp;
    }

…-Feature---Account-for-fan-heat-is-zone-cooling-coils
@rraustad
Copy link
Contributor Author

I've reviewed many of the diff's and they all appear to reflect fan heat added to capacity and inlet or outlet condition with slight increases in water cooling coil water flow rate. So this appears ready. Just so you know I revised this so that fan heat increases inlet air temp for blow-thru and decreases outlet air temp for draw-thru (I originally put the fan heat at the coil inlet which was wrong for draw-thru configurations). I was scared of that at first and then thought that we do that all the time with the mixed air SPM so why no go ahead and do it for sizing.

@rraustad rraustad mentioned this pull request Aug 31, 2018
35 tasks
@rraustad
Copy link
Contributor Author

The example file results I have reviewed so far show an increase in capacity and a change in inlet or outlet air conditions based on blow- or draw-thru fan configuration. This is looking pretty good so far.

@rraustad
Copy link
Contributor Author

Things still look good but noticed a few things a reviewer would need to understand:

  • main air loop coils already account for fan heat and the only thing changing is the correction to coil inlet or outlet air condition.
  • the change in inlet condition is actually causing a reduction in cooling coil capacity in main air loop DX coils using blow-thru because the WB temp is higher and the CapFT is also higher leading to a smaller capacity (Cap = load / CapFT).
  • some diff's show only a change in sensible capacity. These are coils where total capacity has not changed (because fan heat was already accounted for) and the change in inlet or outlet air temperature leads to a change in calculated sensible capacity.

…e---Account-for-fan-heat-is-zone-cooling-coils
@mjwitte
Copy link
Contributor

mjwitte commented Sep 13, 2018

@rraustad Have you reviewed the err diffs? Some of these may need to be addressed.
5ZoneWarmestVFD

5ZoneWarmestVFD_FCMAuto

CoolingTower_FluidBypass and similar warnings for CoolingTower_TwoSpeed_MultiCell, CoolingTower_VariableSpeed_MultiCell, EMSDemandManager_LargeOffice, EMSReplaceTraditionalManagers_LargeOffice.

On the good new side, coil sizing warnings are now gone for RefBldgSecondarySchoolNew2004_Chicago and RefBldgSecondarySchoolNew2004_Chicago - woohoo!

RefBldgSmallHotelNew2004_Chicago

_SmallOffice_Dulles

And strange messages for _5ZoneAirCooled_annual under Failure here:

Processing (Diffs) : _5ZoneAirCooled_annual
Traceback (most recent call last):
File "/Users/kbenne/ci_runs/EnergyPlus-3958623a89-x86_64-clang/regressions/Testing/RegressionSuite/Scripts/RunComparison.py", line 78, in 
runner.process_diffs_for_one_case(entry, base_dir, mod_dir, mod_dir)
File "/Users/kbenne/ci_runs/EnergyPlus-3958623a89-x86_64-clang/regressions/Testing/RegressionSuite/Scripts/runtests.py", line 445, in process_diffs_for_one_case
path_to_tablediff_log)))
File "/Users/kbenne/ci_runs/EnergyPlus-3958623a89-x86_64-clang/regressions/Testing/RegressionSuite/Scripts/TableDiff.py", line 434, in table_diff
hdict2soup(abs_diff_soup, uheading1, count_of_tables, abs_diff_dict, h_thresh_dict, horder1)
File "/Users/kbenne/ci_runs/EnergyPlus-3958623a89-x86_64-clang/regressions/Testing/RegressionSuite/Scripts/TableDiff.py", line 205, in hdict2soup
tdtag.append((hdict[h][i]).encode('utf-8'))
AttributeError: 'tuple' object has no attribute 'encode'

@rraustad
Copy link
Contributor Author

Those warnings are all a result of changing the inlet or outlet temperature based on fan heat. I knew the water coil would be a thorn in my side when deciding to adjust the outlet air temp for draw-thru configurations. But since we do that during the simulation with the mixed air temp SPM I thought the problems would be minimal and went ahead and adjusted coil air properties accordingly to fan location. I also think that the warning for bypass factor calculation failure points to some other issue since that warning is only printed if bypass factor > 0.5 (highly unlikely). Given the temperatures in the messages (i.e, inlet water temp vs inlet and outlet air temp) the bypass factor should not be that large so something else is going on (I think ADP is calculated much colder than the inlet water temp). I probably don't have time to correct that in this branch but will start investigating the correction. I also have another check in since I just found that water coils are counting fan heat twice when reporting outlet air temperature (e.g., water coil calls CoolingWaterDesAirInletTempSizing and CoolingWaterDesAirOutletTempSizing where fan heat is accounted for then passes those data over to CoolingCapacitySizing in RequestSizing. This would double count fan heat for water coils with draw-thru fans. I'm trying to figure out the best way around this. Maybe it's a simple matter of only accounting for fan heat when capacity is calculated, not sure at this point.

if (DataDesOutletAirTemp > 0.0) {
    CoilOutTemp = DataDesOutletAirTemp;
} else {
    CoilOutTemp = FinalSysSizing(CurSysNum).CoolSupTemp;
}

@rraustad
Copy link
Contributor Author

rraustad commented Sep 14, 2018

Perfect example of the bypass factor warning that existed before this change and is exacerbated when SAT is lowered. Example file: RefBldgLargeHotelNew2004_Chicago

I looked through all err files and don't see anything that should hold this up.

    ************* Beginning Plant Sizing Calculations
    ** Warning ** In calculating the design coil UA for Coil:Cooling:Water FLR_3_DOAS_COOLC
    **   ~~~   ** no apparatus dew-point can be found for the initial entering and leaving conditions;
-   **   ~~~   ** the coil outlet design conditions will be changed to correct the problem.
    **   ~~~   ** The initial design conditions are: Tair,in = 30.6608
    **   ~~~   **                                    Wair,in = 1.878287E-002
    **   ~~~   **                                    Twater,in = 6.6700
-   **   ~~~   **                                    Tair,out = 12.8200
+   **   ~~~   **                                    Tair,out = 11.9255
    **   ~~~   **                                    Wair,out = 8.489894E-003
-   **   ~~~   ** The revised design conditions are: Tair,out = 12.8197
-   **   ~~~   **                                    Wair,out = 8.490011E-003
    ** Warning ** In calculating the design coil UA for Coil:Cooling:Water FLR_6_DOAS_COOLC
    **   ~~~   ** no apparatus dew-point can be found for the initial entering and leaving conditions;
-   **   ~~~   ** the coil outlet design conditions will be changed to correct the problem.
    **   ~~~   ** The initial design conditions are: Tair,in = 30.2604
    **   ~~~   **                                    Wair,in = 1.878286E-002
    **   ~~~   **                                    Twater,in = 6.6700
-   **   ~~~   **                                    Tair,out = 12.8200
+   **   ~~~   **                                    Tair,out = 11.9255
    **   ~~~   **                                    Wair,out = 8.489894E-003
-   **   ~~~   ** The revised design conditions are: Tair,out = 12.8197
-   **   ~~~   **                                    Wair,out = 8.490011E-003

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

There are doc build errors here. For the delimiter issue, it may be similar to this.

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

I'm going to post a followup issue then to clean up the example files and get rid of the coil sizing warnings.
Since you need to fix the doc errors here, please fix this warning message: "Cooling Coil has leaving air temperature > entering water temperature." > should be <.

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

@Myoldmopar Can you help diagnose why tablediff is failing on _5ZoneAirCooled_annual? Look here, expand the regression test failures, and search for "traceback".

@Myoldmopar
Copy link
Member

That code is failing here. It is in a section of TableDiff where the diff tables are being written. Specifically, it's trying to write a value to a cell inside a diff table. That code has an IF block, where if the header of this is "DummyPlaceholder" or "Subcategory", it just writes the value out to the table. If it isn't one of those values, it assumes the value is a list, and unpacks two values from it and only writes the first one. It's failing because it seems like this header is Dummy or Subcategory, yet it has a list instead of a single value.

I looked over the code and didn't see anything obvious in the tabular reports. Is there anything that you see that could be causing a header change, or structural output value change? If there isn't, then maybe re-run CI to make sure that persists, and then if it does I'll take a look locally.

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

The order of columns is changing in one of the tables. Would that be the culprit? Component Sizing Summary, Coil:Cooling:Water, the Design Size Design Inlet Air Humidity Ratio is earlier now than before.

@mjwitte mjwitte changed the title New Feature - Include fan heat when sizing zone cooling coils Include fan heat when sizing zone cooling coils and adjust airloop coil inlet/outlet conditions Sep 14, 2018
Copy link
Contributor

@mjwitte mjwitte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more questions/comments.

src/EnergyPlus/FanCoilUnits.cc Show resolved Hide resolved
src/EnergyPlus/HVACMultiSpeedHeatPump.cc Show resolved Hide resolved
RoutineName, // Routine name
CurrentModuleObject, // Object Type
VarSpeedCoil(DXCoilNum).Name, // Object Name
cAlphaFields(AlfaFieldIncre)); // Field Name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Myoldmopar So, seems like Visual Studio is interpreting the clang format differently from linux?

// design fan heat will be added to coil load
Real64 FanCoolLoad = DataAirSystems::calcFanDesignHeatGain(DataFanEnumType, DataFanIndex, VolFlowRate);
// inlet/outlet temp is adjusted after enthalpy is calculcated so fan heat is not double counted
Real64 CpAir = PsyCpAirFnWTdb(MixHumRat, MixTemp);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've mentioned this before, I think, but why isn't MixEnth adjusted here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the test below at line 4082 for MixEnth > SupEnth it looks like MixEnth or SupEnth should have been updated here. However, the comment "The mixed air temp for zone equipment without an OA mixer is 0" implies it doesn't matter because MixEnth will always be greater than SupEnth (unless MixEnth=0 and then if IF at line 4082 would still work as intended).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wasn't asking about this particular coil type, but I think this is the general method elsewhere as well, no? Leave the enthalpies, add the load, but adjust the entering or leaving conditions. Just seems it would be cleaner to adjust the entering or leaving conditions first, then the enthalpies would already include the extra fan heat.

@@ -2143,6 +2143,23 @@ namespace WaterCoils {
ShowContinueError("The autosize value for max air volume flow rate is zero");
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It doesn't hurt anything other than it causes reordering in some of the output.

src/EnergyPlus/WaterToAirHeatPumpSimple.cc Show resolved Hide resolved
src/EnergyPlus/ReportSizingManager.cc Show resolved Hide resolved
src/EnergyPlus/ReportSizingManager.cc Show resolved Hide resolved
@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

Ran a few annual simulations just to see what the overall diffs are. Surprising:

5ZoneAirCooled, PackagedTerminalAirConditioner - Some coil sizing diffs, as expected, <1% annual energy, no difference in setpoint not met or not comfortable hours.

FanCoilAutoSizen, PackagedTerminalHeatPump - Some coil sizing diffs, as expected, <1% annual energy, small diffs in setpoint not met or not comfortable hours.

RefBldgHospitalNew2004_Chicago - no diffs at all - is that expected? All airloops with detailed chilled water coil.

@rraustad
Copy link
Contributor Author

RefBldgHospitalNew2004_Chicago - air loops already accounted for the fan heat so the diff's would be in the html reporting of entering/leaving air temp.

Copy link
Contributor

@mjwitte mjwitte left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At this point, just waiting for linux ci to finish up to check if the doc build errors are gone and reconfirm performance change (last round showed a 1.5% improvement, not sure how that's possible).

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

Oh - there it is - only the cooling coi leaving wet bulbs and enthalpies. Seems like something more should change, but not pressing this.

@mjwitte
Copy link
Contributor

mjwitte commented Sep 14, 2018

Engineering ref builds locally and looks OK. Gort seems rather far behind, so merging this so we can get going on others that will likely have conflicts after this drops. If there are any doc build problems, we'll fix them later.

@mjwitte mjwitte merged commit 429d666 into develop Sep 14, 2018
@mjwitte mjwitte deleted the New-Feature---Account-for-fan-heat-is-zone-cooling-coils branch September 14, 2018 18:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NewFeature Includes code to add a new feature to EnergyPlus NotIDDChange Code does not impact IDD (can be merged after IO freeze)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants