<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>psychrometrics Archives - Chemical Engineering Site</title>
	<atom:link href="https://chemicalengineeringsite.in/tag/psychrometrics/feed/" rel="self" type="application/rss+xml" />
	<link>https://chemicalengineeringsite.in/tag/psychrometrics/</link>
	<description>For Chemical Engineers</description>
	<lastBuildDate>Mon, 15 Sep 2025 15:05:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Dew Point &#038; Psychrometrics Calculator</title>
		<link>https://chemicalengineeringsite.in/dew-point-psychrometrics-calculator/</link>
		
		<dc:creator><![CDATA[chemicalengineeringsite]]></dc:creator>
		<pubDate>Mon, 15 Sep 2025 15:05:12 +0000</pubDate>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[air properties]]></category>
		<category><![CDATA[calculator]]></category>
		<category><![CDATA[chemical engineering]]></category>
		<category><![CDATA[dew point]]></category>
		<category><![CDATA[humidity]]></category>
		<category><![CDATA[HVAC]]></category>
		<category><![CDATA[moist air]]></category>
		<category><![CDATA[psychrometrics]]></category>
		<guid isPermaLink="false">https://chemicalengineeringsite.in/?p=4093</guid>

					<description><![CDATA[<p>Dew Point &#038; Psychrometrics Calculator Enter dry-bulb temperature, relative humidity, and pressure. Calculates saturation vapor pressure, vapor/air partial pressures, humidity ratio, dry-air density, dew point, and wet-bulb. Export to Excel with live formulas. Dry-bulb Temperature °C Relative Humidity % Atmospheric Pressure Pabaratm Calculate &#x1f4ca; Export Excel Reset Copy Saturation vapor pressure (at dry-bulb) – Pa [&#8230;]</p>
<p>The post <a href="https://chemicalengineeringsite.in/dew-point-psychrometrics-calculator/">Dew Point &amp; Psychrometrics Calculator</a> appeared first on <a href="https://chemicalengineeringsite.in">Chemical Engineering Site</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<!-- Dew Point & Psychrometrics Calculator + Excel Export (WP-friendly) -->
<div id="dpc" class="psc-card" role="region" aria-label="Dew Point &#038; Psychrometrics Calculator">
  <div class="psc-header">
    <h3 class="psc-title">Dew Point &#038; Psychrometrics Calculator</h3>
    <p class="psc-sub">Enter dry-bulb temperature, relative humidity, and pressure. Calculates saturation vapor pressure, vapor/air partial pressures, humidity ratio, dry-air density, dew point, and wet-bulb. Export to Excel with live formulas.</p>
  </div>

  <form class="psc-form" onsubmit="return false;">
    <div class="psc-grid">
      <label class="psc-field">
        <span>Dry-bulb Temperature</span>
        <div class="psc-inline">
          <input id="dpc-t" type="number" step="any" placeholder="e.g., 30" required />
          <span class="psc-unit">°C</span>
        </div>
      </label>

      <label class="psc-field">
        <span>Relative Humidity</span>
        <div class="psc-inline">
          <input id="dpc-rh" type="number" step="any" min="0" max="100" placeholder="e.g., 60" required />
          <span class="psc-unit">%</span>
        </div>
      </label>

      <label class="psc-field">
        <span>Atmospheric Pressure</span>
        <div class="psc-inline">
          <input id="dpc-p" type="number" step="any" min="0" placeholder="e.g., 101325" required />
          <select id="dpc-p-unit" aria-label="Pressure unit">
            <option value="Pa" selected>Pa</option>
            <option value="bar">bar</option>
            <option value="atm">atm</option>
          </select>
        </div>
      </label>
    </div>

    <div class="psc-actions">
      <button type="button" id="dpc-calc" class="psc-btn">Calculate</button>
      <button type="button" id="dpc-export" class="psc-btn psc-btn-ghost" title="Export Excel with formulas"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Export Excel</button>
      <button type="button" id="dpc-reset" class="psc-btn psc-btn-ghost">Reset</button>
      <button type="button" id="dpc-copy" class="psc-btn psc-btn-ghost" title="Copy results">Copy</button>
    </div>
  </form>

  <div class="psc-results" aria-live="polite">
    <div class="psc-result"><div class="psc-result-label">Saturation vapor pressure (at dry-bulb)</div><div class="psc-result-value"><span id="dpc-es">–</span> <span class="psc-unit">Pa</span></div></div>
    <div class="psc-result"><div class="psc-result-label">Partial pressure of water vapor</div><div class="psc-result-value"><span id="dpc-pv">–</span> <span class="psc-unit">Pa</span></div></div>
    <div class="psc-result"><div class="psc-result-label">Partial pressure of dry air</div><div class="psc-result-value"><span id="dpc-pda">–</span> <span class="psc-unit">Pa</span></div></div>
    <div class="psc-result"><div class="psc-result-label">Humidity ratio</div><div class="psc-result-value"><span id="dpc-w">–</span> <span class="psc-unit">kg/kg<sub>dry air</sub></span></div></div>
    <div class="psc-result"><div class="psc-result-label">Dry air density</div><div class="psc-result-value"><span id="dpc-rho">–</span> <span class="psc-unit">kg/m³</span></div></div>
    <div class="psc-result"><div class="psc-result-label">Dew point temperature</div><div class="psc-result-value"><span id="dpc-tdp">–</span> <span class="psc-unit">°C</span></div></div>
    <div class="psc-result"><div class="psc-result-label">Wet-bulb temperature (Stull)</div><div class="psc-result-value"><span id="dpc-twb">–</span> <span class="psc-unit">°C</span></div></div>
    <div id="dpc-note" class="psc-note"></div>
  </div>

  <details class="psc-details">
    <summary>Formula &#038; unit notes</summary>
    <ul>
      <li><strong>Saturation vapor pressure (Buck 1981; over water):</strong> <code>e_s(T) = 611.21 · EXP((18.678 − T/234.5) · (T/(257.14 + T)))</code> [Pa], T in °C.</li>
      <li><strong>Actual vapor pressure:</strong> <code>p_v = (RH/100) · e_s</code>.</li>
      <li><strong>Dry-air partial pressure:</strong> <code>p_da = p_total − p_v</code>.</li>
      <li><strong>Humidity ratio:</strong> <code>w = 0.621945 · p_v / p_da</code> (kg/kg dry air).</li>
      <li><strong>Dry-air density:</strong> <code>ρ_da = p_da / (R_da · (T+273.15))</code>, <code>R_da = 287.058</code> J·kg⁻¹·K⁻¹.</li>
      <li><strong>Dew point (inverse Buck/Magnus):</strong> <code>T_dp = (257.14·LN(p_v/611.21)) / (18.678 − LN(p_v/611.21))</code> [°C].</li>
      <li><strong>Wet-bulb (approximation):</strong> Stull (2011).</li>
    </ul>
  </details>

  <footer class="psc-footer">
    <small>Credit: <a href="https://chemicalengineeringsite.in/" target="_blank" rel="noopener">chemicalengineeringsite.in</a></small>
  </footer>
</div>

<style>
  /* Mirror Pump Specific Speed theme tokens & layout */
  .psc-card{--b:#e6eef6;--t:#0f172a;--muted:#475569;--a:#2563eb;--bg:#ffffff;max-width:860px;margin:1.25rem auto;padding:1.25rem;border:1px solid var(--b);border-radius:16px;background:var(--bg);box-shadow:0 6px 20px rgba(2,6,23,.06)}
  .psc-title{margin:.25rem 0;font-size:1.25rem;color:var(--t)}
  .psc-sub{margin:0;color:var(--muted)}
  .psc-form{margin-top:.75rem}
  .psc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  @media (max-width:860px){.psc-grid{grid-template-columns:1fr}}
  .psc-field{display:flex;flex-direction:column;gap:6px}
  .psc-field span{font-weight:600;color:var(--t)}
  .psc-inline{display:flex;gap:8px;align-items:center}
  .psc-field input,.psc-field select{width:100%;padding:.6rem .7rem;border:1px solid var(--b);border-radius:10px;background:#fff;color:var(--t)}
  .psc-unit{color:var(--muted)}
  .psc-actions{display:flex;gap:10px;margin-top:.75rem;flex-wrap:wrap}
  .psc-btn{border:1px solid var(--a);background:var(--a);color:#fff;border-radius:999px;padding:.55rem .9rem;font-weight:600;cursor:pointer}
  .psc-btn-ghost{background:#fff;color:var(--a)}
  .psc-results{margin-top:1rem;border-top:1px dashed var(--b);padding-top:.9rem}
  .psc-result{display:flex;justify-content:space-between;align-items:center;margin:.35rem 0}
  .psc-result-label{color:var(--muted)}
  .psc-result-value{font-size:1.1rem;font-weight:700;color:var(--t)}
  .psc-note{margin-top:.4rem;color:#b45309}
  .psc-details{margin-top:.6rem}
  .psc-footer{margin-top:.6rem;color:var(--muted)}
</style>

<!-- SheetJS for Excel export -->
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>

<script>
(function(){
  const $ = id => document.getElementById(id);
  const EL = {
    T: $('dpc-t'),
    RH: $('dpc-rh'),
    P: $('dpc-p'),
    Punit: $('dpc-p-unit'),
    btnCalc: $('dpc-calc'),
    btnReset: $('dpc-reset'),
    btnCopy: $('dpc-copy'),
    btnExport: $('dpc-export'),
    es: $('dpc-es'),
    pv: $('dpc-pv'),
    pda: $('dpc-pda'),
    w: $('dpc-w'),
    rho: $('dpc-rho'),
    tdp: $('dpc-tdp'),
    twb: $('dpc-twb'),
    note: $('dpc-note')
  };

  // --- Helpers ---
  function toPa(val, unit){
    const v = Number(val);
    if (!Number.isFinite(v)) return NaN;
    if (unit === 'Pa')  return v;
    if (unit === 'bar') return v * 100000;
    if (unit === 'atm') return v * 101325;
    return NaN;
  }
  function round(v, dp=2){
    if (!Number.isFinite(v)) return '–';
    const f = Math.pow(10, dp);
    return (Math.round(v * f) / f).toFixed(dp);
  }
  function clamp(x, a, b){ return Math.max(a, Math.min(b, x)); }

  // Buck (1981) saturation vapor pressure over water [Pa], T in °C
  function satPressureBuck(Tc){
    const T = Number(Tc);
    return 611.21 * Math.exp((18.678 - (T/234.5)) * (T / (257.14 + T)));
  }
  // Dew point from vapor pressure (inverse Buck/Magnus)
  function dewPointC(pvPa){
    const y = Math.log(pvPa / 611.21);
    return (257.14 * y) / (18.678 - y);
  }
  // Stull (2011) approximate wet-bulb (°C) from T(°C), RH(%)
  function wetBulbStull(Tc, RH){
    const rh = clamp(RH, 1, 100);
    const t1 = Tc * Math.atan(0.151977 * Math.sqrt(rh + 8.313659));
    const t2 = Math.atan(Tc + rh);
    const t3 = Math.atan(rh - 1.676331);
    const t4 = 0.00391838 * Math.pow(rh, 1.5) * Math.atan(0.023101 * rh);
    return t1 + t2 - t3 + t4 - 4.686035;
  }

  function calc(){
    const T  = Number(EL.T.value);
    const RH = Number(EL.RH.value);
    const P  = toPa(EL.P.value, EL.Punit.value);

    if (![T,RH,P].every(Number.isFinite) || P<=0 || RH<0 || RH>100){
      ['es','pv','pda','w','rho','tdp','twb'].forEach(k => EL[k].textContent = '–');
      EL.note.textContent = 'Enter valid inputs (0 ≤ RH ≤ 100, P > 0).';
      return;
    }

    const TK   = T + 273.15;
    const esPa = satPressureBuck(T);
    const pvPa = (RH/100) * esPa;
    const pdaPa= P - pvPa;
    if (pdaPa <= 0){
      ['es','pv','pda','w','rho','tdp','twb'].forEach(k => EL[k].textContent = '–');
      EL.note.textContent = 'Computed dry-air pressure is non-positive. Check inputs.';
      return;
    }

    const W    = 0.621945 * pvPa / pdaPa;     // kg/kg dry air
    const Rda  = 287.058;                     // J/kg-K
    const rho  = pdaPa / (Rda * TK);          // kg/m³
    const Tdp  = dewPointC(pvPa);
    const Twb  = wetBulbStull(T, RH);

    EL.es.textContent  = round(esPa, 2);
    EL.pv.textContent  = round(pvPa, 2);
    EL.pda.textContent = round(pdaPa, 2);
    EL.w.textContent   = (Number.isFinite(W)? W.toFixed(6) : '–');
    EL.rho.textContent = round(rho, 4);
    EL.tdp.textContent = round(Tdp, 2);
    EL.twb.textContent = round(Twb, 2);

    EL.note.textContent = '';
    // Save state for Excel export
    window.__dpc_state = { T, RH, P_in: Number(EL.P.value), Punit: EL.Punit.value };
  }

  function reset(){
    EL.T.value = '';
    EL.RH.value = '';
    EL.P.value = '';
    EL.Punit.value = 'Pa';
    ['es','pv','pda','w','rho','tdp','twb'].forEach(k => EL[k].textContent = '–');
    EL.note.textContent = '';
    window.__dpc_state = null;
  }

  function copyResults(){
    const txt = `Saturation vapor pressure (Pa): ${EL.es.textContent}
Partial pressure of water vapor (Pa): ${EL.pv.textContent}
Partial pressure of dry air (Pa): ${EL.pda.textContent}
Humidity ratio (kg/kg dry air): ${EL.w.textContent}
Dry air density (kg/m³): ${EL.rho.textContent}
Dew point (°C): ${EL.tdp.textContent}
Wet-bulb (°C): ${EL.twb.textContent}`;
    navigator.clipboard?.writeText(txt).then(()=>{
      EL.note.style.color = '#16a34a';
      EL.note.textContent = 'Results copied to clipboard.';
      setTimeout(()=>{ EL.note.textContent=''; EL.note.style.color=''; }, 1600);
    }).catch(()=>{
      EL.note.style.color = '#b45309';
      EL.note.textContent = 'Copy failed. You can select and copy manually.';
    });
  }

  // ---- Excel export with corrected cell positions (B7, B13, B14, B15) ----
  function exportExcel(){
    const s = window.__dpc_state || {};
    const data = [
      ['Dew Point & Psychrometrics Calculator','','','',''],
      ['Inputs','','','',''],
      ['Dry-bulb T (°C)', s.T ?? '', '', '', ''],
      ['Relative Humidity (%)', s.RH ?? '', '', '', ''],
      ['Pressure (value)', s.P_in ?? '', 'Unit', s.Punit ?? 'Pa', 'Pa/bar/atm'],
      ['','','','',''],
      // Place conversion directly at row 7 so Pressure in Pa is B7
      ['Pressure in Pa', {t:'n', f:'IFERROR(B5*IF(D5="Pa",1,IF(D5="bar",100000,IF(D5="atm",101325,""))),"")'}, '', '', ''],
      ['','','','',''],
      ['Outputs','Value','Unit','Formula (Excel)','Notes'],
      // B10
      ['Saturation vapor pressure', {t:'n', f:'IFERROR(611.21*EXP((18.678-(B3/234.5))*(B3/(257.14+B3))),"")'}, 'Pa', 'Buck (1981)', 'at dry-bulb'],
      // B11
      ['Partial pressure of water vapor', {t:'n', f:'IFERROR((B4/100)*B10,"")'}, 'Pa', 'RH × e_s', ''],
      // B12
      ['Partial pressure of dry air', {t:'n', f:'IFERROR(B7-B11,"")'}, 'Pa', 'P - p_v', ''],
      // B13
      ['Humidity ratio', {t:'n', f:'IF(OR(B12<=0,B11<=0),"",0.621945*B11/B12)'}, 'kg/kg_dry', '0.621945*p_v/p_da', ''],
      // B14
      ['Dry air density', {t:'n', f:'IF(B12<=0,"",B12/(287.058*(B3+273.15)))'}, 'kg/m^3', 'p_da/(R*T)', 'R_da=287.058'],
      // B15
      ['Dew point', {t:'n', f:'IF(B11<=0,"",(257.14*LN(B11/611.21))/(18.678-LN(B11/611.21)))'}, '°C', 'inverse Buck/Magnus', ''],
      // B16
      ['Wet-bulb (Stull approx.)', {t:'n', f:'IF(B4<=0,"",B3*ATAN(0.151977*SQRT(B4+8.313659)) + ATAN(B3+B4) - ATAN(B4-1.676331) + 0.00391838*POWER(B4,1.5)*ATAN(0.023101*B4) - 4.686035)'}, '°C', 'Stull (2011)', 'sea-level approx'],
      ['','','','',''],
      ['Source: chemicalengineering site.in','','','','']
    ];

    const ws = XLSX.utils.aoa_to_sheet(data);
    ws['!cols'] = [{wch:34},{wch:18},{wch:12},{wch:30},{wch:28}];

    // Clickable source
    const srcRow = data.length;
    ws['A'+srcRow] = { t:'s', v:'Source: chemicalengineeringsite.in', l:{ Target:'https://chemicalengineeringsite.in/' } };

    // Keep headers visible
    ws['!freeze'] = { xSplit: 1, ySplit: 9 };

    const wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, ws, 'Psychrometrics');

    const ts = new Date().toISOString().slice(0,19).replace(/[:T]/g,'-');
    XLSX.writeFile(wb, `dewpoint_psychrometrics_${ts}.xlsx`);
  }

  // Wire up
  EL.btnCalc.addEventListener('click', calc);
  EL.btnReset.addEventListener('click', reset);
  EL.btnCopy.addEventListener('click', copyResults);
  EL.btnExport.addEventListener('click', exportExcel);

  // Auto-calc on Enter
  ['dpc-t','dpc-rh','dpc-p'].forEach(id=>{
    document.getElementById(id).addEventListener('keydown', e=>{
      if (e.key === 'Enter'){ e.preventDefault(); calc(); }
    });
  });

  // Defaults for a quick try
  EL.T.value = '30'; EL.RH.value = '60'; EL.P.value = '101325'; EL.Punit.value = 'Pa';
})();
</script>

<p>The post <a href="https://chemicalengineeringsite.in/dew-point-psychrometrics-calculator/">Dew Point &amp; Psychrometrics Calculator</a> appeared first on <a href="https://chemicalengineeringsite.in">Chemical Engineering Site</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
