<?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>fluid viscosity Archives - Chemical Engineering Site</title>
	<atom:link href="https://chemicalengineeringsite.in/tag/fluid-viscosity/feed/" rel="self" type="application/rss+xml" />
	<link>https://chemicalengineeringsite.in/tag/fluid-viscosity/</link>
	<description>For Chemical Engineers</description>
	<lastBuildDate>Tue, 23 Sep 2025 14:00:01 +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>Reynolds Number Calculator for Pipe Flow</title>
		<link>https://chemicalengineeringsite.in/reynolds-number-calculator-for-pipe-flow/</link>
					<comments>https://chemicalengineeringsite.in/reynolds-number-calculator-for-pipe-flow/#respond</comments>
		
		<dc:creator><![CDATA[chemicalengineeringsite]]></dc:creator>
		<pubDate>Tue, 23 Sep 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[Calculators]]></category>
		<category><![CDATA[Dimensionless Number]]></category>
		<category><![CDATA[flow regime]]></category>
		<category><![CDATA[fluid density]]></category>
		<category><![CDATA[fluid flow calculator]]></category>
		<category><![CDATA[fluid velocity]]></category>
		<category><![CDATA[fluid viscosity]]></category>
		<category><![CDATA[Keywords: Reynolds number]]></category>
		<category><![CDATA[Laminar Flow]]></category>
		<category><![CDATA[pipe flow]]></category>
		<category><![CDATA[Reynolds number]]></category>
		<category><![CDATA[turbulent flow]]></category>
		<category><![CDATA[volumetric flow rate]]></category>
		<guid isPermaLink="false">https://chemicalengineeringsite.in/?p=3979</guid>

					<description><![CDATA[<p>Reynolds Number Calculator — Pipe Flow Enter pipe size and either velocity or flow. Provide viscosity (dynamic or kinematic) and, if needed, density/SG. Calculates velocity, Reynolds number, and flow regime. Export to Excel — changing inputs there updates outputs automatically. Velocity input By Velocity By Volumetric Flow Viscosity input Dynamic μ Kinematic ν Pipe Diameter [&#8230;]</p>
<p>The post <a href="https://chemicalengineeringsite.in/reynolds-number-calculator-for-pipe-flow/">Reynolds Number Calculator for Pipe Flow</a> appeared first on <a href="https://chemicalengineeringsite.in">Chemical Engineering Site</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p></p>



<!-- Reynolds Number Calculator for Pipe Flow with Excel Export (now writes real formulas into Value column) -->
<div id="rnc" class="ssc-card" role="region" aria-label="Reynolds Number Calculator for Pipe Flow">
  <div class="ssc-header">
    <h3 class="ssc-title">Reynolds Number Calculator — Pipe Flow</h3>
    <p class="ssc-sub">Enter pipe size and either velocity or flow. Provide viscosity (dynamic or kinematic) and, if needed, density/SG. Calculates velocity, Reynolds number, and flow regime. Export to Excel — changing inputs there updates outputs automatically.</p>
  </div>

  <form class="ssc-form" onsubmit="return false;">
    <fieldset class="ssc-fieldset">
      <legend>Velocity input</legend>
      <div class="ssc-inline">
        <label class="ssc-radio"><input type="radio" name="rnc-vmode" value="V" checked/> <span>By Velocity</span></label>
        <label class="ssc-radio"><input type="radio" name="rnc-vmode" value="Q"/> <span>By Volumetric Flow</span></label>
      </div>
    </fieldset>

    <fieldset class="ssc-fieldset">
      <legend>Viscosity input</legend>
      <div class="ssc-inline">
        <label class="ssc-radio"><input type="radio" name="rnc-mmode" value="MU" checked/> <span>Dynamic μ</span></label>
        <label class="ssc-radio"><input type="radio" name="rnc-mmode" value="NU"/> <span>Kinematic ν</span></label>
      </div>
    </fieldset>

    <div class="ssc-grid">
      <label class="ssc-field">
        <span>Pipe Diameter</span>
        <div class="ssc-inline">
          <input id="rnc-D" type="number" step="any" placeholder="e.g., 100" />
          <select id="rnc-Dunit" aria-label="Diameter unit">
            <option value="mm">mm</option>
            <option value="m">m</option>
            <option value="in">inch</option>
          </select>
        </div>
        <small class="ssc-hint">Positive number. Typical range: 5–3000 mm.</small>
      </label>

      <div id="rnc-Vbox" class="ssc-field">
        <span>Velocity</span>
        <div class="ssc-inline">
          <input id="rnc-V" type="number" step="any" placeholder="e.g., 1.5" />
          <select id="rnc-Vunit" aria-label="Velocity unit">
            <option value="m/s">m/s</option>
            <option value="ft/s">ft/s</option>
          </select>
        </div>
        <small class="ssc-hint">Use this OR enter Flow (then velocity is computed).</small>
      </div>

      <div id="rnc-Qbox" class="ssc-field" style="display:none">
        <span>Volumetric Flow</span>
        <div class="ssc-inline">
          <input id="rnc-Q" type="number" step="any" placeholder="e.g., 50" />
          <select id="rnc-Qunit" aria-label="Flow unit">
            <option value="m3/h">m³/h</option>
            <option value="m3/s">m³/s</option>
            <option value="L/s">L/s</option>
            <option value="gpm">US gpm</option>
          </select>
        </div>
        <small class="ssc-hint">Flow + Diameter → Velocity.</small>
      </div>

      <div id="rnc-MUbox" class="ssc-field">
        <span>Dynamic Viscosity μ</span>
        <div class="ssc-inline">
          <input id="rnc-MU" type="number" step="any" placeholder="e.g., 1" />
          <select id="rnc-MUunit" aria-label="Dynamic viscosity unit">
            <option value="cP">cP (mPa·s)</option>
            <option value="Pa·s">Pa·s</option>
          </select>
        </div>
        <small class="ssc-hint">If dynamic μ is given, density is required (to compute ν = μ/ρ).</small>
      </div>

      <div id="rnc-NUbox" class="ssc-field" style="display:none">
        <span>Kinematic Viscosity ν</span>
        <div class="ssc-inline">
          <input id="rnc-NU" type="number" step="any" placeholder="e.g., 1" />
          <select id="rnc-NUunit" aria-label="Kinematic viscosity unit">
            <option value="cSt">cSt (mm²/s)</option>
            <option value="m2/s">m²/s</option>
          </select>
        </div>
        <small class="ssc-hint">If ν is provided, density is optional (only for reporting μ).</small>
      </div>

      <label class="ssc-field">
        <span>Fluid Density (optional if ν given)</span>
        <div class="ssc-inline">
          <input id="rnc-RHO" type="number" step="any" placeholder="e.g., 997" />
          <select id="rnc-RHOunit" aria-label="Density/SG unit">
            <option value="kg/m3">kg/m³</option>
            <option value="SG">SG (water=1)</option>
          </select>
        </div>
        <small class="ssc-hint">If SG selected, density = SG × 1000 kg/m³ (approx.).</small>
      </label>
    </div>

    <div class="ssc-actions">
      <button type="button" id="rnc-calc" class="ssc-btn">Calculate</button>
      <button type="button" id="rnc-export" class="ssc-btn ssc-btn-ghost" title="Export Excel (dynamic)"><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="rnc-reset" class="ssc-btn ssc-btn-ghost">Reset</button>
      <button type="button" id="rnc-copy" class="ssc-btn ssc-btn-ghost" title="Copy results">Copy</button>
    </div>
  </form>

  <div class="ssc-results" aria-live="polite">
    <div class="ssc-result"><div class="ssc-result-label">Hydraulic Diameter D (m)</div><div class="ssc-result-value"><span id="rnc-oD">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Cross-sectional Area A (m²)</div><div class="ssc-result-value"><span id="rnc-oA">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Velocity V (m/s)</div><div class="ssc-result-value"><span id="rnc-oV">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Dynamic Viscosity μ (Pa·s)</div><div class="ssc-result-value"><span id="rnc-oMU">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Kinematic Viscosity ν (m²/s)</div><div class="ssc-result-value"><span id="rnc-oNU">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Density ρ (kg/m³)</div><div class="ssc-result-value"><span id="rnc-oRHO">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Reynolds Number Re</div><div class="ssc-result-value"><span id="rnc-oRE">–</span></div></div>
    <div class="ssc-result"><div class="ssc-result-label">Flow Regime</div><div class="ssc-result-value"><span id="rnc-oREG">–</span></div></div>
    <div id="rnc-note" class="ssc-note"></div>
  </div>

  <details class="ssc-details">
    <summary>Formulas &#038; assumptions</summary>
    <ul>
      <li><b>Area:</b> A = π D² / 4</li>
      <li><b>Velocity from flow:</b> V = Q / A</li>
      <li><b>Unit conversions:</b> mm→m: ×1e−3; inch→m: ×0.0254; cP→Pa·s: ×1e−3; cSt→m²/s: ×1e−6; L/s→m³/s: ×1e−3; m³/h→m³/s: ÷3600; gpm→m³/s: ×6.309e−5; ft/s→m/s: ×0.3048</li>
      <li><b>Density from SG:</b> ρ ≈ SG × 1000 kg/m³</li>
      <li><b>Reynolds number (pipe):</b> Re = ρ V D / μ = V D / ν</li>
      <li><b>Regime thresholds:</b> Laminar if Re &lt; 2300; Transitional 2300–4000; Turbulent &gt; 4000</li>
      <li>Calculator is for single-phase, incompressible flow in a circular pipe.</li>
    </ul>
  </details>

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

<style>
  .ssc-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)}
  .ssc-title{margin:.25rem 0;font-size:1.25rem;color:var(--t)}
  .ssc-sub{margin:0;color:var(--muted)}
  .ssc-form{margin-top:.75rem}
  .ssc-fieldset{border:1px dashed var(--b);border-radius:12px;padding:.6rem .7rem;margin:.5rem 0}
  .ssc-fieldset legend{color:var(--muted)}
  .ssc-radio{display:flex;align-items:center;gap:.45rem;margin-right:1rem;color:var(--t)}
  .ssc-grid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:14px}
  .ssc-field{display:flex;flex-direction:column;gap:6px}
  .ssc-field span{font-weight:600;color:var(--t)}
  .ssc-inline{display:flex;gap:8px;align-items:center}
  .ssc-field input,.ssc-field select{width:100%;padding:.6rem .7rem;border:1px solid var(--b);border-radius:10px;background:#fff;color:var(--t)}
  .ssc-hint{color:var(--muted)}
  .ssc-actions{display:flex;gap:10px;margin-top:.75rem;flex-wrap:wrap}
  .ssc-btn{border:1px solid var(--a);background:var(--a);color:#fff;border-radius:999px;padding:.55rem .9rem;font-weight:600;cursor:pointer}
  .ssc-btn-ghost{background:#fff;color:var(--a)}
  .ssc-results{margin-top:1rem;border-top:1px dashed var(--b);padding-top:.9rem}
  .ssc-result{display:flex;justify-content:space-between;align-items:center;margin:.35rem 0}
  .ssc-result-label{color:var(--muted)}
  .ssc-result-value{font-size:1.1rem;font-weight:700;color:var(--t)}
  .ssc-note{margin-top:.4rem;color:#b45309}
  .ssc-details{margin-top:.6rem}
  .ssc-footer{margin-top:.6rem;color:#475569}
</style>

<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 = {
    vmode: () => document.querySelector('input[name="rnc-vmode"]:checked')?.value || 'V',
    mmode: () => document.querySelector('input[name="rnc-mmode"]:checked')?.value || 'MU',
    D: $('rnc-D'), Dunit: $('rnc-Dunit'), V: $('rnc-V'), Vunit: $('rnc-Vunit'),
    Q: $('rnc-Q'), Qunit: $('rnc-Qunit'), MU: $('rnc-MU'), MUunit: $('rnc-MUunit'),
    NU: $('rnc-NU'), NUunit: $('rnc-NUunit'), RHO: $('rnc-RHO'), RHOunit: $('rnc-RHOunit'),
    Vbox: $('rnc-Vbox'), Qbox: $('rnc-Qbox'), MUbox: $('rnc-MUbox'), NUbox: $('rnc-NUbox'),
    oD: $('rnc-oD'), oA: $('rnc-oA'), oV: $('rnc-oV'), oMU: $('rnc-oMU'), oNU: $('rnc-oNU'), oRHO: $('rnc-oRHO'),
    oRE: $('rnc-oRE'), oREG: $('rnc-oREG'), note: $('rnc-note'),
    btnCalc: $('rnc-calc'), btnReset: $('rnc-reset'), btnCopy: $('rnc-copy'), btnExport: $('rnc-export')
  };

  const round = (v,dp=4)=>Number.isFinite(v)?(Math.round(v*10**dp)/10**dp).toFixed(dp):'–';
  const clampPos = x => (isFinite(x) && x>0) ? x : NaN;

  function toMeters(D,u){ if(u==='m') return D; if(u==='mm') return D*1e-3; if(u==='in') return D*0.0254; return NaN; }
  function velToMS(V,u){ if(u==='m/s') return V; if(u==='ft/s') return V*0.3048; return NaN; }
  function flowToM3s(Q,u){ if(u==='m3/s') return Q; if(u==='m3/h') return Q/3600; if(u==='L/s') return Q*1e-3; if(u==='gpm') return Q*6.309e-5; return NaN; }
  function muToPas(mu,u){ if(u==='Pa·s') return mu; if(u==='cP') return mu*1e-3; return NaN; }
  function nuToM2s(nu,u){ if(u==='m2/s') return nu; if(u==='cSt') return nu*1e-6; return NaN; }
  function rhoToSI(r,u){ if(u==='kg/m3') return r; if(u==='SG') return r*1000; return NaN; }

  document.querySelectorAll('input[name="rnc-vmode"]').forEach(r=>r.addEventListener('change',()=>{ const m=EL.vmode(); EL.Vbox.style.display=(m==='V')?'block':'none'; EL.Qbox.style.display=(m==='Q')?'block':'none'; clearOut(); }));
  document.querySelectorAll('input[name="rnc-mmode"]').forEach(r=>r.addEventListener('change',()=>{ const m=EL.mmode(); EL.MUbox.style.display=(m==='MU')?'block':'none'; EL.NUbox.style.display=(m==='NU')?'block':'none'; clearOut(); }));

  function clearOut(){ ['oD','oA','oV','oMU','oNU','oRHO','oRE','oREG'].forEach(k=>EL[k].textContent='–'); EL.note.textContent=''; EL.note.style.color='#b45309'; window.__rnc_state=null; }

  function calculate(){
    EL.note.textContent='';
    const D_in=clampPos(Number(EL.D.value)); const D=toMeters(D_in,EL.Dunit.value); if(!isFinite(D)){ EL.note.textContent='Enter a valid pipe diameter & unit.'; return; }
    const A=Math.PI*D*D/4;
    let Vms; if(EL.vmode()==='V'){ const V_in=clampPos(Number(EL.V.value)); Vms=velToMS(V_in,EL.Vunit.value); if(!isFinite(Vms)){ EL.note.textContent='Enter a valid velocity & unit.'; return; } } else { const Q_in=clampPos(Number(EL.Q.value)); const Qm3s=flowToM3s(Q_in,EL.Qunit.value); if(!isFinite(Qm3s)){ EL.note.textContent='Enter a valid flow & unit.'; return; } Vms=Qm3s/A; }

    const mode=EL.mmode(); let mu,nu,rho=NaN;
    if(mode==='MU'){ const mu_in=clampPos(Number(EL.MU.value)); mu=muToPas(mu_in,EL.MUunit.value); if(!isFinite(mu)){ EL.note.textContent='Enter a valid dynamic viscosity μ & unit.'; return; } const rho_in=clampPos(Number(EL.RHO.value)); rho=rhoToSI(rho_in,EL.RHOunit.value); if(!isFinite(rho)){ EL.note.textContent='Density (or SG) is required when using dynamic μ.'; return; } nu=mu/rho; }
    else { const nu_in=clampPos(Number(EL.NU.value)); nu=nuToM2s(nu_in,EL.NUunit.value); if(!isFinite(nu)){ EL.note.textContent='Enter a valid kinematic viscosity ν & unit.'; return; } const rho_in_opt=Number(EL.RHO.value); if(isFinite(rho_in_opt)&&rho_in_opt>0){ rho=rhoToSI(rho_in_opt,EL.RHOunit.value); mu=rho*nu; } }

    const Re=Vms*D/nu; const regime=(!isFinite(Re))?'–':(Re<2300?'Laminar':(Re<=4000?'Transitional':'Turbulent'));
    EL.oD.textContent=round(D,6); EL.oA.textContent=round(A,6); EL.oV.textContent=round(Vms,5); EL.oMU.textContent=Number.isFinite(mu)?round(mu,6):'–'; EL.oNU.textContent=round(nu,8); EL.oRHO.textContent=Number.isFinite(rho)?round(rho,2):'–'; EL.oRE.textContent=Number.isFinite(Re)?(Math.round(Re*100)/100).toString():'–'; EL.oREG.textContent=regime;
    EL.note.style.color='#16a34a'; EL.note.textContent='Calculated.';

    window.__rnc_state={ D_in, Dunit:EL.Dunit.value, vmode:EL.vmode(), V_in:Number(EL.V.value), Vunit:EL.Vunit.value, Q_in:Number(EL.Q.value), Qunit:EL.Qunit.value, mmode:EL.mmode(), MU_in:Number(EL.MU.value), MUunit:EL.MUunit.value, NU_in:Number(EL.NU.value), NUunit:EL.NUunit.value, RHO_in:Number(EL.RHO.value), RHOunit:EL.RHOunit.value, D, A, V:Vms, mu, nu, rho, Re };
  }

  function copyResults(){ const txt=`Reynolds Number — Pipe Flow\n--------------------------------\nD (m): ${EL.oD.textContent}\nArea A (m²): ${EL.oA.textContent}\nVelocity V (m/s): ${EL.oV.textContent}\nDynamic viscosity μ (Pa·s): ${EL.oMU.textContent}\nKinematic viscosity ν (m²/s): ${EL.oNU.textContent}\nDensity ρ (kg/m³): ${EL.oRHO.textContent}\nRe: ${EL.oRE.textContent}\nRegime: ${EL.oREG.textContent}`; navigator.clipboard?.writeText(txt).then(()=>{ EL.note.style.color='#16a34a'; EL.note.textContent='Results copied.'; setTimeout(()=>{EL.note.textContent=''; EL.note.style.color='';},1400); }).catch(()=>{ EL.note.style.color='#b45309'; EL.note.textContent='Copy failed. Select and copy manually.'; }); }

  // Export: write formulas directly into the Value column (B) so Excel calculates results
  function exportExcel(){
    const s=window.__rnc_state; if(!s){ EL.note.style.color='#b45309'; EL.note.textContent='Calculate first.'; return; }

    const AOA=[
      ['Reynolds Number Calculator (dynamic Excel)','','',''],
      ['','','','Changing inputs will recalc all outputs'],
      ['Velocity Input Mode', s.vmode,'','"V"=Velocity, "Q"=Flow'],
      ['Viscosity Input Mode', s.mmode,'','"MU"=Dynamic μ, "NU"=Kinematic ν'],
      ['','','',''],
      ['Inputs','Value','Units','Note'],
      ['Diameter Input', s.D_in || '', s.Dunit || '', 'Enter number + unit'],
      ['Velocity Input', (s.vmode==='V') ? (s.V_in||'') : '', (s.vmode==='V') ? (s.Vunit||'') : '', 'Used if mode=V'],
      ['Flow Input', (s.vmode==='Q') ? (s.Q_in||'') : '', (s.vmode==='Q') ? (s.Qunit||'') : '', 'Used if mode=Q'],
      ['Dynamic μ Input', (s.mmode==='MU') ? (s.MU_in||'') : '', (s.mmode==='MU') ? (s.MUunit||'') : '', 'Used if mode=MU'],
      ['Kinematic ν Input', (s.mmode==='NU') ? (s.NU_in||'') : '', (s.mmode==='NU') ? (s.NUunit||'') : '', 'Used if mode=NU'],
      ['Density/SG Input', (Number.isFinite(s.RHO_in)&&s.RHO_in>0)?s.RHO_in:'', s.RHOunit || '', 'Required if μ is given'],
      ['','','',''],
      ['Base Quantities','Value','Units','Formula (text)'],
      ['D (m)', '', 'm', "B7*IFERROR(XLOOKUP(C7,{\"m\",\"mm\",\"in\"},{1,0.001,0.0254}), INDEX({1,0.001,0.0254}, MATCH(C7,{\"m\",\"mm\",\"in\"},0)))"],
      ['A (m2)', '', 'm²', 'PI()*POWER(B16,2)/4'],
      ['V (m/s)', '', 'm/s', "IF(B3=\"V\", B8*IFERROR(XLOOKUP(C8,{\"m/s\",\"ft/s\"},{1,0.3048}), INDEX({1,0.3048}, MATCH(C8,{\"m/s\",\"ft/s\"},0))), (B9*IFERROR(XLOOKUP(C9,{\"m3/s\",\"m3/h\",\"L/s\",\"gpm\"},{1,1/3600,0.001,6.309E-5}), INDEX({1,1/3600,0.001,6.309E-5}, MATCH(C9,{\"m3/s\",\"m3/h\",\"L/s\",\"gpm\"},0))))/B17)"],
      ['ρ (kg/m3)', '', 'kg/m³', "IF(B4=\"MU\", B12*IFERROR(XLOOKUP(C12,{\"kg/m3\",\"SG\"},{1,1000}), INDEX({1,1000}, MATCH(C12,{\"kg/m3\",\"SG\"},0))), IF(AND(B4=\"NU\", B12<>\"\"), B12*IFERROR(XLOOKUP(C12,{\"kg/m3\",\"SG\"},{1,1000}), INDEX({1,1000}, MATCH(C12,{\"kg/m3\",\"SG\"},0))), \"\"))"],
      ['μ (Pa·s)', '', 'Pa·s', "IF(B4=\"MU\", B10*IFERROR(XLOOKUP(C10,{\"Pa·s\",\"cP\"},{1,0.001}), INDEX({1,0.001}, MATCH(C10,{\"Pa·s\",\"cP\"},0))), IF(B21<>\"\", B19*B21, \"\"))"],
      ['ν (m2/s)', '', 'm²/s', "IF(B4=\"NU\", B11*IFERROR(XLOOKUP(C11,{\"m2/s\",\"cSt\"},{1,1E-6}), INDEX({1,1E-6}, MATCH(C11,{\"m2/s\",\"cSt\"},0))), IF(B19<>\"\", B20/B19, \"\"))"],
      ['','','',''],
      ['Results','Value','Units','Formula (text)'],
      ['Reynolds Number Re', '', '', 'IF(B21<>"", B18*B16/B21, IF(B20<>"", B18*B16/B20, NA()))'],
      ['Flow Regime', '', '', 'IF(B23<2300,"Laminar",IF(B23<=4000,"Transitional","Turbulent"))'],
      ['','','',''],
      ['Source: chemicalengineeringsite.in','','','']
    ];

    const ws = XLSX.utils.aoa_to_sheet(AOA);
    ws['!cols']=[{wch:36},{wch:22},{wch:14},{wch:68}];
    ws['!freeze']={xSplit:1,ySplit:6};

    // Write REAL formulas into column B for calc; show the same as plain text in column D
    const setF = (addr, fml) => { ws[addr] = { t:'n', f:fml }; };
    setF('B16', 'B7*IFERROR(XLOOKUP(C7,{"m","mm","in"},{1,0.001,0.0254}), INDEX({1,0.001,0.0254}, MATCH(C7,{"m","mm","in"},0)))');
    setF('B17', 'PI()*POWER(B16,2)/4');
    setF('B18', 'IF(B3="V", B8*IFERROR(XLOOKUP(C8,{"m/s","ft/s"},{1,0.3048}), INDEX({1,0.3048}, MATCH(C8,{"m/s","ft/s"},0))), (B9*IFERROR(XLOOKUP(C9,{"m3/s","m3/h","L/s","gpm"},{1,1/3600,0.001,6.309E-5}), INDEX({1,1/3600,0.001,6.309E-5}, MATCH(C9,{"m3/s","m3/h","L/s","gpm"},0))))/B17)');
    setF('B19', 'IF(B4="MU", B12*IFERROR(XLOOKUP(C12,{"kg/m3","SG"},{1,1000}), INDEX({1,1000}, MATCH(C12,{"kg/m3","SG"},0))), IF(AND(B4="NU", B12<>""), B12*IFERROR(XLOOKUP(C12,{"kg/m3","SG"},{1,1000}), INDEX({1,1000}, MATCH(C12,{"kg/m3","SG"},0))), ""))');
    setF('B20', 'IF(B4="MU", B10*IFERROR(XLOOKUP(C10,{"Pa·s","cP"},{1,0.001}), INDEX({1,0.001}, MATCH(C10,{"Pa·s","cP"},0))), IF(B21<>"", B19*B21, ""))');
    setF('B21', 'IF(B4="NU", B11*IFERROR(XLOOKUP(C11,{"m2/s","cSt"},{1,1E-6}), INDEX({1,1E-6}, MATCH(C11,{"m2/s","cSt"},0))), IF(B19<>"", B20/B19, ""))');
    setF('B23', 'IF(B21<>"", B18*B16/B21, IF(B20<>"", B18*B16/B20, NA()))');
    setF('B24', 'IF(B23<2300,"Laminar",IF(B23<=4000,"Transitional","Turbulent"))');

    // Make column D be text (not executable formulas)
    ['D16','D17','D18','D19','D20','D21','D23','D24'].forEach(addr=>{ if(ws[addr] && typeof ws[addr].v==='string' && ws[addr].v[0]!=="'") ws[addr].v = "'" + ws[addr].v; });

    // Clickable source
    const lastRow = Math.max(...Object.keys(ws).filter(k=>/^[A-Z]+\d+$/.test(k)).map(k=>+k.replace(/^[A-Z]+/,'')));
    ws['A'+lastRow] = { t:'s', v:'Source: chemicalengineeringsite.in', l:{ Target:'https://chemicalengineeringsite.in/' } };

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

  EL.btnCalc.addEventListener('click',calculate);
  EL.btnReset.addEventListener('click',()=>{ ['rnc-D','rnc-V','rnc-Q','rnc-MU','rnc-NU','rnc-RHO'].forEach(id=>{const e=$(id); if(e) e.value='';}); EL.Dunit.value='mm'; EL.Vunit.value='m/s'; EL.Qunit.value='m3/h'; EL.MUunit.value='cP'; EL.NUunit.value='cSt'; EL.RHOunit.value='kg/m3'; document.querySelector('input[name="rnc-vmode"][value="V"]').checked=true; document.querySelector('input[name="rnc-mmode"][value="MU"]').checked=true; EL.Vbox.style.display='block'; EL.Qbox.style.display='none'; EL.MUbox.style.display='block'; EL.NUbox.style.display='none'; clearOut(); });
  EL.btnCopy.addEventListener('click',copyResults);
  EL.btnExport.addEventListener('click',exportExcel);
  ['rnc-D','rnc-V','rnc-Q','rnc-MU','rnc-NU','rnc-RHO'].forEach(id=>$(id).addEventListener('keydown',e=>{ if(e.key==='Enter'){ e.preventDefault(); calculate(); }}));
})();
</script>
<!-- /Reynolds Number Calculator for Pipe Flow + Excel Export -->



<p></p>
<p>The post <a href="https://chemicalengineeringsite.in/reynolds-number-calculator-for-pipe-flow/">Reynolds Number Calculator for Pipe Flow</a> appeared first on <a href="https://chemicalengineeringsite.in">Chemical Engineering Site</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://chemicalengineeringsite.in/reynolds-number-calculator-for-pipe-flow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
