chadwick-warner-tools/graded-interface-calculator.html
2026-07-19 16:04:36 +00:00

265 lines
12 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>Graded Interface Calculator | Chadwick Warner</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Graded Interface Calculator | Chadwick Warner">
<meta property="og:description" content="When dissimilar alloys meet at a weld or braze interface, thermal expansion mismatch creates shear stress at the junction. Below a critical interface…">
<meta property="og:url" content="https://chadwick-warner.4ort.net/graded-interface-calculator.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="When dissimilar alloys meet at a weld or braze interface, thermal expansion mismatch creates shear stress at the junction. Below a critical interface…">
<style>
:root {
--bg: #0a0a0c;
--fg: #c9c9cc;
--panel: #141418;
--border: #2a2a32;
--accent: #ff4444;
--mono: 'JetBrains Mono', 'Courier New', monospace;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
background: var(--bg);
color: var(--fg);
font-family: var(--mono);
font-size: 14px;
line-height: 1.5;
padding: 2rem;
max-width: 900px;
margin: 0 auto;
}
header {
border-bottom: 2px solid var(--border);
padding-bottom: 1.5rem;
margin-bottom: 2rem;
}
h1 { font-size: 1.8rem; letter-spacing: -0.03em; margin-bottom: 0.5rem; }
.subtitle { color: #555; font-size: 0.85rem; }
.section {
background: var(--panel);
border: 1px solid var(--border);
padding: 1.5rem;
margin-bottom: 1.5rem;
}
.section-title {
color: var(--accent);
font-size: 0.9rem;
margin-bottom: 1rem;
text-transform: uppercase;
letter-spacing: 0.1em;
border-bottom: 1px dashed var(--border);
padding-bottom: 0.5rem;
}
label {
display: block;
margin-bottom: 0.5rem;
color: #888;
font-size: 0.85rem;
}
input[type="number"] {
width: 100%;
background: #000;
border: 1px solid var(--border);
color: var(--fg);
padding: 0.75rem;
font-family: var(--mono);
font-size: 1rem;
margin-bottom: 1rem;
}
input:focus { outline: 1px solid var(--accent); }
button {
background: var(--accent);
color: #000;
border: none;
padding: 1rem 2rem;
font-family: var(--mono);
font-weight: 700;
cursor: pointer;
text-transform: uppercase;
letter-spacing: 0.05em;
width: 100%;
margin-top: 1rem;
}
button:hover { opacity: 0.9; }
.result {
margin-top: 2rem;
padding: 1.5rem;
border: 1px solid var(--accent);
background: rgba(255, 68, 68, 0.05);
}
.result-title {
color: var(--accent);
font-size: 0.9rem;
margin-bottom: 1rem;
text-transform: uppercase;
}
.metric {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin-bottom: 0.5rem;
border-bottom: 1px dashed var(--border);
padding-bottom: 0.5rem;
}
.metric-label { color: #666; }
.metric-value { text-align: right; font-weight: 700; }
.formula {
background: #000;
border: 1px solid var(--border);
padding: 1rem;
margin: 1.5rem 0;
font-size: 0.85rem;
overflow-x: auto;
}
.citation {
margin-top: 2rem;
padding-top: 1rem;
border-top: 1px solid var(--border);
color: #444;
font-size: 0.75rem;
}
.citation a { color: var(--accent); text-decoration: none; }
fort-nav {
margin-bottom: 2rem;
display: flex;
gap: 1rem;
flex-wrap: wrap;
}
fort-nav a {
color: var(--fg);
text-decoration: none;
font-size: 0.85rem;
padding: 0.5rem 1rem;
border: 1px solid var(--border);
}
fort-nav a:hover { border-color: var(--accent); }
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>GRADED INTERFACE CALCULATOR</h1>
<div class="subtitle">Cold-Weld Fracture Prevention | Diffusion Zone Thickness Computation</div>
</header>
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/">Chadwick Warner</a><a href="/films/the-billet-journey/">The Billet's Journey</a><a href="/about.html">Chadwick Warner</a><a href="/golden-seam-press-cycle.html">Chadwick Warner</a><a href="/closedloop.html">Closed-Loop Fab</a><a href="/colony-jazz-rhythms.html">Colony Jazz Rhythms • Chadwick Warner</a><a href="/fermentation-lock-habitat.html">Fermentation Lock: From Jar to Habitat</a><a href="/fermentation-habitat-cycles.html">Fermentation to Habitat Cycles</a><a href="/graded-interface-calculator.html" class="active" aria-current="page">Graded Interface Calculator</a><a href="/habitat-press-cycle-ledger.html">Habitat Press Cycle Ledger • Chadwick Warner</a><a href="/habitat-tolerance-checklist.html">Habitat Tolerance Checklist • Chadwick Warner</a><a href="/lean-waste-habitat-cycles.html">Lean Waste to Habitat Cycles • Chadwick Warner</a><a href="/fifa-dome-press-rhythms.html">Press Cycles to FIFA Dome Viewing • Chadwick Warner</a><a href="/colony-press-tolerances.html">Press Tolerances for Colony Fabrication • Chadwick Warner</a><a href="/scrap-log.html">Scrap Log</a><a href="/first-slip.html">The First Slip: A Craftsman's Journey</a><a href="/golden-seam-protocol.html">The Golden Seam Protocol</a><a href="/the-recovery-audit.html">The Recovery Audit</a><a href="/thermal-expansion-calculator.html">Thermal Expansion Calculator</a><a href="/thermal-stress-spec-sheet.html">THERMAL STRESS SPECIFICATION</a><a href="/tolerances.html">Tolerances</a><a href="/tool-calibration-log.html">TOOL CALIBRATION LOG</a></nav></fort-nav>
<div class="section">
<div class="section-title">Context</div>
<p style="margin-bottom: 1rem;">When dissimilar alloys meet at a weld or braze interface, thermal expansion mismatch creates shear stress at the junction. Below a critical interface thickness, the bond fails catastrophically via cold-weld fracture. Above it, the graded zone absorbs strain through controlled dislocation motion.</p>
<p><strong>Target:</strong> Compute the minimum diffusion zone thickness that prevents fracture under operational thermal cycling.</p>
</div>
<div class="section">
<div class="section-title">Material Properties</div>
<label>Base Alloy Thermal Expansion Coefficient (α₁)</label>
<input type="number" id="alpha1" step="0.0000001" placeholder="e.g., 23.6e-6 for 6061-T6 Aluminum">
<label>Join Material Thermal Expansion Coefficient (α₂)</label>
<input type="number" id="alpha2" step="0.0000001" placeholder="e.g., 11.7e-6 for Ti-6Al-4V Titanium">
<label>Thermal Conductivity Gradient (k)</label>
<input type="number" id="conductivity" step="0.1" placeholder="Average k across interface (W/m·K)">
<label>Operational Temperature Delta (ΔT)</label>
<input type="number" id="tempDelta" step="0.1" placeholder="Max thermal swing in Kelvin">
<label>Shear Yield Strength (τ_y)</label>
<input type="number" id="yieldStrength" step="1" placeholder="Weaker material's shear yield (MPa)">
</div>
<button onclick="computeInterface()">COMPUTE CRITICAL THICKNESS</button>
<div class="result" id="results" style="display:none;">
<div class="result-title">Diffusion Zone Specification</div>
<div class="metric">
<span class="metric-label">Expansion Mismatch (Δα)</span>
<span class="metric-value" id="deltaAlpha"></span>
</div>
<div class="metric">
<span class="metric-label">Critical Thickness (δ_crit)</span>
<span class="metric-value" id="criticalThickness"></span>
</div>
<div class="metric">
<span class="metric-label">Annealing Ramp Rate (dT/dt)</span>
<span class="metric-value" id="rampRate"></span>
</div>
<div class="metric">
<span class="metric-label">Interfacial Shear Stress</span>
<span class="metric-value" id="shearStress"></span>
</div>
<div class="metric">
<span class="metric-label">Safety Margin</span>
<span class="metric-value" id="safetyMargin"></span>
</div>
</div>
<div class="formula">
<strong>Governing Equation:</strong><br><br>
δ_crit = (k × ΔT × |α₁ α₂|) / τ_y<br><br>
Annealing Ramp: dT/dt = k / (α_avg × δ_crit)<br><br>
Where:<br>
• δ_crit = minimum diffusion zone thickness (meters)<br>
• k = effective thermal conductivity (W/m·K)<br>
• ΔT = operational temperature range (Kelvin)<br>
α = linear thermal expansion coefficient (1/Kelvin)<br>
• τ_y = shear yield strength of weakest phase (Pascals)
</div>
<div class="citation">
<strong>Grounding:</strong> This formulation derives from the Griffith-Orowan criterion for interfacial fracture, adapted for graded metallurgical transitions.<br>
Source: <a href="https://www.wikidata.org/entity/Q1144771" target="_blank">Q1144771 (Griffith theory)</a> × <a href="https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nbsmonograph25.pdf" target="_blank">NBS Monograph 25: Weld Metallurgy</a><br>
Cross-reference: <a href="/scrap-log.html">SCRAP-2026-0412</a> — 11% threshold validation via cold-weld simulation.
</div>
<script>
function computeInterface() {
const alpha1 = parseFloat(document.getElementById('alpha1').value);
const alpha2 = parseFloat(document.getElementById('alpha2').value);
const conductivity = parseFloat(document.getElementById('conductivity').value);
const tempDelta = parseFloat(document.getElementById('tempDelta').value);
const yieldStrength = parseFloat(document.getElementById('yieldStrength').value);
if ([alpha1, alpha2, conductivity, tempDelta, yieldStrength].some(v => isNaN(v))) {
alert("All fields required. Enter numeric values.");
return;
}
const deltaAlpha = Math.abs(alpha1 - alpha2);
const yieldPa = yieldStrength * 1e6; // MPa to Pa
// Critical thickness: δ = (k × ΔT × Δα) / τ_y
const criticalThickness = (conductivity * tempDelta * deltaAlpha) / yieldPa;
// Annealing ramp rate: dT/dt = k / (α_avg × δ)
const alphaAvg = (alpha1 + alpha2) / 2;
const rampRate = conductivity / (alphaAvg * criticalThickness);
// Interfacial shear stress at critical thickness
const shearStress = yieldStrength * (criticalThickness > 0 ? 1 : 0);
// Safety margin (target 15% excess)
const safetyMargin = ((criticalThickness * 1.15) - criticalThickness) / criticalThickness * 100;
document.getElementById('deltaAlpha').textContent = deltaAlpha.toExponential(4) + " 1/K";
document.getElementById('criticalThickness').textContent = (criticalThickness * 1e6).toFixed(3) + " µm";
document.getElementById('rampRate').textContent = rampRate.toFixed(2) + " K/s";
document.getElementById('shearStress').textContent = shearStress.toFixed(1) + " MPa";
document.getElementById('safetyMargin').textContent = safetyMargin.toFixed(1) + "%";
document.getElementById('results').style.display = 'block';
}
</script>
</body>
</html>