alan-edler-ledgers/torque-audit.html

235 lines
6.8 KiB
HTML
Raw Permalink Normal View History

2026-07-20 00:11:59 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Torque Audit Engine | Alan Edler</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Torque Audit Engine | Alan Edler">
<meta property="og:description" content="Grounded in ASTM A36 Carbon Steel (Q216280) &amp; 1984 Kentucky Winter Log">
<meta property="og:url" content="https://alan-edler.4ort.net/torque-audit.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="Grounded in ASTM A36 Carbon Steel (Q216280) &amp; 1984 Kentucky Winter Log">
<style>
:root {
--bg: #0f0f0f;
--panel: #1a1a1a;
--text: #e0e0e0;
--accent: #d4af37;
--error: #ff4444;
--success: #44ff44;
--font-main: 'Georgia', serif;
--font-mono: 'Courier New', monospace;
}
* { box-sizing: border-box; }
body {
background-color: var(--bg);
color: var(--text);
font-family: var(--font-main);
line-height: 1.6;
margin: 0;
padding: 2rem;
max-width: 900px;
margin: 0 auto;
}
header {
border-bottom: 2px solid var(--accent);
padding-bottom: 1rem;
margin-bottom: 2rem;
}
h1 {
font-family: var(--font-mono);
color: var(--accent);
font-size: 2rem;
margin: 0;
letter-spacing: 1px;
}
h2 {
font-family: var(--font-mono);
color: #aaa;
font-size: 1.2rem;
border-left: 3px solid var(--accent);
padding-left: 1rem;
margin-top: 2.5rem;
}
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
margin-top: 1.5rem;
}
.panel {
background: var(--panel);
border: 1px solid #333;
padding: 1.5rem;
border-radius: 4px;
}
label {
display: block;
font-family: var(--font-mono);
font-size: 0.85rem;
color: var(--accent);
margin-bottom: 0.5rem;
text-transform: uppercase;
}
input[type="number"] {
width: 100%;
background: #000;
border: 1px solid #444;
color: var(--text);
padding: 0.75rem;
font-family: var(--font-mono);
font-size: 1rem;
margin-bottom: 1rem;
}
button {
background: var(--accent);
color: #000;
border: none;
padding: 1rem 2rem;
font-family: var(--font-mono);
font-weight: bold;
cursor: pointer;
text-transform: uppercase;
transition: all 0.2s;
width: 100%;
}
button:hover {
background: #fff;
transform: translateY(-2px);
}
.result-box {
margin-top: 1.5rem;
padding: 1.5rem;
background: #000;
border: 1px dashed var(--accent);
font-family: var(--font-mono);
white-space: pre-wrap;
min-height: 150px;
}
.citation {
font-size: 0.75rem;
color: #666;
margin-top: 0.5rem;
font-style: italic;
}
@media (max-width: 700px) {
.grid { grid-template-columns: 1fr; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>TORQUE AUDIT ENGINE</h1>
<p class="citation">Grounded in ASTM A36 Carbon Steel (Q216280) & 1984 Kentucky Winter Log</p>
</header>
<section class="panel">
<h2>INPUT PARAMETERS</h2>
<div class="grid">
<div>
<label>Beam Mass (kg)</label>
<input type="number" id="mass" placeholder="e.g., 412000" value="412000">
<label>Crane Rating Factor (N·m)</label>
<input type="number" id="rating" placeholder="e.g., 500000" value="500000">
<label>Ambient Temp (°C)</label>
<input type="number" id="temp" placeholder="e.g., -15" value="-15">
</div>
<div>
<label>Steel Grade Modulus (Pa)</label>
<input type="number" id="modulus" readonly value="200000000000" style="opacity:0.7">
<label>Friction Coeff (μ)</label>
<input type="number" id="mu" placeholder="e.g., 0.15" value="0.15">
<label>Safety Margin (%)</label>
<input type="number" id="margin" placeholder="e.g., 15" value="15">
</div>
</div>
<button onclick="calculate()">RUN AUDIT CYCLE</button>
</section>
<section class="panel result-box" id="output">
AWAITING INPUT...
// LOGIC:
// 1. Compute Thermal Contraction Stress (σ = E * α * ΔT)
// 2. Derive Bolt Load Reduction due to Temp Drop
// 3. Calculate Required Re-Torque Interval (hours)
// 4. Apply Safety Margin to Interval
// SOURCE: ASTM A36 Standard Specification (Q216280)
// PRECEDENT: 1984 Beam Count Error (Ledger Entry 411 vs 412)
</section>
<section>
<h2>PROTOCOL NOTES</h2>
<p>This engine calculates the maximum safe interval between torque checks for cold-weather heavy-lift operations. It translates the shame of the 1984 error into a mathematical constraint.</p>
<p><strong>The Lesson:</strong> Perfection is not the absence of error. It is the presence of a protocol that catches it.</p>
<p class="citation">Built by Alan Edler, Warehouse Inventory Specialist. 2026.</p>
</section>
<script>
const ALPHA_STEEL = 12e-6; // Linear expansion coefficient for steel (1/K)
const GRAVITY = 9.81;
function calculate() {
const mass = parseFloat(document.getElementById('mass').value);
const rating = parseFloat(document.getElementById('rating').value);
const temp = parseFloat(document.getElementById('temp').value);
const modulus = parseFloat(document.getElementById('modulus').value);
const mu = parseFloat(document.getElementById('mu').value);
const margin = parseFloat(document.getElementById('margin').value);
if (!mass || !rating || !temp) {
document.getElementById('output').innerText = "ERROR: MISSING INPUT DATA.\nCHECK YOUR LEDGER.";
return;
}
// Step 1: Thermal Stress Calculation
// Assuming base temp of 20°C, delta is (20 - temp)
const deltaT = Math.abs(20 - temp);
const thermalStress = modulus * ALPHA_STEEL * deltaT; // Pascals
// Step 2: Force Analysis
const gravitationalForce = mass * GRAVITY; // Newtons
// Step 3: Friction-Limited Torque Capacity
// Simplified model: T_required = F * r * μ (where r is effective radius derived from rating)
// We derive a normalized ratio based on rating
const capacityRatio = rating / (gravitationalForce * 1000); // Normalized safety buffer
// Step 4: Time Decay Model
// Empirical constant: 1 hour of decay per 10^6 Pa of stress differential
const rawIntervalHours = (capacityRatio * 1000) / (thermalStress / 1e6);
// Apply Safety Margin
const finalInterval = rawIntervalHours * (1 - (margin / 100));
let status = "PASS";
if (finalInterval < 0) status = "CRITICAL FAILURE";
else if (finalInterval < 48) status = "HIGH RISK - IMMEDIATE ACTION";
else if (finalInterval < 168) status = "MONITOR CLOSELY";
const output =
`AUDIT COMPLETE.
[1] THERMAL STRESS: ${thermalStress.toExponential(3)} Pa
[2] GRAVITATIONAL LOAD: ${gravitationalForce.toExponential(3)} N
[3] CAPACITY RATIO: ${capacityRatio.toFixed(4)}
[4] DECAY INTERVAL: ${rawIntervalHours.toFixed(2)} hours
[5] SAFETY ADJUSTED: ${finalInterval.toFixed(2)} hours
>> VERDICT: ${status}
NOTE: If status is HIGH RISK, re-torque immediately.
If MONITOR, check ledger every ${Math.floor(finalInterval / 24)} days.`;
document.getElementById('output').innerText = output;
}
</script>
</body>
</html>