{"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-07-15T19:19:33","modified_gmt":"2026-07-15T19:19:33","slug":"thermal-growth-alignment","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/fa\/calculators\/thermal-growth-alignment\/","title":{"rendered":"\u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u062a\u0631\u0644\u200c\u0634\u062f\u0647 \u062d\u0631\u06a9\u062a \u062d\u0631\u0627\u0631\u062a\u06cc \u0628\u0631\u0627\u06cc \u0647\u0645\u200c\u0645\u062d\u0648\u0631\u06cc \u0634\u0641\u062a"},"content":{"rendered":"<p><script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Controlled Thermal-Movement Comparison for Shaft Alignment\",\"description\":\"Compare two signed, source-controlled hot-minus-cold shaft-centerline movements at one common reference plane without predicting growth from casing temperature.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/thermal-growth-alignment\/\",\"applicationCategory\":\"EngineeringApplication\",\"operatingSystem\":\"Any\",\"isAccessibleForFree\":true,\"dateModified\":\"2026-07-15\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"}}<\/script><\/p>\n<style>\n#tg-tool{--tg-ink:#17212b;--tg-muted:#53616f;--tg-line:#cbd5df;--tg-soft:#f4f7f9;--tg-blue:#075985;--tg-blue2:#e0f2fe;--tg-red:#991b1b;--tg-red2:#fef2f2;--tg-green:#166534;max-width:980px;margin:24px auto;font-family:Inter,system-ui,-apple-system,\"Segoe UI\",sans-serif;color:var(--tg-ink);line-height:1.55}#tg-tool *{box-sizing:border-box}#tg-tool h1,#tg-tool h2,#tg-tool h3{line-height:1.2;color:var(--tg-ink)}#tg-tool h1{font-size:clamp(1.65rem,4vw,2.35rem);margin:0 0 12px}#tg-tool h2{font-size:1.28rem;margin:0 0 16px}#tg-tool h3{font-size:1rem;margin:0 0 8px}#tg-tool p{margin:0 0 12px}#tg-tool a{color:var(--tg-blue);overflow-wrap:anywhere}.tg-hero{border:1px solid var(--tg-line);border-radius:16px;padding:clamp(20px,4vw,36px);background:linear-gradient(135deg,#fff,var(--tg-blue2));margin-bottom:20px}.tg-kicker{font-size:.78rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:var(--tg-blue);margin-bottom:8px}.tg-lead{font-size:1.05rem;max-width:850px}.tg-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.tg-badge{display:inline-block;border:1px solid #7dd3fc;background:#f0f9ff;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:750}.tg-card{border:1px solid var(--tg-line);border-radius:14px;padding:clamp(18px,3vw,28px);background:#fff;margin:16px 0;min-width:0}.tg-alert{border-left:5px solid var(--tg-red);background:var(--tg-red2);padding:16px 18px;border-radius:8px;margin:16px 0}.tg-info{border-left:5px solid var(--tg-blue);background:var(--tg-blue2);padding:16px 18px;border-radius:8px;margin:16px 0}.tg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.tg-field{min-width:0}.tg-field label{display:block;font-weight:750;font-size:.91rem;margin-bottom:6px}.tg-required{color:var(--tg-red)}.tg-input,.tg-select{width:100%;border:1px solid #94a3b8;border-radius:8px;padding:10px 12px;background:#fff;color:var(--tg-ink);font:inherit}.tg-input:focus,.tg-select:focus{outline:3px solid rgba(3,105,161,.18);border-color:var(--tg-blue)}.tg-help{font-size:.8rem;color:var(--tg-muted);margin-top:5px}.tg-wide{grid-column:1\/-1}.tg-check{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;border:1px solid var(--tg-line);border-radius:9px;padding:12px;background:var(--tg-soft);margin-top:12px}.tg-check input{margin-top:.25rem}.tg-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.tg-btn{border:0;border-radius:8px;padding:11px 17px;font:inherit;font-weight:800;cursor:pointer}.tg-primary{background:var(--tg-blue);color:#fff}.tg-secondary{background:#e2e8f0;color:var(--tg-ink)}.tg-status{min-height:1.6em;margin-top:12px;font-weight:750}.tg-status[data-kind=\"error\"]{color:var(--tg-red)}.tg-status[data-kind=\"ok\"]{color:var(--tg-green)}.tg-output{display:none}.tg-output[data-visible=\"true\"]{display:block}.tg-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tg-result{border:1px solid var(--tg-line);border-radius:10px;padding:16px;background:var(--tg-soft);min-width:0}.tg-result span{display:block;color:var(--tg-muted);font-size:.76rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.tg-result output{display:block;font-size:1.16rem;font-weight:800;overflow-wrap:anywhere;margin-top:5px}.tg-formula{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;background:#0f172a;color:#f8fafc;border-radius:10px;padding:16px;line-height:1.9;max-width:100%;overflow-wrap:anywhere;white-space:normal}.tg-boundary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.tg-boundary>div{border:1px solid var(--tg-line);border-radius:9px;padding:14px;background:var(--tg-soft);min-width:0}.tg-boundary ul,.tg-source-list{margin:8px 0 0;padding-left:20px}.tg-source-list,.tg-source-list li{min-width:0;max-width:100%;overflow-wrap:anywhere}.tg-source-list li{margin:0 0 12px}.tg-note{font-size:.88rem;color:var(--tg-muted)}@media(max-width:700px){.tg-grid,.tg-boundary{grid-template-columns:1fr}.tg-wide{grid-column:auto}}@media(max-width:430px){#tg-tool{margin:12px auto}.tg-result-grid{grid-template-columns:1fr}.tg-card,.tg-hero{border-radius:10px}.tg-actions{display:grid}.tg-btn{width:100%}}\n<\/style>\n<p><main id=\"tg-tool\"><\/p>\n<header class=\"tg-hero\">\n<div class=\"tg-kicker\">Controlled signed-movement comparison<\/div>\n<h1>Thermal Movement Comparison for Shaft Alignment<\/h1>\n<p class=\"tg-lead\">Compare two <strong>measured or OEM-specified hot-minus-cold shaft-centerline movements<\/strong> at one common reference plane. This worksheet does not predict shaft movement from casing temperature, generic material coefficients or machine type.<\/p>\n<div class=\"tg-badges\"><span class=\"tg-badge\">Signed values<\/span><span class=\"tg-badge\">Common reference plane<\/span><span class=\"tg-badge\">No machine presets<\/span><\/div>\n<\/header>\n<div class=\"tg-alert\"><strong>Not a final alignment instruction.<\/strong> Real machines may move vertically and horizontally and may rotate because of thermal gradients, foundations, piping strain, load and support conditions. If angular movement is significant, use OEM targets or a full alignment system with foot geometry and live measurements.<\/div>\n<form id=\"tg-form\" class=\"tg-card\" novalidate aria-labelledby=\"tg-input-heading\">\n<h2 id=\"tg-input-heading\">Source-controlled inputs<\/h2>\n<div class=\"tg-grid\">\n<div class=\"tg-field\"><label for=\"tg-driver\">Driver movement gD <span class=\"tg-required\">*<\/span><\/label><input class=\"tg-input\" id=\"tg-driver\" type=\"text\" inputmode=\"decimal\" maxlength=\"40\" autocomplete=\"off\" placeholder=\"Signed hot minus cold\"><\/p>\n<div class=\"tg-help\">Positive = upward; negative = downward.<\/div>\n<\/div>\n<div class=\"tg-field\"><label for=\"tg-driven\">Driven movement gN <span class=\"tg-required\">*<\/span><\/label><input class=\"tg-input\" id=\"tg-driven\" type=\"text\" inputmode=\"decimal\" maxlength=\"40\" autocomplete=\"off\" placeholder=\"Signed hot minus cold\"><\/p>\n<div class=\"tg-help\">Positive = upward; negative = downward.<\/div>\n<\/div>\n<div class=\"tg-field\"><label for=\"tg-unit\">Movement unit <span class=\"tg-required\">*<\/span><\/label><select class=\"tg-select\" id=\"tg-unit\"><option value=\"\">Select<\/option><option value=\"um\">micrometre (\u00b5m)<\/option><option value=\"mm\">millimetre (mm)<\/option><option value=\"mil\">mil \/ thou (0.001 in)<\/option><\/select><\/div>\n<div class=\"tg-field\"><label for=\"tg-reference\">Common reference plane\/state <span class=\"tg-required\">*<\/span><\/label><input class=\"tg-input\" id=\"tg-reference\" type=\"text\" maxlength=\"300\" autocomplete=\"off\" placeholder=\"Coupling plane, cold state, steady operating state\/load\"><\/p>\n<div class=\"tg-help\">Both values must describe the same coordinate and operating transition.<\/div>\n<\/div>\n<div class=\"tg-field\"><label for=\"tg-driver-source\">Driver movement source <span class=\"tg-required\">*<\/span><\/label><input class=\"tg-input\" id=\"tg-driver-source\" type=\"text\" maxlength=\"300\" autocomplete=\"off\" placeholder=\"OEM document or validated measurement record\"><\/div>\n<div class=\"tg-field\"><label for=\"tg-driven-source\">Driven movement source <span class=\"tg-required\">*<\/span><\/label><input class=\"tg-input\" id=\"tg-driven-source\" type=\"text\" maxlength=\"300\" autocomplete=\"off\" placeholder=\"OEM document or validated measurement record\"><\/div>\n<\/p><\/div>\n<p>    <label class=\"tg-check\" for=\"tg-confirm-reference\"><input id=\"tg-confirm-reference\" type=\"checkbox\"><span>I confirmed that both values are <strong>hot minus cold<\/strong>, use positive upward, and refer to the same vertical coordinate, reference plane, cold state and steady operating state\/load.<\/span><\/label><br \/>\n    <label class=\"tg-check\" for=\"tg-confirm-model\"><input id=\"tg-confirm-model\" type=\"checkbox\"><span>I confirmed that a <strong>translation-only vertical comparison<\/strong> is appropriate. Significant angular or horizontal movement requires a full alignment model and is not represented here.<\/span><\/label><\/p>\n<div class=\"tg-actions\"><button class=\"tg-btn tg-primary\" type=\"submit\">Compare signed movements<\/button><button class=\"tg-btn tg-secondary\" id=\"tg-reset\" type=\"button\">Clear<\/button><\/div>\n<div class=\"tg-status\" id=\"tg-status\" role=\"alert\" aria-live=\"polite\"><\/div>\n<\/p><\/form>\n<section class=\"tg-card tg-output\" id=\"tg-output\" data-visible=\"false\" aria-labelledby=\"tg-output-heading\">\n<h2 id=\"tg-output-heading\">Translation-only comparison<\/h2>\n<div class=\"tg-result-grid\">\n<div class=\"tg-result\"><span>Driver movement gD<\/span><output id=\"tg-r-driver\">\u2014<\/output><\/div>\n<div class=\"tg-result\"><span>Driven movement gN<\/span><output id=\"tg-r-driven\">\u2014<\/output><\/div>\n<div class=\"tg-result\"><span>Hot-minus-cold relative change \u0394r<\/span><output id=\"tg-r-relative\">\u2014<\/output><\/div>\n<div class=\"tg-result\"><span>Cold relative-offset target rCold<\/span><output id=\"tg-r-target\">\u2014<\/output><\/div>\n<\/p><\/div>\n<p id=\"tg-r-interpretation\">\n<p class=\"tg-note\" id=\"tg-r-record\">\n<p class=\"tg-note\">This target is algebra for the stated translation-only convention, not a shim instruction. Enter the signed target into the governing alignment procedure only after checking its sign convention, foot geometry, angular targets, tolerances and OEM requirements.<\/p>\n<\/section>\n<section class=\"tg-card\" aria-labelledby=\"tg-method-heading\">\n<h2 id=\"tg-method-heading\">Coordinate convention and equations<\/h2>\n<div class=\"tg-formula\">gD = yD,hot \u2212 yD,cold<br \/>gN = yN,hot \u2212 yN,cold<br \/>r = yDriven \u2212 yDriver<br \/>\u0394rhot\u2212cold = gN \u2212 gD<br \/>For rHot = 0 in the translation-only model: rCold = gD \u2212 gN<\/div>\n<p>Positive position is upward. A positive rCold means the driven shaft centerline is above the driver shaft centerline at the common cold reference plane; a negative value means it is below. The equations only compare two already established movements.<\/p>\n<div class=\"tg-boundary\">\n<div>\n<h3>Acceptable inputs<\/h3>\n<ul>\n<li>OEM-specified movements.<\/li>\n<li>Validated live-trend measurements.<\/li>\n<li>One common plane\/state\/sign convention.<\/li>\n<\/ul>\n<\/div>\n<div>\n<h3>Not inferred<\/h3>\n<ul>\n<li>Movement from surface temperature.<\/li>\n<li>Generic motor\/pump\/turbine growth.<\/li>\n<li>CTE from an unsourced material label.<\/li>\n<\/ul>\n<\/div>\n<div>\n<h3>Not represented<\/h3>\n<ul>\n<li>Angular or horizontal movement.<\/li>\n<li>Foot\/shim corrections.<\/li>\n<li>Soft foot,piping strain or foundation motion.<\/li>\n<li>Alignment acceptance tolerances.<\/li>\n<\/ul>\n<\/div><\/div>\n<div class=\"tg-info\"><strong>Why the former model was removed.<\/strong> A single casing temperature and foot-to-centerline height cannot establish the actual shaft line. Fluke documents that thermal movement can be uneven and multidirectional and that live monitoring can track vertical and horizontal motion,foundation movement,load changes and pipe strain.<\/div>\n<\/section>\n<section class=\"tg-card\" aria-labelledby=\"tg-source-heading\">\n<h2 id=\"tg-source-heading\">Primary sources and standards boundary<\/h2>\n<ul class=\"tg-source-list\">\n<li><a href=\"https:\/\/www.api.org\/products-and-services\/standards\/digital-catalog\" rel=\"noopener\" target=\"_blank\">API Digital Catalog<\/a> \u2014 lists API RP 686, <em>Machinery Installation and Installation Design<\/em>, Edition 3, as an active recommended practice currently in pre-ballot revision. Exact alignment requirements are not reproduced here and remain a licensed-source matter.<\/li>\n<li><a href=\"https:\/\/media.fluke.com\/c66c0b73-7ddf-40d3-8727-b3fb00fb87b8_original%20file.pdf\" rel=\"noopener\" target=\"_blank\">Fluke Reliability, Shaft Alignment on-board help, Version 2.0, Edition 10.2025<\/a> \u2014 page 45 defines thermal growth as shaft-centerline movement between idle and operating conditions and enters specified values at required foot positions; pages 46\u201347 describe the coefficient-based fallback; page 113 defines an explicit sign convention and distinguishes actual, specification and actual-minus-specification results.<\/li>\n<li><a href=\"https:\/\/www.fluke.com\/en-us\/learn\/blog\/alignment\/thermal-expansion-shaft-misalignment\" rel=\"noopener\" target=\"_blank\">Fluke, Understanding Thermal Growth and Its Impact on Shaft Alignment<\/a> \u2014 explains that heating can be uneven and movement can be multidirectional, recommends OEM targets\/actual operating data, and describes live trend monitoring of shaft movement.<\/li>\n<li><a href=\"https:\/\/emtoolbox.nist.gov\/faq\/faq.asp\" rel=\"noopener\" target=\"_blank\">NIST Engineering Metrology Toolbox FAQ<\/a> \u2014 cautions that generic material names and coefficients averaged over unspecified ranges can create large uncertainty.<\/li>\n<li><a href=\"https:\/\/store.astm.org\/standards\/e228\" rel=\"noopener\" target=\"_blank\">ASTM E228-22<\/a> \u2014 active test method for measuring linear thermal expansion of rigid solids; ASTM notes that accurate results require calibrated equipment and accurate length and temperature measurement. This worksheet does not implement E228.<\/li>\n<\/ul>\n<p><strong>Classification:<\/strong> signed comparison of controlled movement inputs. It is not an ISO 20816 vibration-severity calculation, an ISO 21940 balancing calculation, an API RP 686 conformity decision or a substitute for the OEM\/alignment-system procedure.<\/p>\n<\/section>\n<p><\/main><\/p>\n<p><script>\n(function(){\n  'use strict';\n  function byId(id){return document.getElementById(id);}\n  function parsePlain(raw){var t=String(raw).trim();if(t.length<1||t.length>40||!(\/^[+-]?(?:\\d+(?:[.,]\\d*)?|[.,]\\d+)$\/).test(t))throw new Error('format');var n=Number(t.replace(',','.'));if(!Number.isFinite(n))throw new Error('format');return Object.is(n,-0)?0:n;}\n  function cleanText(raw){var t=String(raw).trim();if(t.length<3||t.length>300||\/[\\u0000-\\u001f\\u007f]\/.test(t))throw new Error('text');return t;}\n  function toMillimetres(value,unit){if(unit!=='um'&&unit!=='mm'&&unit!=='mil')throw new Error('unit');var mm=unit==='um'?value\/1000:unit==='mm'?value:value*0.0254;if(!Number.isFinite(mm)||Math.abs(mm)>1e6)throw new Error('range');return Object.is(mm,-0)?0:mm;}\n  function compare(driver,driven,unit){var gD=toMillimetres(driver,unit),gN=toMillimetres(driven,unit),relative=gN-gD,target=gD-gN;if(![relative,target].every(Number.isFinite))throw new Error('range');return Object.freeze({driver_mm:gD,driven_mm:gN,relative_mm:relative,target_mm:target});}\n  function fmt(n){if(Object.is(n,-0)||Math.abs(n)<1e-15)n=0;var a=Math.abs(n);if(a!==0&&(a>=1e12||a<1e-9))return n.toExponential(11).replace(\/\\.?0+e\/,'e');return new Intl.NumberFormat('en-US',{maximumSignificantDigits:12,useGrouping:false}).format(n);}\n  function allUnits(mm){return fmt(mm)+' mm ('+fmt(mm*1000)+' \u00b5m; '+fmt(mm\/0.0254)+' mil)';}\n  function clearResults(){byId('tg-output').dataset.visible='false';['driver','driven','relative','target'].forEach(function(x){byId('tg-r-'+x).textContent='\u2014';});byId('tg-r-interpretation').textContent='';byId('tg-r-record').textContent='';}\n  function fail(message,field){clearResults();var s=byId('tg-status');s.dataset.kind='error';s.textContent=message;if(field)field.focus();}\n  byId('tg-form').addEventListener('submit',function(ev){\n    ev.preventDefault();var driver,driven,reference,driverSource,drivenSource,result,unit=byId('tg-unit').value;\n    try{driver=parsePlain(byId('tg-driver').value);}catch(e){fail('Enter driver movement as one signed plain decimal.',byId('tg-driver'));return;}\n    try{driven=parsePlain(byId('tg-driven').value);}catch(e){fail('Enter driven movement as one signed plain decimal.',byId('tg-driven'));return;}\n    try{reference=cleanText(byId('tg-reference').value);}catch(e){fail('Describe the common reference plane and operating states in 3\u2013300 characters.',byId('tg-reference'));return;}\n    try{driverSource=cleanText(byId('tg-driver-source').value);}catch(e){fail('Identify the controlled driver movement source in 3\u2013300 characters.',byId('tg-driver-source'));return;}\n    try{drivenSource=cleanText(byId('tg-driven-source').value);}catch(e){fail('Identify the controlled driven movement source in 3\u2013300 characters.',byId('tg-driven-source'));return;}\n    if(!byId('tg-confirm-reference').checked){fail('Confirm the shared hot-minus-cold coordinate,sign,reference plane and operating states.',byId('tg-confirm-reference'));return;}\n    if(!byId('tg-confirm-model').checked){fail('Confirm that the translation-only vertical comparison is appropriate.',byId('tg-confirm-model'));return;}\n    try{result=compare(driver,driven,unit);}catch(e){fail(e.message==='unit'?'Select the movement unit.':'Movement magnitude must not exceed 1000000 mm after unit conversion.',e.message==='unit'?byId('tg-unit'):byId('tg-driver'));return;}\n    byId('tg-r-driver').textContent=allUnits(result.driver_mm);byId('tg-r-driven').textContent=allUnits(result.driven_mm);byId('tg-r-relative').textContent=allUnits(result.relative_mm);byId('tg-r-target').textContent=allUnits(result.target_mm);byId('tg-r-interpretation').textContent=result.target_mm>0?'Translation-only convention: the cold driven centerline is above the cold driver centerline by the target magnitude.':result.target_mm<0?'Translation-only convention: the cold driven centerline is below the cold driver centerline by the target magnitude.':'Translation-only convention: no cold relative vertical offset is required for equal movements.';byId('tg-r-record').textContent='Reference: '+reference+' | Driver source: '+driverSource+' | Driven source: '+drivenSource;byId('tg-output').dataset.visible='true';var s=byId('tg-status');s.dataset.kind='ok';s.textContent='Signed movements compared under the confirmed translation-only convention.';byId('tg-output').scrollIntoView({behavior:'smooth',block:'start'});\n  });\n  byId('tg-reset').addEventListener('click',function(){byId('tg-form').reset();clearResults();var s=byId('tg-status');s.textContent='';s.dataset.kind='';byId('tg-driver').focus();});\n  window.C100256Test=Object.freeze({parsePlain:parsePlain,cleanText:cleanText,toMillimetres:toMillimetres,compare:compare});clearResults();\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Compare signed OEM-specified or measured hot-minus-cold shaft-centerline movements at one common reference plane without inferring growth from casing temperature.<\/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\/fa\/wp-json\/wp\/v2\/calculator\/100256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":3,"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/calculator\/100256\/revisions"}],"predecessor-version":[{"id":102600,"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/calculator\/100256\/revisions\/102600"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/media?parent=100256"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/categories?post=100256"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/fa\/wp-json\/wp\/v2\/tags?post=100256"}],"curies":[{"name":"\u0648\u0631\u062f\u067e\u0631\u0633","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}