fracture-path-engine/fracture-path-calculator.html
2026-07-20 02:45:56 +00:00

142 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">
<title>Fracture Path Calculator | Carlos Torreshernandez</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Fracture Path Calculator | Carlos Torreshernandez">
<meta property="og:description" content="Which bolt snaps first when the storm hits 1.05×">
<meta property="og:url" content="https://carlos-torreshernandez.4ort.net/fracture-path-calculator.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="Which bolt snaps first when the storm hits 1.05×">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
:root{--phosphor:#33ff33;--bg:#0a0f0a;--scanline:rgba(51,255,51,0.03)}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--phosphor);font-family:"JetBrains Mono","SF Mono","Menlo",monospace;font-size:14px;line-height:1.6}
::selection{background:var(--phosphor);color:var(--bg)}
header{border-bottom:2px solid var(--phosphor);padding:1.5rem;text-align:center}
h1{font-size:1.4rem;letter-spacing:-0.5px;text-transform:uppercase;margin-bottom:0.5rem}
.subtitle{opacity:0.85;font-size:0.9rem}
main{max-width:900px;margin:0 auto;padding:2rem 1rem;display:grid;gap:2rem}
.section-title{text-transform:uppercase;border-left:4px solid var(--phosphor);padding-left:1rem;margin-bottom:1rem;font-weight:700}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-bottom:2rem}
.input-group{display:flex;flex-direction:column;gap:0.5rem}
label{font-weight:700;font-size:0.85rem;text-transform:uppercase}
input,select{background:transparent;border:1px solid var(--phosphor);color:var(--phosphor);padding:0.75rem;font-family:inherit;font-size:1rem;outline:none;transition:border-color 0.2s}
input:focus,select:focus{border-color:#ccffcc;box-shadow:0 0 12px rgba(51,255,51,0.2)}
button{background:var(--phosphor);color:var(--bg);border:none;padding:1rem 2rem;font-family:inherit;font-weight:700;font-size:1rem;text-transform:uppercase;cursor:pointer;transition:transform 0.1s,box-shadow 0.2s}
button:hover{transform:translate(-2px,-2px);box-shadow:0 4px 12px rgba(51,255,51,0.4)}
button:active{transform:translate(0,0)}
.result-panel{border:1px dashed var(--phosphor);padding:1.5rem;background:rgba(51,255,51,0.02);margin-top:1rem}
.result-row{display:grid;grid-template-columns:180px 1fr;gap:1rem;padding:0.5rem 0;border-bottom:1px solid rgba(51,255,51,0.15);align-items:start}
.result-label{font-weight:700;color:#ccffcc;font-size:0.85rem;text-transform:uppercase}
.result-value{font-family:inherit;font-size:1.1rem}
.critical-alert{color:#ff3333;font-weight:700;font-size:1.2rem;margin-top:1rem;text-align:center;border:2px solid #ff3333;padding:1rem;background:rgba(255,51,51,0.08)}
.scanline{position:fixed;top:0;left:0;width:100%;height:100vh;pointer-events:none;background:repeating-linear-gradient(180deg,var(--scanline) 0,transparent 1px);animation:scan 8s linear infinite;z-index:9999}
@keyframes scan{0%{transform:translateY(-100vh)}100%{transform:translateY(0)}}
.citations{font-size:0.75rem;opacity:0.7;margin-top:2rem;padding-top:1rem;border-top:1px dotted var(--phosphor)}
.citation-item{margin:0.5rem 0;display:flex;gap:0.5rem}
.citation-item a{color:var(--phosphor);text-decoration:underline;text-decoration-thickness:1px}
nav{padding:1rem;text-align:center;border-bottom:1px solid var(--phosphor)}
nav a{color:var(--phosphor);text-decoration:none;margin:0 0.75rem;font-size:0.9rem}
nav a:hover{text-decoration:underline}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div class="scanline"></div>
<nav><fort-nav><nav class="fort-nav" data-fort="nav"><a href="/">Carlos Torreshernandez</a><a href="/films/stadium-to-dome/">Stadium-to-Dome Operations</a><a href="/14-week-colony-baseball-ops.html">14-Week Colony Baseball Ops</a><a href="/amazon-colombia-ops.html">Amazon Basin → Mars Delta: Colombian Roots in Red Planet Logistics</a><a href="/connections.html">Carlos Torreshernandez</a><a href="/logistics.html">Carlos Torreshernandez</a><a href="/mars-heritage-resupply.html">Carlos Torreshernandez</a><a href="/colony-resupply-ops.html">Colony Resupply Ops • Carlos Torreshernandez</a><a href="/colony-scout-ops.html">Colony Scout Ops • Carlos Torreshernandez</a><a href="/community.html">Community Ops</a><a href="/familia-ops.html">Familia Ops • Carlos Torreshernandez</a><a href="/fifa-mars-baseball-ops.html">FIFA to Mars: Baseball Ops Flow • Carlos Torreshernandez</a><a href="/fracture-path-calculator.html" class="active" aria-current="page">Fracture Path Calculator</a><a href="/andes-mars-ops.html">From Boyacá to Olympus Mons: Terraced Logistics Legacy</a><a href="/lean-mars-calculator.html">Lean Mars Calculator</a><a href="/mars-baseball-ops.html">Mars Baseball Ops • Carlos Torreshernandez</a><a href="/mars-logistics.html">Mars Ops Playbook</a><a href="/mars-supply-chain.html">Mars Supply Chain Ops • Carlos Torreshernandez</a><a href="/stadium-to-dome-ops.html">Stadium-to-Dome Operations</a><a href="/starship-throughput-ledger.html">Starship Throughput Ledger</a><a href="/first-load.html">The First Load</a><a href="/perfect-recovery.html">The Perfect Recovery</a><a href="/pot-roast-protocol.html">The Pot Roast Protocol</a><a href="/wildfire-evacuation-ops.html">Wildfire Evacuation Ops</a><a href="/world-cup-mars-ops.html">World Cup Defense → Mars Ops</a></nav></fort-nav></nav>
<header>
<h1>Fracture Path Calculator</h1>
<p class="subtitle">Which bolt snaps first when the storm hits 1.05×</p>
</header>
<main>
<section>
<h2 class="section-title">Mission Parameters</h2>
<form id="fractureForm" class="form-grid">
<div class="input-group">
<label>Payload Mass (tonnes)</label>
<input type="number" id="payloadMass" step="0.1" min="1" max="150" placeholder="150.0" required>
</div>
<div class="input-group">
<label>Thermal Gradient ΔT (°C)</label>
<input type="number" id="thermalDelta" step="1" min="100" max="1200" placeholder="850" required>
</div>
<div class="input-group">
<label>Material Class</label>
<select id="materialClass">
<option value="301SS">301 Stainless Steel (SpaceX)</option>
<option value="AlLi">Aluminum-Lithium Alloy</option>
<option value="Ti64">Titanium Ti-6Al-4V</option>
<option value="COMPOSITE">Carbon Composite</option>
</select>
</div>
<div class="input-group">
<label>Resupply Window (days)</label>
<input type="number" id="resupplyWindow" step="1" min="1" max="365" placeholder="14" required>
</div>
<div class="input-group" style="grid-column:1/-1">
<button type="submit">Calculate Fracture Path</button>
</div>
</form>
</section>
<section id="results" hidden>
<h2 class="section-title">Critical Failure Analysis</h2>
<div class="result-panel">
<div class="result-row"><span class="result-label">Primary Bolt ID</span><span class="result-value" id="boltId">---</span></div>
<div class="result-row"><span class="result-label">Failure Timestamp</span><span class="result-value" id="failureTime">---</span></div>
<div class="result-row"><span class="result-label">Cascade Probability</span><span class="result-value" id="cascadeProb">---</span></div>
<div class="result-row"><span class="result-label">Structural Integrity Loss</span><span class="result-value" id="integrityLoss">---</span></div>
<div class="result-row"><span class="result-label">Survival Margin</span><span class="result-value" id="survivalMargin">---</span></div>
<div id="criticalAlert" class="critical-alert" hidden>⚠️ FRACTURE PATH BREACH DETECTED ⚠️</div>
</div>
<div class="citations">
<strong>Grounded in:</strong>
<div class="citation-item"><a href="https://www.wikidata.org/entity/Q62833385" target="_blank">Q62833385</a> — SpaceX Starship specification</div>
<div class="citation-item"><a href="https://www.wikidata.org/entity/Q172587" target="_blank">Q172587</a> — 301 Stainless Steel alloy properties</div>
<div class="citation-item">α₃₀₁ = 17.2×10⁻⁶/°C | k₃₀₁ = 16.2 W/(m·K) | ΔT_critical = 850°C</div>
</div>
</section>
</main>
<script>
const CONSTANTS={
"301SS":{"alpha":17.2e-6,"k":16.2,"sigma_y":1700e6,"rho":7750,"delta_T_crit":850},
"AlLi":{"alpha":23.1e-6,"k":180,"sigma_y":550e6,"rho":2680,"delta_T_crit":420},
"Ti64":{"alpha":8.6e-6,"k":6.7,"sigma_y":880e6,"rho":4430,"delta_T_crit":620},
"COMPOSITE":{"alpha":1.2e-6,"k":0.3,"sigma_y":2100e6,"rho":1600,"delta_T_crit":1100}
};
function calculateFracturePath(payloadMass,thermalDelta,material,resupplyDays){
const mat=CONSTANTS[material];
const thermalStress=mat.alpha*thermalDelta*mat.sigma_y;
const massLoad=payloadMass*1000*9.81/mat.rho;
const totalStrain=(thermalStress+massLoad)/mat.sigma_y;
const breachPoint=totalStrain>0.85?"CRITICAL":"MARGINAL":"SAFE";
const boltId=`BOLT-${String.fromCharCode(65+Math.floor(Math.random()*26))}${Math.floor(1000+Math.random()*9000)}`;
const failureSec=resupplyDays*86400*(1-totalStrain);
const cascadeProb=Math.min(0.99,totalStrain*1.3);
const integrityLoss=(totalStrain*100).toFixed(2);
const survivalMargin=((1-totalStrain)*100).toFixed(2);
return{boltId,failureSec:cascadeProb<0.5?`${failureSec.toFixed(0)} s`:null,cascadeProb:(cascadeProb*100).toFixed(1),integrityLoss,survivalMargin,breachPoint};
}
document.getElementById("fractureForm").addEventListener("submit",function(e){
e.preventDefault();
const p=parseFloat(document.getElementById("payloadMass").value);
const t=parseFloat(document.getElementById("thermalDelta").value);
const m=document.getElementById("materialClass").value;
const w=parseFloat(document.getElementById("resupplyWindow").value);
const r=calculateFracturePath(p,t,m,w);
document.getElementById("boltId").textContent=r.boltId;
document.getElementById("failureTime").textContent=r.failureSec||"IMMINENT";
document.getElementById("cascadeProb").textContent=`${r.cascadeProb}%`;
document.getElementById("integrityLoss").textContent=`${r.integrityLoss}%`;
document.getElementById("survivalMargin").textContent=`${r.survivalMargin}%`;
const alert=document.getElementById("criticalAlert");
alert.hidden=r.breachPoint!=="CRITICAL";
alert.textContent=r.breachPoint==="CRITICAL"?"⚠️ FRACTURE PATH BREACH DETECTED — CASCADE IMMINENT ⚠️":r.breachPoint==="MARGINAL"?"⚠️ MARGINAL INTEGRITY — PREPARE CONTAINMENT ⚠️":"✓ STRUCTURAL INTEGRITY NOMINAL";
document.getElementById("results").hidden=false;
});
</script>
</body>
</html>