{"id":100256,"date":"2026-02-15T20:29:58","date_gmt":"2026-02-15T20:29:58","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100256"},"modified":"2026-03-05T15:39:36","modified_gmt":"2026-03-05T15:39:36","slug":"thermal-growth-alignment","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/bn\/calculators\/thermal-growth-alignment\/","title":{"rendered":"Thermal Growth Compensation Calculator | Vibromera"},"content":{"rendered":"\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Thermal Growth Compensation Calculator\",\"alternateName\":[\"Thermal Expansion Calculator\",\"Cold Alignment Offset Calculator\",\"Shaft Thermal Growth Calculator\"],\"description\":\"Free online engineering calculator for thermal growth compensation in shaft alignment. Compute vertical centerline growth for driver and driven machines to determine cold alignment pre-offset targets.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/thermal-growth-alignment\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"datePublished\":\"2024-01-01\",\"dateModified\":\"2025-02-14\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true,\"featureList\":[\"Driver and driven machine calculation\",\"Multiple material coefficients\",\"Common machine presets\",\"Cold pre-offset direction guidance\",\"Auto-calculation on input change\",\"URL parameter sharing\",\"Calculation history\"],\"keywords\":\"thermal growth, shaft alignment, thermal expansion, cold offset, centerline height, CTE\"}\n<\/script>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\n{\"@type\":\"Question\",\"name\":\"What is thermal growth in shaft alignment?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Thermal growth is the vertical expansion of a machine's centerline height as it heats up from ambient to operating temperature. The formula is \u0394H = H \u00d7 \u03b1 \u00d7 \u0394T, where H is foot-to-centerline height, \u03b1 is the coefficient of thermal expansion, and \u0394T is the temperature rise.\"}},\n{\"@type\":\"Question\",\"name\":\"Why pre-offset cold alignment?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Machines are aligned cold but run hot. If both machines grow by different amounts, perfect cold alignment results in misalignment at operating temperature. Pre-offsetting the cold alignment by the expected differential growth ensures alignment when hot.\"}},\n{\"@type\":\"Question\",\"name\":\"How do I determine operating temperature?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Operating temperatures can be measured on running equipment using infrared thermometers or contact probes at the bearing housing or machine feet. Typical values: electric motors 60\u201390\u00b0C, pumps 40\u201370\u00b0C (process dependent), steam turbines 80\u2013200\u00b0C.\"}},\n{\"@type\":\"Question\",\"name\":\"What are typical temperatures for motors and pumps?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Electric motors typically operate at 60\u201390\u00b0C at the casing. Centrifugal pumps range from 40\u201370\u00b0C for cold water service, but can be much higher for hot process fluids. Steam turbines may reach 150\u2013300\u00b0C. Gearboxes typically operate at 50\u201380\u00b0C.\"}},\n{\"@type\":\"Question\",\"name\":\"What is a hot alignment check?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A hot alignment check is performed while the machine is at operating temperature (immediately after shutdown). It verifies that the thermal growth predictions were correct and the machines are aligned under actual operating conditions. This is the gold standard for validating alignment.\"}}\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\":\"Thermal Growth Calculator\",\"item\":\"https:\/\/vibromera.eu\/calculators\/thermal-growth-alignment\/\"}\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:640px; }\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 MACHINE SECTION HEADER \u2500\u2500 *\/\n.vc-machine-header { font-family:var(--vc-display); font-size:16px; font-weight:700; color:var(--vc-ink); margin:0 0 4px; padding:14px 0 0; grid-column:1\/-1; border-top:1px solid var(--vc-border-light); }\n.vc-machine-header:first-child { border-top:none; padding-top:0; }\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.vc-rcard-sub { font-family:var(--vc-font); font-size:12px; font-weight:400; color:var(--vc-ink-muted); margin-top:4px; }\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-thermal-growth\">\n\n<!-- Header -->\n<header class=\"vc-header\">\n    <p class=\"vc-header-eyebrow\">Free Engineering Tool<\/p>\n    <h1 class=\"vc-header-title\">Thermal Growth Compensation for Shaft Alignment<\/h1>\n    <p class=\"vc-header-subtitle\">Calculate vertical centerline growth due to thermal expansion for driver and driven machines. Determine the cold alignment pre-offset target to achieve alignment at operating temperature.<\/p>\n    <div class=\"vc-badges\">\n        <span class=\"vc-badge\">Driver + Driven<\/span>\n        <span class=\"vc-badge\">\u0394H = H \u00d7 \u03b1 \u00d7 \u0394T<\/span>\n        <span class=\"vc-badge\">Cold Offset Target<\/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-ambient\">Ambient Temperature <span class=\"vc-label-hint\">(\u00b0C)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-ambient\" inputmode=\"decimal\" step=\"any\" placeholder=\"e.g. 20\" value=\"20\">\n            <\/div>\n            <div class=\"vc-field\">\n                <!-- spacer cell for alignment -->\n                <label class=\"vc-label\">&nbsp;<\/label>\n                <div style=\"font-size:13px;color:var(--vc-ink-muted);padding:10px 0;\">Enter data for both machines below. The difference determines the cold pre-offset.<\/div>\n            <\/div>\n\n            <!-- DRIVER -->\n            <h4 class=\"vc-machine-header\">Driver (e.g. Motor)<\/h4>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-type1\">Machine Type<\/label>\n                <select class=\"vc-select\" id=\"vc-type1\">\n                    <option value=\"Motor\" selected>Motor<\/option>\n                    <option value=\"Turbine\">Turbine<\/option>\n                    <option value=\"Gearbox\">Gearbox<\/option>\n                    <option value=\"Compressor\">Compressor<\/option>\n                    <option value=\"Custom\">Custom<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-mat1\">Material<\/label>\n                <select class=\"vc-select\" id=\"vc-mat1\">\n                    <option value=\"12\" selected>Steel (\u03b1 = 12\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"10.5\">Cast Iron (\u03b1 = 10.5\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"16\">Stainless Steel (\u03b1 = 16\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"23\">Aluminum (\u03b1 = 23\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"custom\">Custom CTE&#8230;<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-h1\">Foot-to-Centerline Height H <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-h1\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 200\" value=\"200\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-top1\">Operating Temperature <span class=\"vc-label-hint\">(\u00b0C)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-top1\" inputmode=\"decimal\" step=\"any\" placeholder=\"e.g. 80\" value=\"80\">\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-cte1-field\" style=\"display:none;\">\n                <label class=\"vc-label\" for=\"vc-cte1\">Custom CTE <span class=\"vc-label-hint\">(\u00d710\u207b\u2076 \/\u00b0C)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-cte1\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 12\" value=\"12\">\n            <\/div>\n\n            <!-- DRIVEN -->\n            <h4 class=\"vc-machine-header\">Driven (e.g. Pump)<\/h4>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-type2\">Machine Type<\/label>\n                <select class=\"vc-select\" id=\"vc-type2\">\n                    <option value=\"Pump\" selected>Pump<\/option>\n                    <option value=\"Gearbox\">Gearbox<\/option>\n                    <option value=\"Compressor\">Compressor<\/option>\n                    <option value=\"Fan\">Fan<\/option>\n                    <option value=\"Custom\">Custom<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-mat2\">Material<\/label>\n                <select class=\"vc-select\" id=\"vc-mat2\">\n                    <option value=\"12\" selected>Steel (\u03b1 = 12\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"10.5\">Cast Iron (\u03b1 = 10.5\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"16\">Stainless Steel (\u03b1 = 16\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"23\">Aluminum (\u03b1 = 23\u00d710\u207b\u2076 \/\u00b0C)<\/option>\n                    <option value=\"custom\">Custom CTE&#8230;<\/option>\n                <\/select>\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-h2\">Foot-to-Centerline Height H <span class=\"vc-label-hint\">(mm)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-h2\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 250\" value=\"250\">\n            <\/div>\n            <div class=\"vc-field\">\n                <label class=\"vc-label\" for=\"vc-top2\">Operating Temperature <span class=\"vc-label-hint\">(\u00b0C)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-top2\" inputmode=\"decimal\" step=\"any\" placeholder=\"e.g. 60\" value=\"60\">\n            <\/div>\n            <div class=\"vc-field\" id=\"vc-cte2-field\" style=\"display:none;\">\n                <label class=\"vc-label\" for=\"vc-cte2\">Custom CTE <span class=\"vc-label-hint\">(\u00d710\u207b\u2076 \/\u00b0C)<\/span><\/label>\n                <input class=\"vc-input\" type=\"number\" id=\"vc-cte2\" inputmode=\"decimal\" step=\"any\" min=\"0\" placeholder=\"e.g. 12\" value=\"12\">\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-preset=\"motor-pump\">Motor + Pump (H=200\/250, 80\/60\u00b0C)<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-preset=\"motor-gearbox\">Motor + Gearbox (H=180\/220, 75\/65\u00b0C)<\/button>\n            <button type=\"button\" class=\"vc-preset-btn\" data-preset=\"turbine-compressor\">Turbine + Compressor (H=300\/350, 150\/120\u00b0C)<\/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\">Cold Pre-Offset Target (Differential Growth)<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-diff\">\u2014<\/div>\n                <div class=\"vc-rcard-sub\" id=\"vc-r-direction\"><\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Driver Thermal Growth<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-dh1\">\u2014<\/div>\n                <div class=\"vc-rcard-sub\" id=\"vc-r-dh1-detail\"><\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Driven Thermal Growth<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-dh2\">\u2014<\/div>\n                <div class=\"vc-rcard-sub\" id=\"vc-r-dh2-detail\"><\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Driver \u0394T<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-dt1\">\u2014<\/div>\n            <\/div>\n            <div class=\"vc-rcard\">\n                <div class=\"vc-rcard-label\">Driven \u0394T<\/div>\n                <div class=\"vc-rcard-value\" id=\"vc-r-dt2\">\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>Thermal Growth Formula<\/h3>\n            <p>When a machine heats up, its frame expands vertically, raising the shaft centerline:<\/p>\n            <div class=\"vc-formula-box\" id=\"vc-katex-1\"><\/div>\n            <ul>\n                <li><strong>H<\/strong> \u2014 foot-to-centerline height (mm)<\/li>\n                <li><strong>\u03b1<\/strong> \u2014 coefficient of thermal expansion (\u00d710\u207b\u2076 \/\u00b0C)<\/li>\n                <li><strong>T<sub>op<\/sub><\/strong> \u2014 operating temperature (\u00b0C)<\/li>\n                <li><strong>T<sub>amb<\/sub><\/strong> \u2014 ambient temperature (\u00b0C)<\/li>\n            <\/ul>\n\n            <h3>Material CTE Values<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Material<\/th><th>\u03b1 (\u00d710\u207b\u2076 \/\u00b0C)<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>Carbon Steel<\/td><td>12.0<\/td><\/tr>\n                    <tr><td>Cast Iron<\/td><td>10.5<\/td><\/tr>\n                    <tr><td>Stainless Steel (304\/316)<\/td><td>16.0<\/td><\/tr>\n                    <tr><td>Aluminum<\/td><td>23.0<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n\n            <h3>Typical Operating Temperatures<\/h3>\n            <table class=\"vc-table\">\n                <thead><tr><th>Machine Type<\/th><th>Typical Casing Temp (\u00b0C)<\/th><\/tr><\/thead>\n                <tbody>\n                    <tr><td>Electric Motor<\/td><td>60 \u2013 90<\/td><\/tr>\n                    <tr><td>Centrifugal Pump (cold water)<\/td><td>40 \u2013 70<\/td><\/tr>\n                    <tr><td>Steam Turbine<\/td><td>80 \u2013 200<\/td><\/tr>\n                    <tr><td>Gearbox<\/td><td>50 \u2013 80<\/td><\/tr>\n                    <tr><td>Compressor<\/td><td>60 \u2013 120<\/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 Motor + Pump Train<\/div>\n                <p><strong>Given:<\/strong> Ambient = 20\u00b0C<\/p>\n                <p>Motor: H = 200 mm, Steel (\u03b1 = 12\u00d710\u207b\u2076), T<sub>op<\/sub> = 80\u00b0C<\/p>\n                <p>Pump: H = 250 mm, Steel (\u03b1 = 12\u00d710\u207b\u2076), T<sub>op<\/sub> = 60\u00b0C<\/p>\n                <p>\u0394H<sub>motor<\/sub> = 200 \u00d7 12\u00d710\u207b\u2076 \u00d7 (80 \u2212 20) = <strong>0.144 mm<\/strong><\/p>\n                <p>\u0394H<sub>pump<\/sub> = 250 \u00d7 12\u00d710\u207b\u2076 \u00d7 (60 \u2212 20) = <strong>0.120 mm<\/strong><\/p>\n                <p>Difference = 0.144 \u2212 0.120 = <strong>0.024 mm<\/strong><\/p>\n                <p>The motor grows more \u2192 set motor <strong>0.024 mm LOW<\/strong> during cold alignment.<\/p>\n            <\/div>\n\n            <div class=\"vc-info-box\">\n                <p><strong>\ud83d\udca1 Tip:<\/strong> The machine that grows more should be set LOW at cold alignment. When both heat up, the differential growth brings them into alignment.<\/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 calculation assumes uniform thermal expansion of the machine frame. In practice, thermal gradients, piping strain, and foundation effects may cause additional movements. Always verify with a hot alignment check when possible.<\/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\/shaft-alignment-tolerance\/\">Shaft Alignment Tolerance<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/soft-foot-calculator\/\">Soft Foot Calculator<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/vibration-velocity\/\">Vibration Velocity (ISO 10816)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/residual-unbalance-iso1940\/\">Residual Unbalance (ISO 21940)<\/a>\n                <a class=\"vc-related-link\" href=\"\/calculators\/shaft-radial-runout\/\">Shaft Radial Runout<\/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 laser alignment and vibration analysis instruments. Achieve precision alignment with thermal growth compensation 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;\">Thermal expansion engineering reference. 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 = 'thermal-growth-alignment';\n\n    function $(id) { return document.getElementById(id); }\n    function fmt(n, d) { if(isNaN(n)) return '\u2014'; var f=n.toFixed(d===undefined?3:d); return f.replace(\/(\\.\\d*?)0+$\/,'$1').replace(\/\\.$\/,''); }\n\n    \/* \u2500\u2500 CUSTOM CTE TOGGLE \u2500\u2500 *\/\n    $('vc-mat1').addEventListener('change', function() {\n        $('vc-cte1-field').style.display = this.value === 'custom' ? '' : 'none';\n    });\n    $('vc-mat2').addEventListener('change', function() {\n        $('vc-cte2-field').style.display = this.value === 'custom' ? '' : 'none';\n    });\n\n    function getAlpha(matSelect, cteInput) {\n        var val = matSelect.value;\n        if (val === 'custom') return parseFloat(cteInput.value) || 0;\n        return parseFloat(val);\n    }\n\n    \/* \u2500\u2500 CALCULATION \u2500\u2500 *\/\n    function calculate() {\n        var ambient = parseFloat($('vc-ambient').value);\n        var h1 = parseFloat($('vc-h1').value);\n        var top1 = parseFloat($('vc-top1').value);\n        var alpha1 = getAlpha($('vc-mat1'), $('vc-cte1'));\n        var h2 = parseFloat($('vc-h2').value);\n        var top2 = parseFloat($('vc-top2').value);\n        var alpha2 = getAlpha($('vc-mat2'), $('vc-cte2'));\n\n        if (isNaN(ambient) || isNaN(h1) || h1 <= 0 || isNaN(top1) || isNaN(h2) || h2 <= 0 || isNaN(top2)) {\n            $('vc-results').classList.remove('vc-visible');\n            return;\n        }\n\n        var dt1 = top1 - ambient;\n        var dt2 = top2 - ambient;\n        var dh1 = h1 * alpha1 * 1e-6 * dt1; \/\/ mm\n        var dh2 = h2 * alpha2 * 1e-6 * dt2; \/\/ mm\n        var diff = Math.abs(dh1 - dh2);\n\n        \/\/ Determine direction\n        var direction = '';\n        if (dh1 > dh2) {\n            direction = 'Driver grows more \u2192 Set driver LOW by ' + fmt(diff, 3) + ' mm at cold alignment';\n        } else if (dh2 > dh1) {\n            direction = 'Driven grows more \u2192 Set driven LOW by ' + fmt(diff, 3) + ' mm at cold alignment';\n        } else {\n            direction = 'Both machines grow equally \u2014 no pre-offset needed';\n        }\n\n        \/\/ Display\n        $('vc-r-diff').innerHTML = fmt(diff, 3) + ' <span class=\"vc-rcard-unit\">mm<\/span>';\n        $('vc-r-direction').textContent = direction;\n        $('vc-r-dh1').innerHTML = fmt(dh1, 3) + ' <span class=\"vc-rcard-unit\">mm<\/span>';\n        $('vc-r-dh1-detail').textContent = $('vc-type1').value + ': H=' + fmt(h1,0) + 'mm, \u03b1=' + alpha1 + '\u00d710\u207b\u2076, \u0394T=' + fmt(dt1,0) + '\u00b0C';\n        $('vc-r-dh2').innerHTML = fmt(dh2, 3) + ' <span class=\"vc-rcard-unit\">mm<\/span>';\n        $('vc-r-dh2-detail').textContent = $('vc-type2').value + ': H=' + fmt(h2,0) + 'mm, \u03b1=' + alpha2 + '\u00d710\u207b\u2076, \u0394T=' + fmt(dt2,0) + '\u00b0C';\n        $('vc-r-dt1').innerHTML = fmt(dt1, 1) + ' <span class=\"vc-rcard-unit\">\u00b0C<\/span>';\n        $('vc-r-dt2').innerHTML = fmt(dt2, 1) + ' <span class=\"vc-rcard-unit\">\u00b0C<\/span>';\n\n        $('vc-results').classList.add('vc-visible');\n        drawViz(dh1, dh2, diff, $('vc-type1').value, $('vc-type2').value);\n\n        \/\/ URL params\n        var u = new URL(window.location);\n        u.searchParams.set('ambient', ambient);\n        u.searchParams.set('h1', h1); u.searchParams.set('top1', top1); u.searchParams.set('mat1', $('vc-mat1').value);\n        u.searchParams.set('h2', h2); u.searchParams.set('top2', top2); u.searchParams.set('mat2', $('vc-mat2').value);\n        history.replaceState(null, '', u.toString());\n\n        \/\/ History\n        saveHistory({\n            ambient: ambient, h1: h1, top1: top1, h2: h2, top2: top2,\n            _summary: '\u0394H\u2081=' + fmt(dh1,3) + 'mm, \u0394H\u2082=' + fmt(dh2,3) + 'mm, diff=' + fmt(diff,3) + 'mm'\n        });\n    }\n\n    \/* \u2500\u2500 PRESETS \u2500\u2500 *\/\n    var presets = {\n        'motor-pump': { ambient:20, type1:'Motor', mat1:'12', h1:200, top1:80, type2:'Pump', mat2:'12', h2:250, top2:60 },\n        'motor-gearbox': { ambient:20, type1:'Motor', mat1:'12', h1:180, top1:75, type2:'Gearbox', mat2:'12', h2:220, top2:65 },\n        'turbine-compressor': { ambient:20, type1:'Turbine', mat1:'12', h1:300, top1:150, type2:'Compressor', mat2:'12', h2:350, top2:120 }\n    };\n\n    document.querySelectorAll('.vc-preset-btn').forEach(function(btn) {\n        btn.addEventListener('click', function(e) {\n            e.preventDefault();\n            var p = presets[this.getAttribute('data-preset')];\n            if (!p) return;\n            $('vc-ambient').value = p.ambient;\n            $('vc-type1').value = p.type1; $('vc-mat1').value = p.mat1; $('vc-h1').value = p.h1; $('vc-top1').value = p.top1;\n            $('vc-type2').value = p.type2; $('vc-mat2').value = p.mat2; $('vc-h2').value = p.h2; $('vc-top2').value = p.top2;\n            $('vc-cte1-field').style.display = 'none';\n            $('vc-cte2-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 = 'Thermal Growth Compensation 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            'Ambient: ' + $('vc-ambient').value + ' \u00b0C\\n' +\n            'Driver (' + $('vc-type1').value + '): H=' + $('vc-h1').value + 'mm, T=' + $('vc-top1').value + '\u00b0C \u2192 \u0394H=' + $('vc-r-dh1').textContent + '\\n' +\n            'Driven (' + $('vc-type2').value + '): H=' + $('vc-h2').value + 'mm, T=' + $('vc-top2').value + '\u00b0C \u2192 \u0394H=' + $('vc-r-dh2').textContent + '\\n' +\n            'Differential: ' + $('vc-r-diff').textContent + '\\n' +\n            $('vc-r-direction').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\/thermal-growth-alignment\/';\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 thermal growth in shaft alignment?', a: '<p>Thermal growth is the vertical expansion of a machine\\'s shaft centerline height as the machine heats up from ambient to operating temperature. All materials expand when heated, and for rotating machinery this means the shaft centerline rises.<\/p><p>The growth is calculated as: <strong>\u0394H = H \u00d7 \u03b1 \u00d7 (T<sub>op<\/sub> \u2212 T<sub>amb<\/sub>)<\/strong>, where H is the foot-to-centerline height, \u03b1 is the coefficient of thermal expansion, and the temperatures are in \u00b0C.<\/p>' },\n        { q: 'Why pre-offset cold alignment?', a: '<p>Machines are aligned when cold (not running) but operate when hot. If the driver and driven machines grow by different amounts vertically, perfect cold alignment will result in misalignment at operating temperature.<\/p><p>By intentionally offsetting the cold alignment by the expected differential growth, the machines come into proper alignment when they reach operating temperature. The machine that grows more is set <strong>low<\/strong> during cold alignment.<\/p>' },\n        { q: 'How do I determine the operating temperature?', a: '<p>Operating temperatures can be measured on running equipment using:<\/p><ul><li><strong>Infrared thermometer<\/strong> \u2014 quick non-contact measurement at machine feet or bearing housings<\/li><li><strong>Contact thermocouple probes<\/strong> \u2014 more accurate surface temperature<\/li><li><strong>RTDs\/thermocouples<\/strong> \u2014 permanently installed sensors<\/li><\/ul><p>Measure at the machine feet or base, not at the top of the casing, as this best represents the temperature affecting vertical growth. Allow the machine to reach thermal steady state (typically 2\u20134 hours).<\/p>' },\n        { q: 'What are typical temperatures for motors and pumps?', a: '<p>Typical casing\/foot temperatures for common machines:<\/p><ul><li><strong>Electric motors:<\/strong> 60\u201390\u00b0C (depending on frame size and load)<\/li><li><strong>Centrifugal pumps:<\/strong> 40\u201370\u00b0C (cold water), up to 200\u00b0C+ (hot process)<\/li><li><strong>Steam turbines:<\/strong> 80\u2013200\u00b0C<\/li><li><strong>Gearboxes:<\/strong> 50\u201380\u00b0C<\/li><li><strong>Compressors:<\/strong> 60\u2013120\u00b0C<\/li><\/ul><p>These are approximate values. Always measure on the actual equipment when possible.<\/p>' },\n        { q: 'What is a hot alignment check?', a: '<p>A hot alignment check is performed immediately after shutting down equipment that has been running at normal operating temperature. The alignment is measured before significant cooling occurs (typically within 15\u201330 minutes of shutdown).<\/p><p>This check verifies whether:<\/p><ul><li>The calculated thermal growth predictions were accurate<\/li><li>The cold pre-offset was correct<\/li><li>Other factors (piping strain, foundation movement) are affecting alignment<\/li><\/ul><p>A hot check is the gold standard for validating alignment and should be performed whenever practical, especially on critical machinery.<\/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(dh1, dh2, diff, type1, type2) {\n        var c = $('vc-viz'), W = 400, H = 200;\n        var svg = '<svg width=\"'+W+'\" height=\"'+H+'\" viewBox=\"0 0 '+W+' '+H+'\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">';\n        svg += '<defs><marker id=\"tga\" markerWidth=\"7\" markerHeight=\"5\" refX=\"6\" refY=\"2.5\" orient=\"auto\"><path d=\"M0,0 L7,2.5 L0,5\" fill=\"#e74c3c\"\/><\/marker><\/defs>';\n        var baseY = H - 40, mW = 80, mH = 50, gap = 30;\n        var mx1 = W \/ 2 - gap \/ 2 - mW, mx2 = W \/ 2 + gap \/ 2;\n        \/\/ Scale growth arrows (min 5, max 45 pixels)\n        var maxGrowth = Math.max(dh1, dh2, 0.01);\n        var scale = 40 \/ maxGrowth;\n        var g1 = Math.max(3, dh1 * scale), g2 = Math.max(3, dh2 * scale);\n        \/\/ Base plate\n        svg += '<rect x=\"'+(mx1-10)+'\" y=\"'+baseY+'\" width=\"'+(mW*2+gap+20)+'\" height=\"10\" rx=\"2\" fill=\"#d9d4cc\" stroke=\"#8a857e\" stroke-width=\"1\"\/>';\n        \/\/ Cold position (dashed outline)\n        svg += '<rect x=\"'+mx1+'\" y=\"'+(baseY-mH)+'\" width=\"'+mW+'\" height=\"'+mH+'\" rx=\"3\" fill=\"none\" stroke=\"#3578b2\" stroke-width=\"1\" stroke-dasharray=\"4,3\"\/>';\n        svg += '<rect x=\"'+mx2+'\" y=\"'+(baseY-mH)+'\" width=\"'+mW+'\" height=\"'+mH+'\" rx=\"3\" fill=\"none\" stroke=\"#7b8fa3\" stroke-width=\"1\" stroke-dasharray=\"4,3\"\/>';\n        \/\/ Hot position (solid, shifted up)\n        svg += '<rect x=\"'+mx1+'\" y=\"'+(baseY-mH-g1)+'\" width=\"'+mW+'\" height=\"'+mH+'\" rx=\"3\" fill=\"rgba(212,230,249,0.6)\" stroke=\"#3578b2\" stroke-width=\"1.5\"\/>';\n        svg += '<rect x=\"'+mx2+'\" y=\"'+(baseY-mH-g2)+'\" width=\"'+mW+'\" height=\"'+mH+'\" rx=\"3\" fill=\"rgba(224,231,239,0.6)\" stroke=\"#7b8fa3\" stroke-width=\"1.5\"\/>';\n        \/\/ Thermal growth arrows\n        svg += '<line x1=\"'+(mx1+mW\/2)+'\" y1=\"'+(baseY-mH-2)+'\" x2=\"'+(mx1+mW\/2)+'\" y2=\"'+(baseY-mH-g1+2)+'\" stroke=\"#e74c3c\" stroke-width=\"2\" marker-end=\"url(#tga)\"\/>';\n        svg += '<line x1=\"'+(mx2+mW\/2)+'\" y1=\"'+(baseY-mH-2)+'\" x2=\"'+(mx2+mW\/2)+'\" y2=\"'+(baseY-mH-g2+2)+'\" stroke=\"#e74c3c\" stroke-width=\"2\" marker-end=\"url(#tga)\"\/>';\n        \/\/ Growth labels\n        svg += '<text x=\"'+(mx1+mW\/2+14)+'\" y=\"'+(baseY-mH-g1\/2)+'\" fill=\"#e74c3c\" font-size=\"10\" font-weight=\"600\">'+fmt(dh1,3)+'mm<\/text>';\n        svg += '<text x=\"'+(mx2+mW\/2+14)+'\" y=\"'+(baseY-mH-g2\/2)+'\" fill=\"#e74c3c\" font-size=\"10\" font-weight=\"600\">'+fmt(dh2,3)+'mm<\/text>';\n        \/\/ Shaft centerlines\n        var cl1 = baseY - mH - g1 + mH \/ 2;\n        var cl2 = baseY - mH - g2 + mH \/ 2;\n        svg += '<line x1=\"'+(mx1+10)+'\" y1=\"'+cl1+'\" x2=\"'+(mx1+mW-10)+'\" y2=\"'+cl1+'\" stroke=\"#3578b2\" stroke-width=\"1.5\" stroke-dasharray=\"2,2\"\/>';\n        svg += '<line x1=\"'+(mx2+10)+'\" y1=\"'+cl2+'\" x2=\"'+(mx2+mW-10)+'\" y2=\"'+cl2+'\" stroke=\"#7b8fa3\" stroke-width=\"1.5\" stroke-dasharray=\"2,2\"\/>';\n        \/\/ Coupling connection\n        svg += '<rect x=\"'+(mx1+mW)+'\" y=\"'+(Math.min(cl1,cl2)-6)+'\" width=\"'+gap+'\" height=\"12\" rx=\"3\" fill=\"none\" stroke=\"#8a857e\" stroke-width=\"1\" stroke-dasharray=\"3,2\"\/>';\n        \/\/ Machine labels\n        svg += '<text x=\"'+(mx1+mW\/2)+'\" y=\"'+(baseY-mH-g1+mH\/2+4)+'\" text-anchor=\"middle\" fill=\"#3578b2\" font-size=\"11\" font-weight=\"600\">'+type1+'<\/text>';\n        svg += '<text x=\"'+(mx2+mW\/2)+'\" y=\"'+(baseY-mH-g2+mH\/2+4)+'\" text-anchor=\"middle\" fill=\"#7b8fa3\" font-size=\"11\" font-weight=\"600\">'+type2+'<\/text>';\n        \/\/ Cold offset target\n        if (diff > 0.001) {\n            var higher = dh1 > dh2 ? type1 : type2;\n            svg += '<text x=\"'+(W\/2)+'\" y=\"14\" text-anchor=\"middle\" fill=\"#2c3e50\" font-size=\"11\" font-weight=\"600\">Set '+higher+' LOW by '+fmt(diff,3)+' mm at cold alignment<\/text>';\n        } else {\n            svg += '<text x=\"'+(W\/2)+'\" y=\"14\" text-anchor=\"middle\" fill=\"#2c3e50\" font-size=\"11\" font-weight=\"600\">Equal growth \u2014 no pre-offset needed<\/text>';\n        }\n        svg += '<text x=\"'+(W\/2)+'\" y=\"'+(H-6)+'\" text-anchor=\"middle\" fill=\"#8a857e\" font-size=\"9\">Dashed = cold position, Solid = hot position<\/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.get('ambient')) $('vc-ambient').value = p.get('ambient');\n        if (p.get('h1')) $('vc-h1').value = p.get('h1');\n        if (p.get('top1')) $('vc-top1').value = p.get('top1');\n        if (p.get('mat1')) $('vc-mat1').value = p.get('mat1');\n        if (p.get('h2')) $('vc-h2').value = p.get('h2');\n        if (p.get('top2')) $('vc-top2').value = p.get('top2');\n        if (p.get('mat2')) $('vc-mat2').value = p.get('mat2');\n    }\n\n    \/* \u2500\u2500 KATEX \u2500\u2500 *\/\n    function renderFormulas() {\n        try {\n            katex.render('\\\\Delta H = H \\\\times \\\\alpha \\\\times (T_{\\\\text{operating}} - T_{\\\\text{ambient}}) \\\\quad [\\\\text{mm}]', $('vc-katex-1'), { 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 thermal growth calculator for shaft alignment. Compute vertical centerline growth due to thermal expansion for motors, pumps, turbines, and gearboxes. Determine cold alignment pre-offset targets.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100256","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100256","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":2,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100256\/revisions"}],"predecessor-version":[{"id":100759,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/calculator\/100256\/revisions\/100759"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/media?parent=100256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/categories?post=100256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/bn\/wp-json\/wp\/v2\/tags?post=100256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}