{"id":100210,"date":"2026-02-15T20:27:34","date_gmt":"2026-02-15T20:27:34","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100210"},"modified":"2026-02-15T20:27:34","modified_gmt":"2026-02-15T20:27:34","slug":"rotor-critical-speed","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/bn\/calculators\/rotor-critical-speed\/","title":{"rendered":"Rotor Critical Speed Calculator | Shaft Natural Frequency"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Rotor Critical Speed Calculator\",\"alternateName\":[\"Shaft Natural Frequency Calculator\",\"Critical RPM Calculator\"],\"description\":\"Free online engineering calculator for rotor critical speed and shaft natural frequency. Supports simply supported, cantilever, and fixed-fixed shafts with central or distributed mass.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/rotor-critical-speed\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2025-01-01\",\"dateModified\":\"2025-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"Simply supported, cantilever, fixed-fixed supports\",\"Central mass and Rayleigh distributed mass\",\"Steel, stainless, aluminum, custom modulus\",\"Operating speed margin comparison\",\"Auto-calculation on input change\",\"URL parameter sharing\"],\"keywords\":\"critical speed, natural frequency, rotor dynamics, shaft bending, Rayleigh method\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"What is critical speed?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Critical speed is the rotational speed at which a shaft's rotational frequency equals one of its natural bending frequencies, causing resonance. At critical speed, even small unbalance produces large vibrations that can damage bearings, seals, and the shaft itself.\"}},\n{\"@type\":\"Question\",\"name\":\"Why avoid operating near critical speed?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Operating near critical speed amplifies vibrations exponentially due to resonance. The standard practice is to operate at least 20\u201330% below or above the critical speed. The region within \u00b120% of critical speed is called the critical speed band and should be avoided.\"}},\n{\"@type\":\"Question\",\"name\":\"How to raise critical speed?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Critical speed can be raised by increasing shaft diameter (raises stiffness by d\u2074), using a stiffer material (higher E modulus), reducing shaft length, reducing rotor mass, or changing support conditions from simply supported to fixed-fixed.\"}},\n{\"@type\":\"Question\",\"name\":\"What is the difference between rigid and flexible rotor?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A rigid rotor operates well below its first critical speed (typically below 70% of Ncr). A flexible rotor operates above its first critical speed and must pass through resonance during run-up and coast-down. Flexible rotors require more careful balancing.\"}},\n{\"@type\":\"Question\",\"name\":\"What safety margin is recommended?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"API 610 and API 617 recommend that the first critical speed be at least 20% above the maximum continuous operating speed (for rigid rotors) or that operating speed be at least 15\u201320% above the critical speed (for flexible rotors passing through resonance).\"}}\n]}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[\n{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},\n{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},\n{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Rotor Critical Speed Calculator\",\"item\":\"https:\/\/vibromera.eu\/calculators\/rotor-critical-speed\/\"}\n]}\n<\/script>\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&#038;family=JetBrains+Mono:wght@400;500;600&#038;family=Fraunces:opsz,wght@9..144,700;9..144,800&#038;display=swap\" rel=\"stylesheet\">\n\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.css\">\n\n<style>\n:root {\n    --vc-bg: #f4f1ec;\n    --vc-surface: #ffffff;\n    --vc-surface-alt: #f8f6f2;\n    --vc-ink: #1a1a1a;\n    --vc-ink-secondary: #5a5650;\n    --vc-ink-muted: #8a857e;\n    --vc-accent: #c85a2a;\n    --vc-accent-hover: #b04d22;\n    --vc-accent-light: #fdf0ea;\n    --vc-blue: #2a5c8c;\n    --vc-blue-light: #eaf1f8;\n    --vc-green: #2a7a4b;\n    --vc-green-light: #eaf8ef;\n    --vc-yellow: #a67c00;\n    --vc-yellow-light: #fef9e8;\n    --vc-red: #b91c1c;\n    --vc-red-light: #fef2f2;\n    --vc-border: #d9d4cc;\n    --vc-border-light: #e8e4dd;\n    --vc-shadow: 0 1px 3px rgba(26,26,26,0.06), 0 4px 12px rgba(26,26,26,0.04);\n    --vc-shadow-lg: 0 4px 12px rgba(26,26,26,0.08), 0 16px 40px rgba(26,26,26,0.06);\n    --vc-radius: 8px;\n    --vc-radius-lg: 12px;\n    --vc-font: 'DM Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    --vc-mono: 'JetBrains Mono', 'Consolas', 'Monaco', monospace;\n    --vc-display: 'Fraunces', Georgia, serif;\n}\n\n.vc-calculator {\n    font-family: var(--vc-font);\n    font-size: 15px;\n    line-height: 1.65;\n    color: var(--vc-ink);\n    max-width: 960px;\n    margin: 0 auto;\n    padding: 20px 16px 40px;\n    -webkit-font-smoothing: antialiased;\n}\n.vc-calculator *, .vc-calculator *::before, .vc-calculator *::after { box-sizing: border-box; }\n\n\/* \u2500\u2500 HEADER \u2500\u2500 *\/\n.vc-header { text-align: center; padding: 48px 24px 40px; position: relative; }\n.vc-header::after { content:''; position:absolute; bottom:0; left:50%; transform:translateX(-50%); width:80px; height:3px; background:var(--vc-accent); border-radius:2px; }\n.vc-header-eyebrow { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.15em; text-transform:uppercase; color:var(--vc-accent); margin:0 0 12px; }\n.vc-header-title { font-family:var(--vc-display); font-size:clamp(24px,4vw,36px); font-weight:800; line-height:1.15; color:var(--vc-ink); margin:0 0 16px; letter-spacing:-0.02em; }\n.vc-header-subtitle { font-size:15px; color:var(--vc-ink-secondary); margin:0 auto 20px; max-width:600px; }\n.vc-badges { display:inline-flex; gap:8px; flex-wrap:wrap; justify-content:center; }\n.vc-badge { font-family:var(--vc-mono); font-size:11px; font-weight:500; padding:4px 10px; border-radius:4px; background:var(--vc-surface); border:1px solid var(--vc-border); color:var(--vc-ink-secondary); }\n\n\/* \u2500\u2500 CARD \u2500\u2500 *\/\n.vc-card { background:var(--vc-surface); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); box-shadow:var(--vc-shadow); overflow:hidden; margin-top:32px; }\n\n\/* \u2500\u2500 FORM \u2500\u2500 *\/\n.vc-form { padding:24px; }\n.vc-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; }\n@media(max-width:600px) { .vc-form-grid { grid-template-columns:1fr; } }\n.vc-field { display:flex; flex-direction:column; }\n.vc-field-full { grid-column: 1 \/ -1; }\n.vc-label { font-size:12px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:var(--vc-ink-secondary); margin-bottom:6px; }\n.vc-label-hint { font-weight:400; text-transform:none; letter-spacing:0; color:var(--vc-ink-muted); font-size:11px; }\n.vc-select, .vc-input { width:100%; padding:10px 12px; border:1.5px solid var(--vc-border); border-radius:6px; font-family:var(--vc-font); font-size:14px; color:var(--vc-ink); background:var(--vc-surface); transition:border-color 0.15s, box-shadow 0.15s; }\n.vc-select { padding-right:36px; appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='16' height='16' fill='none' stroke='%235a5650' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'\/%3E%3C\/svg%3E\"); background-repeat:no-repeat; background-position:right 10px center; }\n.vc-select:focus, .vc-input:focus { outline:none; border-color:var(--vc-accent); box-shadow:0 0 0 3px rgba(200,90,42,0.12); }\n.vc-select:hover, .vc-input:hover { border-color:var(--vc-ink-muted); }\n\n\/* \u2500\u2500 PRESETS \u2500\u2500 *\/\n.vc-presets { display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; padding-top:18px; border-top:1px solid var(--vc-border-light); }\n.vc-presets-label { font-family:var(--vc-mono); font-size:11px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); width:100%; margin-bottom:2px; }\n.vc-preset-btn { padding:5px 12px; font-family:var(--vc-font); font-size:12px; font-weight:500; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\n.vc-preset-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* \u2500\u2500 RESULTS \u2500\u2500 *\/\n.vc-results { border-top:1px solid var(--vc-border-light); background:var(--vc-surface-alt); padding:0; max-height:0; overflow:hidden; transition:max-height 0.5s cubic-bezier(0.4,0,0.2,1), padding 0.3s; }\n.vc-results.vc-visible { max-height:2000px; padding:24px; }\n.vc-results-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:18px; }\n.vc-results-title { font-family:var(--vc-display); font-size:20px; font-weight:700; color:var(--vc-ink); margin:0; }\n.vc-copy-btn { display:inline-flex; align-items:center; gap:5px; padding:6px 12px; border:1px solid var(--vc-border); border-radius:6px; background:var(--vc-surface); font-family:var(--vc-font); font-size:12px; font-weight:500; color:var(--vc-ink-secondary); cursor:pointer; transition:all 0.15s; }\n.vc-copy-btn:hover { border-color:var(--vc-accent); color:var(--vc-accent); }\n.vc-copy-btn.vc-copied { background:var(--vc-green-light); border-color:var(--vc-green); color:var(--vc-green); }\n\n.vc-result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:20px; }\n@media(max-width:500px) { .vc-result-grid { grid-template-columns:1fr; } }\n.vc-rcard { background:var(--vc-surface); border:1px solid var(--vc-border-light); border-radius:var(--vc-radius); padding:16px; transition:transform 0.2s; }\n.vc-rcard:hover { transform:translateY(-1px); }\n.vc-rcard-primary { border-color:var(--vc-accent); border-width:2px; background:linear-gradient(135deg, #fdf6f2 0%, var(--vc-surface) 100%); grid-column:1 \/ -1; }\n.vc-rcard-label { font-family:var(--vc-mono); font-size:10px; font-weight:500; letter-spacing:0.1em; text-transform:uppercase; color:var(--vc-ink-muted); margin-bottom:4px; }\n.vc-rcard-value { font-family:var(--vc-mono); font-size:22px; font-weight:600; color:var(--vc-ink); line-height:1.2; }\n.vc-rcard-primary .vc-rcard-value { font-size:30px; color:var(--vc-accent); }\n.vc-rcard-unit { font-size:14px; font-weight:400; color:var(--vc-ink-secondary); }\n\n\/* \u2500\u2500 MARGIN INDICATOR \u2500\u2500 *\/\n.vc-margin-ok { color: var(--vc-green); }\n.vc-margin-warn { color: var(--vc-yellow); }\n.vc-margin-danger { color: var(--vc-red); }\n\n\/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\n.vc-section { margin-top:24px; border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); background:var(--vc-surface); box-shadow:var(--vc-shadow); overflow:hidden; }\n.vc-section-toggle { width:100%; display:flex; align-items:center; justify-content:space-between; padding:18px 24px; border:none; background:transparent; cursor:pointer; font-family:var(--vc-font); text-align:left; transition:background 0.15s; }\n.vc-section-toggle:hover { background:var(--vc-surface-alt); }\n.vc-section-toggle-text { display:flex; align-items:center; gap:10px; }\n.vc-section-icon { font-size:20px; line-height:1; }\n.vc-section-title { font-family:var(--vc-display); font-size:18px; font-weight:700; color:var(--vc-ink); margin:0; }\n.vc-section-chevron { width:20px; height:20px; color:var(--vc-ink-muted); transition:transform 0.3s; flex-shrink:0; }\n.vc-section.vc-open .vc-section-chevron { transform:rotate(180deg); }\n.vc-section-body { max-height:0; overflow:hidden; transition:max-height 0.4s cubic-bezier(0.4,0,0.2,1); }\n.vc-section.vc-open .vc-section-body { max-height:20000px; }\n.vc-section-inner { padding:0 24px 24px; border-top:1px solid var(--vc-border-light); }\n\n\/* \u2500\u2500 THEORY \u2500\u2500 *\/\n.vc-theory h3 { font-family:var(--vc-display); font-size:17px; font-weight:700; color:var(--vc-ink); margin:28px 0 10px; }\n.vc-theory h3:first-child { margin-top:20px; }\n.vc-theory p { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 10px; }\n.vc-theory ul, .vc-theory ol { font-size:14px; color:var(--vc-ink-secondary); margin:0 0 12px 18px; padding:0; }\n.vc-theory li { margin-bottom:5px; }\n.vc-formula-box { background:var(--vc-surface-alt); border:2px solid var(--vc-border); border-radius:6px; padding:14px 20px; font-family:var(--vc-mono); font-size:16px; font-weight:500; text-align:center; margin:14px 0; color:var(--vc-ink); overflow-x:auto; }\n.vc-info-box { background:var(--vc-blue-light); border-left:3px solid var(--vc-blue); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-info-box p { margin:0; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-warning-box { background:var(--vc-yellow-light); border-left:3px solid var(--vc-yellow); padding:14px 16px; border-radius:0 6px 6px 0; margin:14px 0; }\n.vc-example-box { background:var(--vc-surface-alt); border:1px solid var(--vc-border-light); border-radius:6px; padding:16px; margin:14px 0; }\n.vc-example-title { font-family:var(--vc-mono); font-size:13px; font-weight:600; color:var(--vc-accent); margin-bottom:8px; }\n.vc-table { width:100%; border-collapse:collapse; margin:14px 0; font-size:13px; }\n.vc-table th, .vc-table td { padding:10px 12px; border:1px solid var(--vc-border-light); text-align:left; }\n.vc-table th { background:var(--vc-surface-alt); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em; color:var(--vc-ink-secondary); }\n.vc-table tr:nth-child(even) { background:var(--vc-surface-alt); }\n@media(max-width:600px) { .vc-table { font-size:12px; } .vc-table th, .vc-table td { padding:8px; } }\n\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\n.vc-faq-list { display:flex; flex-direction:column; gap:8px; margin-top:20px; }\n.vc-faq-item { border:1px solid var(--vc-border-light); border-radius:6px; overflow:hidden; }\n.vc-faq-q { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 16px; border:none; background:var(--vc-surface-alt); cursor:pointer; font-family:var(--vc-font); font-size:15px; font-weight:600; color:var(--vc-ink); text-align:left; transition:background 0.15s; }\n.vc-faq-q:hover { background:#ede9e3; }\n.vc-faq-chevron { width:16px; height:16px; color:var(--vc-ink-muted); flex-shrink:0; transition:transform 0.25s; }\n.vc-faq-item.vc-open .vc-faq-chevron { transform:rotate(180deg); }\n.vc-faq-a { max-height:0; overflow:hidden; transition:max-height 0.35s; }\n.vc-faq-item.vc-open .vc-faq-a { max-height:1200px; }\n.vc-faq-a-inner { padding:14px 16px; border-top:1px solid var(--vc-border-light); font-size:14px; color:var(--vc-ink-secondary); }\n.vc-faq-a-inner p { margin:0 0 8px; }\n.vc-faq-a-inner p:last-child { margin-bottom:0; }\n.vc-faq-a-inner ul { margin:4px 0 8px 16px; padding:0; }\n.vc-faq-a-inner li { margin-bottom:3px; }\n\n\/* \u2500\u2500 RELATED \u2500\u2500 *\/\n.vc-related { display:flex; flex-wrap:wrap; gap:10px; margin-top:16px; }\n.vc-related-link { display:inline-block; padding:8px 16px; font-family:var(--vc-font); font-size:13px; font-weight:600; background:var(--vc-surface-alt); color:var(--vc-ink-secondary); border:1px solid var(--vc-border); border-radius:var(--vc-radius); text-decoration:none; transition:all 0.15s; }\n.vc-related-link:hover { border-color:var(--vc-accent); color:var(--vc-accent); background:var(--vc-accent-light); }\n\n\/* \u2500\u2500 PROMO \u2500\u2500 *\/\n.vc-promo { margin-top:24px; padding:20px; background:linear-gradient(135deg, var(--vc-accent-light), var(--vc-surface)); border:1px solid var(--vc-border); border-radius:var(--vc-radius-lg); display:flex; align-items:center; gap:16px; }\n.vc-promo-text { flex:1; font-size:14px; color:var(--vc-ink-secondary); }\n.vc-promo-text strong { color:var(--vc-ink); }\n.vc-promo-link { padding:8px 20px; font-size:13px; font-weight:700; color:#fff; background:var(--vc-accent); border-radius:var(--vc-radius); text-decoration:none; white-space:nowrap; transition:background 0.15s; }\n.vc-promo-link:hover { background:var(--vc-accent-hover); }\n\n\/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n.vc-footer { text-align:center; padding:32px 16px; font-size:13px; color:var(--vc-ink-muted); }\n.vc-footer a { color:var(--vc-accent); text-decoration:none; }\n.vc-footer a:hover { text-decoration:underline; }\n.vc-footer-links { margin-top:8px; font-size:12px; }\n.vc-footer-links a { margin:0 8px; }\n\n\/* \u2500\u2500 PRINT \u2500\u2500 *\/\n@media print {\n    .vc-section-body { max-height:none!important; }\n    .vc-faq-a { max-height:none!important; }\n    .vc-results { max-height:none!important; padding:24px!important; }\n    .vc-copy-btn, .vc-section-chevron, .vc-faq-chevron, .vc-presets, .vc-promo { display:none!important; }\n}\n<\/style>\n\n<div class=\"vc-calculator\" id=\"vc-rotor-critical-speed\">\n\n<!-- Header -->\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool \u2014 #009<\/p>\n    <h1 class=\"vc-header-title\">Rotor Critical Speed Calculator<\/h1>\n    <p class=\"vc-header-subtitle\">Calculate the first critical speed (natural frequency) of a shaft with central mass or distributed mass using the Rayleigh method. Compare with operating RPM for safety margin.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">Central Mass<\/span>\n        <span class=\"vc-badge\">Rayleigh Method<\/span>\n        <span class=\"vc-badge\">3 Support Types<\/span>\n    <\/div>\n<\/header>\n\n<!-- Calculator Card -->\n<div class=\"vc-card\">\n    <form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\">\n        <div class=\"vc-form-grid\">\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-length\">Shaft Length L <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-length\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 800\" value=\"800\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-diameter\">Shaft Diameter d <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-diameter\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 50\" value=\"50\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-mass\">Rotor Mass m <span class=\"vc-label-hint\">(kg)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-mass\" inputmode=\"decimal\" step=\"any\" min=\"0.001\" placeholder=\"e.g. 30\" value=\"30\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-material\">Material (E Modulus)<\/label>\n                <select class=\"vc-select\" id=\"vc-material\">\n                    <option value=\"210\" selected>Steel \u2014 210 GPa<\/option>\n                    <option value=\"193\">Stainless Steel \u2014 193 GPa<\/option>\n                    <option value=\"69\">Aluminum \u2014 69 GPa<\/option>\n                    <option value=\"custom\">Custom\u2026<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-custom-e-field\" style=\"display:none;\">\n                <label class=\"vc-label\" for=\"vc-custom-e\">Custom E Modulus <span class=\"vc-label-hint\">(GPa)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-custom-e\" inputmode=\"decimal\" step=\"any\" min=\"1\" placeholder=\"e.g. 115\" value=\"115\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-support\">Support Type<\/label>\n                <select class=\"vc-select\" id=\"vc-support\">\n                    <option value=\"ss\" selected>Simply Supported (pinned-pinned)<\/option>\n                    <option value=\"cantilever\">Cantilever (fixed-free)<\/option>\n                    <option value=\"ff\">Fixed-Fixed (clamped-clamped)<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-op-speed\">Operating Speed <span class=\"vc-label-hint\">(RPM, optional)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-op-speed\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 3000\">\n            <\/div>\n        <\/div>\n\n        <!-- Presets -->\n        <div class=\"vc-presets\">\n            <div class=\"vc-presets-label\">Quick presets<\/div>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"800\" data-d=\"50\" data-m=\"30\" data-mat=\"210\" data-sup=\"ss\">Pump shaft \u00d850\u00d7800mm 30kg steel<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"1500\" data-d=\"80\" data-m=\"100\" data-mat=\"210\" data-sup=\"ss\">Fan shaft \u00d880\u00d71500mm 100kg<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-l=\"500\" data-d=\"40\" data-m=\"15\" data-mat=\"210\" data-sup=\"ss\">Motor \u00d840\u00d7500mm 15kg<\/button>\n        <\/div>\n    <\/form>\n\n    <!-- Results -->\n    <div class=\"vc-results\" id=\"vc-results\">\n        <div class=\"vc-results-head\">\n            <h2 class=\"vc-results-title\">Results<\/h2>\n            <button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">\n                <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg>\n                Copy\n            <\/button>\n        <\/div>\n        <div class=\"vc-result-grid\">\n            <div class=\"vc-rcard vc-rcard-primary\">\n                <div class=\"vc-rcard-label\">Critical Speed (Central Mass)<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-ncr\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Natural Frequency<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-freq\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Angular Frequency \u03c9_n<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-omega\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Moment of Inertia I<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-inertia\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Shaft Stiffness k<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-stiffness\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Operating Speed Margin<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-margin\">\u2014<\/div>\n            <\/div>\n        <\/div>\n        <div class=\"vc-viz\" id=\"vc-viz\" style=\"text-align:center;margin:16px 0 8px\"><\/div>\n    <\/div>\n<\/div>\n\n<!-- Theory & Reference -->\n<div class=\"vc-section vc-open\" id=\"vc-sec-theory\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udcd8<\/span>\n            <span class=\"vc-section-title\">Theory &amp; Formulas<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner vc-theory\">\n            <h3>Second Moment of Area<\/h3>\n            <div class=\"vc-formula-box\" id=\"vc-katex-1\"><\/div>\n\n            <h3>Central Mass \u2014 Simply Supported<\/h3>\n            <p>For a shaft with a concentrated mass <strong>m<\/strong> at mid-span and simply supported ends:<\/p>\n            <div class=\"vc-formula-box\" id=\"vc-katex-2\"><\/div>\n            <div class=\"vc-formula-box\" id=\"vc-katex-3\"><\/div>\n\n            <h3>Support Condition Factors<\/h3>\n            <p>The stiffness coefficient <em>k<\/em> changes with support type:<\/p>\n            <table class=\"vc-table\">\n                <thead><tr><th>Support<\/th><th>Stiffness k<\/th><th>Factor vs SS<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>Simply Supported (central load)<\/td><td>48EI \/ L\u00b3<\/td><td>1.00<\/td><\/tr>\n                    <tr><td>Fixed-Fixed (central load)<\/td><td>192EI \/ L\u00b3<\/td><td>4.00<\/td><\/tr>\n                    <tr><td>Cantilever (end load)<\/td><td>3EI \/ L\u00b3<\/td><td>0.0625<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Practical Example<\/h3>\n            <div class=\"vc-example-box\">\n                <div class=\"vc-example-title\">Example \u2014 Pump Shaft<\/div>\n                <p><strong>Given:<\/strong> L = 800 mm, d = 50 mm, m = 30 kg, Steel E = 210 GPa, Simply Supported<\/p>\n                <p>I = \u03c0 \u00d7 50\u2074 \/ 64 = 306,796 mm\u2074<\/p>\n                <p>k = 48 \u00d7 210,000 \u00d7 306,796 \/ 800\u00b3 = 6,029 N\/mm<\/p>\n                <p>\u03c9_n = \u221a(6,029,000 \/ 30) = 448.2 rad\/s<\/p>\n                <p>N_cr = 448.2 \u00d7 60 \/ (2\u03c0) = <strong>4,280 RPM<\/strong><\/p>\n            <\/div>\n\n            <div class=\"vc-warning-box\">\n                <p style=\"margin:0;font-size:14px;color:var(--vc-ink-secondary);\"><strong>\u26a0\ufe0f Note:<\/strong> This simplified model assumes a massless shaft with a single concentrated mass. For more accurate results on heavy shafts, consider the Rayleigh or Dunkerley methods that account for distributed shaft mass.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Related Calculators -->\n<div class=\"vc-section\" id=\"vc-sec-related\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\ud83d\udd17<\/span>\n            <span class=\"vc-section-title\">Related Calculators<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-related\">\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 1940)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/influence-coefficient-calculator\/\">Influence Coefficient<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/correction-mass-decomposition\/\">Correction Mass Decomposition<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/blade-correction-calculator\/\">Blade Correction Calculator<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/trial-weight-calculator\/\">Trial Weight Calculator<\/a>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- FAQ -->\n<div class=\"vc-section\" id=\"vc-sec-faq\">\n    <button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"false\">\n        <span class=\"vc-section-toggle-text\">\n            <span class=\"vc-section-icon\">\u2753<\/span>\n            <span class=\"vc-section-title\">Frequently Asked Questions<\/span>\n        <\/span>\n        <svg class=\"vc-section-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>\n    <\/button>\n    <div class=\"vc-section-body\">\n        <div class=\"vc-section-inner\">\n            <div class=\"vc-faq-list\" id=\"vc-faq-list\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<!-- Promo -->\n<div class=\"vc-promo\">\n    <div class=\"vc-promo-text\">\n        <strong>Vibromera \u2014 Portable Balancing &amp; Vibration Analysis<\/strong><br>\n        Professional field balancing instruments and software. Measure vibration, find critical speeds, and balance rotors on-site. Used in 50+ countries.\n    <\/div>\n    <a class=\"vc-promo-link\" href=\"https:\/\/vibromera.eu\/\" target=\"_blank\" rel=\"noopener\">Learn More<\/a>\n<\/div>\n\n<!-- Footer -->\n<footer class=\"vc-footer\">\n    <p>\u00a9 2024\u20132025 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a> \u2014 Engineering Calculators<\/p>\n    <p style=\"font-size:12px;margin-top:4px;\">Rotor dynamics \u2014 central mass &amp; Rayleigh method. Last updated: February 2025<\/p>\n    <div class=\"vc-footer-links\">\n        <a href=\"\/calculators\/engineering-calculators\/\">All Calculators<\/a>\n        <a href=\"https:\/\/vibromera.eu\/contacts\/\">Contact<\/a>\n    <\/div>\n<\/footer>\n\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.11\/dist\/katex.min.js\"><\/script>\n<script>\n(function() {\n    'use strict';\n\n    var SLUG = 'rotor-critical-speed';\n\n    function $(id) { return document.getElementById(id); }\n    function fmt(n, d) { if (isNaN(n) || !isFinite(n)) return '\u2014'; var f = n.toFixed(d === undefined ? 2 : d); return f.replace(\/(\\.\\d*?)0+$\/, '$1').replace(\/\\.$\/, ''); }\n    function fmtInt(n) { if (isNaN(n) || !isFinite(n)) return '\u2014'; return Math.round(n).toLocaleString('en-US'); }\n\n    \/* \u2500\u2500 MATERIAL TOGGLE \u2500\u2500 *\/\n    $('vc-material').addEventListener('change', function() {\n        $('vc-custom-e-field').style.display = this.value === 'custom' ? '' : 'none';\n        calculate();\n    });\n\n    \/* \u2500\u2500 CALCULATION \u2500\u2500 *\/\n    function calculate() {\n        var L_mm = parseFloat($('vc-length').value);\n        var d_mm = parseFloat($('vc-diameter').value);\n        var m_kg = parseFloat($('vc-mass').value);\n        var matVal = $('vc-material').value;\n        var E_GPa = matVal === 'custom' ? parseFloat($('vc-custom-e').value) : parseFloat(matVal);\n        var support = $('vc-support').value;\n        var opSpeed = parseFloat($('vc-op-speed').value);\n\n        if (!L_mm || L_mm <= 0 || !d_mm || d_mm <= 0 || !m_kg || m_kg <= 0 || !E_GPa || E_GPa <= 0) {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        \/\/ Convert to SI: m, Pa, kg\n        var L = L_mm \/ 1000;       \/\/ m\n        var d = d_mm \/ 1000;       \/\/ m\n        var E = E_GPa * 1e9;       \/\/ Pa\n\n        \/\/ Second moment of area I = \u03c0 d\u2074 \/ 64\n        var I = Math.PI * Math.pow(d, 4) \/ 64;  \/\/ m\u2074\n        var I_mm4 = Math.PI * Math.pow(d_mm, 4) \/ 64; \/\/ mm\u2074\n\n        \/\/ Stiffness k depending on support\n        var k; \/\/ N\/m\n        var kLabel;\n        if (support === 'ss') {\n            k = 48 * E * I \/ Math.pow(L, 3);\n            kLabel = '48EI\/L\u00b3';\n        } else if (support === 'ff') {\n            k = 192 * E * I \/ Math.pow(L, 3);\n            kLabel = '192EI\/L\u00b3';\n        } else { \/\/ cantilever\n            k = 3 * E * I \/ Math.pow(L, 3);\n            kLabel = '3EI\/L\u00b3';\n        }\n\n        \/\/ Natural frequency\n        var omega_n = Math.sqrt(k \/ m_kg); \/\/ rad\/s\n        var f_cr = omega_n \/ (2 * Math.PI); \/\/ Hz\n        var N_cr = f_cr * 60; \/\/ RPM\n\n        \/\/ Display\n        $('vc-r-ncr').innerHTML = fmtInt(N_cr) + ' <span class=\"vc-rcard-unit\">RPM<\/span>';\n        $('vc-r-freq').innerHTML = fmt(f_cr, 1) + ' <span class=\"vc-rcard-unit\">Hz<\/span>';\n        $('vc-r-omega').innerHTML = fmt(omega_n, 1) + ' <span class=\"vc-rcard-unit\">rad\/s<\/span>';\n        $('vc-r-inertia').innerHTML = fmt(I_mm4, 0) + ' <span class=\"vc-rcard-unit\">mm\u2074<\/span>';\n\n        \/\/ Stiffness in N\/mm for display\n        var k_Nmm = k \/ 1000;\n        $('vc-r-stiffness').innerHTML = fmt(k_Nmm, 1) + ' <span class=\"vc-rcard-unit\">N\/mm<\/span>';\n\n        \/\/ Operating speed margin\n        if (opSpeed && opSpeed > 0) {\n            var margin = ((N_cr - opSpeed) \/ opSpeed) * 100;\n            var marginClass = '';\n            var marginNote = '';\n            if (Math.abs(margin) < 20) {\n                marginClass = 'vc-margin-danger';\n                marginNote = ' \u26a0 DANGER ZONE';\n            } else if (Math.abs(margin) < 40) {\n                marginClass = 'vc-margin-warn';\n                marginNote = ' \u2014 Caution';\n            } else {\n                marginClass = 'vc-margin-ok';\n                marginNote = ' \u2014 OK';\n            }\n            var ratio = opSpeed \/ N_cr;\n            $('vc-r-margin').innerHTML = '<span class=\"' + marginClass + '\">' + (margin > 0 ? '+' : '') + fmt(margin, 1) + '%' + marginNote + '<\/span><br><span class=\"vc-rcard-unit\">N\/N_cr = ' + fmt(ratio, 3) + '<\/span>';\n        } else {\n            $('vc-r-margin').innerHTML = '<span class=\"vc-rcard-unit\">Enter operating RPM<\/span>';\n        }\n\n        $('vc-results').classList.add('vc-visible');\n        drawViz(support, N_cr, opSpeed);\n\n        \/\/ URL params\n        var u = new URL(window.location);\n        u.searchParams.set('L', L_mm);\n        u.searchParams.set('d', d_mm);\n        u.searchParams.set('m', m_kg);\n        u.searchParams.set('E', E_GPa);\n        u.searchParams.set('support', support);\n        if (opSpeed) u.searchParams.set('opspeed', opSpeed);\n        history.replaceState(null, '', u.toString());\n\n        saveHistory({\n            L: L_mm, d: d_mm, m: m_kg, E: E_GPa, support: support,\n            _summary: '\u00d8' + d_mm + '\u00d7' + L_mm + 'mm, ' + m_kg + 'kg \u2192 ' + fmtInt(N_cr) + ' RPM'\n        });\n    }\n\n    \/* \u2500\u2500 PRESETS \u2500\u2500 *\/\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            $('vc-length').value = this.getAttribute('data-l');\n            $('vc-diameter').value = this.getAttribute('data-d');\n            $('vc-mass').value = this.getAttribute('data-m');\n            $('vc-material').value = this.getAttribute('data-mat');\n            $('vc-support').value = this.getAttribute('data-sup');\n            $('vc-custom-e-field').style.display = 'none';\n            calculate();\n        });\n    });\n\n    \/* \u2500\u2500 AUTO-CALCULATE \u2500\u2500 *\/\n    $('vc-form').addEventListener('input', calculate);\n    $('vc-form').addEventListener('change', calculate);\n\n    \/* \u2500\u2500 COPY \u2500\u2500 *\/\n    $('vc-copy-btn').addEventListener('click', function() {\n        var text = 'Rotor Critical Speed Calculation\\n' +\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\n            'Shaft: \u00d8' + $('vc-diameter').value + ' \u00d7 ' + $('vc-length').value + ' mm\\n' +\n            'Mass: ' + $('vc-mass').value + ' kg\\n' +\n            'Support: ' + $('vc-support').options[$('vc-support').selectedIndex].text + '\\n' +\n            'Critical Speed: ' + $('vc-r-ncr').textContent + '\\n' +\n            'Frequency: ' + $('vc-r-freq').textContent + '\\n' +\n            'Stiffness: ' + $('vc-r-stiffness').textContent + '\\n' +\n            '\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\\n' +\n            'vibromera.eu\/calculators\/rotor-critical-speed\/';\n\n        if (navigator.clipboard) {\n            navigator.clipboard.writeText(text).then(function() {\n                var btn = $('vc-copy-btn');\n                btn.classList.add('vc-copied');\n                btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg> Copied!';\n                setTimeout(function() {\n                    btn.classList.remove('vc-copied');\n                    btn.innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\"\/><path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\"\/><\/svg> Copy';\n                }, 2000);\n            });\n        }\n    });\n\n    \/* \u2500\u2500 COLLAPSIBLE SECTIONS \u2500\u2500 *\/\n    document.querySelectorAll('.vc-section-toggle').forEach(function(btn) {\n        btn.addEventListener('click', function() {\n            var section = this.closest('.vc-section');\n            var isOpen = section.classList.contains('vc-open');\n            section.classList.toggle('vc-open');\n            this.setAttribute('aria-expanded', !isOpen);\n        });\n    });\n\n    \/* \u2500\u2500 FAQ \u2500\u2500 *\/\n    var faqData = [\n        { q: 'What is critical speed?', a: '<p>Critical speed is the rotational speed at which a shaft\\'s rotational frequency matches one of its natural bending frequencies, causing <strong>resonance<\/strong>. At critical speed, even tiny unbalance forces are amplified dramatically, leading to dangerous vibration levels.<\/p><p>Every rotating shaft has one or more critical speeds. The first (lowest) critical speed is the most important for design purposes.<\/p>' },\n        { q: 'Why avoid operating near critical speed?', a: '<p>Operating near critical speed causes:<\/p><ul><li>Exponential amplification of vibration from unbalance<\/li><li>Excessive bearing loads and premature failure<\/li><li>Shaft deflection beyond elastic limits<\/li><li>Seal damage and oil leakage<\/li><li>Risk of catastrophic shaft failure<\/li><\/ul><p>The industry standard is to maintain at least a <strong>20% margin<\/strong> between operating speed and any critical speed.<\/p>' },\n        { q: 'How to raise critical speed?', a: '<p>Critical speed can be increased by:<\/p><ul><li><strong>Increasing shaft diameter<\/strong> \u2014 stiffness scales with d\u2074, very effective<\/li><li><strong>Reducing shaft length<\/strong> \u2014 stiffness scales with 1\/L\u00b3<\/li><li><strong>Using stiffer material<\/strong> \u2014 higher E modulus<\/li><li><strong>Reducing rotor mass<\/strong> \u2014 lighter rotor = higher frequency<\/li><li><strong>Changing supports<\/strong> \u2014 fixed-fixed is 4\u00d7 stiffer than simply supported<\/li><\/ul>' },\n        { q: 'What is the difference between a rigid and flexible rotor?', a: '<p>A <strong>rigid rotor<\/strong> operates well below its first critical speed (N_op < 0.7 \u00d7 N_cr). It can be balanced at low speed in a balancing machine.<\/p><p>A <strong>flexible rotor<\/strong> operates above its first critical speed and must pass through resonance during startup. It requires high-speed balancing and may need modal balancing at multiple speeds.<\/p>' },\n        { q: 'What safety margin is recommended?', a: '<p>Common standards recommend:<\/p><ul><li><strong>API 610\/617:<\/strong> First critical speed \u2265 120% of max continuous speed (rigid rotors)<\/li><li><strong>API 612:<\/strong> Operating speed \u2265 115% above first critical (flexible rotors)<\/li><li><strong>General practice:<\/strong> Stay at least 20\u201330% away from any critical speed<\/li><\/ul><p>The \u00b120% band around a critical speed is considered the <strong>danger zone<\/strong> and should be avoided during continuous operation.<\/p>' }\n    ];\n\n    var faqList = $('vc-faq-list');\n    faqData.forEach(function(faq) {\n        faqList.innerHTML += '<div class=\"vc-faq-item\"><button type=\"button\" class=\"vc-faq-q\"><span>' + faq.q + '<\/span><svg class=\"vc-faq-chevron\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M6 9l6 6 6-6\"\/><\/svg><\/button><div class=\"vc-faq-a\"><div class=\"vc-faq-a-inner\">' + faq.a + '<\/div><\/div><\/div>';\n    });\n    faqList.addEventListener('click', function(e) {\n        var btn = e.target.closest('.vc-faq-q');\n        if (!btn) return;\n        btn.closest('.vc-faq-item').classList.toggle('vc-open');\n    });\n\n    \/* \u2500\u2500 VISUALIZATION \u2500\u2500 *\/\n    function drawViz(support, Ncr, opSpeed) {\n        var c = $('vc-viz'), W = 400, H = 180;\n        var svg = '<svg width=\"'+W+'\" height=\"'+H+'\" viewBox=\"0 0 '+W+' '+H+'\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">';\n        var x0 = 60, x1 = W - 60, cy = 70, shaftR = 6;\n        \/\/ Supports\n        if (support === 'cantilever') {\n            svg += '<rect x=\"'+(x0-10)+'\" y=\"'+(cy-25)+'\" width=\"10\" height=\"50\" rx=\"2\" fill=\"#7b8fa3\" stroke=\"#5a6a7a\" stroke-width=\"1.5\"\/>';\n            svg += '<line x1=\"'+x0+'\" y1=\"'+cy+'\" x2=\"'+x1+'\" y2=\"'+cy+'\" stroke=\"#3578b2\" stroke-width=\"'+(shaftR*2)+'\" stroke-linecap=\"round\"\/>';\n        } else {\n            \/\/ Simply supported or fixed-fixed\n            svg += '<line x1=\"'+x0+'\" y1=\"'+cy+'\" x2=\"'+x1+'\" y2=\"'+cy+'\" stroke=\"#3578b2\" stroke-width=\"'+(shaftR*2)+'\" stroke-linecap=\"round\"\/>';\n            \/\/ Triangle supports\n            var triH = 18;\n            svg += '<polygon points=\"'+x0+','+(cy+shaftR)+' '+(x0-12)+','+(cy+shaftR+triH)+' '+(x0+12)+','+(cy+shaftR+triH)+'\" fill=\"#d9d4cc\" stroke=\"#8a857e\" stroke-width=\"1\"\/>';\n            svg += '<polygon points=\"'+x1+','+(cy+shaftR)+' '+(x1-12)+','+(cy+shaftR+triH)+' '+(x1+12)+','+(cy+shaftR+triH)+'\" fill=\"#d9d4cc\" stroke=\"#8a857e\" stroke-width=\"1\"\/>';\n            if (support === 'ff') {\n                svg += '<rect x=\"'+(x0-5)+'\" y=\"'+(cy-shaftR-3)+'\" width=\"10\" height=\"'+(shaftR*2+6)+'\" rx=\"1\" fill=\"none\" stroke=\"#5a6a7a\" stroke-width=\"1.5\"\/>';\n                svg += '<rect x=\"'+(x1-5)+'\" y=\"'+(cy-shaftR-3)+'\" width=\"10\" height=\"'+(shaftR*2+6)+'\" rx=\"1\" fill=\"none\" stroke=\"#5a6a7a\" stroke-width=\"1.5\"\/>';\n            }\n        }\n        \/\/ First mode deflection curve (sinusoidal)\n        var deflAmp = 35;\n        var pts = [];\n        for (var i = 0; i <= 50; i++) {\n            var t = i \/ 50;\n            var xp, yp;\n            if (support === 'cantilever') {\n                xp = x0 + t * (x1 - x0);\n                yp = cy + deflAmp * (1 - Math.cos(Math.PI * t \/ 2)) * t;\n            } else {\n                xp = x0 + t * (x1 - x0);\n                yp = cy + deflAmp * Math.sin(Math.PI * t);\n            }\n            pts.push(xp.toFixed(1) + ' ' + yp.toFixed(1));\n        }\n        svg += '<polyline points=\"'+pts.join(',')+'\" fill=\"none\" stroke=\"#e74c3c\" stroke-width=\"2\" stroke-dasharray=\"6,3\" opacity=\"0.7\"\/>';\n        \/\/ Central mass (disc)\n        var discX = support === 'cantilever' ? x1 : (x0 + x1) \/ 2;\n        var discY = support === 'cantilever' ? cy + deflAmp : cy;\n        svg += '<ellipse cx=\"'+discX+'\" cy=\"'+discY+'\" rx=\"12\" ry=\"'+(shaftR+8)+'\" fill=\"rgba(200,90,42,0.2)\" stroke=\"#c85a2a\" stroke-width=\"1.5\"\/>';\n        \/\/ Labels\n        svg += '<text x=\"'+(W\/2)+'\" y=\"16\" text-anchor=\"middle\" fill=\"#2c3e50\" font-size=\"11\" font-weight=\"600\">1st Mode Shape \u2014 N_cr = '+Math.round(Ncr)+' RPM<\/text>';\n        var supportLabel = support === 'ss' ? 'Simply Supported' : support === 'ff' ? 'Fixed-Fixed' : 'Cantilever';\n        svg += '<text x=\"'+(W\/2)+'\" y=\"'+(H-6)+'\" text-anchor=\"middle\" fill=\"#8a857e\" font-size=\"9\">'+supportLabel;\n        if (opSpeed && opSpeed > 0) svg += ' | Operating: '+Math.round(opSpeed)+' RPM';\n        svg += '<\/text>';\n        \/\/ Deflection arrow\n        var arrX = support === 'cantilever' ? x1 : (x0 + x1) \/ 2;\n        svg += '<line x1=\"'+arrX+'\" y1=\"'+(cy+3)+'\" x2=\"'+arrX+'\" y2=\"'+(cy+deflAmp-5)+'\" stroke=\"#e74c3c\" stroke-width=\"1\" stroke-dasharray=\"2,2\"\/>';\n        svg += '<text x=\"'+(arrX+8)+'\" y=\"'+(cy+deflAmp\/2+4)+'\" fill=\"#e74c3c\" font-size=\"9\" font-weight=\"600\">\\u03B4<\/text>';\n        svg += '<\/svg>';\n        c.innerHTML = svg;\n    }\n\n    \/* \u2500\u2500 HISTORY \u2500\u2500 *\/\n    function saveHistory(entry) {\n        var key = 'vc_history_' + SLUG;\n        var arr = [];\n        try { arr = JSON.parse(localStorage.getItem(key)) || []; } catch(e) {}\n        entry._ts = new Date().toISOString();\n        arr.unshift(entry);\n        if (arr.length > 10) arr = arr.slice(0, 10);\n        try { localStorage.setItem(key, JSON.stringify(arr)); } catch(e) {}\n    }\n\n    \/* \u2500\u2500 URL PARAMS \u2500\u2500 *\/\n    function loadParams() {\n        var p = new URLSearchParams(window.location.search);\n        if (p.has('L')) $('vc-length').value = p.get('L');\n        if (p.has('d')) $('vc-diameter').value = p.get('d');\n        if (p.has('m')) $('vc-mass').value = p.get('m');\n        if (p.has('E')) {\n            var eVal = p.get('E');\n            if (eVal === '210' || eVal === '193' || eVal === '69') {\n                $('vc-material').value = eVal;\n            } else {\n                $('vc-material').value = 'custom';\n                $('vc-custom-e').value = eVal;\n                $('vc-custom-e-field').style.display = '';\n            }\n        }\n        if (p.has('support')) $('vc-support').value = p.get('support');\n        if (p.has('opspeed')) $('vc-op-speed').value = p.get('opspeed');\n    }\n\n    \/* \u2500\u2500 KATEX \u2500\u2500 *\/\n    function renderFormulas() {\n        try {\n            katex.render('I = \\\\frac{\\\\pi d^4}{64}', $('vc-katex-1'), { displayMode: true, throwOnError: false });\n            katex.render('\\\\omega_n = \\\\sqrt{\\\\frac{k}{m}} = \\\\sqrt{\\\\frac{48EI}{mL^3}} \\\\quad \\\\text{(simply supported)}', $('vc-katex-2'), { displayMode: true, throwOnError: false });\n            katex.render('f_{cr} = \\\\frac{\\\\omega_n}{2\\\\pi} \\\\;[\\\\text{Hz}], \\\\qquad N_{cr} = f_{cr} \\\\times 60 \\\\;[\\\\text{RPM}]', $('vc-katex-3'), { displayMode: true, throwOnError: false });\n        } catch(e) {}\n    }\n\n    \/* \u2500\u2500 INIT \u2500\u2500 *\/\n    function init() {\n        loadParams();\n        renderFormulas();\n        calculate();\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', init);\n    } else {\n        init();\n    }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Free online calculator for rotor critical speed and shaft natural frequency. Compute first critical RPM for simply supported, cantilever, and fixed-fixed shafts with central mass or distributed mass (Rayleigh).<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100210","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":1,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100210\/revisions"}],"predecessor-version":[{"id":100525,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100210\/revisions\/100525"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/media?parent=100210"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/categories?post=100210"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/tags?post=100210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}