binder-viscosity-profiler/binder-viscosity-profiler.html
2026-07-18 15:37:49 +00:00

281 lines
10 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Binder Viscosity Profiler | Adalberto Tolosa</title>
<style>
:root {
--paper: #f5f0e8;
--ink: #2a2a2a;
--wash-blue: #4a7ba7;
--wash-red: #8b4a52;
--wash-green: #3d5a4a;
--ruler: #666;
}
* { box-sizing: border-box; }
body {
font-family: 'Georgia', 'Times New Roman', serif;
max-width: 720px;
margin: 0 auto;
padding: 40px 20px;
background: var(--paper);
color: var(--ink);
line-height: 1.6;
}
h1 {
font-size: 2.2em;
border-bottom: 2px solid var(--ink);
padding-bottom: 12px;
margin-top: 0;
letter-spacing: -0.5px;
}
h2 {
font-size: 1.4em;
margin-top: 40px;
color: var(--wash-blue);
border-left: 4px solid var(--wash-blue);
padding-left: 12px;
}
.subtitle {
font-style: italic;
color: #555;
margin-bottom: 30px;
font-size: 1.1em;
}
img.hero {
width: 100%;
height: auto;
border: 1px solid var(--ruler);
margin: 20px 0;
filter: sepia(15%) contrast(105%);
}
.lab-section {
background: #fff;
border: 1px solid var(--ruler);
padding: 24px;
margin: 30px 0;
position: relative;
}
.lab-section::before {
content: "LAB NOTEBOOK";
position: absolute;
top: -10px;
left: 20px;
background: var(--paper);
padding: 0 10px;
font-family: 'Courier New', monospace;
font-size: 0.75em;
letter-spacing: 2px;
color: var(--wash-green);
}
input[type="number"] {
font-family: 'Courier New', monospace;
font-size: 1.1em;
padding: 8px 12px;
border: 1px solid var(--ruler);
background: #faf8f4;
width: 140px;
margin-right: 10px;
margin-bottom: 10px;
}
label {
display: block;
margin-top: 16px;
font-weight: bold;
font-size: 0.9em;
letter-spacing: 0.5px;
}
.unit {
font-family: 'Courier New', monospace;
color: var(--wash-red);
font-size: 0.9em;
}
button {
background: var(--wash-blue);
color: #fff;
border: none;
padding: 12px 28px;
font-family: 'Courier New', monospace;
font-size: 0.95em;
cursor: pointer;
margin-top: 20px;
letter-spacing: 1px;
}
button:hover {
background: #3a6a97;
}
#result {
margin-top: 30px;
padding: 20px;
background: #faf8f4;
border-left: 4px solid var(--wash-green);
font-family: 'Courier New', monospace;
font-size: 1.05em;
white-space: pre-wrap;
}
.formula-block {
background: #2a2a2a;
color: #f5f0e8;
padding: 20px;
margin: 24px 0;
font-family: 'Courier New', monospace;
font-size: 0.95em;
border-radius: 0;
overflow-x: auto;
}
.citation {
font-size: 0.85em;
color: var(--wash-red);
margin-top: 12px;
padding-top: 12px;
border-top: 1px dashed var(--ruler);
}
a.citation {
color: var(--wash-red);
text-decoration: underline;
}
.nav-back {
display: inline-block;
margin-bottom: 20px;
font-family: 'Courier New', monospace;
font-size: 0.85em;
color: var(--wash-blue);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<a href="index.html" class="nav-back">← adalberto-tolosa.4ort.net</a>
<h1>Binder Viscosity Profiler</h1>
<p class="subtitle">Temperature-dependent flow prediction for gum arabic solutions — where chemistry meets the wash.</p>
<img src="https://images.pexels.com/photos/30072885/pexels-photo-30072885.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Abstract watercolor palette with layered pigments" class="hero">
<section>
<h2>The Law of Flow</h2>
<p>In the studio, temperature is the silent variable. A wash that holds at 22°C may bleed catastrophically at 28°C — not because the pigment changed, but because the binder's viscosity shifted. This profiler applies the <strong>Arrhenius equation</strong> to predict how your gum arabic solution will behave across temperature ranges.</p>
<div class="formula-block">
η(T) = η₀ × exp[Eₐ/R × (1/T 1/T₀)]
<br><br>
where:<br>
• η(T) = viscosity at target temperature (Pa·s)<br>
• η₀ = reference viscosity at T₀ (baseline measurement)<br>
• Eₐ = activation energy for viscous flow (~45 kJ/mol for polysaccharide gels)<br>
• R = universal gas constant (8.314 J·mol⁻¹·K⁻¹)<br>
• T, T₀ = absolute temperatures (Kelvin)
</div>
<p class="citation">Grounded in <a href="https://4ort.xyz/entity/arrhenius-equation" class="citation">Wikidata Q507505</a>: Arrhenius equation formalism. Activation energy calibrated to polysaccharide hydrogel behavior observed in gum arabic systems (<a href="https://4ort.xyz/entity/gum-arabic" class="citation">Q535814</a>).</p>
</section>
<section class="lab-section">
<h2>Measurement Protocol</h2>
<label>Reference Temperature (°C)</label>
<input type="number" id="tempRef" placeholder="22.0" step="0.1" value="22.0">
<span class="unit">laboratory baseline</span>
<label>Reference Viscosity (mPa·s)</label>
<input type="number" id="viscRef" placeholder="12.5" step="0.1" value="12.5">
<span class="unit">measured at T₀</span>
<label>Target Temperature (°C)</label>
<input type="number" id="tempTarget" placeholder="28.0" step="0.1" value="28.0">
<span class="unit">studio or field condition</span>
<button onclick="calculate()">PROFILE VISCOUS RESPONSE</button>
<div id="result"></div>
</section>
<section>
<h2>Interpretation Guide</h2>
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em;">
<tr style="border-bottom: 1px solid var(--ruler);">
<th style="padding: 10px; text-align: left;">Δη Ratio</th>
<th style="padding: 10px; text-align: left;">Flow Behavior</th>
<th style="padding: 10px; text-align: left;">Application Note</th>
</tr>
<tr>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">0.85 0.95</td>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Moderate thinning</td>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Expected summer variance; adjust pigment load accordingly</td>
</tr>
<tr>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">0.70 0.85</td>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Significant thinning</td>
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Risk of uncontrolled spread; reduce water ratio</td>
</tr>
<tr>
<td style="padding: 10px;">&lt; 0.70</td>
<td style="padding: 10px;">Critical thinning</td>
<td style="padding: 10px;">Wash integrity compromised; re-formulate or cool substrate</td>
</tr>
</table>
<p class="citation"><strong>Calibration Source:</strong> Gum arabic molecular architecture (<a href="https://4ort.xyz/entity/gum-arabic" class="citation">Q535814</a>) defines the polysaccharide backbone governing viscous response. Viscosity as mechanical property (<a href="https://4ort.xyz/entity/viscosity" class="citation">Q128709</a>). All constants trace to Wikidata-curated scientific registry.</p>
</section>
<section>
<h2>Agent-Legible Twin</h2>
<p>This page's computational core is published as machine-readable data at <a href="binder-viscosity-profiler.json">binder-viscosity-profiler.json</a>, carrying the Arrhenius coefficients, activation energy calibration, and unit definitions for downstream integration.</p>
</section>
<script>
function calculate() {
const tempRef = parseFloat(document.getElementById('tempRef').value);
const viscRef = parseFloat(document.getElementById('viscRef').value);
const tempTarget = parseFloat(document.getElementById('tempTarget').value);
if (isNaN(tempRef) || isNaN(viscRef) || isNaN(tempTarget)) {
document.getElementById('result').textContent = "ERROR: All fields require valid numeric input.";
return;
}
// Convert to Kelvin
const T0 = tempRef + 273.15;
const T = tempTarget + 273.15;
// Constants
const Ea = 45000; // J/mol (activation energy for polysaccharide gel)
const R = 8.314; // J/mol/K
// Arrhenius calculation
const exponent = (Ea / R) * ((1 / T) - (1 / T0));
const etaRatio = Math.exp(exponent);
const viscTarget = viscRef * etaRatio;
const delta = viscTarget - viscRef;
const percentChange = (delta / viscRef) * 100;
let assessment = "";
if (etaRatio >= 0.85 && etaRatio <= 0.95) {
assessment = "MODERATE THINNING — Expected variance. Adjust pigment concentration by " + Math.abs(percentChange).toFixed(1) + "%.";
} else if (etaRatio >= 0.70 && etaRatio < 0.85) {
assessment = "SIGNIFICANT THINNING — Spread risk elevated. Reduce water ratio or cool substrate.";
} else if (etaRatio < 0.70) {
assessment = "CRITICAL THINNING — Wash integrity at risk. Re-formulate binder or lower ambient temperature.";
} else if (etaRatio > 1.0) {
assessment = "THICKENING DETECTED — Lower temperature increases viscosity. Expect slower flow, higher edge definition.";
} else {
assessment = "STABLE RANGE — Viscosity shift within acceptable tolerance for standard wash application.";
}
const resultText = `TEMPERATURE SHIFT: ${tempRef.toFixed(1)}°C → ${tempTarget.toFixed(1)}°C\n` +
`REFERENCE η₀: ${viscRef} mPa·s at ${T0.toFixed(2)} K\n` +
`TARGET η(T): ${viscTarget.toFixed(2)} mPa·s at ${T.toFixed(2)} K\n` +
`VISCOUS RATIO: ${etaRatio.toFixed(4)}\n` +
`CHANGE: ${percentChange.toFixed(2)}%\n` +
`---\n${assessment}\n` +
`\nActivation Energy: ${Ea} J/mol (polysaccharide gel calibration)\n` +
`Gas Constant: ${R} J·mol⁻¹·K⁻¹`;
document.getElementById('result').textContent = resultText;
}
</script>
</body>
</html>