Skip to content

Issue3492 direct evaporative cooler#3755

Open
JayHuLBL wants to merge 115 commits intomasterfrom
issue3492_DirectEvaporativeCooler
Open

Issue3492 direct evaporative cooler#3755
JayHuLBL wants to merge 115 commits intomasterfrom
issue3492_DirectEvaporativeCooler

Conversation

@JayHuLBL
Copy link
Copy Markdown
Contributor

This closes #3492.

karthikeyad-pnnl and others added 30 commits August 30, 2023 16:45
…veCooler

Issue3492 direct evaporative cooler
Finalized the model clean up and documentation.
…veCooler

Issue3492 direct evaporative cooler
@JayHuLBL
Copy link
Copy Markdown
Contributor Author

@mwetter Would you please let us know if the new model Buildings.Fluid.Humidifiers.EvaporativeCoolers.Baseclasses.Xi_TDryBulTWetBul should be in the package Buildings.Utilities.Psychrometrics?

@mwetter
Copy link
Copy Markdown
Member

mwetter commented Aug 20, 2025

@JayHuLBL : Thanks for checking. Yes the block should be moved. And its output Xi[] should actually be X_w similar than in Buildings.Utilities.Psychrometrics.X_pW because the implementation assigns only one element. Hence the block would be invalid if Medium.nXi > 1.

@JayHuLBL
Copy link
Copy Markdown
Contributor Author

@JayHuLBL : Thanks for checking. Yes the block should be moved. And its output Xi[] should actually be X_w similar than in Buildings.Utilities.Psychrometrics.X_pW because the implementation assigns only one element. Hence the block would be invalid if Medium.nXi > 1.

Thanks! We will change it.

@JayHuLBL
Copy link
Copy Markdown
Contributor Author

@karthikeyad-pnnl This PR looks good to me. Can you double-check if everything looks good to you? Otherwise, we can ask Michael to review.

@karthikeyad-pnnl
Copy link
Copy Markdown
Contributor

@JayHuLBL Thank you! I will get back to you shortly after review

@JayHuLBL
Copy link
Copy Markdown
Contributor Author

JayHuLBL commented Nov 4, 2025

@karthikeyad-pnnl Is it ready for Michael's review?

@JayHuLBL
Copy link
Copy Markdown
Contributor Author

@mwetter It's ready for review.

Copy link
Copy Markdown
Member

@mwetter mwetter left a comment

Choose a reason for hiding this comment

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

I don't see how to realistically use these components as the evaporative cooling is always operating. I expect users use these components as part of an air handler unit, in which case the evaporative cooling would not be operating if the system is in heating mode. Therefore, we need to add control input that allows modulating the humidification.

Moreover, the comment about advanced users being able to change the components of the Direct model does not make sense. It also makes me wonder if this is a generic component or whether it is for a particular product, yet it exposes the depth and area, which makes me think it can be changed. However, it is not clear if changing them invalidates the default coefficients, which are not defined and are protected.

Also, the consumed water must be an output to allow assessing water use.

So, this PR is far from being finished and need more work and substantial better review.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This component requires a control input to modulate the evaporative cooling.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This component requires a control input to modulate the evaporative cooling.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This component requires a control input to modulate the evaporative cooling.

within Buildings.Fluid.Humidifiers.EvaporativeCoolers;
model IndirectDry
"Indirect dry evaporative cooler"
extends Buildings.Fluid.Interfaces.PartialFourPortParallel;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

All other components in the library extend from PartialFourPort. Use this also here, otherwise we have one component for which the user need for no obvious reason connect the fluid ports differently.

@@ -0,0 +1,246 @@
within Buildings.Fluid.Humidifiers.EvaporativeCoolers;
model IndirectWet "Indirect wet evaporative cooler"
extends Buildings.Fluid.Interfaces.PartialFourPortParallel;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

All other components in the library extend from PartialFourPort. Use this also here, otherwise we have one component for which the user need for no obvious reason connect the fluid ports differently.

"Coefficients for evaporative medium efficiency calculation";

equation
vel =abs(V_flow)/padAre;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We use regularization for this to make the function $C^1$.

"Actual efficiency of component";

equation
eff = max((maxEff - floRat*abs(VPri_flow)/abs(VSec_flow)),0);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We use regularization for this to make the function $C^1$.

Comment on lines +117 to +122
where <code>effCoe[:]</code> is the evaporative efficiency coefficients for the
CelDek rigid media pad used in evaporative coolers. It is currently protected from
modification by the user, but can be modified for other materials within this class
by advanced users. <code>dep</code> is the depth of the evaporative media, and
<code>vel</code> is the velocity of the fluid media which is calculated from the volume flowrate
<code>V_flow</code> and evaporative media cross-sectional area <code>padAre</code>
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

What???
Not even a "advanced user" can modify this as it is protected and the language does not allow changing protected assignment. And this is for a specific pad. This makes me wonder if this is a generic model that can be parameterized for a specific equipment, or whether it just happened to be for one specific equipment, in which case exposing dep and padAre would not make sense.

You need to finish the implementation and documenation.

  1. The coefficient need to be explained. How are they defined? Add it to the documentation of the model, including the top-level model. Are they invariant if dep or padAre are changed?
  2. Propagate the device specific parameters dep, padAre and coe into a data record, to be put into EvaporativeCoolers.Data

the curve
</p>
<p align=\"center\" style=\"font-style:italic;\">
eff = effCoe[1] + effCoe[2]*(dep) + effCoe[3]*(vel) + effCoe[4]*(dep<sup>2</sup>) +
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Use proper notation:

  1. no need to put the dep and vel into brackets, these are just factors.
  2. Either use parameter names and Courier font, or use mathematical symbols and italics font.
  3. This would be much more readable as a sum notation.

Also, explain where the user can get these data.

eff = effCoe[1] + effCoe[2]*(dep) + effCoe[3]*(vel) + effCoe[4]*(dep^2) +
effCoe[5]*(vel^2) + effCoe[6]*(dep*vel) + effCoe[7]*(vel*dep^2) +
effCoe[8]*(dep*vel^3) + effCoe[9]*(dep^3*vel) + effCoe[10]*(vel^3*dep^2) +
effCoe[11]*(dep^3*vel^2);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This implementation is very expensive, computing the 2nd and 3rd power of vel and dep multiple times. Do it efficiently.

@karthikeyad-pnnl
Copy link
Copy Markdown
Contributor

I don't see how to realistically use these components as the evaporative cooling is always operating. I expect users use these components as part of an air handler unit, in which case the evaporative cooling would not be operating if the system is in heating mode. Therefore, we need to add control input that allows modulating the humidification.

Moreover, the comment about advanced users being able to change the components of the Direct model does not make sense. It also makes me wonder if this is a generic component or whether it is for a particular product, yet it exposes the depth and area, which makes me think it can be changed. However, it is not clear if changing them invalidates the default coefficients, which are not defined and are protected.

Also, the consumed water must be an output to allow assessing water use.

So, this PR is far from being finished and need more work and substantial better review.

@mwetter Thank you for the feedback. I am adding some additional contextual information and a list of improvements I will make.

  • The original intended use of this model was as zonal cooling equipment that cycles when the zone temperature exceeds the cooling setpoint. In addition to updating the documentation, I think it may make more sense to add a typical use-case in a zonal unit within the Buildings.Fluid.ZoneEquipment package.
    I will also search for any specialized equipment that manage the cooling output for use in air-handlers, in which case it may make sense to incorporate the variable cooling output feature into the model. If I dont find any, I will still add an example of how the component can be integrated into an AHU to achieve supply temperature setpoint (variable cooling).
  • Based on the EnergyPlus documentation, the performance coefficients represent a commonly used evaporative media called a CelDek pad, which can be procured in multiple sizes. I will look for any performance coefficients that might be available for other media, and update the code to propagate the parameters from a data record.

List of actions

  • Add model for use in zonal unit and a suitable example for the zonal unit.
  • Identify any special equipment for use in air handling units. If none are found, add example of how the component can be used to achieve supply temperature setpoint (variable cooling).
  • Propagate the performance coefficients through data records.
  • Update the models with secondary vented air-stream to incorporate correct changes in mixed-air states for the secondary stream.
  • Address all other comments.

@mwetter
Copy link
Copy Markdown
Member

mwetter commented Mar 25, 2026

@karthikeyad-pnnl : For the adiabatic cooler, besides use in air handler units, which was used quite a bit in Europe's dry climate, another important use case is to precondition the outside air in cooling towers such as in https://peakplus.energy/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

Evaporative cooler models for SPAWN

6 participants