.spring-calculator-wrapper {
font-family: sans-serif;
border: 1px solid #ccc;
padding: 20px;
border-radius: 8px;
max-width: 600px;
margin: 20px auto;
background-color: #f9f9f9;
}
.calculator-inputs h2, .calculator-results h3 {
text-align: center;
color: #333;
margin-bottom: 20px;
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
margin-bottom: 5px;
font-weight: bold;
color: #555;
}
.input-group input[type="number"] {
width: calc(100% – 12px);
padding: 10px;
border: 1px solid #ccc;
border-radius: 4px;
font-size: 16px;
}
.input-group small {
display: block;
font-size: 0.8em;
color: #777;
margin-top: 5px;
}
.spring-calculator-wrapper button {
background-color: #4CAF50;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
width: 100%;
transition: background-color 0.3s ease;
}
.spring-calculator-wrapper button:hover {
background-color: #45a049;
}
#result {
margin-top: 20px;
padding: 15px;
background-color: #eef;
border: 1px solid #ddd;
border-radius: 4px;
text-align: center;
font-size: 1.1em;
color: #333;
min-height: 50px;
display: flex;
align-items: center;
justify-content: center;
}
function calculateSpringRate() {
var wireDiameter = parseFloat(document.getElementById("wireDiameter").value);
var meanCoilDiameter = parseFloat(document.getElementById("meanCoilDiameter").value);
var numberOfActiveCoils = parseFloat(document.getElementById("numberOfActiveCoils").value);
var materialModulusGPa = parseFloat(document.getElementById("materialModulus").value);
var resultDiv = document.getElementById("result");
resultDiv.innerHTML = ""; // Clear previous results
if (isNaN(wireDiameter) || isNaN(meanCoilDiameter) || isNaN(numberOfActiveCoils) || isNaN(materialModulusGPa) ||
wireDiameter <= 0 || meanCoilDiameter <= 0 || numberOfActiveCoils <= 0 || materialModulusGPa <= 0) {
resultDiv.innerHTML = "Please enter valid positive numbers for all fields.";
return;
}
// Convert GPa to N/mm^2 (Pascal is N/m^2, so GPa = 10^9 N/m^2. 1 m^2 = 1000mm * 1000mm = 10^6 mm^2. So GPa = 10^9 / 10^6 N/mm^2 = 1000 N/mm^2)
var materialModulusNPerMM2 = materialModulusGPa * 1000;
// Spring Rate (k) formula: k = (G * d^4) / (8 * D^3 * N)
// Where:
// G is the Shear Modulus (often approximated with Young's Modulus for common spring materials, but technically different. For simplicity, we'll use G = E for this calculator as is common practice in introductory contexts)
// d is the wire diameter
// D is the mean coil diameter
// N is the number of active coils
var shearModulus = materialModulusNPerMM2; // Approximation: Shear Modulus ≈ Young's Modulus
var numerator = shearModulus * Math.pow(wireDiameter, 4);
var denominator = 8 * Math.pow(meanCoilDiameter, 3) * numberOfActiveCoils;
if (denominator === 0) {
resultDiv.innerHTML = "Calculation error: Denominator is zero. Please check input values.";
return;
}
var springRateNPerMM = numerator / denominator;
// Convert to N/cm for a more common unit if desired, or keep N/mm
var springRateNPerCM = springRateNPerMM * 10;
resultDiv.innerHTML = "Spring Rate:
" + springRateNPerMM.toFixed(2) + " N/mmor approximately
" + springRateNPerCM.toFixed(2) + " N/cm";
}