235 lines
6.8 KiB
HTML
235 lines
6.8 KiB
HTML
<!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) & 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) & 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> |