{"id":100124,"date":"2026-02-15T20:19:04","date_gmt":"2026-02-15T20:19:04","guid":{"rendered":"https:\/\/vibromera.eu\/?post_type=calculator&#038;p=100124"},"modified":"2026-07-12T12:02:17","modified_gmt":"2026-07-12T12:02:17","slug":"hammer-mill-balance","status":"publish","type":"calculator","link":"https:\/\/vibromera.eu\/fi\/calculators\/hammer-mill-balance\/","title":{"rendered":"Hammer-Set Mass-Moment Vector Ledger"},"content":{"rendered":"\r\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"WebApplication\",\"name\":\"Hammer-Set Mass-Moment Vector Ledger\",\"description\":\"Sum documented hammer mass-radius vectors and axial unbalance moments about a stated reference plane. No rotor balance acceptance decision or correction recommendation is generated.\",\"url\":\"https:\/\/vibromera.eu\/calculators\/hammer-mill-balance\/\",\"applicationCategory\":\"Engineering Calculator\",\"operatingSystem\":\"Any (Web Browser)\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"name\":\"Vibromera\",\"url\":\"https:\/\/vibromera.eu\/\"},\"dateModified\":\"2026-07-12\",\"inLanguage\":\"en\",\"isAccessibleForFree\":true}<\/script>\r\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/vibromera.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\/\/vibromera.eu\/calculators\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hammer-set mass-moment vector ledger\",\"item\":\"https:\/\/vibromera.eu\/calculators\/hammer-mill-balance\/\"}]}<\/script>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<style>:root{--vc-bg:#f4f1ec;--vc-surface:#fff;--vc-surface-alt:#f8f6f2;--vc-ink:#1a1a1a;--vc-ink-secondary:#5a5650;--vc-ink-muted:#8a857e;--vc-accent:#c85a2a;--vc-accent-hover:#b04d22;--vc-accent-light:#fdf0ea;--vc-blue:#2a5c8c;--vc-blue-light:#eaf1f8;--vc-green:#2a7a4b;--vc-green-light:#eaf8ef;--vc-yellow:#a67c00;--vc-yellow-light:#fef9e8;--vc-border:#d9d4cc;--vc-border-light:#e8e4dd;--vc-shadow:0 1px 3px rgba(26,26,26,.06),0 4px 12px rgba(26,26,26,.04);--vc-radius:8px;--vc-radius-lg:12px;--vc-font:'DM Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--vc-mono:'JetBrains Mono',Consolas,Monaco,monospace;--vc-display:Fraunces,Georgia,serif}.vc-calculator{font-family:var(--vc-font);font-size:15px;line-height:1.65;color:var(--vc-ink);max-width:960px;margin:0 auto;padding:20px 16px 40px;-webkit-font-smoothing:antialiased}.vc-calculator *,.vc-calculator *::before,.vc-calculator *::after{box-sizing:border-box}.vc-header{text-align:center;padding:48px 24px 40px;position:relative}.vc-header::after{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:80px;height:3px;background:var(--vc-accent);border-radius:2px}.vc-header-eyebrow{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--vc-accent);margin:0 0 12px}.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:-.02em}.vc-header-subtitle{font-size:15px;color:var(--vc-ink-secondary);margin:0 auto 20px;max-width:600px}.vc-badges{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:center}.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)}.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}.vc-form{padding:24px}.vc-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media(max-width:600px){.vc-form-grid{grid-template-columns:1fr}}.vc-field{display:flex;flex-direction:column}.vc-label{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--vc-ink-secondary);margin-bottom:6px}.vc-label-hint{font-weight:400;text-transform:none;letter-spacing:0;color:var(--vc-ink-muted);font-size:11px}.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 .15s,box-shadow .15s}.vc-select{padding-right:36px;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}.vc-select:focus,.vc-input:focus{outline:none;border-color:var(--vc-accent);box-shadow:0 0 0 3px rgba(200,90,42,.12)}.vc-presets{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;padding-top:18px;border-top:1px solid var(--vc-border-light)}.vc-presets-label{font-family:var(--vc-mono);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--vc-ink-muted);width:100%;margin-bottom:2px}.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 .15s}.vc-preset-btn:hover{border-color:var(--vc-accent);color:var(--vc-accent);background:var(--vc-accent-light)}.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 .5s cubic-bezier(.4,0,.2,1),padding .3s}.vc-results.vc-visible{max-height:2000px;padding:24px}.vc-results-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.vc-results-title{font-family:var(--vc-display);font-size:20px;font-weight:700;color:var(--vc-ink);margin:0}.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 .15s}.vc-copy-btn:hover{border-color:var(--vc-accent);color:var(--vc-accent)}.vc-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}@media(max-width:500px){.vc-result-grid{grid-template-columns:1fr}}.vc-rcard{background:var(--vc-surface);border:1px solid var(--vc-border-light);border-radius:var(--vc-radius);padding:16px;transition:transform .2s}.vc-rcard:hover{transform:translateY(-1px)}.vc-rcard-primary{border-color:var(--vc-accent);border-width:2px;background:linear-gradient(135deg,#fdf6f2,var(--vc-surface));grid-column:1\/-1}.vc-rcard-label{font-family:var(--vc-mono);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--vc-ink-muted);margin-bottom:4px}.vc-rcard-value{font-family:var(--vc-mono);font-size:22px;font-weight:600;color:var(--vc-ink);line-height:1.2}.vc-rcard-primary .vc-rcard-value{font-size:30px;color:var(--vc-accent)}.vc-rcard-unit{font-size:14px;font-weight:400;color:var(--vc-ink-secondary)}.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}.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 .15s}.vc-section-toggle:hover{background:var(--vc-surface-alt)}.vc-section-toggle-text{display:flex;align-items:center;gap:10px}.vc-section-icon{font-size:20px;line-height:1}.vc-section-title{font-family:var(--vc-display);font-size:18px;font-weight:700;color:var(--vc-ink);margin:0}.vc-section-chevron{width:20px;height:20px;color:var(--vc-ink-muted);transition:transform .3s;flex-shrink:0}.vc-section.vc-open .vc-section-chevron{transform:rotate(180deg)}.vc-section-body{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1)}.vc-section.vc-open .vc-section-body{max-height:20000px}.vc-section-inner{padding:0 24px 24px;border-top:1px solid var(--vc-border-light)}.vc-theory h3{font-family:var(--vc-display);font-size:17px;font-weight:700;color:var(--vc-ink);margin:28px 0 10px}.vc-theory h3:first-child{margin-top:20px}.vc-theory p{font-size:14px;color:var(--vc-ink-secondary);margin:0 0 10px}.vc-theory ul{font-size:14px;color:var(--vc-ink-secondary);margin:0 0 12px 18px;padding:0}.vc-theory li{margin-bottom:5px}.vc-formula-box{background:var(--vc-surface-alt);border:2px solid var(--vc-border);border-radius:6px;padding:14px 20px;text-align:center;margin:14px 0;overflow-x:auto}.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}.vc-example-box{background:var(--vc-surface-alt);border:1px solid var(--vc-border-light);border-radius:6px;padding:16px;margin:14px 0}.vc-example-title{font-family:var(--vc-mono);font-size:13px;font-weight:600;color:var(--vc-accent);margin-bottom:8px}.vc-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}.vc-table th,.vc-table td{padding:10px 12px;border:1px solid var(--vc-border-light);text-align:left}.vc-table th{background:var(--vc-surface-alt);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--vc-ink-secondary)}.vc-table tr:nth-child(even){background:var(--vc-surface-alt)}.vc-faq-list{display:flex;flex-direction:column;gap:8px;margin-top:20px}.vc-faq-item{border:1px solid var(--vc-border-light);border-radius:6px;overflow:hidden}.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 .15s}.vc-faq-q:hover{background:#ede9e3}.vc-faq-chevron{width:16px;height:16px;color:var(--vc-ink-muted);flex-shrink:0;transition:transform .25s}.vc-faq-item.vc-open .vc-faq-chevron{transform:rotate(180deg)}.vc-faq-a{max-height:0;overflow:hidden;transition:max-height .35s}.vc-faq-item.vc-open .vc-faq-a{max-height:1200px}.vc-faq-a-inner{padding:14px 16px;border-top:1px solid var(--vc-border-light);font-size:14px;color:var(--vc-ink-secondary)}.vc-faq-a-inner p{margin:0 0 8px}.vc-faq-a-inner p:last-child{margin-bottom:0}.vc-related{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.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 .15s}.vc-related-link:hover{border-color:var(--vc-accent);color:var(--vc-accent);background:var(--vc-accent-light)}.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}.vc-promo-text{flex:1;font-size:14px;color:var(--vc-ink-secondary)}.vc-promo-text strong{color:var(--vc-ink)}.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 .15s}.vc-promo-link:hover{background:var(--vc-accent-hover)}.vc-footer{text-align:center;padding:32px 16px;font-size:13px;color:var(--vc-ink-muted)}.vc-footer a{color:var(--vc-accent);text-decoration:none}.vc-footer a:hover{text-decoration:underline}.vc-footer-links{margin-top:8px;font-size:12px}.vc-footer-links a{margin:0 8px}@media print{.vc-section-body{max-height:none!important}.vc-faq-a{max-height:none!important}.vc-results{max-height:none!important;padding:24px!important}.vc-copy-btn,.vc-section-chevron,.vc-faq-chevron,.vc-presets,.vc-promo{display:none!important}}.vc-doc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.vc-wide{grid-column:1\/-1}.vc-result-note{font-size:13px;color:var(--vc-ink-secondary);margin:0}@media(max-width:600px){.vc-doc-grid{grid-template-columns:1fr}.vc-wide{grid-column:auto}}.vc-doc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.vc-wide{grid-column:1\/-1}.vc-textarea{min-height:210px;resize:vertical;font-family:var(--vc-mono);line-height:1.5}.vc-formula-box{font-family:var(--vc-mono);background:var(--vc-surface-alt);border:1px solid var(--vc-border-light);border-radius:6px;padding:14px;margin:12px 0;overflow-x:auto}.vc-result-note{font-size:13px;color:var(--vc-ink-secondary);margin:0}@media(max-width:600px){.vc-doc-grid{grid-template-columns:1fr}.vc-wide{grid-column:auto}}<\/style>\r\n<div class=\"vc-calculator\" id=\"vc-hammer-ledger\"><header class=\"vc-header\"><p class=\"vc-header-eyebrow\">Documented mass-moment bookkeeping \u2014 no balance verdict<\/p><h1 class=\"vc-header-title\">Hammer-Set Mass-Moment Vector Ledger<\/h1><p class=\"vc-header-subtitle\">Sum individual hammer mass \u00d7 CG-radius vectors and their axial moments about a documented reference plane. The ledger exposes static and couple-type bookkeeping that a position-total check can miss.<\/p><div class=\"vc-badges\"><span class=\"vc-badge\">U = \u03a3mr\u2220\u03b8<\/span><span class=\"vc-badge\">C = \u03a3zmr\u2220\u03b8<\/span><span class=\"vc-badge\">Not ISO acceptance<\/span><\/div><\/header>\r\n<div class=\"vc-card\"><form class=\"vc-form\" id=\"vc-form\" autocomplete=\"off\"><div class=\"vc-doc-grid\">\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-id\">Rotor \/ hammer-set identifier<\/label><input class=\"vc-input\" id=\"vc-id\" type=\"text\" maxlength=\"220\"><\/div>\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-inventory\">Mass inventory \/ scale report and revision<\/label><input class=\"vc-input\" id=\"vc-inventory\" type=\"text\" maxlength=\"350\"><\/div>\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-geometry\">Radius, angle and axial-geometry source<\/label><input class=\"vc-input\" id=\"vc-geometry\" type=\"text\" maxlength=\"350\"><\/div>\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-angle\">Positive-angle direction and zero reference<\/label><input class=\"vc-input\" id=\"vc-angle\" type=\"text\" maxlength=\"300\"><\/div>\r\n<div class=\"vc-field vc-wide\"><label class=\"vc-label\" for=\"vc-plane\">Axial reference plane for z = 0<\/label><input class=\"vc-input\" id=\"vc-plane\" type=\"text\" maxlength=\"350\"><\/div>\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-mass-unit\">Mass unit for every row<\/label><select class=\"vc-select\" id=\"vc-mass-unit\"><option value=\"\">Select\u2026<\/option><option value=\"kg\">kg<\/option><option value=\"g\">g<\/option><option value=\"lb\">lb (avoirdupois mass)<\/option><\/select><\/div>\r\n<div class=\"vc-field\"><label class=\"vc-label\" for=\"vc-length-unit\">Radius and axial-z unit for every row<\/label><select class=\"vc-select\" id=\"vc-length-unit\"><option value=\"\">Select\u2026<\/option><option value=\"mm\">mm<\/option><option value=\"cm\">cm<\/option><option value=\"m\">m<\/option><option value=\"in\">in<\/option><\/select><\/div>\r\n<div class=\"vc-field vc-wide\"><label class=\"vc-label\" for=\"vc-data\">One hammer\/item per line: ID | mass | CG radius | angle deg | axial z<\/label><textarea class=\"vc-input vc-textarea\" id=\"vc-data\" maxlength=\"50000\" spellcheck=\"false\" placeholder=\"H1 | 5.000 | 400 | 0 | -250&#10;H2 | 5.000 | 400 | 180 | 250\"><\/textarea><\/div>\r\n<\/div><p id=\"vc-error\" role=\"alert\" style=\"margin:.75rem 0 0;color:#b42318\"><\/p><div class=\"vc-warning-box\"><p style=\"margin:0\"><strong>Applicability gate:<\/strong> enter every rotating hammer\/item separately with its actual mass-center radius, angular location and signed axial coordinate. Do not aggregate disc columns unless all omitted axial information is irrelevant to the stated purpose.<\/p><\/div><\/form>\r\n<div class=\"vc-results\" id=\"vc-results\" aria-live=\"polite\"><div class=\"vc-results-head\"><h2 class=\"vc-results-title\">Documented vector ledger<\/h2><button type=\"button\" class=\"vc-copy-btn\" id=\"vc-copy-btn\">Copy<\/button><\/div><div class=\"vc-result-grid\">\r\n<div class=\"vc-rcard vc-rcard-primary\"><div class=\"vc-rcard-label\">Rotor balance acceptance<\/div><div class=\"vc-rcard-value\" id=\"vc-r-decision\">Not generated<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Static mass-moment magnitude |U|<\/div><div class=\"vc-rcard-value\" id=\"vc-r-u\">\u2014<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Static components Ux, Uy<\/div><div class=\"vc-rcard-value\" id=\"vc-r-ucomp\">\u2014<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Static heavy-vector angle<\/div><div class=\"vc-rcard-value\" id=\"vc-r-angle\">\u2014<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Axial unbalance-moment magnitude |C|<\/div><div class=\"vc-rcard-value\" id=\"vc-r-c\">\u2014<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Moment components Cx, Cy<\/div><div class=\"vc-rcard-value\" id=\"vc-r-ccomp\">\u2014<\/div><\/div>\r\n<div class=\"vc-rcard\"><div class=\"vc-rcard-label\">Entered mass \/ row count<\/div><div class=\"vc-rcard-value\" id=\"vc-r-total\">\u2014<\/div><\/div>\r\n<\/div><p class=\"vc-result-note\" id=\"vc-r-note\"><\/p><\/div><\/div>\r\n\r\n<div class=\"vc-section vc-open\"><button type=\"button\" class=\"vc-section-toggle\" aria-expanded=\"true\"><span class=\"vc-section-toggle-text\"><span class=\"vc-section-icon\">\ud83d\udcd8<\/span><span class=\"vc-section-title\">Equations, ISO scope and limitations<\/span><\/span><\/button><div class=\"vc-section-body\"><div class=\"vc-section-inner vc-theory\">\r\n<h3>Implemented vector bookkeeping<\/h3><div class=\"vc-formula-box\">U<sub>x<\/sub> = \u03a3m<sub>i<\/sub>r<sub>i<\/sub>cos\u03b8<sub>i<\/sub> &nbsp; ; &nbsp; U<sub>y<\/sub> = \u03a3m<sub>i<\/sub>r<sub>i<\/sub>sin\u03b8<sub>i<\/sub><br>|U| = \u221a(U<sub>x<\/sub>\u00b2+U<sub>y<\/sub>\u00b2)<br>C<sub>x<\/sub> = \u03a3z<sub>i<\/sub>m<sub>i<\/sub>r<sub>i<\/sub>cos\u03b8<sub>i<\/sub> &nbsp; ; &nbsp; C<sub>y<\/sub> = \u03a3z<sub>i<\/sub>m<sub>i<\/sub>r<sub>i<\/sub>sin\u03b8<sub>i<\/sub><\/div><p>U has units kg\u00b7m and represents the projected mass first moment. C has units kg\u00b7m\u00b2 and is its axial moment about the stated z=0 plane. Changing the reference plane changes C when U is nonzero. These are general vector sums, not formulas that by themselves establish ISO conformance.<\/p>\r\n<h3>Why axial position matters<\/h3><p>Two equal masses at 0\u00b0 and 180\u00b0 can give |U|\u22480. If they lie on opposite sides of the reference plane, their axial moments can add rather than cancel, giving |C|\u22600. The former page summed all disc columns into circumferential position totals, so it could report \u201cbalanced\u201d while disc-to-disc couple information was absent.<\/p>\r\n<h3>Current ISO balancing context<\/h3><p>As checked on 12 July 2026, <a href=\"https:\/\/www.iso.org\/standard\/54074.html\" target=\"_blank\" rel=\"noopener\">ISO 21940-11:2016<\/a> edition 1 is published and under systematic review, with published <a href=\"https:\/\/www.iso.org\/standard\/78116.html\" target=\"_blank\" rel=\"noopener\">Amendment 1:2022<\/a>. It addresses procedures and tolerances for rotors with rigid behaviour, including permissible residual unbalance, correction planes, allocation and balancing errors; it excludes flexible behaviour. <a href=\"https:\/\/www.iso.org\/standard\/50429.html\" target=\"_blank\" rel=\"noopener\">ISO 21940-12:2016<\/a> addresses flexible-behaviour rotors and was confirmed in 2025.<\/p>\r\n<h3>No invented percentage tolerance<\/h3><p>The former script classified |\u03a3M\u2220\u03b8|\/\u03a3M below 1% as balanced and above 2% as unbalanced. That ratio omitted radius, axial plane, complete rotor mass, operating speed, rotor behaviour and any licensed tolerance route. The thresholds and automatic redistribution advice were removed. Permissible residual unbalance, correction-plane allocation and measurement uncertainty must come from the current project-adopted standard\/OEM specification and field balancing evidence.<\/p>\r\n<div class=\"vc-warning-box\"><p style=\"margin:0\"><strong>Not a balancing measurement:<\/strong> a hammer mass ledger does not include the shaft, discs, pins, wear, runout, assembly errors or operating deformation. Verify the assembled rotor with suitable balancing\/vibration measurements and the applicable rigid\/flexible-rotor procedure before release.<\/p><\/div>\r\n<\/div><\/div><\/div><footer class=\"vc-footer\"><p>\u00a9 2024\u20132026 <a href=\"https:\/\/vibromera.eu\/\">Vibromera<\/a><\/p><p>Documented mass-moment ledger only \u2014 no ISO tolerance or rotor-release decision. Scientific review: July 2026.<\/p><\/footer><\/div>\r\n<script>(function(){'use strict';function $(id){return document.getElementById(id)}var km={kg:1,g:.001,lb:.45359237},kl={mm:.001,cm:.01,m:1,in:.0254};var map={hl_id:'vc-id',hl_inventory:'vc-inventory',hl_geometry:'vc-geometry',hl_angle:'vc-angle',hl_plane:'vc-plane',hl_mass_unit:'vc-mass-unit',hl_length_unit:'vc-length-unit',hl_data:'vc-data'};var outs=['vc-r-u','vc-r-ucomp','vc-r-angle','vc-r-c','vc-r-ccomp','vc-r-total'];function num(raw){var s=String(raw).trim().replace(',','.');if(s.length>80||!\/^[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$\/.test(s))return NaN;return Number(s)}function fmt(v){if(!Number.isFinite(v))return'\u2014';if(v===0)return'0';return Number(v.toPrecision(12)).toString()}function clear(){outs.forEach(function(id){$(id).textContent='\u2014'});$('vc-r-decision').textContent='Not generated';$('vc-r-note').textContent='';$('vc-results').classList.remove('vc-visible')}function fail(message){clear();$('vc-error').textContent=message}function setUrl(){var u=new URL(location);Object.keys(map).forEach(function(q){var v=$(map[q]).value.trim();if(v)u.searchParams.set(q,v);else u.searchParams.delete(q)});history.replaceState(null,'',u.toString())}function calc(){setUrl();var x={};Object.keys(map).forEach(function(q){x[q]=$(map[q]).value.trim()});var any=Object.keys(x).some(function(q){return x[q]});if(!any){$('vc-error').textContent='';clear();return}if(!Object.keys(map).every(function(q){return x[q]})){fail('Enter every provenance, unit and hammer-data field.');return}if(!(x.hl_mass_unit in km)||!(x.hl_length_unit in kl)){fail('Select valid common mass and length units.');return}var lines=x.hl_data.split(\/\\r?\\n\/).filter(function(s){return s.trim()});if(!lines.length||lines.length>500){fail('Enter between 1 and 500 nonblank hammer\/item rows.');return}var ids=new Set(),total=0,ux=0,uy=0,cx=0,cy=0,sumU=0,sumC=0;for(var i=0;i<lines.length;i++){var f=lines[i].split('|').map(function(s){return s.trim()});if(f.length!==5||!f[0]||f[0].length>100){fail('Line '+(i+1)+' must contain ID | mass | CG radius | angle deg | axial z.');return}if(ids.has(f[0])){fail('Duplicate item ID on line '+(i+1)+'.');return}ids.add(f[0]);var mv=num(f[1]),rv=num(f[2]),av=num(f[3]),zv=num(f[4]);if(![mv,rv,av,zv].every(Number.isFinite)){fail('Line '+(i+1)+' contains an invalid finite decimal number.');return}if(mv<=0||rv<=0){fail('Line '+(i+1)+' mass and CG radius must be strict positive numbers.');return}var m=mv*km[x.hl_mass_unit],r=rv*kl[x.hl_length_unit],z=zv*kl[x.hl_length_unit];if(![m,r,z,av].every(function(v){return Number.isFinite(v)&&Math.abs(v)<=1e30})){fail('Line '+(i+1)+' normalized values must not exceed 10\u00b3\u2070 in magnitude.');return}var a=((av%360)+360)%360*Math.PI\/180,mr=m*r,xx=mr*Math.cos(a),yy=mr*Math.sin(a);total+=m;ux+=xx;uy+=yy;cx+=z*xx;cy+=z*yy;sumU+=Math.abs(mr);sumC+=Math.abs(z*mr)}var tu=64*Number.EPSILON*sumU,tc=64*Number.EPSILON*sumC;if(Math.abs(ux)<=tu)ux=0;if(Math.abs(uy)<=tu)uy=0;if(Math.abs(cx)<=tc)cx=0;if(Math.abs(cy)<=tc)cy=0;var um=Math.hypot(ux,uy),cm=Math.hypot(cx,cy),angle=um===0?null:((Math.atan2(uy,ux)*180\/Math.PI)%360+360)%360;if(![total,ux,uy,cx,cy,um,cm].every(Number.isFinite)||Math.max(total,Math.abs(ux),Math.abs(uy),Math.abs(cx),Math.abs(cy),um,cm)>1e100){fail('Vector result exceeds the finite numerical range.');return}$('vc-error').textContent='';$('vc-r-decision').textContent='Not generated \u2014 apply project tolerance and measured rotor evidence';$('vc-r-u').textContent=fmt(um)+' kg\u00b7m \/ '+fmt(um*1e6)+' g\u00b7mm';$('vc-r-ucomp').textContent='Ux '+fmt(ux)+' kg\u00b7m; Uy '+fmt(uy)+' kg\u00b7m';$('vc-r-angle').textContent=angle===null?'Undefined (zero static vector)':fmt(angle)+'\u00b0 per entered convention';$('vc-r-c').textContent=fmt(cm)+' kg\u00b7m\u00b2';$('vc-r-ccomp').textContent='Cx '+fmt(cx)+' kg\u00b7m\u00b2; Cy '+fmt(cy)+' kg\u00b7m\u00b2';$('vc-r-total').textContent=fmt(total)+' kg \/ '+lines.length+' rows';$('vc-r-note').textContent='Rotor: '+x.hl_id+' | Inventory: '+x.hl_inventory+' | Geometry: '+x.hl_geometry+' | Angle: '+x.hl_angle+' | z=0: '+x.hl_plane+'. Vector ledger only; no correction or acceptance decision.';$('vc-results').classList.add('vc-visible')}$('vc-form').addEventListener('input',calc);$('vc-form').addEventListener('change',calc);$('vc-copy-btn').addEventListener('click',function(){if(navigator.clipboard)navigator.clipboard.writeText($('vc-results').innerText)});document.querySelectorAll('.vc-section-toggle').forEach(function(b){b.addEventListener('click',function(){var s=this.closest('.vc-section');s.classList.toggle('vc-open');this.setAttribute('aria-expanded',s.classList.contains('vc-open'))})});var q=new URLSearchParams(location.search);Object.keys(map).forEach(function(x){if(q.has(x))$(map[x]).value=q.get(x)});calc()})();<\/script>\r\n","protected":false},"excerpt":{"rendered":"<p>Sum documented per-hammer mass-radius vectors and axial unbalance moments about a stated reference plane. No rotor balance acceptance or correction recommendation is generated.<\/p>","protected":false},"featured_media":0,"template":"","meta":{"ai_generated_summary":"","footnotes":""},"categories":[],"tags":[],"class_list":["post-100124","calculator","type-calculator","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator"}],"about":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/types\/calculator"}],"version-history":[{"count":4,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100124\/revisions"}],"predecessor-version":[{"id":102443,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/calculator\/100124\/revisions\/102443"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/media?parent=100124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/categories?post=100124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/fi\/wp-json\/wp\/v2\/tags?post=100124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}