<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Evgenii Konkin</title>
    <description>The latest articles on DEV Community by Evgenii Konkin (@evgeniikonkin).</description>
    <link>https://dev.to/evgeniikonkin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3857449%2F02cdee2c-35f6-45f2-ac10-adeefe40649e.jpg</url>
      <title>DEV Community: Evgenii Konkin</title>
      <link>https://dev.to/evgeniikonkin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/evgeniikonkin"/>
    <language>en</language>
    <item>
      <title>Why Most Ventilation Systems Are Wrong Before They’re Even Built</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Sun, 03 May 2026 07:30:51 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/why-most-ventilation-systems-are-wrong-before-theyre-even-built-1ia5</link>
      <guid>https://dev.to/evgeniikonkin/why-most-ventilation-systems-are-wrong-before-theyre-even-built-1ia5</guid>
      <description>&lt;p&gt;A ventilation system can be perfectly installed — and still be wrong.&lt;/p&gt;

&lt;p&gt;Not because the fan is bad.&lt;br&gt;&lt;br&gt;
Not because the ductwork is terrible.&lt;br&gt;&lt;br&gt;
Not because someone missed a decimal point.&lt;/p&gt;

&lt;p&gt;But because the airflow target was calculated from the wrong assumption.&lt;/p&gt;

&lt;p&gt;The most common mistake is simple:&lt;br&gt;&lt;br&gt;
treating ventilation as “air per person” and forgetting that the building itself also needs outdoor air.&lt;/p&gt;


&lt;h2&gt;
  
  
  The Core Idea Most People Miss
&lt;/h2&gt;

&lt;p&gt;Ventilation is not just “air per person”.&lt;/p&gt;

&lt;p&gt;According to ASHRAE 62.1, the required airflow is built from &lt;strong&gt;two independent sources&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;People → CO₂, bio-effluents
&lt;/li&gt;
&lt;li&gt;Building → materials, furniture, finishes
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s why the correct equation looks like this:&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Vbz=Rp⋅Pz+Ra⋅Az
V_{bz} = R_p \cdot P_z + R_a \cdot A_z
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;b&lt;/span&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;P&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;R&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;a&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;A&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vbz&lt;/strong&gt; — breathing zone airflow
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rp&lt;/strong&gt; — airflow per person
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pz&lt;/strong&gt; — number of people
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ra&lt;/strong&gt; — airflow per area
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Az&lt;/strong&gt; — floor area
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Matters More Than You Think
&lt;/h2&gt;

&lt;p&gt;If you only calculate ventilation based on people:&lt;/p&gt;

&lt;p&gt;→ You under-ventilate empty but polluted spaces&lt;br&gt;&lt;br&gt;
→ Example: offices at night, storage areas  &lt;/p&gt;

&lt;p&gt;If you only calculate by area:&lt;/p&gt;

&lt;p&gt;→ You under-ventilate crowded rooms&lt;br&gt;&lt;br&gt;
→ Example: conference rooms, restaurants  &lt;/p&gt;

&lt;p&gt;ASHRAE forces you to combine both — because &lt;strong&gt;air quality problems come from both sources&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  Step 2: The Part Most Engineers Forget
&lt;/h2&gt;

&lt;p&gt;Even after calculating Vbz, you’re not done.&lt;/p&gt;

&lt;p&gt;You must correct for how air is actually distributed:&lt;/p&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Voz=VbzEz
V_{oz} = \frac{V_{bz}}{E_z}
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;oz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen nulldelimiter"&gt;&lt;/span&gt;&lt;span class="mfrac"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;E&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="frac-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;b&lt;/span&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose nulldelimiter"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ez&lt;/strong&gt; = air distribution effectiveness
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ceiling supply → Ez ≈ 1.0
&lt;/li&gt;
&lt;li&gt;Poor heating distribution → Ez ≈ 0.8
&lt;/li&gt;
&lt;li&gt;Displacement ventilation → Ez ≈ 1.2
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This step adjusts theory to reality.&lt;/p&gt;




&lt;h2&gt;
  
  
  Real Engineering Example
&lt;/h2&gt;

&lt;p&gt;Let’s take a simple office:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 people
&lt;/li&gt;
&lt;li&gt;100 m²
&lt;/li&gt;
&lt;li&gt;Rp = 5 L/s per person
&lt;/li&gt;
&lt;li&gt;Ra = 0.6 L/s per m²
&lt;/li&gt;
&lt;li&gt;Ez = 1.0
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 1 — Breathing zone airflow:
&lt;/h3&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Vbz=(5⋅10)+(0.6⋅100)=50+60=110 L/s
V_{bz} = (5 \cdot 10) + (0.6 \cdot 100) = 50 + 60 = 110 \text{ L/s}
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;b&lt;/span&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;5&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;10&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mopen"&gt;(&lt;/span&gt;&lt;span class="mord"&gt;0.6&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;⋅&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;100&lt;/span&gt;&lt;span class="mclose"&gt;)&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;50&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mbin"&gt;+&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;60&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;110&lt;/span&gt;&lt;span class="mord text"&gt;&lt;span class="mord"&gt; L/s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Step 2 — Zone airflow:
&lt;/h3&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Voz=1101.0=110 L/s
V_{oz} = \frac{110}{1.0} = 110 \text{ L/s}
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;oz&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mopen nulldelimiter"&gt;&lt;/span&gt;&lt;span class="mfrac"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;1.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="frac-line"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord"&gt;110&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mclose nulldelimiter"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;110&lt;/span&gt;&lt;span class="mord text"&gt;&lt;span class="mord"&gt; L/s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Now the mistake:
&lt;/h3&gt;

&lt;p&gt;If you ignore area:&lt;/p&gt;


&lt;div class="katex-element"&gt;
  &lt;span class="katex-display"&gt;&lt;span class="katex"&gt;&lt;span class="katex-mathml"&gt;Vbz=50 L/s
V_{bz} = 50 \text{ L/s}
&lt;/span&gt;&lt;span class="katex-html"&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;&lt;span class="mord mathnormal"&gt;V&lt;/span&gt;&lt;span class="msupsub"&gt;&lt;span class="vlist-t vlist-t2"&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;span class="pstrut"&gt;&lt;/span&gt;&lt;span class="sizing reset-size6 size3 mtight"&gt;&lt;span class="mord mtight"&gt;&lt;span class="mord mathnormal mtight"&gt;b&lt;/span&gt;&lt;span class="mord mathnormal mtight"&gt;z&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-s"&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span class="vlist-r"&gt;&lt;span class="vlist"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;span class="mrel"&gt;=&lt;/span&gt;&lt;span class="mspace"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="base"&gt;&lt;span class="strut"&gt;&lt;/span&gt;&lt;span class="mord"&gt;50&lt;/span&gt;&lt;span class="mord text"&gt;&lt;span class="mord"&gt; L/s&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;


&lt;p&gt;You just underdesigned ventilation by &lt;strong&gt;~55%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That’s not a rounding error —&lt;br&gt;&lt;br&gt;
that’s a failed system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where This Shows Up in Real Projects
&lt;/h2&gt;

&lt;p&gt;You’ll see this mistake everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Office HVAC retrofits → stuffy air despite “correct” design
&lt;/li&gt;
&lt;li&gt;Restaurants → odors that don’t go away
&lt;/li&gt;
&lt;li&gt;Data centers → overcooling but poor air quality
&lt;/li&gt;
&lt;li&gt;Residential buildings → high CO₂ levels
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because engineers often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use simplified rules of thumb
&lt;/li&gt;
&lt;li&gt;or forget the dual-component model
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Practical Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Ventilation is &lt;strong&gt;not one variable&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Always include:

&lt;ul&gt;
&lt;li&gt;people load
&lt;/li&gt;
&lt;li&gt;area load
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Never skip Ez correction
&lt;/li&gt;
&lt;li&gt;Validate assumptions — not just formulas
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the formula is rarely wrong.&lt;br&gt;&lt;br&gt;
The assumptions usually are.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try It Yourself
&lt;/h2&gt;

&lt;p&gt;If you want to quickly validate a real project (office, restaurant, or any HVAC zone), use the calculator:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://calcengineer.com/hvac/ventilation-rate-calculator/" rel="noopener noreferrer"&gt;Ventilation Rate Calculator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It follows the exact ASHRAE model and immediately shows if your airflow is too low, balanced, or excessive.&lt;/p&gt;

</description>
      <category>hvac</category>
      <category>engineering</category>
      <category>ventilation</category>
      <category>buildings</category>
    </item>
    <item>
      <title>The Engineering Math Behind Grease Duct Sizing: From Airflow to Duct Diameter</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Thu, 30 Apr 2026 01:02:24 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-grease-duct-sizing-from-airflow-to-duct-diameter-1led</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-grease-duct-sizing-from-airflow-to-duct-diameter-1led</guid>
      <description>&lt;p&gt;At 1500 fpm (7.62 m/s), a single commercial kitchen exhaust can move over 10,000 cubic feet of grease-laden air per minute—and if your duct is even slightly oversized, that velocity drops, grease condenses on the walls, and you've got a fire hazard waiting for a spark. Getting the math right isn't optional; it's code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The core relationship is the continuity equation for duct flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A = Q / V
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A&lt;/strong&gt; = required duct cross-sectional area (m² or ft²)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Q&lt;/strong&gt; = exhaust airflow (m³/s or CFM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;V&lt;/strong&gt; = target transport velocity (m/s or FPM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why this form? In a steady, incompressible flow, mass flow rate is constant. For grease-laden air, we need a minimum velocity to keep particulates entrained. Below ~1500 FPM, grease droplets settle; above ~2500 FPM, pressure drop and noise spike. The equation directly gives the area needed to achieve that velocity for a given flow.&lt;/p&gt;

&lt;p&gt;Once we have area, round duct diameter follows from geometry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;D = sqrt(4 * A / π)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For rectangular ducts, if you fix the width, the required height is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;H = A / W
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where W is the chosen width. After sizing, the actual velocity is back-calculated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;V_actual = Q / A_actual
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This check ensures the velocity falls in the acceptable range.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Round Duct, Metric
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inputs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Airflow: 6000 m³/h (1.667 m³/s)&lt;/li&gt;
&lt;li&gt;Target velocity: 8 m/s (1575 FPM)&lt;/li&gt;
&lt;li&gt;Rectangular width: not used (round duct)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Required area&lt;/strong&gt;&lt;br&gt;
A = 1.667 / 8 = 0.2084 m²&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Round diameter&lt;/strong&gt;&lt;br&gt;
D = sqrt(4 * 0.2084 / π) = 0.515 m = 515 mm&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Actual velocity&lt;/strong&gt; (same as target since round)&lt;br&gt;
V_actual = 1.667 / 0.2084 = 8.0 m/s → 1575 FPM (within 1500–2500 FPM) ✓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 515 mm round duct is appropriate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Rectangular Duct, Imperial
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Inputs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Airflow: 12000 CFM&lt;/li&gt;
&lt;li&gt;Target velocity: 2000 FPM&lt;/li&gt;
&lt;li&gt;Rectangular width: 24 inches (2 ft)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Required area&lt;/strong&gt;&lt;br&gt;
A = 12000 / 2000 = 6 ft²&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Rectangular height&lt;/strong&gt;&lt;br&gt;
H = 6 / 2 = 3 ft = 36 inches&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Actual velocity&lt;/strong&gt;&lt;br&gt;
A_actual = 2 * 3 = 6 ft² → V_actual = 12000 / 6 = 2000 FPM ✓&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 24" x 36" rectangular duct works perfectly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, the continuity equation assumes uniform velocity. In reality, grease duct flow profiles are not flat; a safety margin of 10% on velocity is wise. Second, rectangular ducts with aspect ratios above 4:1 create dead zones where grease accumulates—always check the height-to-width ratio stays below 4. Third, the calculator gives a first-pass size, but code requires fire-rated enclosure, welded seams, and cleanout doors every 20 feet—these add constraints that may force a different size.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Plug your own numbers into the &lt;a href="https://calcengineer.com/hvac/grease-duct-sizing" rel="noopener noreferrer"&gt;Grease Duct Sizing Calculator&lt;/a&gt; to get round diameters and rectangular dimensions instantly.&lt;/p&gt;

</description>
      <category>greaseductsizing</category>
      <category>commercialkitchenexhaust</category>
      <category>typeihood</category>
      <category>nfpa96</category>
    </item>
    <item>
      <title>The Engineering Math Behind Grain Dryer Airflow: From CFM/bu to Fan Selection</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Wed, 29 Apr 2026 19:02:13 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-grain-dryer-airflow-from-cfmbu-to-fan-selection-4ki9</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-grain-dryer-airflow-from-cfmbu-to-fan-selection-4ki9</guid>
      <description>&lt;p&gt;A 1,000-bushel bin of corn at 25% moisture content left without adequate airflow can spoil in less than a week, costing $5,000–$10,000 in lost grain. Yet many engineers treat airflow as a rule-of-thumb number rather than a calculable parameter. The Grain Dryer Airflow Calculator bridges that gap by converting a normalized airflow requirement into a total fan airflow, and it classifies the duty as low, moderate, high, or very high.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The core calculation is a simple product:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;requiredAirflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;airflowPerCapacity&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;grainThroughput&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In imperial units:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Required Grain Dryer Airflow (CFM)&lt;/strong&gt; = Airflow per Capacity (CFM/bu) × Grain Throughput (bu/h)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In metric units:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Required Grain Dryer Airflow (m³/h)&lt;/strong&gt; = Airflow per Capacity (m³/h per tonne) × Grain Throughput (t/h)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Variables:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;airflowPerCapacity&lt;/code&gt;: The normalized airflow rate – CFM per bushel of grain in storage or per bushel-per-hour of dryer capacity. This is the design criterion set by drying method and crop type.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;grainThroughput&lt;/code&gt;: The total grain volume or mass processed per hour – bushels per hour (imperial) or tonnes per hour (metric).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;requiredAirflow&lt;/code&gt;: The total volumetric flow rate the fan must deliver at the system's static pressure.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The formula is deliberately linear because the physical relationship is additive: each unit of grain needs its share of air. The rounding to two decimals ensures practical precision for fan selection. The calculator also outputs the input values for clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Natural-Air Drying of Corn (Imperial)
&lt;/h2&gt;

&lt;p&gt;A farmer has a 5,000-bushel bin and wants to use natural-air drying. Minnesota recommends 1.2 CFM/bu for corn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Airflow per Capacity = 1.2 CFM/bu&lt;/li&gt;
&lt;li&gt;Grain Throughput = 5,000 bu (treated as bu/h for batch drying over several hours; here we use total bushels as the throughput rate)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredAirflow = 1.2 * 5000 = 6000 CFM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result: The fan must move 6,000 CFM. At a typical static pressure of 3–5 inches of water column for a 10-foot grain depth, a 5–7.5 HP centrifugal fan would be appropriate. This duty would be classified as "moderate."&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Dryeration Cooling (Metric)
&lt;/h2&gt;

&lt;p&gt;A commercial dryer processes 20 tonnes of wheat per hour. Dryeration cooling requires 12 CFM per bu/h of dryer capacity. First, convert: 1 tonne of wheat ≈ 36.74 bushels (60 lb/bu). So 20 t/h = 20 × 36.74 = 734.8 bu/h. Airflow per capacity = 12 CFM/bu/h. In metric: 12 CFM/bu/h ≈ 20.4 m³/h per tonne (using 1 CFM = 1.699 m³/h and 1 bu = 0.0272 t). Let's compute in metric directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Airflow per Capacity = 20.4 m³/h per tonne (from conversion)&lt;/li&gt;
&lt;li&gt;Grain Throughput = 20 t/h
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredAirflow = 20.4 * 20 = 408 m³/h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait, that seems low. Let's re-evaluate: Actually, the metric conversion is not straightforward. Better to use imperial and convert final CFM to m³/h. Imperial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Airflow per Capacity = 12 CFM/bu/h&lt;/li&gt;
&lt;li&gt;Grain Throughput = 734.8 bu/h
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredAirflow = 12 * 734.8 = 8817.6 CFM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Convert: 8817.6 CFM × 1.699 = 14,980 m³/h. This is a substantial airflow, classified as "high." The fan must handle high static pressure (6–8 in. w.c.) due to grain depth, requiring a high-efficiency centrifugal fan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;Three insights from experienced engineers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Static pressure is non-negotiable.&lt;/strong&gt; The calculated airflow is only achievable if the fan curve intersects the system resistance curve at the target CFM. A fan rated for 6,000 CFM at 0.5 in. w.c. will deliver far less when pushing through 10 feet of grain at 4 in. w.c. Always check the fan performance against expected static pressure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Airflow per capacity varies with moisture content.&lt;/strong&gt; For high-moisture corn (above 25%), Purdue recommends 2–3 CFM/bu, not the 1–1.5 for dry corn. Using a single number for all conditions leads to under-drying.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bin geometry matters.&lt;/strong&gt; Deep bins require more pressure, reducing fan airflow. A 20-foot-deep bin may need twice the static pressure of a 10-foot bin, cutting fan delivery by 30–50% if not accounted for. The calculator gives the ideal airflow; practical selection must include a safety factor.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/hvac/grain-dryer-airflow" rel="noopener noreferrer"&gt;Grain Dryer Airflow Calculator&lt;/a&gt; to quickly size fans for natural-air, low-temperature, or dryeration systems.&lt;/p&gt;

</description>
      <category>graindryerairflow</category>
      <category>fansizing</category>
      <category>graindrying</category>
      <category>agriculturalventilation</category>
    </item>
    <item>
      <title>The Engineering Math Behind Glycol Concentration: Formulas, Worked Examples, and Common Pitfalls</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Wed, 29 Apr 2026 13:02:00 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-glycol-concentration-formulas-worked-examples-and-common-pitfalls-314b</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-glycol-concentration-formulas-worked-examples-and-common-pitfalls-314b</guid>
      <description>&lt;p&gt;A 30% propylene glycol solution provides freeze protection down to about 7°F, but at 40% concentration the same glycol type protects to -8°F. Yet many engineers push concentration to 50% or higher, unaware that beyond 40–45% the heat transfer penalty can increase by over 15% per additional 10% glycol, often negating the safety margin they thought they gained.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The calculator uses a single concentration model expressed by two complementary equations. The core calculation is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;glycolConcentration = (glycolVolume / totalVolume) * 100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, &lt;code&gt;glycolVolume&lt;/code&gt; is the volume of pure glycol (either ethylene or propylene) in the system, and &lt;code&gt;totalVolume&lt;/code&gt; is the total solution volume (glycol + water). The result is a percentage by volume. This is a volume-based ratio because glycol and water are miscible and the volumes are approximately additive for the concentrations used in HVAC (0–60%). The formula assumes ideal mixing, which is a valid engineering approximation for design calculations.&lt;/p&gt;

&lt;p&gt;When you need to determine how much glycol to add to achieve a target concentration, the inverse formula is used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredGlycolVolume = (targetConcentration / 100) * totalVolume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here &lt;code&gt;targetConcentration&lt;/code&gt; is the desired glycol percentage (0–100). This equation is simply the concentration formula solved for glycol volume. It assumes you are starting with pure water and adding glycol to reach the target—if you already have some glycol, you need to account for that, which the calculator handles by switching modes.&lt;/p&gt;

&lt;p&gt;Both equations rely on the same physical principle: concentration is a ratio of glycol to total volume. The linear relationship holds because glycol and water are incompressible and their mixture volumes are nearly additive at HVAC concentrations. The calculator enforces consistency: if you provide both glycol volume and total volume, it computes concentration; if you provide total volume and target concentration, it computes required glycol volume. It will not mix modes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Determining Concentration from Measured Volumes
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; An engineer has a 500-gallon chilled water loop. They added 150 gallons of propylene glycol and then filled the rest with water. What is the resulting concentration?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Identify the inputs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Glycol volume = 150 gallons&lt;/li&gt;
&lt;li&gt;Total volume = 500 gallons&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Apply the formula.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;concentration = (150 / 500) * 100 = 30%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The solution is 30% propylene glycol by volume. At this concentration, the freeze protection is approximately 7°F for propylene glycol (though the exact value depends on manufacturer data). The hydraulic penalty is moderate—viscosity roughly doubles compared to water at 40°F, but is still manageable for most pumps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Calculating Required Glycol Volume for a Target Concentration
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A new 2000-liter heating system needs to be protected to -15°F. For ethylene glycol, a 35% concentration provides protection to about -15°F. How much ethylene glycol must be added?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Identify the inputs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total volume = 2000 liters&lt;/li&gt;
&lt;li&gt;Target concentration = 35%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Apply the formula.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredGlycolVolume = (35 / 100) * 2000 = 700 liters
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 700 liters of ethylene glycol should be mixed with 1300 liters of water to achieve 35% concentration. This yields a safety margin of about 5°F below the design temperature. Note that the same concentration of propylene glycol would only protect to about 3°F—a critical difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Percent by volume vs. percent by mass.&lt;/strong&gt; Glycol concentration in HVAC is almost always specified by volume (percent by volume). However, glycol is denser than water (ethylene glycol SG ≈ 1.11, propylene glycol SG ≈ 1.04). If you measure by weight, a 30% volume solution is actually about 33% by mass for ethylene glycol. Always check which basis your supplier or specification uses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The concentration-viscosity spiral.&lt;/strong&gt; Above 40% concentration, the viscosity of glycol solutions increases nonlinearly. For propylene glycol at 50% concentration, the viscosity at 40°F is about 4 times that of water, versus only 2 times at 30%. This can cause pump head to rise unexpectedly, reducing flow and potentially causing cavitation or underflow in coils.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Freeze protection is not linear with concentration.&lt;/strong&gt; For ethylene glycol, the freeze point depression is steep up to about 40% and then flattens. Going from 30% to 40% lowers the freeze point by about 15°F, but from 40% to 50% only lowers it by 5°F. Meanwhile, the heat transfer coefficient drops by about 10% per 10% increase in concentration. The optimal concentration for most systems is between 30% and 40%, balancing protection and performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/hvac/glycol-concentration-calculator" rel="noopener noreferrer"&gt;Glycol Concentration Calculator&lt;/a&gt; to quickly compute concentrations or required volumes for your system. It handles both forward and reverse calculations, letting you avoid the common mistakes of mixing units or confusing glycol types.&lt;/p&gt;

</description>
      <category>glycolconcentration</category>
      <category>freezeprotection</category>
      <category>hvachydronics</category>
      <category>propyleneglycol</category>
    </item>
    <item>
      <title>The Engineering Math Behind GFCI Protection Classification: A Rule-Based Approach for NEC Compliance</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Tue, 28 Apr 2026 19:01:50 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-gfci-protection-classification-a-rule-based-approach-for-nec-compliance-36lc</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-gfci-protection-classification-a-rule-based-approach-for-nec-compliance-36lc</guid>
      <description>&lt;p&gt;The National Electrical Code (NEC) requires ground-fault circuit-interrupter (GFCI) protection in over 20 specific locations, yet misapplication remains a top cause of shock hazards and failed inspections. In fact, the U.S. Consumer Product Safety Commission estimates that GFCIs have prevented hundreds of deaths since their introduction, but improper classification still leads to thousands of shocks annually.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The GFCI Protection Requirements Calculator uses a multiplicative classification score:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Classification Score = Location Factor × Dwelling Factor × Equipment Factor × Moisture Factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each factor is a dimensionless multiplier derived from a rule-based lookup, not from continuous measurements. The &lt;strong&gt;Location Factor&lt;/strong&gt; (range: 0.0 to 1.0) encodes the inherent risk of a specific area—for example, a bathroom gets a factor of 1.0 (highest risk) while a living room gets 0.0 (no requirement). The &lt;strong&gt;Dwelling Factor&lt;/strong&gt; (0.0 or 1.0) distinguishes dwelling units (1.0) from non-dwellings (0.0) because NEC 210.8(A) primarily covers dwellings. The &lt;strong&gt;Equipment Factor&lt;/strong&gt; (range: 0.0 to 1.0) adjusts for the receptacle or equipment type—a 15A/20A receptacle gets 1.0, while fixed equipment like a water heater might get 0.5. The &lt;strong&gt;Moisture Factor&lt;/strong&gt; (0.0 to 1.0) captures moisture exposure, with wet locations like outdoors at 1.0 and dry interiors at 0.0.&lt;/p&gt;

&lt;p&gt;The multiplication creates a score from 0 to 1. A score of 1.0 means GFCI protection is typically required; 0.0 means not required; intermediate scores (e.g., 0.5) indicate context-dependent cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Kitchen countertop receptacle in a dwelling unit, indoors (dry), for general use.&lt;/p&gt;

&lt;p&gt;Inputs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Location: Kitchen (Location Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Occupancy: Dwelling unit (Dwelling Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Equipment: 15A/20A receptacle (Equipment Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Moisture: Dry (Moisture Factor = 0.0)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Score = 1.0 × 1.0 × 1.0 × 0.0 = 0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait—score 0.0? This seems counterintuitive because kitchens are a classic GFCI requirement. The catch is that the Moisture Factor for a dry interior is 0.0, which zeroes the product. However, the NEC requires GFCI for kitchen countertops regardless of immediate moisture. This reveals that the calculator's logic is conservative: it flags that moisture exposure is a key driver, but in practice, code mandates override the moisture factor for certain locations. The calculator output for this scenario is "Context Dependent" because the moisture factor zeroes the score, but the location factor is high. The user must then refer to the code rules that explicitly require GFCI in kitchens even without present moisture. This is a critical nuance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: Outdoor receptacle at a dwelling unit, exposed to rain, used for a holiday light string.&lt;/p&gt;

&lt;p&gt;Inputs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Location: Outdoors (Location Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Occupancy: Dwelling unit (Dwelling Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Equipment: 15A/20A receptacle (Equipment Factor = 1.0)&lt;/li&gt;
&lt;li&gt;Moisture: Wet (Moisture Factor = 1.0)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Calculation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Score = 1.0 × 1.0 × 1.0 × 1.0 = 1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Score 1.0 means "Required". This matches the NEC requirement for all outdoor receptacles in dwellings. The logic is straightforward: high-risk location + high moisture = mandatory protection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, the moisture factor can dominate the score, but code often requires GFCI even in dry areas (e.g., kitchens). Engineers must not rely solely on the multiplicative score; they must cross-check against explicit code lists. Second, the dwelling factor is not binary in all jurisdictions—some local codes extend GFCI to commercial kitchens and other non-dwelling areas. Third, the equipment factor is not just about receptacle type; hardwired equipment like dishwashers now require GFCI under recent NEC editions, but the calculator may assign a lower factor if not updated. Always verify against the adopted code year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;For a quick screening of GFCI requirements on your next project, use the &lt;a href="https://calcengineer.com/electrical/gfci-protection-requirements-calculator" rel="noopener noreferrer"&gt;GFCI Protection Requirements Calculator&lt;/a&gt; to evaluate common scenarios before consulting the full code.&lt;/p&gt;

</description>
      <category>gfciprotection</category>
      <category>nec2108</category>
      <category>groundfaultcircuitinterrupter</category>
      <category>electricalcodecompliance</category>
    </item>
    <item>
      <title>The Engineering Math Behind Geothermal Loop Length: From Load to Loop Field</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Tue, 28 Apr 2026 13:01:59 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-geothermal-loop-length-from-load-to-loop-field-3f1k</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-geothermal-loop-length-from-load-to-loop-field-3f1k</guid>
      <description>&lt;p&gt;A 10-ton commercial heat pump in clay soil might need over 2,000 feet of ground loop, while the same unit in moist sand could get away with 1,200 feet. That 40% difference translates directly to tens of thousands of dollars in trenching or drilling costs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The calculation is deceptively simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredLoopLength = loopLengthPerCapacity * systemCapacity
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But each variable carries significant engineering weight:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;systemCapacity&lt;/strong&gt; (tons or kW): The peak heating or cooling load the geothermal system must meet. This comes from a Manual J or equivalent load calculation. Oversizing here means an unnecessarily expensive loop; undersizing means the system can't maintain comfort on design days.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;loopLengthPerCapacity&lt;/strong&gt; (ft/ton or m/kW): The design intensity of the ground heat exchanger. This value is not a constant — it's a function of soil thermal conductivity (typically 0.8–2.5 Btu/(hr·ft·°F)), annual temperature swing, and loop configuration. Horizontal loops might use 400–600 ft/ton, vertical loops 150–300 ft/ton, and pond loops 250–400 ft/ton. The calculator lets you input a site-specific value, but the number itself should come from a thermal response test or published soil data.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why multiply? Because the ground loop is a heat exchanger: the more heat you need to reject or extract, the more surface area (loop length) you need to keep the temperature difference between the fluid and the ground within acceptable limits (typically 30–40°F for closed-loop systems).&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 5-ton residential system with a vertical loop in medium-density soil. The designer selects 200 ft/ton based on local soil conditions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Identify inputs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System Capacity = 5 tons&lt;/li&gt;
&lt;li&gt;Loop Length per Capacity = 200 ft/ton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Apply the formula.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredLoopLength = 200 * 5 = 1000 ft
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Interpret result. The total loop length is 1000 ft. For a vertical system with two boreholes, that could be two 500-ft bores. The engineer would then check if the available land can accommodate the bore spacing (typically 15–20 ft between bores for vertical loops).&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 50-kW commercial heat pump using a horizontal slinky loop in sandy soil. The designer selects 45 m/kW based on local practice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Convert if needed (here all metric).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;System Capacity = 50 kW&lt;/li&gt;
&lt;li&gt;Loop Length per Capacity = 45 m/kW&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Calculate.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requiredLoopLength = 45 * 50 = 2250 m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Practical interpretation. 2250 m of horizontal pipe requires a large land area. Standard slinky trenches are about 1.5 m wide and spaced 4–6 m apart. The total trench length might be 2250 / (loop length per trench), which depends on coil diameter and spacing. This quickly tells the engineer whether the site has enough acreage, or whether a vertical configuration is necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Loop length is not a guarantee of performance.&lt;/strong&gt; Two identical loop lengths in different soils will deliver different fluid temperatures. A 1000-ft loop in dry clay might result in 95°F entering water temperature on a hot day, while the same loop in wet sand might stay at 85°F. The loop length is just one variable; the soil's thermal conductivity and diffusivity matter just as much.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Normalized vs. total length confusion.&lt;/strong&gt; A client might ask, "How many feet of pipe do I need?" but the engineer responds with "600 ft/ton." The normalized value is useless without the system capacity. Always report both the total length and the per-ton basis, and explain that the per-ton number is a design parameter, not the answer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ignoring the balance of heating vs. cooling loads.&lt;/strong&gt; In heating-dominated climates, the loop length is sized for heat extraction (winter), which is typically longer than the cooling rejection (summer) because the ground is colder. In cooling-dominated climates, the reverse is true. The calculator uses a single load, but real designs must consider the dominant load case.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/hvac/geothermal-loop-length" rel="noopener noreferrer"&gt;Geothermal Loop Length Calculator&lt;/a&gt; to quickly test different loop configurations and capacities during preliminary design.&lt;/p&gt;

</description>
      <category>geothermallooplength</category>
      <category>groundheatexchangersizing</category>
      <category>closedloopgeothermal</category>
      <category>gshpdesign</category>
    </item>
    <item>
      <title>The Engineering Math Behind Generator Sizing: Screening Running Load with Sizing Factor</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Tue, 28 Apr 2026 01:01:37 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-generator-sizing-screening-running-load-with-sizing-factor-5539</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-generator-sizing-screening-running-load-with-sizing-factor-5539</guid>
      <description>&lt;p&gt;A single 500 kW motor starting can require a generator nearly 2.5 times its running load, yet many preliminary sizing models ignore this fact. The Generator Sizing Calculator uses a fixed screening model that multiplies connected load by a sizing factor to estimate capacity. While simple, understanding the math behind it is essential for early-stage planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The screening model is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generator Size (kW) = Connected Load (kW) × Sizing Factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the connected load is given in MW, first convert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Connected Load (kW) = Connected Load (MW) × 1000
Generator Size (kW) = Connected Load (kW) × Sizing Factor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Connected Load&lt;/strong&gt; is the total running electrical load in kW. It represents the steady-state demand that the generator must supply continuously. This is not the same as the nameplate rating of all equipment; it's the load actually running at a given time. The &lt;strong&gt;Sizing Factor&lt;/strong&gt; is an allowance multiplier (dimensionless, typically &amp;gt; 1) that accounts for future growth, voltage drop, and non-linear loads. It is not a safety factor for starting transients—that's a common misconception. The generator size output is in kW, which for preliminary screening is assumed to be the prime power rating. The formula is intentionally linear: doubling the load doubles the generator size, making it easy to scale but also easy to misapply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Industrial Facility
&lt;/h2&gt;

&lt;p&gt;A small industrial facility has a connected running load of 250 kW. The sizing factor chosen is 1.25 to allow for a future expansion.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generator Size = 250 kW × 1.25 = 312.5 kW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The calculated generator size is 312.5 kW. According to the Result Intelligence System, this falls into the STANDARD category (typically 100–500 kW). The engineer would then check motor starting requirements, which might push the selection to a larger unit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Large Commercial Building
&lt;/h2&gt;

&lt;p&gt;A commercial building has a connected load of 1.2 MW. Convert to kW: 1.2 MW × 1000 = 1200 kW. Using a sizing factor of 1.15 (conservative for commercial):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generator Size = 1200 kW × 1.15 = 1380 kW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This 1380 kW generator is classified as LARGE (500–2000 kW). The engineer must verify block-load acceptance, as the building may have large HVAC motors starting simultaneously.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, motor starting current is not captured by the sizing factor. A 100 kW motor can require 600 kVA for starting, which may dictate generator size even if running load is low. Second, the sizing factor should vary by application: standby generators can use a lower factor than prime power units because overload capability differs. Third, load sequencing—starting loads in a specific order—can reduce the required generator size, but the screening model assumes all loads run simultaneously. Experienced engineers use this calculator as a quick check, not a final design tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Estimate your own generator size quickly with the &lt;a href="https://calcengineer.com/electrical/generator-sizing-calculator" rel="noopener noreferrer"&gt;Generator Sizing Calculator&lt;/a&gt; to get a preliminary capacity and category classification.&lt;/p&gt;

</description>
      <category>generatorsizing</category>
      <category>electricalengineering</category>
      <category>preliminarygeneratorcapacity</category>
      <category>runningloadscreening</category>
    </item>
    <item>
      <title>The Engineering Math Behind Generator Fuel Consumption: Screening Hourly Fuel-Use Rate for Preliminary Planning</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Mon, 27 Apr 2026 19:01:44 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-generator-fuel-consumption-screening-hourly-fuel-use-rate-for-1ia7</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-generator-fuel-consumption-screening-hourly-fuel-use-rate-for-1ia7</guid>
      <description>&lt;p&gt;A 1000 kW diesel generator running at 75% load for 24 hours consumes about 4,500 liters of fuel—enough to fill a small swimming pool. That's 1.6 million liters a year for continuous operation, costing over a million dollars. Getting this estimate wrong by even 10% can mean tens of thousands in unnecessary fuel costs or emergency refueling.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fuel Consumption (L/h) = Generator Rating (kW) × Load Fraction × Fuel Factor (L/kWh)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each term has a clear physical meaning. &lt;strong&gt;Generator Rating&lt;/strong&gt; is the nameplate maximum electrical output, typically in kW. This is the machine's design limit, but actual operation rarely runs at 100% continuously. &lt;strong&gt;Load Fraction&lt;/strong&gt; (0 to 1) represents the fraction of that rating the generator actually supplies—the real operating point. &lt;strong&gt;Fuel Factor&lt;/strong&gt; is an empirical constant that characterizes the engine's efficiency: how many liters of fuel per kWh of electrical output it consumes. For diesel generators, a typical fuel factor is around 0.25 L/kWh at full load, but it varies with engine type, fuel quality, and load level.&lt;/p&gt;

&lt;p&gt;The formula is deliberately linear: it multiplies the operating output (Rating × Load Fraction) by the fuel factor. This is a screening model, not a precise simulation. It assumes constant efficiency across load, which is a simplification. The WHY: in early planning, you often don't have detailed engine performance curves. This formula gives a quick, conservative estimate based on a fixed factor, allowing you to size fuel tanks and logistics without overcomplicating.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 500 kW natural gas generator for a data center, expected to run at 80% load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inputs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generator Rating: 500 kW&lt;/li&gt;
&lt;li&gt;Load Fraction: 0.80&lt;/li&gt;
&lt;li&gt;Fuel Factor: 0.30 L/kWh (natural gas)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Calculate operating electrical output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Operating Output = 500 kW × 0.80 = 400 kW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Calculate fuel consumption:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fuel Consumption = 400 kW × 0.30 L/kWh = 120 L/h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt; The generator will burn 120 liters of natural gas equivalent per hour. For a 24-hour backup run, you'd need at least 2,880 liters of fuel storage, plus safety margin.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 200 kW diesel generator for a construction site, operating at 40% load during normal work hours.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inputs:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generator Rating: 200 kW&lt;/li&gt;
&lt;li&gt;Load Fraction: 0.40&lt;/li&gt;
&lt;li&gt;Fuel Factor: 0.25 L/kWh (diesel)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Operating output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Operating Output = 200 kW × 0.40 = 80 kW
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Fuel consumption:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fuel Consumption = 80 kW × 0.25 L/kWh = 20 L/h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt; At 20 L/h, over an 8-hour shift you'll use 160 liters. Compare that to the nameplate rating: if you sized storage based on full load (200 kW → 50 L/h), you'd overestimate by 2.5 times. Using the actual load fraction saves money on tank sizing and fuel purchases.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, fuel factors are not universal. A diesel generator at 100% load might have a factor of 0.25 L/kWh, but at 25% load it could be 0.35 L/kWh or higher due to lower efficiency. The linear model underestimates consumption at low loads. Second, fuel consumption includes parasitic loads (cooling fans, fuel pumps) that don't scale with electrical output. These add a fixed overhead that the screening model ignores. Third, operating altitude and temperature affect engine efficiency and fuel factor. At high altitudes, air density drops, requiring more fuel per kWh. The simple formula doesn't account for this; always derate for altitude.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/electrical/generator-fuel-consumption" rel="noopener noreferrer"&gt;Generator Fuel Consumption Calculator&lt;/a&gt; to quickly screen fuel use for your generator projects. It provides instant estimates in both metric and imperial units, with built-in intelligence to flag whether your consumption is LOW, NORMAL, HIGH, or VERY HIGH based on typical ranges.&lt;/p&gt;

</description>
      <category>generatorfuelconsumption</category>
      <category>dieselgeneratorfueluse</category>
      <category>generatorfuelplanning</category>
      <category>generatorsizing</category>
    </item>
    <item>
      <title>The Engineering Math Behind Fume Hood Face Velocity: Calculating Laboratory Hood Performance with Airflow and Sash Opening</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Mon, 27 Apr 2026 13:02:16 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-fume-hood-face-velocity-calculating-laboratory-hood-performance-with-h73</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-fume-hood-face-velocity-calculating-laboratory-hood-performance-with-h73</guid>
      <description>&lt;p&gt;A fume hood operating at 60 FPM may still allow 20% of contaminants to escape into the lab — that's a fact from a NIOSH/CDC tracer study. Yet many labs rely on a single velocity measurement without accounting for sash opening, leading to false confidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;Face velocity is the average speed of air entering the hood opening. It's calculated as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Imperial:
Face Velocity (FPM) = Exhaust Airflow (CFM) / Opening Area (ft²)

Metric:
Face Velocity (m/s) = Exhaust Airflow (m³/s) / Opening Area (m²)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Opening Area&lt;/strong&gt; = Width × Height (both in consistent units). For a hood with sash partially open, this is the actual open area — not the total hood face. The physics is simple: airflow divided by area. But each term carries engineering significance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exhaust Airflow&lt;/strong&gt; is the volumetric flow rate the exhaust system pulls. In metric, it's often given in m³/h, which must be converted to m³/s (divide by 3600). The hood's ability to capture contaminants depends on maintaining adequate velocity across the open area.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why the formula works&lt;/strong&gt;: It's a direct application of the continuity equation for incompressible flow. The hood acts as a duct; the average velocity is the flow rate per unit area. This is a screening metric, not a guarantee of containment — ASHRAE Standard 110 is the full performance test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: A 6 ft wide, 2.5 ft tall sash opening with 600 CFM exhaust.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Compute opening area&lt;/em&gt;&lt;br&gt;
Area = 6 ft × 2.5 ft = 15.0 ft²&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Compute face velocity&lt;/em&gt;&lt;br&gt;
Face Velocity = 600 CFM / 15.0 ft² = 40.0 FPM&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Interpretation&lt;/em&gt;: 40 FPM is below typical control velocities (80-100 FPM). This is a low face velocity — likely inadequate for safe containment. The engineer should increase exhaust airflow or reduce sash opening.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: A 1.2 m wide, 0.8 m high sash opening with 0.5 m³/s exhaust (converted from 1800 m³/h).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 1: Compute opening area&lt;/em&gt;&lt;br&gt;
Area = 1.2 m × 0.8 m = 0.96 m²&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Step 2: Compute face velocity&lt;/em&gt;&lt;br&gt;
Face Velocity = 0.5 m³/s / 0.96 m² ≈ 0.521 m/s&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Convert to FPM for comparison&lt;/em&gt;: 0.521 m/s × 196.85 ≈ 102.5 FPM&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Interpretation&lt;/em&gt;: This velocity is within the 80-100 FPM range recommended by NIOSH/CDC. It's a practical face velocity, but the engineer must still consider room drafts and hood design.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Face velocity alone is not a safety metric.&lt;/strong&gt; ASHRAE 110 testing reveals that even at 100 FPM, leakage can occur due to turbulence. Use face velocity as a screening tool, not a pass/fail criterion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Sash position changes everything.&lt;/strong&gt; A partially closed sash reduces opening area, increasing face velocity for the same airflow. But a closed sash can create dead zones. Always measure with the sash at the typical operating position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Room airflow patterns matter more than you think.&lt;/strong&gt; Cross-drafts from HVAC diffusers or open doors can disrupt the hood's capture ability. NIOSH/CDC studies show that at 60 FPM, room AC operation caused significant leakage. At 100 FPM, leakage was eliminated regardless of AC.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Estimate face velocity instantly with the &lt;a href="https://calcengineer.com/hvac/fume-hood-face-velocity-calculator" rel="noopener noreferrer"&gt;Fume Hood Face Velocity Calculator&lt;/a&gt;. Input your exhaust airflow and sash dimensions to get face velocity and opening area — then compare against the recommended ranges.&lt;/p&gt;

</description>
      <category>fumehoodfacevelocity</category>
      <category>laboratoryventilation</category>
      <category>ashrae110</category>
      <category>hoodcontainmentscreening</category>
    </item>
    <item>
      <title>The Engineering Math Behind Fuel Oil Tank Sizing: Consumption-Based Storage for Oil-Fired HVAC Systems</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Mon, 27 Apr 2026 01:02:02 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-fuel-oil-tank-sizing-consumption-based-storage-for-oil-fired-hvac-3ccg</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-fuel-oil-tank-sizing-consumption-based-storage-for-oil-fired-hvac-3ccg</guid>
      <description>&lt;p&gt;A 300,000 BTU/h oil burner consumes roughly 2.1 gallons of fuel per hour. If you size its tank based only on the burner nameplate without considering how many hours it must run during a winter storm, you could run out of heat in 24 hours.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The calculation consists of two simple equations, but each term carries physical meaning and practical constraints.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;usableFuelVolume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;fuelConsumptionRate&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;storageDuration&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;recommendedTankVolume&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;usableFuelVolume&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;reserveMargin&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Fuel Consumption Rate&lt;/strong&gt; (gal/h or L/h) is the actual firing rate of the oil burner under load. This is not the nozzle rating alone; it includes the burner efficiency and the heat load of the building. For preliminary sizing, use the burner nameplate rate, but for final design, adjust based on the building's peak heat loss.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage Duration&lt;/strong&gt; (hours or days) is the required autonomy — how long the system must operate without refueling. This is a design input driven by code, client requirement, or logistics (e.g., 7 days for remote sites). If entered in days, the calculator converts to hours (×24).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reserve Margin&lt;/strong&gt; (%) is the extra capacity above the usable volume to avoid running the tank dry, account for sludge, and allow for measurement uncertainty. NFPA 31 recommends a minimum 10% reserve for aboveground tanks, but many engineers use 15–20%.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why each term is there:&lt;/strong&gt; The usable volume is the pure consumption volume. The reserve margin converts that into a nominal tank size because tanks are manufactured in discrete sizes and should never be completely drained. The &lt;code&gt;round( ... * 100 ) / 100&lt;/code&gt; ensures the result is practical (two decimal places for gallons or liters).&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Residential Backup
&lt;/h2&gt;

&lt;p&gt;A home has a 0.75 gal/h oil burner and wants 5 days of runtime with a 15% reserve margin.&lt;/p&gt;

&lt;p&gt;Storage duration in hours: 5 days × 24 h/day = 120 hours&lt;/p&gt;

&lt;p&gt;Usable fuel volume: 0.75 gal/h × 120 h = 90.00 gallons&lt;/p&gt;

&lt;p&gt;Recommended tank volume: 90.00 × (1 + 15/100) = 90.00 × 1.15 = 103.50 gallons&lt;/p&gt;

&lt;p&gt;Rounding to a standard tank size, you would select a 110-gallon tank. The calculator outputs 103.50, which is the minimum nominal volume needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Commercial Boiler Plant
&lt;/h2&gt;

&lt;p&gt;A commercial building has two oil-fired boilers, each rated at 5 L/h, but only one runs at a time. Total consumption rate = 5 L/h. Required storage is 3 days (72 hours) with a 20% reserve margin.&lt;/p&gt;

&lt;p&gt;Usable fuel volume: 5 L/h × 72 h = 360.00 L&lt;/p&gt;

&lt;p&gt;Recommended tank volume: 360.00 × 1.20 = 432.00 L&lt;/p&gt;

&lt;p&gt;A standard 500 L tank would be selected. Note that if both boilers could run simultaneously, the consumption rate would double to 10 L/h, requiring 720 L usable and 864 L recommended — a much larger tank.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, the distinction between usable volume and nominal tank volume is critical. A 1000-gallon tank cannot safely provide 1000 gallons of usable fuel; sludge, water accumulation, and the pickup tube height reduce the drawable volume by 5–10%. Always apply the reserve margin to account for this.&lt;/p&gt;

&lt;p&gt;Second, day tanks and main tanks are not interchangeable. A day tank is a small tank (typically 1–2 hours of fuel) located near the burner to provide a steady supply, while the main tank stores bulk fuel. The calculator sizes the main tank, not the day tank. NFPA 31 and NFPA 37 have specific requirements for each.&lt;/p&gt;

&lt;p&gt;Third, very large storage volumes (&amp;gt;10,000 gallons) trigger additional design considerations: secondary containment, fire protection, and special tank listings (UL 142, UL 2085). The simple formula still holds, but the engineering effort multiplies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/hvac/fuel-oil-tank-sizing" rel="noopener noreferrer"&gt;Fuel Oil Tank Sizing Calculator&lt;/a&gt; to quickly size tanks for your projects. Input your consumption rate, required runtime, and reserve margin to get the recommended tank volume.&lt;/p&gt;

</description>
      <category>fueloiltanksizing</category>
      <category>fuelstoragecalculation</category>
      <category>oilfiredhvac</category>
      <category>nfpa31</category>
    </item>
    <item>
      <title>The Engineering Math Behind Flash Tank Sizing: Vapor Volumetric Flow Method</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Sun, 26 Apr 2026 19:02:04 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-flash-tank-sizing-vapor-volumetric-flow-method-5nm</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-flash-tank-sizing-vapor-volumetric-flow-method-5nm</guid>
      <description>&lt;p&gt;A 10% drop in vapor density can increase the required flash tank volume by over 11%. In low-temperature refrigeration, where ammonia vapor density at -30°F is only about 0.06 lb/ft³, a seemingly small change in operating pressure can push vessel size beyond standard catalog offerings, forcing custom fabrication and weeks of delay.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The flash tank sizing model is built on three equations that convert process conditions into a vessel volume.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Q_vapor = m_flash / ρ_vapor
V_min = Q_vapor * t_residence
V_rec = V_min * DF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;m_flash&lt;/code&gt; (flash gas mass flow):&lt;/strong&gt; This is the mass flow rate of vapor formed when high-pressure liquid flashes to a lower pressure. Only the vapor portion matters; liquid carryover is handled by other design rules.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;ρ_vapor&lt;/code&gt; (vapor density):&lt;/strong&gt; Density at the flash drum pressure and temperature. It converts mass flow into volumetric flow because vessel sizing is volume-driven. Lower density = larger volume for the same mass.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;Q_vapor&lt;/code&gt; (vapor volumetric flow):&lt;/strong&gt; The actual volume of vapor per second that must pass through the tank. This is the fundamental sizing basis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;t_residence&lt;/code&gt; (residence time):&lt;/strong&gt; The time the vapor spends in the vessel to allow liquid droplets to settle. Industry standards typically range from 1 to 600 seconds. Longer times increase volume directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;V_min&lt;/code&gt; (minimum required volume):&lt;/strong&gt; The smallest vessel that can provide the required residence time at the given flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;DF&lt;/code&gt; (design factor):&lt;/strong&gt; A safety multiplier (1.0 to 10.0) to account for uncertainties, turndown, or future capacity. A factor of 1.25 means the recommended volume is 25% above minimum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;V_rec&lt;/code&gt; (recommended flash tank volume):&lt;/strong&gt; The volume you should specify.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;designMarginRatio&lt;/code&gt;:&lt;/strong&gt; Always equals DF — it's a check value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1: Medium-Temperature R-404A System
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Given:&lt;/strong&gt; m_flash = 0.5 kg/s, ρ_vapor = 8.5 kg/m³, t_residence = 120 s, DF = 1.3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Q_vapor = 0.5 / 8.5 = 0.05882 m³/s&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; V_min = 0.05882 * 120 = 7.059 m³&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; V_rec = 7.059 * 1.3 = 9.176 m³&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design Margin Ratio:&lt;/strong&gt; 9.176 / 7.059 = 1.3&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt; A vessel of about 9.2 m³ is recommended. Standard tanks often come in 8 m³ or 10 m³ — the engineer would select the next standard size up (10 m³) or request a custom vessel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2: Low-Temperature Ammonia System
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Given:&lt;/strong&gt; m_flash = 0.2 lb/s, ρ_vapor = 0.06 lb/ft³, t_residence = 300 s, DF = 1.5&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Q_vapor = 0.2 / 0.06 = 3.333 ft³/s&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; V_min = 3.333 * 300 = 1000 ft³&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; V_rec = 1000 * 1.5 = 1500 ft³&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design Margin Ratio:&lt;/strong&gt; 1500 / 1000 = 1.5&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interpretation:&lt;/strong&gt; At low density, the required volume balloons. A 1500 ft³ tank is large — about 42 m³. This might dictate a horizontal vessel due to shipping height limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Vapor density at actual flash conditions, not supply conditions.&lt;/strong&gt; Engineers sometimes use density from the high-pressure side or from a standard table at a different temperature. A 10°F error in saturation temperature can change density by 15-20%, directly affecting volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Residence time selection for two-phase flow.&lt;/strong&gt; The standard residence time assumes vapor only. If liquid carryover is expected, residence time should be increased or a mist eliminator added. The calculator doesn't account for liquid load — that's an engineering judgment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The design factor is not a substitute for accurate inputs.&lt;/strong&gt; A high DF (e.g., 5.0) may mask errors in m_flash or ρ_vapor, but it also over-sizes the vessel, increasing cost. It's better to refine inputs than to use a large fudge factor.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/hvac/flash-tank-sizing" rel="noopener noreferrer"&gt;Flash Tank Sizing Calculator&lt;/a&gt; to quickly iterate over design scenarios and see how changes in vapor density or residence time affect recommended vessel volume.&lt;/p&gt;

</description>
      <category>flashtanksizing</category>
      <category>refrigerationengineering</category>
      <category>vaporliquidseparation</category>
      <category>ashraerefrigeration</category>
    </item>
    <item>
      <title>The Engineering Math Behind CT Burden: How Secondary Circuit Resistance Squared Affects Protection Accuracy</title>
      <dc:creator>Evgenii Konkin</dc:creator>
      <pubDate>Sun, 26 Apr 2026 13:01:26 +0000</pubDate>
      <link>https://dev.to/evgeniikonkin/the-engineering-math-behind-ct-burden-how-secondary-circuit-resistance-squared-affects-protection-3108</link>
      <guid>https://dev.to/evgeniikonkin/the-engineering-math-behind-ct-burden-how-secondary-circuit-resistance-squared-affects-protection-3108</guid>
      <description>&lt;p&gt;A 5 A secondary current with just 1 Ω of lead resistance imposes 25 VA of burden from resistance alone — enough to saturate many protection-class CTs. This nonlinear relationship is the single most overlooked factor in CT secondary circuit design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Formula
&lt;/h2&gt;

&lt;p&gt;The CT burden calculation combines two sources: resistance-based burden from wiring and the connected device burden. The total burden in volt-amperes (VA) is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;burdenResistance = I² × R_total
ctBurden = burdenResistance + deviceBurden
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I&lt;/strong&gt; = CT secondary current in amperes (typically 1 A or 5 A)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;R_total&lt;/strong&gt; = total secondary loop resistance in ohms, including both conductors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;deviceBurden&lt;/strong&gt; = sum of burdens from connected meters, relays, and instruments in VA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The resistance term is squared because power dissipated in a resistor follows P = I²R. Doubling the secondary current quadruples the resistive burden. For a 5 A system, the burden is 25 times higher than for a 1 A system at the same resistance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 1
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 5 A secondary CT with 200 ft (one-way) of #10 AWG copper wire (0.001 Ω/ft) and a connected relay burden of 0.5 VA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Calculate total loop resistance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R_total = 0.001 Ω/ft × 2 × 200 ft = 0.4 Ω
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Calculate resistance-based burden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;burdenResistance = (5 A)² × 0.4 Ω = 25 × 0.4 = 10 VA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Add device burden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ctBurden = 10 VA + 0.5 VA = 10.5 VA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 10.5 VA — classified as HIGH by the Result Intelligence System (RIS). This would likely exceed a typical C100 CT rating, indicating the need for larger conductors or a higher-rated CT.&lt;/p&gt;

&lt;h2&gt;
  
  
  Worked Example 2
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A 1 A secondary CT with 50 m (one-way) of 2.5 mm² copper wire (0.007 Ω/m) and a connected meter burden of 0.2 VA.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Calculate total loop resistance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;R_total = 0.007 Ω/m × 2 × 50 m = 0.7 Ω
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Calculate resistance-based burden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;burdenResistance = (1 A)² × 0.7 Ω = 1 × 0.7 = 0.7 VA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Add device burden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ctBurden = 0.7 VA + 0.2 VA = 0.9 VA
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 0.9 VA — classified as LOW. This is well within most CT ratings. Note how the 1 A secondary dramatically reduces resistive burden compared to Example 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Engineers Often Miss
&lt;/h2&gt;

&lt;p&gt;First, many engineers use one-way lead length instead of total loop length, underestimating resistance by half. Always double the one-way distance.&lt;/p&gt;

&lt;p&gt;Second, resistance-based burden scales with the square of secondary current. A 5 A system is 25 times more sensitive to lead resistance than a 1 A system. When long wiring runs are unavoidable, consider using 1 A secondary CTs.&lt;/p&gt;

&lt;p&gt;Third, connected device burden is often omitted from the calculation, especially when multiple devices share the same CT circuit. Always sum all burdens from manufacturers' datasheets.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the Calculator
&lt;/h2&gt;

&lt;p&gt;Use the &lt;a href="https://calcengineer.com/electrical/ct-burden-calculator" rel="noopener noreferrer"&gt;CT Burden Calculator&lt;/a&gt; to quickly screen your secondary circuit designs. Enter your lead length or direct resistance, secondary current, and device burden to get an instant result with RIS classification.&lt;/p&gt;

</description>
      <category>ctburden</category>
      <category>currenttransformerburden</category>
      <category>secondarycircuit</category>
      <category>protectionaccuracy</category>
    </item>
  </channel>
</rss>
