document.addEventListener('DOMContentLoaded', function () { calculatefcv(); calculateflv(); calculatefev(); calculatefhv(); calculatefcr(); calculateflr(); calculatefer(); calculatefhr(); calculatef(); }); function showTab(tabId) { document.querySelectorAll('.tab-content').forEach(tab => { tab.classList.remove('active'); }); document.querySelectorAll('.subtab-content').forEach(subtab => { subtab.classList.remove('active'); }); document.querySelectorAll('.subsubtab-content').forEach(subsubtab => { subsubtab.classList.remove('active'); }); const activeTab = document.getElementById(tabId); activeTab.classList.add('active'); document.querySelectorAll('.tab').forEach(tab => { tab.classList.remove('active'); }); const activeTabElement = document.querySelector(`.tab[onclick*="${tabId}"]`); if (activeTabElement) { activeTabElement.classList.add('active'); } const firstSubtab = activeTab.querySelector('.subtab-content'); if (firstSubtab) { firstSubtab.classList.add('active'); const firstSubsubtab = firstSubtab.querySelector('.subsubtab-content'); if (firstSubsubtab) { firstSubsubtab.classList.add('active'); } } } function showSubTab(subTabId) { document.querySelectorAll('.tab-content.active .subtab-content').forEach(subtab => { subtab.classList.remove('active'); }); const subtabToShow = document.getElementById(subTabId); subtabToShow.classList.add('active'); document.querySelectorAll('.subtab').forEach(subtab => { subtab.classList.remove('active'); }); const activeSubtabElement = document.querySelector(`.subtab[onclick*="${subTabId}"]`); if (activeSubtabElement) { activeSubtabElement.classList.add('active'); } const firstSubsubtab = subtabToShow.querySelector('.subsubtab-content'); if (firstSubsubtab) { firstSubsubtab.classList.add('active'); } } function showSubSubTab(subSubTabId) { document.querySelectorAll('.subtab-content.active .subsubtab-content').forEach(subsubtab => { subsubtab.classList.remove('active'); }); const subsubtabToShow = document.getElementById(subSubTabId); subsubtabToShow.classList.add('active'); document.querySelectorAll('.subsubtab').forEach(subsubtab => { subsubtab.classList.remove('active'); }); const activeSubsubtabElement = document.querySelector(`.subsubtab[onclick*="${subSubTabId}"]`); if (activeSubsubtabElement) { activeSubsubtabElement.classList.add('active'); } } function calculatefcv() { const r = parseFloat(document.getElementById('radiusfcv').value); const e = parseFloat(document.getElementById('superelevationfcv').value); const f = parseFloat(document.getElementById('frictionfcv').value); const v = Math.sqrt(127 * r * (e + f)); document.getElementById('resultfcvBE').innerText = v.toFixed(0); } function calculateflv() { const r = parseFloat(document.getElementById('radiusflv').value); const e = parseFloat(document.getElementById('superelevationflv').value); const fo = parseFloat(document.getElementById('floflv').value); const b = parseFloat(document.getElementById('betaflv').value); let v = 0; let previousV = -1; while (Math.abs(v - previousV) > 0.0001) { previousV = v; v = Math.sqrt(127 * r * (e + (fo - b * v))); } const f = fo - b * v; document.getElementById('frictionflv').innerText = f.toFixed(2); document.getElementById('resultflvBE').innerText = v.toFixed(0); } function calculatefev() { const r = parseFloat(document.getElementById('radiusfev').value); const e = parseFloat(document.getElementById('superelevationfev').value); const fo = parseFloat(document.getElementById('flofev').value); const b = parseFloat(document.getElementById('betafev').value); let v = 0; let previousV = -1; while (Math.abs(v - previousV) > 0.0001) { previousV = v; v = Math.sqrt(127 * r * (e + fo * Math.exp(-b * v))); } const f = fo * Math.exp(-b * v); document.getElementById('frictionfev').innerText = f.toFixed(2); document.getElementById('resultfevBE').innerText = v.toFixed(0); } function calculatefhv() { const r = parseFloat(document.getElementById('radiusfhv').value); const e = parseFloat(document.getElementById('superelevationfhv').value); const bpn = parseFloat(document.getElementById('bpnfhv').value); const sp = parseFloat(document.getElementById('spfhv').value); const sno = -31 + (1.38 * bpn); const pnfsg = 0.45 * Math.pow(sp, -0.47); let v = 0; let previousV = -1; while (Math.abs(v - previousV) > 0.0001) { previousV = v; const f = 0.01 * sno * Math.exp(-(pnfsg / 100) * v); v = Math.sqrt(127 * r * (e + f)); } const f = 0.01 * sno * Math.exp(-(pnfsg / 100) * v); document.getElementById('frictionfhv').innerText = f.toFixed(2); document.getElementById('resultfhvBE').innerText = v.toFixed(0); } function calculatefcr() { const v = parseFloat(document.getElementById('speedfcr').value); const e = parseFloat(document.getElementById('superelevationfcr').value); const f = parseFloat(document.getElementById('frictionfcr').value); const r = (v * v) / (127 * (e + f)); document.getElementById('resultfcrBE').innerText = r.toFixed(0); } function calculateflr() { const v = parseFloat(document.getElementById('speedflr').value); const e = parseFloat(document.getElementById('superelevationflr').value); const fo = parseFloat(document.getElementById('floflr').value); const b = parseFloat(document.getElementById('betaflr').value); const f = fo - b * v; const r = v ** 2 / (127 * (e + f)); document.getElementById('frictionflr').innerText = f.toFixed(2); document.getElementById('resultflrBE').innerText = r.toFixed(0); } function calculatefer() { const v = parseFloat(document.getElementById('speedfer').value); const e = parseFloat(document.getElementById('superelevationfer').value); const fo = parseFloat(document.getElementById('flofer').value); const b = parseFloat(document.getElementById('betafer').value); const f = fo * Math.exp(-b * v); const r = v ** 2 / (127 * (e + f)); document.getElementById('frictionfer').innerText = f.toFixed(2); document.getElementById('resultferBE').innerText = r.toFixed(0); } function calculatefhr() { const v = parseFloat(document.getElementById('speedfhr').value); const e = parseFloat(document.getElementById('superelevationfhr').value); const bpn = parseFloat(document.getElementById('bpnfhr').value); const sp = parseFloat(document.getElementById('spfhr').value); const sno = -31 + (1.38 * bpn); const pnfsg = 0.45 * Math.pow(sp, -0.47); const f = 0.01 * sno * Math.exp(-(pnfsg / 100) * v); const r = v ** 2 / (127 * (e + f)); document.getElementById('frictionfhr').innerText = f.toFixed(2); document.getElementById('resultfhrBE').innerText = r.toFixed(0); } function calculatef() { const v = parseFloat(document.getElementById('speedf').value); const e = parseFloat(document.getElementById('superelevationf').value); const r = parseFloat(document.getElementById('radiusf').value); const f = (v ** 2 / (127 * r)) - e; document.getElementById('resultfBE').innerText = f.toFixed(2); }