Beam Analysis

Beam Analysis Tool

Results

// Function to dynamically update load inputs based on the selected load type document.getElementById('loadType').addEventListener('change', function() { const loadType = this.value; const loadDetails = document.getElementById('loadDetails'); loadDetails.innerHTML = ''; if (loadType === 'point' || loadType === 'combination') { loadDetails.innerHTML += ` `; } if (loadType === 'udl' || loadType === 'combination') { loadDetails.innerHTML += ` `; } }); // Function to calculate shear force and bending moment function calculate() { const beamLength = parseFloat(document.getElementById('beamLength').value); const loadType = document.getElementById('loadType').value; const supportLeft = document.getElementById('supportLeft').value; const supportRight = document.getElementById('supportRight').value; let pointLoadMagnitude = 0, pointLoadPosition = 0; let udlMagnitude = 0, udlStart = 0, udlEnd = 0; if (loadType === 'point' || loadType === 'combination') { pointLoadMagnitude = parseFloat(document.getElementById('pointLoadMagnitude').value); pointLoadPosition = parseFloat(document.getElementById('pointLoadPosition').value); } if (loadType === 'udl' || loadType === 'combination') { udlMagnitude = parseFloat(document.getElementById('udlMagnitude').value); udlStart = parseFloat(document.getElementById('udlStart').value); udlEnd = parseFloat(document.getElementById('udlEnd').value); } // Calculate reactions, shear forces, and bending moments const results = calculateBeam(beamLength, loadType, pointLoadMagnitude, pointLoadPosition, udlMagnitude, udlStart, udlEnd, supportLeft, supportRight); // Display results document.getElementById('maxShear').innerText = `Maximum Shear Force: ${results.maxShear} kN`; document.getElementById('maxMoment').innerText = `Maximum Bending Moment: ${results.maxMoment} kNm`; drawCharts(results); } // Function to calculate beam reactions, shear forces, and moments function calculateBeam(beamLength, loadType, pointLoadMagnitude, pointLoadPosition, udlMagnitude, udlStart, udlEnd, supportLeft, supportRight) { let maxShear = 0; let maxMoment = 0; const shearForce = []; const bendingMoment = []; const numSegments = 100; // Number of segments for the calculation const dx = beamLength / numSegments; for (let i = 0; i <= numSegments; i++) { const x = i * dx; let shear = 0; let moment = 0; // Calculate shear force and moment due to point load if (pointLoadMagnitude > 0 && x >= pointLoadPosition) { shear -= pointLoadMagnitude; moment -= pointLoadMagnitude * (x - pointLoadPosition); } // Calculate shear force and moment due to UDL if (udlMagnitude > 0 && x >= udlStart && x <= udlEnd) { const udlLength = Math.min(x, udlEnd) - udlStart; shear -= udlMagnitude * udlLength; moment -= udlMagnitude * udlLength * (x - udlStart - udlLength / 2); } shearForce.push(shear); bendingMoment.push(moment); if (Math.abs(shear) > Math.abs(maxShear)) maxShear = shear; if (Math.abs(moment) > Math.abs(maxMoment)) maxMoment = moment; } return { shearForce, bendingMoment, maxShear, maxMoment }; } // Function to draw shear force and bending moment diagrams function drawCharts(results) { const ctxShear = document.getElementById('shearForceDiagram').getContext('2d'); const ctxMoment = document.getElementById('bendingMomentDiagram').getContext('2d'); new Chart(ctxShear, { type: 'line', data: { labels: Array.from({length: results.shearForce.length}, (_, i) => i), datasets: [{ label: 'Shear Force (kN)', data: results.shearForce, borderColor: 'red', fill: false }] }, options: { responsive: true, scales: { x: { title: { display: true, text: 'Position Along Beam (m)' } }, y: { title: { display: true, text: 'Shear Force (kN)' } } } } }); new Chart(ctxMoment, { type: 'line', data: { labels: Array.from({length: results.bendingMoment.length}, (_, i) => i), datasets: [{ label: 'Bending Moment (kNm)', data: results.bendingMoment, borderColor: 'blue', fill: false }] }, options: { responsive: true, scales: { x: { title: { display: true, text: 'Position Along Beam (m)' } }, y: { title: { display: true, text: 'Bending Moment (kNm)' } } } } }); }