binder-viscosity-profiler/binder-viscosity-profiler.html

281 lines
10 KiB
HTML
Raw Normal View History

2026-07-18 17:37:49 +02:00
<!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>