{"id":2100,"date":"2026-09-29T06:39:08","date_gmt":"2026-09-29T06:39:08","guid":{"rendered":"https:\/\/kingndmagnet.com\/?page_id=2100"},"modified":"2026-11-11T02:51:23","modified_gmt":"2026-11-11T02:51:23","slug":"calcolatore-di-forza-di-trazione","status":"publish","type":"page","link":"https:\/\/kingndmagnet.com\/it\/tools\/pull-force-calculator\/","title":{"rendered":"Calcolatore di forza di trazione"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2100\" class=\"elementor elementor-2100\">\n\t\t\t\t<div class=\"elementor-element elementor-element-51e9023 e-flex e-con-boxed e-con e-parent\" data-id=\"51e9023\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c6be436 logo-watermark logo-watermark-scatter elementor-widget elementor-widget-html\" data-id=\"c6be436\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Magnet Pull Force Calculator | King-Nd Magnet<\/title>\r\n<style>\r\n    :root {\r\n        --primary-blue: #002ea7;\r\n        --primary-hover: #001f7a;\r\n        --bg-light: #e6e8f5;\r\n        --card-bg: #ffffff;\r\n        --text-dark: #172b4d;\r\n        --text-muted: #5e6c84;\r\n        --border-color: #dfe1e6;\r\n        --accent-red: #e61373;\r\n    }\r\n    * { box-sizing: border-box; margin: 0; padding: 0; }\r\n    body {\r\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\r\n        background-color: var(--bg-light);\r\n        color: var(--text-dark);\r\n        line-height: 1.6;\r\n        padding: 30px 15px;\r\n    }\r\n    .calc-container { max-width: 960px; margin: 0 auto; }\r\n    .page-header { text-align: center; margin-bottom: 30px; }\r\n    .page-header h1 { font-size: 28px; font-weight: 700; color: var(--text-dark); margin-bottom: 8px; }\r\n    .page-header p { font-size: 15px; color: var(--text-muted); max-width: 660px; margin: 0 auto; }\r\n\r\n    .calc-card, .table-card { background: var(--card-bg); border-radius: 12px; box-shadow: 0 4px 16px rgba(9, 30, 66, 0.08); padding: 30px; margin-bottom: 30px; }\r\n\r\n    .shape-tabs { display: flex; gap: 10px; border-bottom: 2px solid var(--border-color); margin-bottom: 25px; overflow-x: auto; }\r\n    .tab-btn { padding: 10px 20px; font-size: 15px; font-weight: 600; background: none; border: none; border-bottom: 3px solid transparent; color: var(--text-muted) !important; cursor: pointer; transition: all 0.2s ease; white-space: nowrap; }\r\n    .tab-btn.active { color: var(--primary-blue) !important; border-bottom-color: var(--primary-blue); }\r\n    .tab-btn:hover:not(.active) { color: var(--text-dark) !important; }\r\n\r\n    .section-title { font-size: 19px; font-weight: 700; color: var(--text-dark); margin-bottom: 6px; }\r\n    h3.sub-title { font-size: 15px; font-weight: 700; color: var(--primary-blue); margin: 22px 0 6px; }\r\n    p.body-text { font-size: 13px; color: var(--text-dark); margin-bottom: 10px; max-width: 760px; }\r\n    p.ref-line { font-size: 12px; color: var(--text-muted); margin-bottom: 10px; max-width: 760px; }\r\n    .section-intro { font-size: 13px; color: var(--text-muted); margin-bottom: 18px; max-width: 640px; }\r\n\r\n    .calc-grid { display: grid; grid-template-columns: 240px 1fr; gap: 30px; align-items: start; }\r\n    @media (max-width: 768px) { .calc-grid { grid-template-columns: 1fr; } }\r\n\r\n    .diagram-box { background: #fafbfc; border: 1px solid var(--border-color); border-radius: 8px; padding: 20px; text-align: center; min-height: 220px; display: flex; flex-direction: column; align-items: center; justify-content: center; }\r\n    .diagram-box svg { width: 100%; height: 170px; }\r\n    .diagram-caption { font-size: 12px; color: var(--text-muted); margin-top: 10px; line-height: 1.5; }\r\n\r\n    .form-group { margin-bottom: 18px; }\r\n    .form-group label { display: block; font-size: 14px; font-weight: 600; margin-bottom: 6px; }\r\n    .form-control { width: 100%; padding: 10px 12px; font-size: 14px; border: 1px solid var(--border-color); border-radius: 6px; outline: none; transition: border-color 0.2s; background: #fff; font-family: inherit; }\r\n    .form-control:focus { border-color: var(--primary-blue); }\r\n    .inputs-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 15px; }\r\n    .shape-field[data-shape] { display: none; }\r\n    .shape-field.active { display: block; }\r\n    .pf-note { border-radius: 6px; padding: 10px 14px; font-size: 13px; margin-top: 18px; line-height: 1.5; }\r\n    .pf-note.ok { background: #eef3ff; border-left: 3px solid var(--primary-blue); color: #40516d; }\r\n    .pf-note.warn { background: #fff7e6; border-left: 3px solid #d97706; color: #7c4a03; }\r\n\r\n    .results-panel { background: var(--primary-blue); color: #ffffff; border-radius: 8px; padding: 20px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 20px; margin-top: 24px; }\r\n    .result-item { display: flex; flex-direction: column; }\r\n    .result-item .label { font-size: 12px; color: #ffffff !important; opacity: 0.85; margin-bottom: 4px; }\r\n    .result-item .value { font-size: 20px; font-weight: 700; color: #ffffff !important; }\r\n\r\n    .pf-table { width: 100%; border-collapse: collapse; font-size: 14px; }\r\n    .pf-table th, .pf-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid var(--border-color); }\r\n    .pf-table th { color: var(--text-muted); font-weight: 600; font-size: 13px; }\r\n    .pf-table tr:last-child td { border-bottom: none; }\r\n\r\n    .disclaimer-card { margin-top: 25px; padding-top: 20px; border-top: 1px solid var(--border-color); }\r\n    .disclaimer-card h3 { color: var(--accent-red); font-size: 15px; font-weight: 700; margin-bottom: 6px; }\r\n    .disclaimer-card p { font-size: 13px; color: #42526e; }\r\n\r\n    .cta-box { background: linear-gradient(135deg, #002ea7 0%, #001f7a 100%); color: #ffffff; border-radius: 12px; padding: 28px 32px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 20px; }\r\n    .cta-content h3 { font-size: 20px; margin-bottom: 6px; color: #ffffff !important; }\r\n    .cta-content p { font-size: 14px; color: #ffffff !important; opacity: 0.9; }\r\n    .btn-cta { background-color: #ffffff; color: var(--primary-blue) !important; padding: 12px 28px; font-size: 15px; font-weight: 700; border-radius: 6px; text-decoration: none; display: inline-block; transition: transform 0.2s, box-shadow 0.2s; }\r\n    .btn-cta:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.2); }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"calc-container\">\r\n\r\n    <div class=\"page-header\">\r\n        <h1>Magnet Pull Force Calculator<\/h1>\r\n        <p>This calculator estimates the pull force of a disc, cylinder or block magnet. It works against a steel plate or an identical magnet. In addition, the tool shows how fast the force drops as an air gap opens up.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"calc-card\">\r\n\r\n        <div class=\"shape-tabs\">\r\n            <button class=\"tab-btn active\" data-shape=\"cyl\">Disc \/ Cylinder<\/button>\r\n            <button class=\"tab-btn\" data-shape=\"blk\">Block<\/button>\r\n        <\/div>\r\n\r\n        <h2 class=\"section-title\">Enter Magnet and Contact Details<\/h2>\r\n        <p class=\"section-intro\">First, choose what the magnet holds to. Then enter the grade or Br, the dimensions and any air gap.<\/p>\r\n\r\n        <div class=\"calc-grid\">\r\n\r\n            <div class=\"diagram-box\">\r\n                <div id=\"pfSvgWrapper\" style=\"width:100%\"><\/div>\r\n                <div class=\"diagram-caption\" id=\"pfCaption\">Diameter (D), magnetized thickness (L), pulling on a steel plate.<\/div>\r\n            <\/div>\r\n\r\n            <div class=\"calc-form\">\r\n                <div class=\"inputs-row\">\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfHold\">Holding To<\/label>\r\n                        <select id=\"pfHold\" class=\"form-control\">\r\n                            <option value=\"steel\">Steel plate<\/option>\r\n                            <option value=\"magnet\">An identical magnet<\/option>\r\n                        <\/select>\r\n                    <\/div>\r\n                    <div class=\"form-group steel-only\">\r\n                        <label for=\"pfT\">Steel Thickness (mm)<\/label>\r\n                        <input type=\"number\" step=\"any\" min=\"0\" id=\"pfT\" class=\"form-control\" value=\"20\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"inputs-row\">\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfGrade\">Grade (typical Br)<\/label>\r\n                        <select id=\"pfGrade\" class=\"form-control\"><\/select>\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfBr\">Br (T)<\/label>\r\n                        <input type=\"number\" step=\"0.01\" id=\"pfBr\" class=\"form-control\" value=\"1.31\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"inputs-row\">\r\n                    <div class=\"form-group shape-field active\" data-shape=\"cyl\">\r\n                        <label for=\"pfD\">Diameter D<\/label>\r\n                        <input type=\"number\" step=\"any\" id=\"pfD\" class=\"form-control\" value=\"10\">\r\n                    <\/div>\r\n                    <div class=\"form-group shape-field\" data-shape=\"blk\">\r\n                        <label for=\"pfA\">Length L<\/label>\r\n                        <input type=\"number\" step=\"any\" id=\"pfA\" class=\"form-control\" value=\"20\">\r\n                    <\/div>\r\n                    <div class=\"form-group shape-field\" data-shape=\"blk\">\r\n                        <label for=\"pfB\">Width W<\/label>\r\n                        <input type=\"number\" step=\"any\" id=\"pfB\" class=\"form-control\" value=\"10\">\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfL\">Magnetized Thickness<\/label>\r\n                        <input type=\"number\" step=\"any\" id=\"pfL\" class=\"form-control\" value=\"10\">\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfGap\">Air Gap (mm)<\/label>\r\n                        <input type=\"number\" step=\"any\" min=\"0\" id=\"pfGap\" class=\"form-control\" value=\"0\">\r\n                    <\/div>\r\n                    <div class=\"form-group\">\r\n                        <label for=\"pfG0\">Effective Contact Gap (mm)<\/label>\r\n                        <input type=\"number\" step=\"0.05\" min=\"0\" id=\"pfG0\" class=\"form-control\" value=\"0.15\">\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"pf-note\" id=\"pfWarn\" style=\"display:none;\"><\/div>\r\n\r\n                <div class=\"results-panel\">\r\n                    <div class=\"result-item\"><span class=\"label\">Pull force<\/span><span class=\"value\" id=\"pfN\">-<\/span><\/div>\r\n                    <div class=\"result-item\"><span class=\"label\">In kgf<\/span><span class=\"value\" id=\"pfKg\">-<\/span><\/div>\r\n                    <div class=\"result-item\"><span class=\"label\">In lbf<\/span><span class=\"value\" id=\"pfLb\">-<\/span><\/div>\r\n                    <div class=\"result-item steel-only\"><span class=\"label\">Sliding force, approx.<\/span><span class=\"value\" id=\"pfSh\">-<\/span><\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"table-card\">\r\n        <h2 class=\"section-title\">Pull Force at Different Air Gaps<\/h2>\r\n        <p class=\"section-intro\">Pull force drops quickly once a gap opens between the magnet and what it holds. For example, even a thin coating or a sheet of paper matters. The table below applies your current inputs to a series of common gap sizes.<\/p>\r\n        <table class=\"pf-table\">\r\n            <thead><tr><th>Air gap (mm)<\/th><th>Pull force (N)<\/th><th>Pull force (kgf)<\/th><\/tr><\/thead>\r\n            <tbody id=\"pfTableBody\"><\/tbody>\r\n        <\/table>\r\n\r\n    <\/div>\r\n\r\n    <div class=\"table-card\">\r\n        <h2 class=\"section-title\">How This Is Calculated<\/h2>\r\n        <p class=\"section-intro\">The tool uses the mirror-image method to estimate the force. Then it adds a small contact gap, because real surfaces never touch perfectly.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Step 1: Treat the Steel as a Mirror<\/h3>\r\n        <p class=\"body-text\">First, the tool treats the steel plate as a thick, flat mirror with very high permeability. As a result, the plate pulls on the magnet exactly as a mirror-image magnet would. In other words, the pull force equals the force between the magnet and its image.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Step 2: Add Up the Pole Forces<\/h3>\r\n        <p class=\"body-text\">Next, the tool models the magnet and its image as four uniformly charged pole faces. It adds the attraction and repulsion between every pair of faces. This method includes edge effects and the way the field spreads as the gap grows. Therefore, it follows the real force curve better than the simple formula F = B&sup2; A \/ (2 &mu;&#8320;).<\/p>\r\n        <p class=\"ref-line\">Reference: G. Akoun and J.-P. Yonnet, \"3D analytical calculation of the forces exerted between two cuboidal magnets,\" IEEE Transactions on Magnetics, vol. 20, no. 5, pp. 1962-1964, 1984.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Step 3: Holding to an Identical Magnet<\/h3>\r\n        <p class=\"body-text\">Choose this mode to see two identical magnets pulling on each other. The tool then uses the real second magnet instead of a mirror image. At contact, the force matches the steel case. However, at the same gap, the force is higher. The real second magnet sits at the gap distance. A mirror image sits at twice that distance.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Step 4: Add the Effective Contact Gap<\/h3>\r\n        <p class=\"body-text\">Real surfaces never touch perfectly. Coatings, roughness and small flatness errors leave a tiny gap, even in bare contact. Therefore, the tool adds an effective contact gap to your air gap. The force drops steeply near contact, so even a small gap matters. The default of 0.15 mm is an estimate. Set it from your own pull tests.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Steel Thickness Check<\/h3>\r\n        <p class=\"body-text\">In steel mode, the tool also checks your steel thickness. First, it estimates the magnet's flux. Then it finds how thick the steel must be to carry that flux below 1.5 T. Above roughly this level, low-carbon steel starts to saturate. If your steel is thinner, the tool shows a warning. In that case, the real force falls below the value shown. The tool does not correct the number, because predicting that loss needs testing or FEA.<\/p>\r\n\r\n        <h3 class=\"sub-title\">Sliding Force<\/h3>\r\n        <p class=\"body-text\">In steel mode, the tool estimates sliding (shear) force as 20% of the pull force. This is a common rule of thumb for a magnet on clean, dry steel. However, it does not come from the same field model. It also varies a lot with surface condition.<\/p>\r\n\r\n        <div class=\"disclaimer-card\">\r\n            <h3>Engineering Reference<\/h3>\r\n            <p>Real pull force also depends on steel thickness, steel grade, surface finish, coating and pull angle. Therefore, treat this result as an engineering estimate, not a guarantee. For force-critical designs, ask our engineers for tested pull-force data. We can match your exact magnet, coating and steel.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cta-box\">\r\n        <div class=\"cta-content\">\r\n            <h3>Need a magnet rated to a specific pull force?<\/h3>\r\n            <p>Share your target force, gap and steel thickness. Then our engineers will recommend the right grade and geometry.<\/p>\r\n        <\/div>\r\n        <a href=\"\/contact-us\" class=\"btn-cta\">Get a Magnet Recommendation &rarr;<\/a>\r\n    <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n    var $ = function (id) { return document.getElementById(id); };\r\n    var MU0 = 4 * Math.PI * 1e-7;\r\n    var SAT_LIMIT = 1.5; \/* design flux density limit in steel, Tesla *\/\r\n    var grades = { N35: 1.20, N38: 1.24, N40: 1.28, N42: 1.31, N45: 1.35, N48: 1.39, N50: 1.42, N52: 1.45, Custom: 0 };\r\n    var shape = 'cyl', hold = 'steel';\r\n\r\n    Object.keys(grades).forEach(function (k) {\r\n        $('pfGrade').add(new Option(k === 'Custom' ? 'Custom' : k + ' (' + grades[k] + ' T)', k));\r\n    });\r\n    $('pfGrade').value = 'N42';\r\n\r\n    var svgTemplates = {\r\n        cyl_steel: '<svg viewBox=\"0 0 200 160\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' +\r\n             '<path d=\"M 55 45 L 55 85 A 45 15 0 0 0 145 85 L 145 45 Z\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<ellipse cx=\"100\" cy=\"45\" rx=\"45\" ry=\"15\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<rect x=\"30\" y=\"110\" width=\"140\" height=\"18\" fill=\"#94a3b8\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<line x1=\"100\" y1=\"85\" x2=\"100\" y2=\"108\" stroke=\"#e61373\" stroke-width=\"2\" stroke-dasharray=\"3,3\"\/>' +\r\n             '<text x=\"108\" y=\"100\" font-size=\"11\" fill=\"#e61373\" font-weight=\"700\">gap<\/text>' +\r\n             '<text x=\"150\" y=\"68\" font-size=\"12\" fill=\"#002ea7\" font-weight=\"700\">D<\/text><\/svg>',\r\n        cyl_magnet: '<svg viewBox=\"0 0 200 160\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' +\r\n             '<path d=\"M 55 95 L 55 125 A 45 15 0 0 0 145 125 L 145 95 Z\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<ellipse cx=\"100\" cy=\"95\" rx=\"45\" ry=\"15\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<path d=\"M 55 25 L 55 55 A 45 15 0 0 0 145 55 L 145 25 Z\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<ellipse cx=\"100\" cy=\"25\" rx=\"45\" ry=\"15\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<line x1=\"100\" y1=\"70\" x2=\"100\" y2=\"80\" stroke=\"#e61373\" stroke-width=\"2\" stroke-dasharray=\"3,3\"\/>' +\r\n             '<text x=\"108\" y=\"78\" font-size=\"11\" fill=\"#e61373\" font-weight=\"700\">gap<\/text>' +\r\n             '<text x=\"150\" y=\"45\" font-size=\"12\" fill=\"#002ea7\" font-weight=\"700\">D<\/text><\/svg>',\r\n        blk_steel: '<svg viewBox=\"0 0 200 160\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' +\r\n             '<polygon points=\"40,45 70,20 170,20 140,45\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<rect x=\"40\" y=\"45\" width=\"100\" height=\"40\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<polygon points=\"140,45 170,20 170,60 140,85\" fill=\"#94a3b8\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<rect x=\"20\" y=\"110\" width=\"160\" height=\"18\" fill=\"#94a3b8\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<line x1=\"90\" y1=\"85\" x2=\"90\" y2=\"108\" stroke=\"#e61373\" stroke-width=\"2\" stroke-dasharray=\"3,3\"\/>' +\r\n             '<text x=\"98\" y=\"100\" font-size=\"11\" fill=\"#e61373\" font-weight=\"700\">gap<\/text><\/svg>',\r\n        blk_magnet: '<svg viewBox=\"0 0 200 160\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">' +\r\n             '<polygon points=\"40,105 70,85 170,85 140,105\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<rect x=\"40\" y=\"105\" width=\"100\" height=\"30\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<polygon points=\"140,105 170,85 170,115 140,135\" fill=\"#94a3b8\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<polygon points=\"40,25 70,5 170,5 140,25\" fill=\"#cbd5e1\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<rect x=\"40\" y=\"25\" width=\"100\" height=\"30\" fill=\"#e2e8f0\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<polygon points=\"140,25 170,5 170,35 140,55\" fill=\"#94a3b8\" stroke=\"#334155\" stroke-width=\"2\"\/>' +\r\n             '<line x1=\"90\" y1=\"55\" x2=\"90\" y2=\"105\" stroke=\"#e61373\" stroke-width=\"2\" stroke-dasharray=\"3,3\"\/>' +\r\n             '<text x=\"98\" y=\"84\" font-size=\"11\" fill=\"#e61373\" font-weight=\"700\">gap<\/text><\/svg>'\r\n    };\r\n\r\n    function n(id) { return parseFloat($(id).value); }\r\n\r\n    \/* Force between two coaxial identical rectangular pole faces (a x b, metres), distance d apart.\r\n       Polar form with an analytic inner integral, so it stays stable even when d is tiny. *\/\r\n    function rectPair(a, b, d, M) {\r\n        d = Math.max(d, 1e-9);\r\n        var t0 = Math.atan2(b, a);\r\n        function inner(th) {\r\n            var c = Math.cos(th), s = Math.sin(th);\r\n            var R = Math.min(c > 1e-12 ? a \/ c : 1e99, s > 1e-12 ? b \/ s : 1e99);\r\n            var q = Math.sqrt(R * R + d * d);\r\n            var J0 = 1 - d \/ q;\r\n            var J1 = d * (Math.asinh(R \/ d) - R \/ q);\r\n            var J2 = d * (q + d * d \/ q - 2 * d);\r\n            return a * b * J0 - (a * s + b * c) * J1 + c * s * J2;\r\n        }\r\n        function simpson(f, lo, hi, m) {\r\n            var h = (hi - lo) \/ m, sum = f(lo) + f(hi);\r\n            for (var i = 1; i < m; i++) { sum += (i % 2 ? 4 : 2) * f(lo + i * h); }\r\n            return sum * h \/ 3;\r\n        }\r\n        var I = 4 * (simpson(inner, 0, t0, 600) + simpson(inner, t0, Math.PI \/ 2, 600));\r\n        return MU0 * M * M \/ (4 * Math.PI) * I;\r\n    }\r\n\r\n    \/* Same idea for two coaxial identical discs of radius R. *\/\r\n    function discPair(R, d, M) {\r\n        d = Math.max(d, 1e-9);\r\n        var m = 2000, tmax = Math.asinh(2 * R \/ d), h = tmax \/ m, sum = 0;\r\n        for (var i = 0; i <= m; i++) {\r\n            var t = i * h, sv = d * Math.sinh(t);\r\n            var A = 2 * R * R * Math.acos(Math.min(sv \/ (2 * R), 1)) - (sv \/ 2) * Math.sqrt(Math.max(4 * R * R - sv * sv, 0));\r\n            var y = A * Math.sinh(t) \/ (Math.cosh(t) * Math.cosh(t));\r\n            sum += (i === 0 || i === m ? 1 : (i % 2 ? 4 : 2)) * y;\r\n        }\r\n        return MU0 * M * M \/ (4 * Math.PI) * 2 * Math.PI * (h \/ 3) * sum;\r\n    }\r\n\r\n    \/* Returns a function pair(d) for the current magnet, or null if an input is invalid. *\/\r\n    function getPair() {\r\n        var Br = n('pfBr'), L = n('pfL');\r\n        if (!(Br > 0) || !(L > 0)) { return null; }\r\n        var M = Br \/ MU0;\r\n        if (shape === 'cyl') {\r\n            var D = n('pfD');\r\n            if (!(D > 0)) { return null; }\r\n            var R = D \/ 2000;\r\n            return function (d) { return discPair(R, d, M); };\r\n        }\r\n        var a = n('pfA'), b = n('pfB');\r\n        if (!(a > 0) || !(b > 0)) { return null; }\r\n        return function (d) { return rectPair(a \/ 1000, b \/ 1000, d, M); };\r\n    }\r\n\r\n    function contactGap() {\r\n        var g0 = n('pfG0');\r\n        return isNaN(g0) ? 0 : g0;\r\n    }\r\n\r\n    \/* Pull force = force between the magnet and its mirror image (steel) or a real identical magnet.\r\n       d is the distance between the two facing pole faces. Facing faces (d) and far faces (d + 2L) attract;\r\n       the two mixed pairs (d + L) repel. Each touching surface adds one effective contact gap. *\/\r\n    function F(gapMm, pair) {\r\n        var g0 = contactGap();\r\n        if (!pair || !(gapMm >= 0) || !(g0 >= 0)) { return NaN; }\r\n        var L = n('pfL') \/ 1000, g = gapMm \/ 1000, c = g0 \/ 1000;\r\n        var d = hold === 'steel' ? 2 * (g + c) : g + 2 * c;\r\n        return pair(d) + pair(d + 2 * L) - 2 * pair(d + L);\r\n    }\r\n\r\n    \/* Flux density (T) at the steel surface, centre of the pole face, mirror model. Gap in mm. *\/\r\n    function centreField(gapMm) {\r\n        var Br = n('pfBr'), L = n('pfL'), g = Math.max(gapMm, 1e-6), s = g + L;\r\n        if (shape === 'cyl') {\r\n            var R = n('pfD') \/ 2;\r\n            return Br * (s \/ Math.hypot(R, s) - g \/ Math.hypot(R, g));\r\n        }\r\n        var a = n('pfA'), b = n('pfB');\r\n        return 2 * Br \/ Math.PI * (Math.atan(a * b \/ (2 * g * Math.sqrt(4 * g * g + a * a + b * b))) -\r\n                                   Math.atan(a * b \/ (2 * s * Math.sqrt(4 * s * s + a * a + b * b))));\r\n    }\r\n\r\n    \/* Rule-of-thumb minimum steel thickness (mm): the magnet's flux must cross the steel around the\r\n       magnet footprint (perimeter x thickness) without exceeding the design flux density. *\/\r\n    function minSteelMm(gapMm) {\r\n        var Bc = centreField(gapMm + contactGap()), area, perim;\r\n        if (shape === 'cyl') {\r\n            var D = n('pfD'); area = Math.PI * D * D \/ 4; perim = Math.PI * D;\r\n        } else {\r\n            var a = n('pfA'), b = n('pfB'); area = a * b; perim = 2 * (a + b);\r\n        }\r\n        return Bc * area \/ (perim * SAT_LIMIT);\r\n    }\r\n\r\n    function draw() {\r\n        var steel = hold === 'steel';\r\n        $('pfSvgWrapper').innerHTML = svgTemplates[shape + '_' + hold];\r\n        var target = steel ? 'a steel plate' : 'an identical magnet';\r\n        $('pfCaption').textContent = shape === 'cyl'\r\n            ? 'Diameter (D), magnetized thickness (L), pulling on ' + target + '.'\r\n            : 'Length (L) \\u00d7 width (W), magnetized through thickness, pulling on ' + target + '.';\r\n        document.querySelectorAll('.steel-only').forEach(function (e) { e.style.display = steel ? '' : 'none'; });\r\n\r\n        var warn = $('pfWarn'), pair = getPair(), gap = n('pfGap'), f = F(gap, pair);\r\n        warn.style.display = 'none';\r\n        if (!isFinite(f)) {\r\n            ['pfN', 'pfKg', 'pfLb', 'pfSh'].forEach(function (id) { $(id).textContent = '-'; });\r\n            $('pfTableBody').innerHTML = '';\r\n            return;\r\n        }\r\n        $('pfN').textContent = f.toFixed(1) + ' N';\r\n        $('pfKg').textContent = (f \/ 9.80665).toFixed(2) + ' kgf';\r\n        $('pfLb').textContent = (f \/ 4.448222).toFixed(2) + ' lbf';\r\n        $('pfSh').textContent = steel ? (f * 0.2).toFixed(1) + ' N' : '-';\r\n\r\n        var t = n('pfT');\r\n        if (steel && t > 0) {\r\n            var tmin = minSteelMm(gap);\r\n            if (isFinite(tmin)) {\r\n                warn.className = 'pf-note ' + (t < tmin ? 'warn' : 'ok');\r\n                warn.innerHTML = t < tmin\r\n                    ? '<strong>Thin steel warning:<\/strong> Your steel is thinner than the estimated minimum of ' + tmin.toFixed(1) + ' mm. It may saturate, so the real pull force will be lower than shown.'\r\n                    : '<strong>Steel check:<\/strong> Your steel is thick enough. The estimated minimum is ' + tmin.toFixed(1) + ' mm.';\r\n                warn.style.display = 'block';\r\n            }\r\n        }\r\n\r\n        $('pfTableBody').innerHTML = [0, 0.5, 1, 2, 3, 5].map(function (g) {\r\n            var x = F(g, pair);\r\n            return '<tr><td>' + g + '<\/td><td>' + x.toFixed(1) + '<\/td><td>' + (x \/ 9.80665).toFixed(2) + '<\/td><\/tr>';\r\n        }).join('');\r\n    }\r\n\r\n    document.querySelectorAll('.shape-tabs .tab-btn').forEach(function (btn) {\r\n        btn.onclick = function () {\r\n            shape = this.dataset.shape;\r\n            document.querySelectorAll('.shape-tabs .tab-btn').forEach(function (b) { b.classList.toggle('active', b === btn); });\r\n            document.querySelectorAll('.shape-field').forEach(function (f) { f.classList.toggle('active', f.dataset.shape === shape); });\r\n            draw();\r\n        };\r\n    });\r\n\r\n    $('pfHold').onchange = function () { hold = this.value; draw(); };\r\n    $('pfGrade').onchange = function () { if (grades[this.value]) $('pfBr').value = grades[this.value]; draw(); };\r\n    document.querySelectorAll('#pfBr,#pfD,#pfA,#pfB,#pfL,#pfGap,#pfG0,#pfT').forEach(function (el) { el.oninput = draw; });\r\n\r\n    draw();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\r\n<!-- King-Nd free sample card. Paste at the very end of this tool's code. -->\r\n\r\n<style>\r\n.kndtc { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin: 18px 0 0; padding: 18px 22px; border-radius: 10px; background: linear-gradient(135deg, #e61373 0%, #b30e58 100%); box-sizing: border-box; }\r\n.kndtc *, .kndtc *::before, .kndtc *::after { box-sizing: border-box; }\r\n.kndtc-text { flex: 1 1 260px; min-width: 0; }\r\n.kndtc-kicker { display: block; margin: 0 0 6px; font-size: 21px; font-weight: 800; line-height: 1.25; color: #ffffff !important; }\r\n.kndtc-spec { display: block; margin: 0 0 8px; font-size: 14px; font-weight: 600; line-height: 1.35; color: #ffffff !important; opacity: 0.95; }\r\n.kndtc-spec:empty { display: none; }\r\n.kndtc-sub { display: block; font-size: 14px; line-height: 1.5; color: #ffffff !important; }\r\n.kndtc-pill { display: inline-block; margin-right: 8px; padding: 2px 10px; background: #ffffff; border-radius: 999px; color: #b30e58 !important; font-size: 12px; font-weight: 800; vertical-align: 1px; }\r\n.kndtc-btn { flex: none; display: inline-block; padding: 13px 26px; background: #ffffff !important; border-radius: 8px; color: #b30e58 !important; font-size: 15px; font-weight: 700; text-align: center; text-decoration: none !important; animation: kndtcPulse 2.2s ease-out infinite; transition: transform 0.2s; }\r\n.kndtc-btn:hover { transform: translateY(-2px); animation: none; }\r\n@keyframes kndtcPulse {\r\n    0%   { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.65); }\r\n    70%  { box-shadow: 0 0 0 12px rgba(255, 255, 255, 0); }\r\n    100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); }\r\n}\r\n@media (prefers-reduced-motion: reduce) { .kndtc-btn { animation: none; } }\r\n@media (max-width: 600px) { .kndtc-btn { width: 100%; } }\r\n<\/style>\r\n<div class=\"kndtc\" id=\"kndtc\" style=\"margin: 18px 0 0;\">\r\n    <div class=\"kndtc-text\">\r\n        <span class=\"kndtc-kicker\">Want a free sample?<\/span>\r\n        <span class=\"kndtc-spec\" id=\"kndtcSpec\"><\/span>\r\n        <span class=\"kndtc-sub\"><b class=\"kndtc-pill\">Under 1 minute<\/b>Your grade, size and pull force are filled in. Just pick a coating and add your email.<\/span>\r\n    <\/div>\r\n    <a class=\"kndtc-btn\" id=\"kndtcBtn\" href=\"\/custom-ndfeb-magnets\/\">Get My Free Sample &rarr;<\/a>\r\n<\/div>\r\n<script>\r\n(function () {\r\n    var card = document.getElementById('kndtc');\r\n    var btn = document.getElementById('kndtcBtn');\r\n    var specEl = document.getElementById('kndtcSpec');\r\n    if (!card || !btn || !specEl) { return; }\r\n\r\n    var TOOL = 'Pull Force Calculator';\r\n    var $ = function (id) { return document.getElementById(id); };\r\n    var qs1 = function (sel) { return document.querySelector(sel); };\r\n    var val = function (id) { var e = $(id); return e ? parseFloat(e.value) : NaN; };\r\n\r\n    \/* What this tool hands over to the custom form *\/\r\n    function collect() {\r\n        var tab = qs1('.shape-tabs .tab-btn.active');\r\n        var shape = tab ? tab.getAttribute('data-shape') : 'cyl';\r\n        var g = $('pfGrade').value, br = val('pfBr'), L = val('pfL'), gap = val('pfGap');\r\n        var q = {}, size = '';\r\n        q.grade = g === 'Custom' ? 'unsure' : g;\r\n        if (shape === 'cyl') {\r\n            var D = val('pfD');\r\n            q.shape = L <= D ? 'disc' : 'cylinder';\r\n            q.dim_diameter = D;\r\n            q[q.shape === 'disc' ? 'dim_thickness' : 'dim_height'] = L;\r\n            q.magnet = 'Axially Magnetized';\r\n            size = '\\u00d8' + D + ' \\u00d7 ' + L + ' mm';\r\n        } else {\r\n            var A = val('pfA'), B = val('pfB');\r\n            q.shape = 'block';\r\n            q.dim_length = A;\r\n            q.dim_width = B;\r\n            q.dim_thickness = L;\r\n            q.magnet = 'Thickness Magnetized';\r\n            size = A + ' \\u00d7 ' + B + ' \\u00d7 ' + L + ' mm';\r\n        }\r\n        var force = parseFloat($('pfN').textContent);\r\n        var n = 1;\r\n        if (isFinite(force)) { q.tk1 = 'Estimated pull force'; q.tv1 = force + ' N'; n = 2; }\r\n        if (isFinite(gap)) { q['tk' + n] = 'Air gap'; q['tv' + n] = gap + ' mm'; n++; }\r\n        if (g === 'Custom' && isFinite(br)) { q['tk' + n] = 'Br used'; q['tv' + n] = br + ' T'; }\r\n        var parts = [g === 'Custom' ? 'Br ' + br + ' T' : g, size];\r\n        if (isFinite(force)) { parts.push('about ' + force + ' N pull at ' + (isFinite(gap) ? gap : 0) + ' mm gap'); }\r\n        return { spec: parts.join(' \/ '), q: q };\r\n    }\r\n\r\n    \/* The card is moved to sit right under the results *\/\r\n    function anchor() {\r\n        return qs1('.calc-form .results-panel');\r\n    }\r\n\r\n    function place() {\r\n        var t = anchor();\r\n        if (t && t.parentNode && t.nextElementSibling !== card) { t.parentNode.insertBefore(card, t.nextSibling); }\r\n    }\r\n\r\n    function toQuery(q) {\r\n        return Object.keys(q).filter(function (k) {\r\n            var v = q[k];\r\n            return typeof v === 'string' ? v !== '' : (typeof v === 'number' && isFinite(v) && v > 0);\r\n        }).map(function (k) {\r\n            var v = q[k];\r\n            return k + '=' + encodeURIComponent(typeof v === 'number' ? String(parseFloat(v.toFixed(3))) : v);\r\n        }).join('&');\r\n    }\r\n\r\n    function setHref(a, qs) {\r\n        var base = (a.getAttribute('href') || '').split('?')[0];\r\n        a.setAttribute('href', base + '?' + qs);\r\n    }\r\n\r\n    function update() {\r\n        var d = null;\r\n        try { d = collect(); } catch (e) { d = null; }\r\n        d = d || { spec: '', q: {} };\r\n        specEl.textContent = d.spec || '';\r\n        var q = { from: 'tool', tool: TOOL };\r\n        Object.keys(d.q).forEach(function (k) { q[k] = d.q[k]; });\r\n        var qs = toQuery(q);\r\n        setHref(btn, qs);\r\n\r\n    }\r\n\r\n    function later() { window.setTimeout(function () { place(); update(); }, 0); }\r\n    ['input', 'change', 'click', 'keyup'].forEach(function (ev) { document.addEventListener(ev, later, true); });\r\n\r\n    btn.addEventListener('click', function () {\r\n        window.dataLayer = window.dataLayer || [];\r\n        window.dataLayer.push({ event: 'tool_entry_click', tool_name: TOOL });\r\n    });\r\n\r\n    place();\r\n    update();\r\n    window.setTimeout(function () { place(); update(); }, 300);\r\n    window.setTimeout(function () { place(); update(); }, 1200);\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Magnet Pull Force Calculator | King-Nd Magnet Magnet Pull Force Calculator This calculator estimates the pull force of a disc, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1553,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2100","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/pages\/2100","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/comments?post=2100"}],"version-history":[{"count":25,"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/pages\/2100\/revisions"}],"predecessor-version":[{"id":3535,"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/pages\/2100\/revisions\/3535"}],"up":[{"embeddable":true,"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/pages\/1553"}],"wp:attachment":[{"href":"https:\/\/kingndmagnet.com\/it\/wp-json\/wp\/v2\/media?parent=2100"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}