{"id":27956,"date":"2026-11-09T15:09:15","date_gmt":"2026-11-09T15:09:15","guid":{"rendered":"https:\/\/tradefoxapp.com\/calculators\/bricklaying\/"},"modified":"2026-11-09T15:56:38","modified_gmt":"2026-11-09T15:56:38","slug":"bricklaying","status":"publish","type":"page","link":"https:\/\/tradefoxapp.com\/fr\/calculators\/bricklaying\/","title":{"rendered":"Bricklaying calculators"},"content":{"rendered":"\n<style>\n\/* Tradefox calculators \u2014 Apple-style, scoped to .tfc so it can sit inside any WordPress page *\/\n.tfc{--fg:#1d1d1f;--fg2:#6e6e73;--line:#d2d2d7;--soft:#f5f5f7;--brand:#F15927;--brand-ink:#C2410C;--radius:18px;\n font-family:-apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"SF Pro Display\",\"Helvetica Neue\",Helvetica,Arial,sans-serif;\n color:var(--fg);-webkit-font-smoothing:antialiased;font-size:17px;line-height:1.47;letter-spacing:-.022em;text-align:left}\n.tfc *,.tfc *::before,.tfc *::after{box-sizing:border-box}\n.tfc a{color:var(--brand-ink);text-decoration:none}\n.tfc a:hover{text-decoration:underline}\n.tfc button,.tfc input,.tfc select{font:inherit;letter-spacing:inherit;color:inherit}\n.tfc-wrap{max-width:1024px;margin:0 auto;padding:0 22px}\n.tfc-brand{display:flex;align-items:center;gap:8px;padding:18px 0 0;font-size:14px;font-weight:600;color:var(--fg)}\n.tfc-brand img{width:98px;height:20px;display:block}\n.tfc-hero{padding:44px 0 28px}\n.tfc-h1{margin:0;font-size:56px;line-height:1.07;font-weight:700;letter-spacing:-.005em}\n.tfc-h1 span{display:block;color:var(--fg2)}\n.tfc-search{position:relative;margin-top:28px;max-width:560px}\n.tfc-search input{width:100%;height:48px;border-radius:999px;border:1px solid transparent;background:var(--soft);padding:0 20px 0 46px;font-size:17px;outline:none;transition:border-color .2s,background .2s}\n.tfc-search input:focus{background:#fff;border-color:var(--brand);box-shadow:0 0 0 4px rgba(241,89,39,.15)}\n.tfc-search svg{position:absolute;left:17px;top:50%;width:17px;height:17px;transform:translateY(-50%);color:var(--fg2)}\n.tfc-chips{display:flex;flex-wrap:wrap;gap:8px;padding:22px 0 4px}\n.tfc-chips::-webkit-scrollbar{display:none}\n.tfc .tfc-chip{flex:0 0 auto;border:0;background:var(--soft);color:var(--fg);border-radius:999px;padding:8px 16px;font-size:14px;cursor:pointer;transition:background .2s,color .2s}\n.tfc .tfc-chip:hover{background:#e8e8ed}\n.tfc .tfc-chip[aria-pressed=\"true\"]{background:var(--fg);color:#fff}\n.tfc-band{background:var(--soft);padding:36px 0 64px}\n.tfc-group{margin:0 0 40px}\n.tfc-h2{margin:0 0 16px;font-size:28px;line-height:1.14;font-weight:700;letter-spacing:.004em}\n.tfc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}\n.tfc-card{display:flex;flex-direction:column;gap:6px;min-height:150px;background:#fff;border-radius:var(--radius);padding:22px 22px 20px;color:var(--fg)!important;text-decoration:none!important;\n box-shadow:2px 4px 12px rgba(0,0,0,.08);transition:box-shadow .3s cubic-bezier(0,0,.5,1),transform .3s cubic-bezier(0,0,.5,1)}\n@media (hover:hover) and (pointer:fine){.tfc-card:hover{box-shadow:2px 4px 16px rgba(0,0,0,.16);transform:scale3d(1.01,1.01,1.01)}}\n.tfc-card .k{font-size:12px;font-weight:600;color:var(--fg2)}\n.tfc-card .t{font-size:19px;line-height:1.21;font-weight:600}\n.tfc-card .f{margin-top:auto;font-size:14px;color:var(--fg2);overflow-wrap:anywhere}\n.tfc-empty{color:var(--fg2);padding:20px 0}\n\/* detail *\/\n.tfc-back{display:inline-flex;align-items:center;gap:4px;margin-top:22px;font-size:14px}\n.tfc-detail{padding:20px 0 64px}\n.tfc-eyebrow{font-size:14px;font-weight:600;color:var(--brand-ink);margin:0 0 6px}\n.tfc-title{margin:0;font-size:48px;line-height:1.08;font-weight:700;letter-spacing:-.003em}\n.tfc-formula{display:inline-block;margin:18px 0 0;padding:10px 16px;border-radius:12px;background:var(--soft);font:500 16px\/1.4 \"SF Mono\",ui-monospace,Menlo,Consolas,monospace;letter-spacing:0;overflow-wrap:anywhere}\n.tfc-intro{max-width:692px;margin:20px 0 0;color:var(--fg)}\n.tfc-intro p{margin:0 0 .8em}\n.tfc-layout>*,.tfc-info>*,.tfc-grid>*{min-width:0}\n.tfc-row input,.tfc-row select{width:100%}\n.tfc-row select,.tfc-unit{width:auto}\n.tfc-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:24px;margin-top:32px;align-items:start}\n.tfc-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:24px}\n.tfc-field{margin:0 0 18px}\n.tfc-field label{display:block;font-size:14px;font-weight:600;margin:0 0 6px}\n.tfc-row{display:flex;gap:8px}\n.tfc-row input{flex:1 1 auto;min-width:0;height:48px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:17px;background:#fff;outline:none;transition:border-color .2s,box-shadow .2s}\n.tfc-row input:focus,.tfc-row select:focus{border-color:var(--brand);box-shadow:0 0 0 4px rgba(241,89,39,.15)}\n.tfc-row input[aria-invalid=\"true\"]{border-color:#e30000}\n.tfc-row select,.tfc-unit{flex:0 0 auto;height:48px;border:1px solid var(--line);border-radius:12px;padding:0 12px;font-size:15px;background:var(--soft);outline:none;min-width:72px}\n.tfc-unit{display:flex;align-items:center;color:var(--fg2);border-color:transparent}\n.tfc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:6px}\n.tfc .tfc-btn{border:0;border-radius:999px;background:var(--brand);color:#fff;font-weight:600;font-size:17px;padding:12px 26px;cursor:pointer;transition:background .2s}\n.tfc .tfc-btn:hover{background:#d94d1f}\n.tfc .tfc-link{border:0;background:none;padding:0;color:var(--brand-ink);font-size:15px;cursor:pointer}\n.tfc .tfc-link:hover{text-decoration:underline}\n.tfc-error{color:#d70015;font-size:14px;margin:12px 0 0;min-height:1em}\n.tfc-results{background:var(--soft);border-radius:var(--radius);padding:24px;min-height:100%}\n.tfc-results .lbl{font-size:14px;color:var(--fg2);margin:0}\n.tfc-out{margin:0 0 20px}\n.tfc-out:last-of-type{margin-bottom:0}\n.tfc-num{font-size:40px;line-height:1.1;font-weight:700;letter-spacing:-.01em;overflow-wrap:anywhere}\n.tfc-num small{font-size:21px;font-weight:600;color:var(--fg2);margin-left:6px}\n.tfc-pct{display:block;font-size:14px;color:var(--fg2)}\n.tfc-wait{color:var(--fg2);margin:0}\n.tfc-tag{display:inline-block;font-size:12px;font-weight:600;color:var(--fg2);background:#fff;border-radius:999px;padding:3px 10px;margin:0 0 14px}\n.tfc-notice{font-size:14px;color:var(--fg2);margin:16px 0 0}\n.tfc-work{margin-top:18px;font-size:14px}\n.tfc-work summary{cursor:pointer;color:var(--brand-ink);font-weight:600}\n.tfc-work pre{white-space:pre-wrap;font:13px\/1.5 \"SF Mono\",ui-monospace,Menlo,Consolas,monospace;letter-spacing:0;background:#fff;border-radius:12px;padding:12px;margin:10px 0 0;overflow-wrap:anywhere}\n.tfc-info{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:24px}\n.tfc-info section{background:var(--soft);border-radius:var(--radius);padding:22px}\n.tfc-info h3{margin:0 0 8px;font-size:17px;font-weight:600}\n.tfc-info p,.tfc-info ul{margin:0;font-size:15px;color:var(--fg)}\n.tfc-info ul{padding-left:18px}\n.tfc-info li{margin:0 0 6px}\n.tfc-foot{max-width:692px;font-size:12px;line-height:1.5;color:var(--fg2);margin:28px 0 0}\n@media (max-width:833px){\n .tfc-h1{font-size:40px}.tfc-title{font-size:34px}\n .tfc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}\n .tfc-layout,.tfc-info{grid-template-columns:minmax(0,1fr)}\n}\n@media (max-width:560px){\n .tfc-wrap{padding:0 16px}.tfc-h1{font-size:32px}.tfc-title{font-size:28px}.tfc-h2{font-size:24px}\n .tfc-grid{grid-template-columns:1fr}.tfc-card{min-height:0}\n .tfc-num{font-size:32px}\n}\n@media (prefers-reduced-motion:reduce){.tfc *{transition:none!important}.tfc-card:hover{transform:none!important}}\n\n\/* local nav (Apple-style sticky product bar) + pager *\/\n.tfc-local{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid rgba(0,0,0,.16)}\n.tfc-local-in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:52px}\n.tfc .tfc-local-title{font-size:21px;font-weight:600;letter-spacing:.011em;color:var(--fg);white-space:nowrap}\n.tfc .tfc-local-title:hover{text-decoration:none;color:var(--brand-ink)}\n.tfc-local-links{display:flex;gap:20px;overflow-x:auto;scrollbar-width:none;font-size:12px}\n.tfc-local-links::-webkit-scrollbar{display:none}\n.tfc .tfc-local-links a{color:var(--fg);opacity:.8;white-space:nowrap}\n.tfc .tfc-local-links a:hover{opacity:1;color:var(--brand-ink);text-decoration:none}\n.tfc-pager{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}\n.tfc .tfc-pager a{font-size:17px;font-weight:600;color:var(--fg)}\n.tfc .tfc-pager a span{display:block;font-size:12px;font-weight:400;color:var(--fg2)}\n.tfc .tfc-pager a:hover{color:var(--brand-ink);text-decoration:none}\n.tfc .tfc-pager .tfc-all{font-size:15px;color:var(--brand-ink)}\n.tfc-pager .tfc-next{text-align:right}\n@media (max-width:560px){.tfc-local-in{flex-direction:column;align-items:flex-start;gap:4px;padding:8px 16px}.tfc .tfc-local-title{font-size:17px}.tfc-local-links{width:100%;gap:16px}\n .tfc-pager{grid-template-columns:1fr 1fr}.tfc-pager .tfc-all{grid-column:1\/-1;grid-row:1;text-align:center}}\n\n.tfc .tfc-math{display:inline-block;max-width:100%;box-sizing:border-box;margin:18px 0 0;padding:16px 22px;border-radius:16px;background:var(--soft);overflow-x:auto;color:var(--fg)}\n.tfc .tfc-math math,.tfc .tfc-math math *,.tfc .tfc-where math,.tfc .tfc-where math *{font-family:\"STIX Two Math\",\"Cambria Math\",\"Latin Modern Math\",\"Times New Roman\",math,serif!important}\n.tfc .tfc-math math{font-size:22px;margin:4px 0;text-align:left;math-style:normal}\n.tfc .tfc-math math[display=block]{display:block math}\n.tfc .tfc-where{margin:12px 0 0;padding:10px 0 0;border-top:1px solid rgba(0,0,0,.08);display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font:400 14px\/1.45 -apple-system,BlinkMacSystemFont,\"SF Pro Text\",\"Helvetica Neue\",sans-serif;color:#6e6e73}\n.tfc .tfc-where>div{display:contents}\n.tfc .tfc-where dt,.tfc .tfc-where dd{margin:0}\n.tfc .tfc-where dt math{font-size:17px;color:#1d1d1f}\n.tfc .tfc-where .tfc-where-h{grid-column:1\/-1;font-style:italic}\n@media(max-width:600px){.tfc .tfc-math{display:block;padding:14px 16px}.tfc .tfc-math math{font-size:18px}}\n\n.tfc .tfc-card .tfc-cm{display:block;overflow:hidden;max-width:100%;font-family:inherit;color:var(--fg)}\n.tfc .tfc-card .tfc-cm math{font-size:17px;text-align:left;margin:0}\n.tfc .tfc-card .tfc-cm math[display=block]{display:inline math;math-style:normal}\n.tfc .tfc-card .tfc-cm math,.tfc .tfc-card .tfc-cm math *{font-family:\"STIX Two Math\",\"Cambria Math\",\"Latin Modern Math\",\"Times New Roman\",math,serif!important}\n\n\n.tfc-brand{display:none}\n.tfc-hero{padding-top:56px}\n<\/style>\n<div class=\"tfc\" id=\"tfc\"><\/div>\n<script>\n\/* Bricklaying: converted line-for-line from the original Tradefox Unity C# model (Model.cs). *\/\n(function(){\nfunction SnapWhole(x){const nearest=Math.round(x);return nearest!==0&&Math.abs(x-nearest)<=4*2.2204460492503131e-16*Math.abs(x)?nearest:x;}\nfunction Up(x){return Math.ceil(SnapWhole(x));}\nfunction Need(ok,message){if(!ok)throw new Error(message);}\nfunction Fmt(x){return String(Number(x.toPrecision(10)));}\nfunction calculate(item,a){\n Need(a.length===item.fields.length,'Missing inputs.');\n for(let i=0;i<a.length;i++){const f=item.fields[i];Need(Number.isFinite(a[i]),f.label+': enter a finite number.');Need(a[i]>=f.min&&a[i]<=f.max,f.label+': allowed range '+Fmt(f.min)+' to '+Fmt(f.max)+'.');Need(!f.integer||a[i]===Math.trunc(a[i]),f.label+': use a whole number.');}\n const x=a[0],y=a.length>1?a[1]:0,z=a.length>2?a[2]:0,w=a.length>3?a[3]:0,t=a.length>4?a[4]:0,u=a.length>5?a[5]:0,v=a.length>6?a[6]:0;let r,b,n,q;\n switch(item.id){\n case \"wall\":Need(z<=x*y,\"Openings exceed the gross wall area.\");q=[x*y,x*y-z];break;\n case \"gable\":r=x*y+x*z\/2;Need(w<=r,\"Openings exceed the gross wall area.\");q=[r-w];break;\n case \"trapezoid\":r=x*(y+z)\/2;Need(w<=r,\"Openings exceed the gross wall area.\");q=[r-w];break;\n case \"rectangle\":q=[x*y,2*(x+y)];break;\n case \"triangle\":q=[x*y\/2];break;\n case \"circle\":q=[Math.PI*x*x\/4,Math.PI*x];break;\n case \"volume\":q=[x*y*z\/1000];break;\n case \"bricks\":case \"blocks\":r=1e6\/((y+w)*(z+t));q=[r,x*r,Up(x*r*(1+u\/100))];break;\n case \"leaves\":q=[Up(x*y*(1+t\/100)),Up(z*w*(1+t\/100))];break;\n case \"courses\":q=[x+y,(x+y)*z,w+(x+y)*z\/1000];break;\n case \"fitcourses\":r=y+z;n=Math.floor(SnapWhole(x\/r));q=[n,Math.max(0,x-n*r),(n+1)*r];break;\n case \"jointheight\":case \"perpend\":Need(x>y*z,\"The units leave no positive space for mortar joints.\");q=[(x-y*z)\/w];break;\n case \"coord\":r=x*(y+z);q=[r-z,r,r+z];break;\n case \"lap\":q=[x+y,(x+y)*z];break;\n case \"diagonal\":r=Math.sqrt(x*x+y*y);q=[r,Math.abs(z-w)*1000,(z-r)*1000,(w-r)*1000];break;\n case \"square\":q=[3*x,4*x,5*x];break;\n case \"slope\":q=[Math.sqrt(x*x+y*y),Math.atan2(y,x)*180\/Math.PI,y\/x*100,y==0?0:x\/y];break;\n case \"fall\":q=[x\/y*1000,z-x\/y];break;\n case \"level\":q=[x+y,x+y-z];break;\n case \"scale\":q=[x*y,x*y\/1000,z\/y];break;\n case \"arch\":Need(y<=x\/2,\"This calculator covers segmental to semicircular arches only (rise \u2264 half span).\");r=x*x\/(8*y)+y\/2;b=2*Math.asin(Math.min(1,x\/(2*r)));q=[r,b*180\/Math.PI,r*b];break;\n case \"arc\":b=y*Math.PI\/180;q=[x*b,2*x*Math.sin(b\/2),x*x*b\/2];break;\n case \"ring\":r=y\/1000;b=Math.PI*((x+r)*(x+r)-x*x)*z\/360;q=[b,b*w,2*Math.PI*(x+r\/2)*z\/360];break;\n case \"mortar\":n=x*1e6\/((y+t)*(z+u));r=x*w\/1000-n*y*z*w\/1e9;q=[r,r*1000*(1+v\/100)];break;\n case \"bags\":n=Up(x*(1+z\/100)\/y);q=[n,n*y];break;\n case \"mix\":r=x\/(y+z+w);q=[r*y,r*z,r*w];break;\n case \"dose\":q=[x*y];break;\n case \"pointing\":r=x*(1-y*z\/((y+w)*(z+t)))*u;q=[r,r*(1+v\/100)];break;\n case \"pavers\":q=[Up(x*1e6\/((y+w)*(z+w))*(1+t\/100)),x*u\/1000];break;\n case \"ties\":r=Up(x*y);b=z*(Up(w*1000\/t)+1);q=[r,b,r+b];break;\n case \"dpc\":r=x+y*z\/1000;q=[r,Up(r\/w)];break;\n case \"lintel\":q=[x+y+z];break;\n case \"footing\":r=x*y*z;q=[r,r*(1+w\/100)];break;\n case \"spoil\":r=x*y*z;q=[r,r*w];break;\n case \"mass\":q=[x*y,x*y\/1000,x*y*9.81\/1000];break;\n case \"pressure\":q=[x\/y,x\/y\/1000];break;\n case \"packs\":r=Up(x*(1+y\/100));n=Up(r\/z);q=[r,n,n*z,n*z-r];break;\n case \"cost\":r=x*y+z*w+t;b=r*(1+u\/100);q=[r,b,b*v\/100,b*(1+v\/100)];break;\n case \"time\":q=[x\/y,x\/y\/z];break;\n case \"convert\":q=[x\/1000,y\/1e6,z\/1000,w*25.4];break;\n \n default:throw new Error('Unknown calculator.');\n }\n Need(q.length===item.outputs.length,'Output definition mismatch.');for(const res of q)Need(Number.isFinite(res),'Result exceeds the calculation range.');return q;\n}\nwindow.TF_BRICK_MODEL=calculate;if(typeof module!=='undefined')module.exports=calculate;\n})();\n\n<\/script>\n<script>\n\/* Tradefox bricklaying calculators: adapter between the original catalogue\/model and the shared shell. *\/\n(function(){\n'use strict';\nvar CATALOGUE = [{\"id\":\"wall\",\"title\":\"Wall area less openings\",\"group\":\"Quantities\",\"description\":\"Measure one flat wall face and deduct the combined area of its openings.\",\"formula\":\"Gross = length \u00d7 height; net = gross \u2212 openings.\",\"notes\":\"Enter the total opening area once. Reveals, returns and recesses are separate surfaces.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Height (m)\",\"value\":2.4,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Total openings (m\u00b2)\",\"value\":2,\"min\":0,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Gross area (m\u00b2)\",\"Net area (m\u00b2)\"],\"expected\":[12,10],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"gable\",\"title\":\"Rectangular wall + triangular gable\",\"group\":\"Quantities\",\"description\":\"Calculate a symmetrical or off-centre triangular gable above a rectangular wall.\",\"formula\":\"Area = width \u00d7 eaves height + width \u00d7 gable rise \/ 2 \u2212 openings.\",\"notes\":\"Gable rise is measured vertically above the eaves. Only use this for straight-sided triangular gables.\",\"fields\":[{\"label\":\"Width (m)\",\"value\":6,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Eaves height (m)\",\"value\":2.4,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Gable rise (m)\",\"value\":1.5,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Openings (m\u00b2)\",\"value\":2,\"min\":0,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Net area (m\u00b2)\"],\"expected\":[16.9],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"trapezoid\",\"title\":\"Raking wall \/ trapezoid\",\"group\":\"Quantities\",\"description\":\"Measure a straight sloping top between two vertical ends.\",\"formula\":\"Area = length \u00d7 (height 1 + height 2) \/ 2 \u2212 openings.\",\"notes\":\"For a stepped or irregular wall, calculate each section separately.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Height 1 (m)\",\"value\":1,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Height 2 (m)\",\"value\":2,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Openings (m\u00b2)\",\"value\":0,\"min\":0,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Net area (m\u00b2)\"],\"expected\":[7.5],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"rectangle\",\"title\":\"Rectangle area & perimeter\",\"group\":\"Geometry\",\"description\":\"Calculate a rectangular plan, base or panel.\",\"formula\":\"Area = L \u00d7 W; perimeter = 2 \u00d7 (L + W).\",\"notes\":\"Perimeter is the complete outside boundary.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":4,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Width (m)\",\"value\":3,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Area (m\u00b2)\",\"Perimeter (m)\"],\"expected\":[12,14],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"triangle\",\"title\":\"Triangle area\",\"group\":\"Geometry\",\"description\":\"Calculate a triangle using its base and perpendicular height.\",\"formula\":\"Area = base \u00d7 perpendicular height \/ 2.\",\"notes\":\"The height must be at right angles to the base, not the sloping side.\",\"fields\":[{\"label\":\"Base (m)\",\"value\":4,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpendicular height (m)\",\"value\":3,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Area (m\u00b2)\"],\"expected\":[6],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"circle\",\"title\":\"Circle area & circumference\",\"group\":\"Geometry\",\"description\":\"Calculate a circular feature from its diameter.\",\"formula\":\"Area = \u03c0d\u00b2 \/ 4; circumference = \u03c0d.\",\"notes\":\"Use the correct setting-out line: inside, outside or centreline.\",\"fields\":[{\"label\":\"Diameter (m)\",\"value\":2,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Area (m\u00b2)\",\"Circumference (m)\"],\"expected\":[3.141592653589793,6.283185307179586],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"volume\",\"title\":\"Solid volume\",\"group\":\"Quantities\",\"description\":\"Calculate a rectangular solid from metre lengths and millimetre thickness.\",\"formula\":\"Volume = L \u00d7 H \u00d7 thickness \/ 1000.\",\"notes\":\"This is gross solid volume. Deduct cavities or voids separately.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Height (m)\",\"value\":2,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Thickness (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Volume (m\u00b3)\"],\"expected\":[2.15],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"bricks\",\"title\":\"Facing brick quantity\",\"group\":\"Quantities\",\"description\":\"Estimate one stretcher-facing leaf using actual unit sizes and nominal joints.\",\"formula\":\"Units\/m\u00b2 = 1,000,000 \/ [(length + perpend) \u00d7 (height + bed)]; order = ceil(area \u00d7 rate \u00d7 (1 + waste\/100)).\",\"notes\":\"Area estimate, not a cutting or bond schedule. Frogs, specials, piers, returns and boundary joints require a separate take-off. Standard example gives 59.259 units\/m\u00b2, often rounded to about 60.\",\"fields\":[{\"label\":\"Net area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Brick length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Brick height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpend joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste allowance (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Units \/ m\u00b2\",\"Unrounded units\",\"Order units (whole)\"],\"expected\":[59.25925925925926,592.5925925925926,623],\"source\":\"BDA dimensions\"},{\"id\":\"blocks\",\"title\":\"Block quantity\",\"group\":\"Quantities\",\"description\":\"Estimate blocks from the chosen face size and joint widths.\",\"formula\":\"Units\/m\u00b2 = 1,000,000 \/ [(length + perpend) \u00d7 (height + bed)]; order = ceil(area \u00d7 rate \u00d7 (1 + waste\/100)).\",\"notes\":\"Example is a 440 \u00d7 215 mm block with 10 mm joints. Enter manufacturer values for thin-joint systems; do not assume ordinary mortar dimensions.\",\"fields\":[{\"label\":\"Net area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Block length (mm)\",\"value\":440,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Block height (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpend joint (mm)\",\"value\":10,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste allowance (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Units \/ m\u00b2\",\"Unrounded units\",\"Order units (whole)\"],\"expected\":[9.876543209876543,98.76543209876543,104],\"source\":\"Manufacturer sizes \/ geometry\"},{\"id\":\"leaves\",\"title\":\"Two-leaf \/ cavity-wall quantities\",\"group\":\"Quantities\",\"description\":\"Calculate both leaves separately using their specified units per square metre.\",\"formula\":\"Each leaf = ceil(its net area \u00d7 its rate \u00d7 (1 + waste\/100)).\",\"notes\":\"Rates must reflect each leaf, bond and unit. Do not count the cavity as solid masonry. Leave thickness and structural specification to the design.\",\"fields\":[{\"label\":\"Outer net area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Outer units \/ m\u00b2\",\"value\":60,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Inner net area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Inner units \/ m\u00b2\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Outer order units\",\"Inner order units\"],\"expected\":[630,105],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"courses\",\"title\":\"Course gauge & height\",\"group\":\"Setting out\",\"description\":\"Calculate the nominal height and top level of a selected number of courses.\",\"formula\":\"Gauge = unit height + bed; height = courses \u00d7 gauge; top level = datum + height \/ 1000.\",\"notes\":\"Height includes one bed joint per course, including the first bed. It excludes a further top bed. Check datum conventions against the drawing.\",\"fields\":[{\"label\":\"Unit height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Number of courses\",\"value\":32,\"min\":1,\"max\":10000,\"integer\":true},{\"label\":\"Datum level (m)\",\"value\":0,\"min\":-10000,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Gauge (mm)\",\"Height (mm)\",\"Top level (m)\"],\"expected\":[75,2400,2.4],\"source\":\"BDA dimensions\"},{\"id\":\"fitcourses\",\"title\":\"Courses within a target height\",\"group\":\"Setting out\",\"description\":\"Find whole course modules and the residual height.\",\"formula\":\"Whole courses = floor(target \/ gauge); remainder = target \u2212 whole courses \u00d7 gauge.\",\"notes\":\"Do not spread the remainder into joints without checking permitted joint tolerances and the design. Includes one bed per course.\",\"fields\":[{\"label\":\"Target height (mm)\",\"value\":2450,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Whole courses\",\"Remainder (mm)\",\"Next full course height (mm)\"],\"expected\":[32,50,2475],\"source\":\"BDA dimensions\"},{\"id\":\"jointheight\",\"title\":\"Bed joint needed for a target\",\"group\":\"Setting out\",\"description\":\"Calculate the average joint for an explicitly chosen number of courses and beds.\",\"formula\":\"Bed = (target height \u2212 courses \u00d7 unit height) \/ number of beds.\",\"notes\":\"Choose the bed count to match your datum convention. A numerical answer does not mean the joint is permitted. Check the specified mortar and tolerances.\",\"fields\":[{\"label\":\"Target height (mm)\",\"value\":2400,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Courses\",\"value\":32,\"min\":1,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Beds included\",\"value\":32,\"min\":1,\"max\":1000000000.0,\"integer\":true}],\"outputs\":[\"Required average bed (mm)\"],\"expected\":[10],\"source\":\"BDA dimensions\"},{\"id\":\"coord\",\"title\":\"Brickwork CO\u2212 \/ CO \/ CO+\",\"group\":\"Setting out\",\"description\":\"Calculate three boundary conditions for a number of full stretcher modules.\",\"formula\":\"CO = n \u00d7 (brick length + joint); CO\u2212 = CO \u2212 joint; CO+ = CO + joint.\",\"notes\":\"Use the boundary condition shown on the drawing. This full-unit calculator does not automatically resolve corners, half-unit bonds or specials.\",\"fields\":[{\"label\":\"Full stretcher modules\",\"value\":4,\"min\":1,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Brick length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpend joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"CO\u2212 (mm)\",\"CO (mm)\",\"CO+ (mm)\"],\"expected\":[890,900,910],\"source\":\"BDA dimensions\"},{\"id\":\"perpend\",\"title\":\"Fit units between two ends\",\"group\":\"Setting out\",\"description\":\"Find a uniform perpend joint from a known span, unit count and joint count.\",\"formula\":\"Joint = (span \u2212 count \u00d7 unit length) \/ joints included.\",\"notes\":\"For free ends, the internal joint count is usually units minus one. Explicitly enter any end joints included; do not force an unbuildable joint.\",\"fields\":[{\"label\":\"Span (mm)\",\"value\":890,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit count\",\"value\":4,\"min\":1,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Joint count\",\"value\":3,\"min\":1,\"max\":1000000000.0,\"integer\":true}],\"outputs\":[\"Required perpend (mm)\"],\"expected\":[10],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"lap\",\"title\":\"Stretcher offset \/ bond module\",\"group\":\"Setting out\",\"description\":\"Calculate a fraction of a coordinating module.\",\"formula\":\"Module = length + joint; offset = module \u00d7 fraction.\",\"notes\":\"This is a setting-out offset, not a cut-brick length. Check minimum lap, closers and structural bond requirements in the design.\",\"fields\":[{\"label\":\"Unit length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Joint (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Offset fraction\",\"value\":0.5,\"min\":0.001,\"max\":1,\"integer\":false}],\"outputs\":[\"Module (mm)\",\"Offset (mm)\"],\"expected\":[225,112.5],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"diagonal\",\"title\":\"Square a rectangular set-out\",\"group\":\"Setting out\",\"description\":\"Find the target diagonal and compare two measured diagonals.\",\"formula\":\"Target = \u221a(L\u00b2 + W\u00b2); difference = |diagonal 1 \u2212 diagonal 2|.\",\"notes\":\"Equal diagonals alone do not prove every side or corner is correct. Check side lengths, right angles, datum and position as well.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":4,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Width (m)\",\"value\":3,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Measured diagonal 1 (m)\",\"value\":5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Measured diagonal 2 (m)\",\"value\":5.01,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Target diagonal (m)\",\"Measured difference (mm)\",\"Diagonal 1 error (mm)\",\"Diagonal 2 error (mm)\"],\"expected\":[5,10,0,10],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"square\",\"title\":\"3\u20134\u20135 setting-out triangle\",\"group\":\"Setting out\",\"description\":\"Scale a right-angle check to a useful site size.\",\"formula\":\"Sides = 3k, 4k and 5k.\",\"notes\":\"Measure from the same corner and use the same units. Larger triangles usually reduce the effect of small reading errors.\",\"fields\":[{\"label\":\"Scale k (m)\",\"value\":1,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"First leg (m)\",\"Second leg (m)\",\"Diagonal (m)\"],\"expected\":[3,4,5],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"slope\",\"title\":\"Rise, run, slope & rake\",\"group\":\"Geometry\",\"description\":\"Calculate a rake or fall from horizontal run and vertical rise.\",\"formula\":\"Length = \u221a(run\u00b2 + rise\u00b2); angle = atan(rise\/run); gradient = rise\/run \u00d7 100; 1:n = run\/rise.\",\"notes\":\"Rise may be negative to represent a fall. Zero rise is level; a 1:n ratio is then not applicable.\",\"fields\":[{\"label\":\"Horizontal run (m)\",\"value\":4,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Vertical rise \/ fall (m)\",\"value\":1,\"min\":-10000,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Sloping length (m)\",\"Angle (degrees)\",\"Gradient (%)\",\"1:n denominator (signed; 0 = level)\"],\"expected\":[4.123105625617661,14.036243467926479,25,4],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"fall\",\"title\":\"Fall from a 1:n gradient\",\"group\":\"Setting out\",\"description\":\"Calculate a vertical fall from a specified horizontal distance and gradient.\",\"formula\":\"Fall = horizontal run \/ n; end level = start level \u2212 fall.\",\"notes\":\"Use the fall specified for the particular detail. No universal paving, DPC or drainage fall is assumed.\",\"fields\":[{\"label\":\"Run (m)\",\"value\":5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Gradient denominator n\",\"value\":80,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Start level (m)\",\"value\":10,\"min\":-10000,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Fall (mm)\",\"End level (m)\"],\"expected\":[62.5,9.9375],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"level\",\"title\":\"Level-book calculation\",\"group\":\"Setting out\",\"description\":\"Use a known reduced level and staff readings to find a new reduced level.\",\"formula\":\"Height of instrument = known RL + backsight; new RL = HI \u2212 foresight.\",\"notes\":\"All readings must relate to the same instrument setup. Complete closing checks and record change points separately.\",\"fields\":[{\"label\":\"Known RL (m)\",\"value\":100,\"min\":-10000,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Backsight (m)\",\"value\":1.2,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Foresight (m)\",\"value\":1.8,\"min\":0,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Height of instrument (m)\",\"New RL (m)\"],\"expected\":[101.2,99.4],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"scale\",\"title\":\"Drawing scale\",\"group\":\"Setting out\",\"description\":\"Convert a measured drawing length at a stated 1:n scale.\",\"formula\":\"Real mm = drawing mm \u00d7 n; drawing mm = real mm \/ n.\",\"notes\":\"Prefer written dimensions. Check the print calibration; screen zoom and resized prints change the effective scale.\",\"fields\":[{\"label\":\"Drawing length (mm)\",\"value\":40,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Scale denominator n\",\"value\":50,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Real length for reverse calculation (mm)\",\"value\":2000,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Real length (mm)\",\"Real length (m)\",\"Reverse drawing length (mm)\"],\"expected\":[2000,2,40],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"arch\",\"title\":\"Segmental arch geometry\",\"group\":\"Arches & curves\",\"description\":\"Find the radius and intrados length of a circular segment from its span and rise.\",\"formula\":\"R = span\u00b2 \/ (8 \u00d7 rise) + rise \/ 2; angle = 2 asin(span \/ (2R)); arc = R \u00d7 angle in radians.\",\"notes\":\"Geometry only for rise \u2264 half span. Does not size arch rings, voussoirs, bearings, abutments or centring. Obtain the arch design.\",\"fields\":[{\"label\":\"Clear span (mm)\",\"value\":2000,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Rise (mm)\",\"value\":500,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Intrados radius (mm)\",\"Included angle (degrees)\",\"Intrados arc length (mm)\"],\"expected\":[1250,106.26020470831196,2318.2380450040305],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"arc\",\"title\":\"Arc length & chord\",\"group\":\"Arches & curves\",\"description\":\"Calculate a circular arc from radius and included angle.\",\"formula\":\"Arc = R\u03b8; chord = 2R sin(\u03b8\/2); sector = R\u00b2\u03b8\/2 (\u03b8 in radians).\",\"notes\":\"Use the radius of the intended setting-out line. Limited to 0\u2013180 degrees for the minor arc.\",\"fields\":[{\"label\":\"Radius (m)\",\"value\":2,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Included angle (degrees)\",\"value\":90,\"min\":0.001,\"max\":180,\"integer\":false}],\"outputs\":[\"Arc length (m)\",\"Chord (m)\",\"Sector area (m\u00b2)\"],\"expected\":[3.141592653589793,2.8284271247461903,3.141592653589793],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"ring\",\"title\":\"Curved wall \/ ring volume\",\"group\":\"Arches & curves\",\"description\":\"Calculate an annular sector in plan and its gross wall volume.\",\"formula\":\"Area = \u03c0[(R+t)\u00b2 \u2212 R\u00b2] \u00d7 angle\/360; volume = area \u00d7 height.\",\"notes\":\"Inside radius, radial thickness and vertical height. Excludes openings. No stability or retaining-wall design is performed.\",\"fields\":[{\"label\":\"Inside radius (m)\",\"value\":2,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Radial thickness (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Angle (degrees)\",\"value\":180,\"min\":0.001,\"max\":360,\"integer\":false},{\"label\":\"Height (m)\",\"value\":1,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Plan area (m\u00b2)\",\"Gross volume (m\u00b3)\",\"Centreline length (m)\"],\"expected\":[1.4234949012497038,1.4234949012497038,6.620906517440488],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"mortar\",\"title\":\"Mortar volume: geometric estimate\",\"group\":\"Mortar\",\"description\":\"Estimate joint space in one rectangular-unit leaf.\",\"formula\":\"Units = A\u00d71,000,000\/[(L+jv)(H+jh)]; joints = A\u00d7T\/1000 \u2212 units\u00d7L\u00d7H\u00d7T\/1,000,000,000; order = joints\u00d7(1+w\/100).\",\"notes\":\"Full rectangular units with full beds\/perpends. Excludes frogs, perforations, wastage beyond your allowance and cavity losses. Use manufacturer yield for actual ordering.\",\"fields\":[{\"label\":\"Net face area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Leaf thickness (mm)\",\"value\":102.5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpend (mm)\",\"value\":10,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Allowance (%)\",\"value\":10,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Joint volume (m\u00b3)\",\"With allowance (litres)\"],\"expected\":[0.17614814814814816,193.76296296296297],\"source\":\"Geometry \/ MPA yield distinction\"},{\"id\":\"bags\",\"title\":\"Bagged mortar from declared yield\",\"group\":\"Mortar\",\"description\":\"Convert required wet mortar volume into whole bags using the product yield.\",\"formula\":\"Bags = ceil(required litres \u00d7 (1 + waste\/100) \/ litres per bag).\",\"notes\":\"Use the manufacturer\u2019s mixed yield, not bag mass or loose dry volume. Water addition must follow the product instructions.\",\"fields\":[{\"label\":\"Required wet mortar (litres)\",\"value\":200,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Declared yield (litres \/ bag)\",\"value\":13,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Whole bags\",\"Mixed volume available (litres)\"],\"expected\":[17,221],\"source\":\"MPA mortar \/ product-specific yield\"},{\"id\":\"mix\",\"title\":\"Prescribed mortar: gauging volumes\",\"group\":\"Mortar\",\"description\":\"Split a chosen total loose ingredient volume into cement, lime and sand parts.\",\"formula\":\"Part volume = total loose volume \/ (cement + lime + sand parts); each ingredient = its parts \u00d7 part volume.\",\"notes\":\"Use the specified recipe. Loose ingredient volumes do not add up to finished wet yield. No strength class is inferred; this does not choose a mortar for the wall.\",\"fields\":[{\"label\":\"Total loose ingredients (litres)\",\"value\":80,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Cement parts\",\"value\":1,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Lime parts\",\"value\":1,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Sand parts\",\"value\":6,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Cement (litres)\",\"Lime (litres)\",\"Sand (litres)\"],\"expected\":[10,10,60],\"source\":\"MPA mortar prescribed proportions\"},{\"id\":\"dose\",\"title\":\"Product water \/ admixture dose\",\"group\":\"Mortar\",\"description\":\"Scale a manufacturer-specified dose by the number of bags.\",\"formula\":\"Total dose = bags \u00d7 prescribed dose per bag.\",\"notes\":\"Enter the product\u2019s dose, not a guessed water ratio. Sand moisture and material type matter; this is arithmetic, not a mix recommendation.\",\"fields\":[{\"label\":\"Bags\",\"value\":8,\"min\":1,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Specified dose (litres \/ bag)\",\"value\":3,\"min\":1e-06,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Total dose (litres)\"],\"expected\":[24],\"source\":\"Manufacturer instructions\"},{\"id\":\"pointing\",\"title\":\"Repointing volume\",\"group\":\"Mortar\",\"description\":\"Estimate the rectangular joint-face fraction and pointing depth.\",\"formula\":\"Face fraction = 1 \u2212 LH\/[(L+jv)(H+jh)]; volume = area \u00d7 fraction \u00d7 depth; allow for waste.\",\"notes\":\"Uniform fully filled rectangular joints; no allowance for deep voids or irregular masonry. Do not use this to select repair depth or mortar compatibility.\",\"fields\":[{\"label\":\"Face area (m\u00b2)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit length (mm)\",\"value\":215,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit height (mm)\",\"value\":65,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Perpend (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bed (mm)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Pointing depth (mm)\",\"value\":20,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste (%)\",\"value\":10,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Net mortar (litres)\",\"With allowance (litres)\"],\"expected\":[34.370370370370374,37.80740740740741],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"pavers\",\"title\":\"Paving units & bedding\",\"group\":\"Quantities\",\"description\":\"Estimate rectangular pavers and a uniform bed.\",\"formula\":\"Units = ceil(area\u00d71,000,000\/[(L+j)(W+j)]\u00d7(1+w\/100)); bed = area\u00d7depth\/1000.\",\"notes\":\"Use the specified laying orientation, joints and bedding system. Cuts, pattern and compaction can alter actual quantities.\",\"fields\":[{\"label\":\"Area (m\u00b2)\",\"value\":20,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Paver length (mm)\",\"value\":200,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Paver width (mm)\",\"value\":100,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Joint (mm)\",\"value\":5,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false},{\"label\":\"Bed depth (mm)\",\"value\":40,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Order pavers\",\"Bedding volume (m\u00b3)\"],\"expected\":[976,0.8],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"ties\",\"title\":\"Wall-tie allowance\",\"group\":\"Quantities\",\"description\":\"Estimate field ties from a specified density, plus separate edge-tie positions.\",\"formula\":\"Field = ceil(net area \u00d7 specified density); edges = edge count \u00d7 [ceil(edge height\/spacing)+1]; total = field + edges.\",\"notes\":\"Quantity allowance only. Use project tie type, density, spacing and edge offsets. Edge calculation includes both ends and may overlap field ties; do not count it as a designed layout. Defaults are examples, not a compliance check.\",\"fields\":[{\"label\":\"Net wall area (m\u00b2)\",\"value\":20,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Specified field ties \/ m\u00b2\",\"value\":2.5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Separate edges\",\"value\":2,\"min\":0,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Height per edge (m)\",\"value\":2,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Specified edge spacing (mm)\",\"value\":300,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Field ties\",\"Additional edge allowance\",\"Total allowance\"],\"expected\":[50,16,66],\"source\":\"NHBC wall tie guidance \/ project specification\"},{\"id\":\"dpc\",\"title\":\"DPC \/ membrane roll allowance\",\"group\":\"Quantities\",\"description\":\"Estimate strip length including a known number of specified laps.\",\"formula\":\"Length = run + laps \u00d7 lap length; rolls = ceil(length \/ roll length).\",\"notes\":\"Enter laps from the planned layout. Roll seams may add laps. Corners, stop ends and cavity trays need separate details; this does not determine compliant lap length.\",\"fields\":[{\"label\":\"Net run (m)\",\"value\":30,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Lap count\",\"value\":4,\"min\":0,\"max\":1000000000.0,\"integer\":true},{\"label\":\"Specified lap (mm)\",\"value\":150,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Roll length (m)\",\"value\":20,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Total strip length (m)\",\"Whole rolls\"],\"expected\":[30.6,2],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"lintel\",\"title\":\"Lintel overall length\",\"group\":\"Setting out\",\"description\":\"Add the designer\u2019s end bearings to a clear opening.\",\"formula\":\"Overall = clear opening + left bearing + right bearing.\",\"notes\":\"Length arithmetic only. Does not select a lintel, bearing, padstone, cavity tray or load capacity. Use approved drawings and manufacturer requirements.\",\"fields\":[{\"label\":\"Clear opening (mm)\",\"value\":1200,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Specified left bearing (mm)\",\"value\":150,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Specified right bearing (mm)\",\"value\":150,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Overall length (mm)\"],\"expected\":[1500],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"footing\",\"title\":\"Concrete \/ trench quantity\",\"group\":\"Quantities\",\"description\":\"Calculate volume for a rectangular strip and an ordering allowance.\",\"formula\":\"Net = length \u00d7 width \u00d7 depth; order = net \u00d7 (1+w\/100).\",\"notes\":\"All dimensions in metres. Measure excavation variations; this does not design foundation width, depth, reinforcement or bearing capacity.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Width (m)\",\"value\":0.6,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Depth (m)\",\"value\":0.3,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Allowance (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Net volume (m\u00b3)\",\"Order volume (m\u00b3)\"],\"expected\":[1.8,1.89],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"spoil\",\"title\":\"Excavation & loose spoil\",\"group\":\"Quantities\",\"description\":\"Apply an estimated bulking factor to in-situ excavation.\",\"formula\":\"In situ = L\u00d7W\u00d7D; loose = in situ \u00d7 bulking factor.\",\"notes\":\"Use a soil-specific factor. Loose volume does not establish skip payload; check mass and waste rules separately.\",\"fields\":[{\"label\":\"Length (m)\",\"value\":10,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Width (m)\",\"value\":0.6,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Depth (m)\",\"value\":1,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bulking factor\",\"value\":1.3,\"min\":1,\"max\":5,\"integer\":false}],\"outputs\":[\"In-situ volume (m\u00b3)\",\"Loose volume (m\u00b3)\"],\"expected\":[6,7.8],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"mass\",\"title\":\"Material mass & self-weight\",\"group\":\"Site maths\",\"description\":\"Calculate mass and gravity load from a known volume and bulk density.\",\"formula\":\"Mass = volume \u00d7 density; force = mass \u00d7 9.81 \/ 1000.\",\"notes\":\"Use the correct dry\/wet bulk density. This does not check floors, scaffolds, lifting operations or structural capacity.\",\"fields\":[{\"label\":\"Volume (m\u00b3)\",\"value\":1,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Bulk density (kg\/m\u00b3)\",\"value\":1800,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Mass (kg)\",\"Mass (tonnes)\",\"Self-weight (kN)\"],\"expected\":[1800,1.8,17.658],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"pressure\",\"title\":\"Average bearing pressure\",\"group\":\"Site maths\",\"description\":\"Calculate the arithmetic mean pressure from a known force and area.\",\"formula\":\"Pressure (kN\/m\u00b2) = force (kN) \/ area (m\u00b2); N\/mm\u00b2 = kN\/m\u00b2 \/ 1000.\",\"notes\":\"Not a structural safety check. Does not consider eccentricity, buckling, load factors, soil or masonry resistance. A designer must assess capacity.\",\"fields\":[{\"label\":\"Force (kN)\",\"value\":100,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Contact area (m\u00b2)\",\"value\":0.5,\"min\":0.001,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Average pressure (kN\/m\u00b2)\",\"Average stress (N\/mm\u00b2)\"],\"expected\":[200,0.2],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"packs\",\"title\":\"Packs, units & waste\",\"group\":\"Site maths\",\"description\":\"Convert a net quantity to whole supplier packs.\",\"formula\":\"Target = ceil(net \u00d7 (1+w\/100)); packs = ceil(target \/ pack size).\",\"notes\":\"Rounding to packs happens after waste allowance. Pack size is supplier-specific.\",\"fields\":[{\"label\":\"Net units\",\"value\":1000,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Waste (%)\",\"value\":5,\"min\":0,\"max\":100,\"integer\":false},{\"label\":\"Units per pack\",\"value\":500,\"min\":1,\"max\":1000000000.0,\"integer\":true}],\"outputs\":[\"Target units\",\"Whole packs\",\"Units supplied\",\"Surplus above target\"],\"expected\":[1050,3,1500,450],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"cost\",\"title\":\"Job estimate & VAT\",\"group\":\"Site maths\",\"description\":\"Combine material and labour costs, add markup, then the entered VAT rate.\",\"formula\":\"Base = quantity \u00d7 unit cost + days \u00d7 day rate + other costs; net quote = base\u00d7(1+markup\/100); gross = net\u00d7(1+VAT\/100).\",\"notes\":\"Markup is not margin. Enter the VAT treatment applicable to the work; the calculator does not decide tax eligibility. Costs are estimates in GBP.\",\"fields\":[{\"label\":\"Quantity\",\"value\":1000,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Unit price (\u00a3)\",\"value\":0.8,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Labour days\",\"value\":5,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Day rate (\u00a3)\",\"value\":220,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Other costs (\u00a3)\",\"value\":100,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Markup (%)\",\"value\":10,\"min\":0,\"max\":1000,\"integer\":false},{\"label\":\"VAT (%)\",\"value\":20,\"min\":0,\"max\":100,\"integer\":false}],\"outputs\":[\"Base cost (\u00a3)\",\"Quote ex VAT (\u00a3)\",\"VAT (\u00a3)\",\"Quote inc VAT (\u00a3)\"],\"expected\":[2000,2200,440,2640],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"time\",\"title\":\"Labour duration\",\"group\":\"Site maths\",\"description\":\"Estimate working time using a realistic team rate.\",\"formula\":\"Worker-days = units \/ rate per person-day; team-days = worker-days \/ people.\",\"notes\":\"Fractional days are retained. Access, complexity, curing, weather and preparation affect production. This is not a promised programme.\",\"fields\":[{\"label\":\"Units to lay\",\"value\":1200,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Units per person-day\",\"value\":400,\"min\":0.001,\"max\":1000000000.0,\"integer\":false},{\"label\":\"People\",\"value\":2,\"min\":1,\"max\":1000000000.0,\"integer\":true}],\"outputs\":[\"Worker-days\",\"Team working days\"],\"expected\":[3,1.5],\"source\":\"Geometry \/ arithmetic\"},{\"id\":\"convert\",\"title\":\"Length, area & volume conversions\",\"group\":\"Site maths\",\"description\":\"Convert common metric site measurements without mixing dimensional powers.\",\"formula\":\"mm\u2192m \u00f71000; mm\u00b2\u2192m\u00b2 \u00f71,000,000; litres\u2192m\u00b3 \u00f71000; inches\u2192mm \u00d725.4.\",\"notes\":\"Linear, area and volume conversions use different scale factors.\",\"fields\":[{\"label\":\"Length (mm)\",\"value\":1000,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Area (mm\u00b2)\",\"value\":1000000,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Volume (litres)\",\"value\":1000,\"min\":0,\"max\":1000000000.0,\"integer\":false},{\"label\":\"Length (inches)\",\"value\":9,\"min\":0,\"max\":1000000000.0,\"integer\":false}],\"outputs\":[\"Length (m)\",\"Area (m\u00b2)\",\"Volume (m\u00b3)\",\"Inches as mm\"],\"expected\":[1,1,1,228.6],\"source\":\"Geometry \/ arithmetic\"}];\nvar UNITS = ['m','mm','m\u00b2','mm\u00b2','m\u00b3','%','\u00a3','degrees','kN','kN\/m\u00b2','N\/mm\u00b2','kg','kg\/m\u00b3','tonnes','litres','litres \/ bag','inches'];\nfunction split(label){\n var m = \/^(.*?)\\s*\\(([^()]*)\\)\\s*$\/.exec(label);\n if(m && UNITS.indexOf(m[2]) >= 0) return {label: m[1], unit: m[2]};\n return {label: label, unit: ''};\n}\nfunction num(x){ return String(Number(Number(x).toPrecision(10))); }\nfunction line(label, unit, v){ return label + ' = ' + num(v) + (unit ? ' ' + unit : ''); }\nvar byId = {};\nvar calcs = CATALOGUE.map(function(item){\n byId[item.id] = item;\n return {\n  id: item.id, group: item.group, title: item.title, formula: item.formula,\n  intro: [item.description],\n  notes: item.notes,\n  sources: [{title: item.source}],\n  fields: item.fields.map(function(f, i){\n   var s = split(f.label);\n   return {key: 'f' + i, label: s.label, unit: s.unit, example: f.value, integer: !!f.integer};\n  }),\n  outputs: item.outputs.map(split)\n };\n});\nfunction run(calc, inputs){\n var item = byId[calc.id];\n if(!item) throw new Error('Unknown calculator.');\n var model = window.TF_BRICK_MODEL;\n var values = item.fields.map(function(f, i){\n  var v = inputs && inputs['f' + i];\n  var n = v == null ? NaN : (typeof v === 'object' ? v.value : v);\n  if(typeof n !== 'number' || !Number.isFinite(n)) throw new Error(f.label + ': enter a finite number.');\n  return n;\n });\n var q = model(item, values);\n var outputs = calc.outputs.map(function(o, i){ return {label: o.label, value: q[i], unit: o.unit}; });\n var working = item.formula + '\\n\\n'\n  + calc.fields.map(function(f, i){ return line(f.label, f.unit, values[i]); }).join('\\n')\n  + '\\n\u2192\\n'\n  + outputs.map(function(o){ return line(o.label, o.unit, o.value); }).join('\\n');\n return {outputs: outputs, working: working};\n}\nwindow.TF_CALC = {\n name: 'Bricklaying',\n h1: 'Bricklaying calculators.',\n sub: '42 tools for brickwork, blockwork and mortar.',\n disclaimer: 'Estimates are not design approval or British Standards compliance checks. Structural arch, retaining-wall, wind, foundation, lintel and masonry-capacity design are not performed. Use the project engineer\u2019s specification.',\n calcs: calcs,\n run: run\n};\n})();\n\n<\/script>\n<script>\n(function(){window.TF_MATH={\"wall\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>A<\\\/mi><mtext>gross<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>l<\\\/mi><mi>h<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>A<\\\/mi><mtext>net<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>A<\\\/mi><mtext>gross<\\\/mtext><\\\/msub><mo>\u2212<\\\/mo><msub><mi>A<\\\/mi><mtext>o<\\\/mtext><\\\/msub><\\\/math>\"],\"w\":[[\"<msub><mi>A<\\\/mi><mtext>gross<\\\/mtext><\\\/msub>\",\"gross wall area (m\u00b2)\"],[\"<mi>l<\\\/mi>\",\"length (m)\"],[\"<mi>h<\\\/mi>\",\"height (m)\"],[\"<msub><mi>A<\\\/mi><mtext>net<\\\/mtext><\\\/msub>\",\"net wall area (m\u00b2)\"],[\"<msub><mi>A<\\\/mi><mi>o<\\\/mi><\\\/msub>\",\"total openings (m\u00b2)\"]]},\"gable\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mi>b<\\\/mi><mi>h<\\\/mi><mo>+<\\\/mo><mfrac><mrow><mi>b<\\\/mi><mi>r<\\\/mi><\\\/mrow><mn>2<\\\/mn><\\\/mfrac><mo>\u2212<\\\/mo><msub><mi>A<\\\/mi><mtext>o<\\\/mtext><\\\/msub><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"net wall area (m\u00b2)\"],[\"<mi>b<\\\/mi>\",\"width (m)\"],[\"<mi>h<\\\/mi>\",\"eaves height (m)\"],[\"<mi>r<\\\/mi>\",\"gable rise (m)\"],[\"<msub><mi>A<\\\/mi><mi>o<\\\/mi><\\\/msub>\",\"openings (m\u00b2)\"]]},\"trapezoid\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>l<\\\/mi><mo>(<\\\/mo><msub><mi>h<\\\/mi><mn>1<\\\/mn><\\\/msub><mo>+<\\\/mo><msub><mi>h<\\\/mi><mn>2<\\\/mn><\\\/msub><mo>)<\\\/mo><\\\/mrow><mn>2<\\\/mn><\\\/mfrac><mo>\u2212<\\\/mo><msub><mi>A<\\\/mi><mtext>o<\\\/mtext><\\\/msub><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"net wall area (m\u00b2)\"],[\"<mi>l<\\\/mi>\",\"length (m)\"],[\"<mtext>h\u2081, h\u2082<\\\/mtext>\",\"heights at each end (m)\"],[\"<msub><mi>A<\\\/mi><mi>o<\\\/mi><\\\/msub>\",\"openings (m\u00b2)\"]]},\"rectangle\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mi>L<\\\/mi><mi>W<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><mi>P<\\\/mi><mo>=<\\\/mo><mn>2<\\\/mn><mo>(<\\\/mo><mi>L<\\\/mi><mo>+<\\\/mo><mi>W<\\\/mi><mo>)<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"area (m\u00b2)\"],[\"<mi>L<\\\/mi>\",\"length (m)\"],[\"<mi>W<\\\/mi>\",\"width (m)\"],[\"<mi>P<\\\/mi>\",\"perimeter (m)\"]]},\"triangle\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>b<\\\/mi><mi>h<\\\/mi><\\\/mrow><mn>2<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"area (m\u00b2)\"],[\"<mi>b<\\\/mi>\",\"base (m)\"],[\"<mi>h<\\\/mi>\",\"perpendicular height (m)\"]]},\"circle\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>\u03c0<\\\/mi><msup><mi>d<\\\/mi><mn>2<\\\/mn><\\\/msup><\\\/mrow><mn>4<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mi>C<\\\/mi><mo>=<\\\/mo><mi>\u03c0<\\\/mi><mi>d<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"area (m\u00b2)\"],[\"<mi>d<\\\/mi>\",\"diameter (m)\"],[\"<mi>C<\\\/mi>\",\"circumference (m)\"]]},\"volume\":{\"m\":[\"<math display=\\\"block\\\"><mi>V<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>L<\\\/mi><mi>H<\\\/mi><mi>T<\\\/mi><\\\/mrow><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>V<\\\/mi>\",\"volume (m\u00b3)\"],[\"<mi>L<\\\/mi>\",\"length (m)\"],[\"<mi>H<\\\/mi>\",\"height (m)\"],[\"<mi>T<\\\/mi>\",\"thickness (mm)\"]]},\"bricks\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub><mo>=<\\\/mo><mfrac><mn>1 000 000<\\\/mn><mrow><mo>(<\\\/mo><mi>l<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>p<\\\/mi><\\\/msub><mo>)<\\\/mo><mo>(<\\\/mo><mi>h<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub><mo>)<\\\/mo><\\\/mrow><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>order<\\\/mtext><mo>=<\\\/mo><mo>\u2308<\\\/mo><mi>A<\\\/mi><msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub>\",\"bricks per square metre\"],[\"<mi>l<\\\/mi>\",\"brick length (mm)\"],[\"<msub><mi>j<\\\/mi><mi>p<\\\/mi><\\\/msub>\",\"perpend joint (mm)\"],[\"<mi>h<\\\/mi>\",\"brick height (mm)\"],[\"<msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"bed joint (mm)\"],[\"<mi>A<\\\/mi>\",\"net area (m\u00b2)\"],[\"<mi>w<\\\/mi>\",\"waste allowance (%)\"]]},\"blocks\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub><mo>=<\\\/mo><mfrac><mn>1 000 000<\\\/mn><mrow><mo>(<\\\/mo><mi>l<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>p<\\\/mi><\\\/msub><mo>)<\\\/mo><mo>(<\\\/mo><mi>h<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub><mo>)<\\\/mo><\\\/mrow><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>order<\\\/mtext><mo>=<\\\/mo><mo>\u2308<\\\/mo><mi>A<\\\/mi><msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<msub><mi>N<\\\/mi><mtext>m\u00b2<\\\/mtext><\\\/msub>\",\"blocks per square metre\"],[\"<mi>l<\\\/mi>\",\"block length (mm)\"],[\"<msub><mi>j<\\\/mi><mi>p<\\\/mi><\\\/msub>\",\"perpend joint (mm)\"],[\"<mi>h<\\\/mi>\",\"block height (mm)\"],[\"<msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"bed joint (mm)\"],[\"<mi>A<\\\/mi>\",\"net area (m\u00b2)\"],[\"<mi>w<\\\/mi>\",\"waste allowance (%)\"]]},\"leaves\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>Q<\\\/mi><mi>i<\\\/mi><\\\/msub><mo>=<\\\/mo><mo>\u2308<\\\/mo><msub><mi>A<\\\/mi><mi>i<\\\/mi><\\\/msub><msub><mi>N<\\\/mi><mi>i<\\\/mi><\\\/msub><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<msub><mi>Q<\\\/mi><mi>i<\\\/mi><\\\/msub>\",\"units to order for leaf i (outer or inner)\"],[\"<msub><mi>A<\\\/mi><mi>i<\\\/mi><\\\/msub>\",\"net area of that leaf (m\u00b2)\"],[\"<msub><mi>N<\\\/mi><mi>i<\\\/mi><\\\/msub>\",\"units per m\u00b2 for that leaf\"],[\"<mi>w<\\\/mi>\",\"waste (%)\"]]},\"courses\":{\"m\":[\"<math display=\\\"block\\\"><mi>g<\\\/mi><mo>=<\\\/mo><mi>h<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub><\\\/math>\",\"<math display=\\\"block\\\"><mi>H<\\\/mi><mo>=<\\\/mo><mi>n<\\\/mi><mi>g<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>L<\\\/mi><mtext>top<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>L<\\\/mi><mn>0<\\\/mn><\\\/msub><mo>+<\\\/mo><mfrac><mi>H<\\\/mi><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>g<\\\/mi>\",\"course gauge (mm)\"],[\"<mi>h<\\\/mi>\",\"unit height (mm)\"],[\"<msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"bed joint (mm)\"],[\"<mi>H<\\\/mi>\",\"height of courses (mm)\"],[\"<mi>n<\\\/mi>\",\"number of courses\"],[\"<msub><mi>L<\\\/mi><mtext>top<\\\/mtext><\\\/msub>\",\"top level (m)\"],[\"<mtext>L\u2080<\\\/mtext>\",\"datum level (m)\"]]},\"fitcourses\":{\"m\":[\"<math display=\\\"block\\\"><mi>n<\\\/mi><mo>=<\\\/mo><mo>\u230a<\\\/mo><mfrac><mi>H<\\\/mi><mi>g<\\\/mi><\\\/mfrac><mo>\u230b<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><mi>r<\\\/mi><mo>=<\\\/mo><mi>H<\\\/mi><mo>\u2212<\\\/mo><mi>n<\\\/mi><mi>g<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>n<\\\/mi>\",\"whole courses\"],[\"<mi>H<\\\/mi>\",\"target height (mm)\"],[\"<mi>g<\\\/mi>\",\"gauge = unit height + bed joint (mm)\"],[\"<mi>r<\\\/mi>\",\"remainder (mm)\"]]},\"jointheight\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub><mo>=<\\\/mo><mfrac><mrow><mi>H<\\\/mi><mo>\u2212<\\\/mo><mi>n<\\\/mi><mi>h<\\\/mi><\\\/mrow><msub><mi>n<\\\/mi><mi>b<\\\/mi><\\\/msub><\\\/mfrac><\\\/math>\"],\"w\":[[\"<msub><mi>j<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"bed joint thickness (mm)\"],[\"<mi>H<\\\/mi>\",\"target height (mm)\"],[\"<mi>n<\\\/mi>\",\"number of courses\"],[\"<mi>h<\\\/mi>\",\"unit height (mm)\"],[\"<msub><mi>n<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"number of bed joints included\"]]},\"coord\":{\"m\":[\"<math display=\\\"block\\\"><mtext>CO<\\\/mtext><mo>=<\\\/mo><mi>n<\\\/mi><mo>(<\\\/mo><mi>l<\\\/mi><mo>+<\\\/mo><mi>j<\\\/mi><mo>)<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><msup><mtext>CO<\\\/mtext><mo>\u2212<\\\/mo><\\\/msup><mo>=<\\\/mo><mtext>CO<\\\/mtext><mo>\u2212<\\\/mo><mi>j<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msup><mtext>CO<\\\/mtext><mo>+<\\\/mo><\\\/msup><mo>=<\\\/mo><mtext>CO<\\\/mtext><mo>+<\\\/mo><mi>j<\\\/mi><\\\/math>\"],\"w\":[[\"<mtext>CO<\\\/mtext>\",\"coordinating size (mm)\"],[\"<mi>n<\\\/mi>\",\"full stretcher modules\"],[\"<mi>l<\\\/mi>\",\"brick length (mm)\"],[\"<mi>j<\\\/mi>\",\"perpend joint (mm)\"]]},\"perpend\":{\"m\":[\"<math display=\\\"block\\\"><mi>j<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>S<\\\/mi><mo>\u2212<\\\/mo><mi>n<\\\/mi><mi>l<\\\/mi><\\\/mrow><msub><mi>n<\\\/mi><mi>j<\\\/mi><\\\/msub><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>j<\\\/mi>\",\"perpend joint width (mm)\"],[\"<mi>S<\\\/mi>\",\"span (mm)\"],[\"<mi>n<\\\/mi>\",\"unit count\"],[\"<mi>l<\\\/mi>\",\"unit length (mm)\"],[\"<msub><mi>n<\\\/mi><mi>j<\\\/mi><\\\/msub>\",\"number of joints included\"]]},\"lap\":{\"m\":[\"<math display=\\\"block\\\"><mi>m<\\\/mi><mo>=<\\\/mo><mi>l<\\\/mi><mo>+<\\\/mo><mi>j<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><mi>e<\\\/mi><mo>=<\\\/mo><mi>m<\\\/mi><mi>f<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>m<\\\/mi>\",\"module (mm)\"],[\"<mi>l<\\\/mi>\",\"unit length (mm)\"],[\"<mi>j<\\\/mi>\",\"joint (mm)\"],[\"<mi>e<\\\/mi>\",\"lap offset (mm)\"],[\"<mi>f<\\\/mi>\",\"offset fraction\"]]},\"diagonal\":{\"m\":[\"<math display=\\\"block\\\"><mi>D<\\\/mi><mo>=<\\\/mo><msqrt><mrow><msup><mi>L<\\\/mi><mn>2<\\\/mn><\\\/msup><mo>+<\\\/mo><msup><mi>W<\\\/mi><mn>2<\\\/mn><\\\/msup><\\\/mrow><\\\/msqrt><\\\/math>\",\"<math display=\\\"block\\\"><mi>\u0394<\\\/mi><mo>=<\\\/mo><mo>|<\\\/mo><msub><mi>d<\\\/mi><mn>1<\\\/mn><\\\/msub><mo>\u2212<\\\/mo><msub><mi>d<\\\/mi><mn>2<\\\/mn><\\\/msub><mo>|<\\\/mo><mo>\u00d7<\\\/mo><mn>1000<\\\/mn><\\\/math>\"],\"w\":[[\"<mi>D<\\\/mi>\",\"target diagonal (m)\"],[\"<mi>L<\\\/mi>\",\"length (m)\"],[\"<mi>W<\\\/mi>\",\"width (m)\"],[\"<mi>\u0394<\\\/mi>\",\"difference between diagonals (mm)\"],[\"<mtext>d\u2081, d\u2082<\\\/mtext>\",\"measured diagonals (m)\"]]},\"square\":{\"m\":[\"<math display=\\\"block\\\"><mi>a<\\\/mi><mo>=<\\\/mo><mn>3<\\\/mn><mi>k<\\\/mi><mo>,<\\\/mo><mtext>\u2003<\\\/mtext><mi>b<\\\/mi><mo>=<\\\/mo><mn>4<\\\/mn><mi>k<\\\/mi><mo>,<\\\/mo><mtext>\u2003<\\\/mtext><mi>c<\\\/mi><mo>=<\\\/mo><mn>5<\\\/mn><mi>k<\\\/mi><\\\/math>\"],\"w\":[[\"<mtext>a, b, c<\\\/mtext>\",\"sides of the 3-4-5 triangle (m)\"],[\"<mi>k<\\\/mi>\",\"scale factor (m)\"]]},\"slope\":{\"m\":[\"<math display=\\\"block\\\"><mi>L<\\\/mi><mo>=<\\\/mo><msqrt><mrow><msup><mi>x<\\\/mi><mn>2<\\\/mn><\\\/msup><mo>+<\\\/mo><msup><mi>y<\\\/mi><mn>2<\\\/mn><\\\/msup><\\\/mrow><\\\/msqrt><\\\/math>\",\"<math display=\\\"block\\\"><mi>\u03b8<\\\/mi><mo>=<\\\/mo><mspace width=\\\"0.17em\\\"><\\\/mspace><mi>atan<\\\/mi><mspace width=\\\"0.17em\\\"><\\\/mspace><mo>(<\\\/mo><mfrac><mi>y<\\\/mi><mi>x<\\\/mi><\\\/mfrac><mo>)<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><mi>G<\\\/mi><mo>=<\\\/mo><mfrac><mi>y<\\\/mi><mi>x<\\\/mi><\\\/mfrac><mo>\u00d7<\\\/mo><mn>100<\\\/mn><\\\/math>\",\"<math display=\\\"block\\\"><mi>n<\\\/mi><mo>=<\\\/mo><mfrac><mi>x<\\\/mi><mi>y<\\\/mi><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>L<\\\/mi>\",\"slope length (m)\"],[\"<mi>x<\\\/mi>\",\"horizontal run (m)\"],[\"<mi>y<\\\/mi>\",\"vertical rise or fall (m)\"],[\"<mi>\u03b8<\\\/mi>\",\"angle (degrees)\"],[\"<mi>G<\\\/mi>\",\"gradient (%)\"],[\"<mi>n<\\\/mi>\",\"gradient as 1 in n\"]]},\"fall\":{\"m\":[\"<math display=\\\"block\\\"><mi>f<\\\/mi><mo>=<\\\/mo><mfrac><mi>x<\\\/mi><mi>n<\\\/mi><\\\/mfrac><mo>\u00d7<\\\/mo><mn>1000<\\\/mn><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>L<\\\/mi><mn>2<\\\/mn><\\\/msub><mo>=<\\\/mo><msub><mi>L<\\\/mi><mn>1<\\\/mn><\\\/msub><mo>\u2212<\\\/mo><mfrac><mi>x<\\\/mi><mi>n<\\\/mi><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>f<\\\/mi>\",\"fall (mm)\"],[\"<mi>x<\\\/mi>\",\"horizontal run (m)\"],[\"<mi>n<\\\/mi>\",\"gradient denominator (1 in n)\"],[\"<mtext>L\u2082<\\\/mtext>\",\"end level (m)\"],[\"<mtext>L\u2081<\\\/mtext>\",\"start level (m)\"]]},\"level\":{\"m\":[\"<math display=\\\"block\\\"><mtext>HI<\\\/mtext><mo>=<\\\/mo><msub><mtext>RL<\\\/mtext><mtext>known<\\\/mtext><\\\/msub><mo>+<\\\/mo><mtext>BS<\\\/mtext><\\\/math>\",\"<math display=\\\"block\\\"><msub><mtext>RL<\\\/mtext><mtext>new<\\\/mtext><\\\/msub><mo>=<\\\/mo><mtext>HI<\\\/mtext><mo>\u2212<\\\/mo><mtext>FS<\\\/mtext><\\\/math>\"],\"w\":[[\"<mtext>HI<\\\/mtext>\",\"height of instrument (m)\"],[\"<mtext>RL<\\\/mtext>\",\"reduced level (m)\"],[\"<mtext>BS<\\\/mtext>\",\"backsight (m)\"],[\"<mtext>FS<\\\/mtext>\",\"foresight (m)\"]]},\"scale\":{\"m\":[\"<math display=\\\"block\\\"><mi>R<\\\/mi><mo>=<\\\/mo><mi>D<\\\/mi><mo>\u00d7<\\\/mo><mi>n<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><mi>D<\\\/mi><mo>=<\\\/mo><mfrac><mi>R<\\\/mi><mi>n<\\\/mi><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>R<\\\/mi>\",\"real length (mm)\"],[\"<mi>D<\\\/mi>\",\"drawing length (mm)\"],[\"<mi>n<\\\/mi>\",\"scale denominator (1:n)\"]]},\"arch\":{\"m\":[\"<math display=\\\"block\\\"><mi>R<\\\/mi><mo>=<\\\/mo><mfrac><msup><mi>S<\\\/mi><mn>2<\\\/mn><\\\/msup><mrow><mn>8<\\\/mn><mi>h<\\\/mi><\\\/mrow><\\\/mfrac><mo>+<\\\/mo><mfrac><mi>h<\\\/mi><mn>2<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mi>\u03b8<\\\/mi><mo>=<\\\/mo><mn>2<\\\/mn><mspace width=\\\"0.17em\\\"><\\\/mspace><mi>asin<\\\/mi><mspace width=\\\"0.17em\\\"><\\\/mspace><mo>(<\\\/mo><mfrac><mi>S<\\\/mi><mrow><mn>2<\\\/mn><mi>R<\\\/mi><\\\/mrow><\\\/mfrac><mo>)<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><mi>a<\\\/mi><mo>=<\\\/mo><mi>R<\\\/mi><mi>\u03b8<\\\/mi><mo>\u00d7<\\\/mo><mfrac><mi>\u03c0<\\\/mi><mn>180<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>R<\\\/mi>\",\"radius of the arch (mm)\"],[\"<mi>S<\\\/mi>\",\"clear span (mm)\"],[\"<mi>h<\\\/mi>\",\"rise (mm)\"],[\"<mi>\u03b8<\\\/mi>\",\"included angle (degrees)\"],[\"<mi>a<\\\/mi>\",\"arc length (mm)\"]]},\"arc\":{\"m\":[\"<math display=\\\"block\\\"><mi>a<\\\/mi><mo>=<\\\/mo><mi>R<\\\/mi><mi>\u03b8<\\\/mi><mo>\u00d7<\\\/mo><mfrac><mi>\u03c0<\\\/mi><mn>180<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mi>c<\\\/mi><mo>=<\\\/mo><mn>2<\\\/mn><mi>R<\\\/mi><mspace width=\\\"0.17em\\\"><\\\/mspace><mi>sin<\\\/mi><mspace width=\\\"0.17em\\\"><\\\/mspace><mo>(<\\\/mo><mfrac><mi>\u03b8<\\\/mi><mn>2<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mfrac><mrow><msup><mi>R<\\\/mi><mn>2<\\\/mn><\\\/msup><mi>\u03b8<\\\/mi><\\\/mrow><mn>2<\\\/mn><\\\/mfrac><mo>\u00d7<\\\/mo><mfrac><mi>\u03c0<\\\/mi><mn>180<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>a<\\\/mi>\",\"arc length (m)\"],[\"<mi>R<\\\/mi>\",\"radius (m)\"],[\"<mi>\u03b8<\\\/mi>\",\"included angle (degrees)\"],[\"<mi>c<\\\/mi>\",\"chord (m)\"],[\"<mi>A<\\\/mi>\",\"sector area (m\u00b2)\"]]},\"ring\":{\"m\":[\"<math display=\\\"block\\\"><mi>A<\\\/mi><mo>=<\\\/mo><mi>\u03c0<\\\/mi><mo>[<\\\/mo><msup><mrow><mo>(<\\\/mo><mi>R<\\\/mi><mo>+<\\\/mo><mfrac><mi>t<\\\/mi><mn>1000<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/mrow><mn>2<\\\/mn><\\\/msup><mo>\u2212<\\\/mo><msup><mi>R<\\\/mi><mn>2<\\\/mn><\\\/msup><mo>]<\\\/mo><mo>\u00d7<\\\/mo><mfrac><mi>\u03c6<\\\/mi><mn>360<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mi>V<\\\/mi><mo>=<\\\/mo><mi>A<\\\/mi><mi>h<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>A<\\\/mi>\",\"plan area of the ring segment (m\u00b2)\"],[\"<mi>R<\\\/mi>\",\"inside radius (m)\"],[\"<mi>t<\\\/mi>\",\"radial thickness (mm)\"],[\"<mi>\u03c6<\\\/mi>\",\"angle (degrees)\"],[\"<mi>V<\\\/mi>\",\"gross volume (m\u00b3)\"],[\"<mi>h<\\\/mi>\",\"height (m)\"]]},\"mortar\":{\"m\":[\"<math display=\\\"block\\\"><mi>N<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>A<\\\/mi><mo>\u00d7<\\\/mo><mn>1 000 000<\\\/mn><\\\/mrow><mrow><mo>(<\\\/mo><mi>L<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>v<\\\/mi><\\\/msub><mo>)<\\\/mo><mo>(<\\\/mo><mi>H<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>h<\\\/mi><\\\/msub><mo>)<\\\/mo><\\\/mrow><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mi>j<\\\/mi><\\\/msub><mo>=<\\\/mo><mfrac><mrow><mi>A<\\\/mi><mi>T<\\\/mi><\\\/mrow><mn>1000<\\\/mn><\\\/mfrac><mo>\u2212<\\\/mo><mfrac><mrow><mi>N<\\\/mi><mi>L<\\\/mi><mi>H<\\\/mi><mi>T<\\\/mi><\\\/mrow><mn>1 000 000 000<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>order<\\\/mtext><mo>=<\\\/mo><msub><mi>V<\\\/mi><mi>j<\\\/mi><\\\/msub><mo>\u00d7<\\\/mo><mn>1000<\\\/mn><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>N<\\\/mi>\",\"number of units\"],[\"<mi>A<\\\/mi>\",\"net face area (m\u00b2)\"],[\"<mi>L<\\\/mi>\",\"unit length (mm)\"],[\"<msub><mi>j<\\\/mi><mi>v<\\\/mi><\\\/msub>\",\"perpend joint (mm)\"],[\"<mi>H<\\\/mi>\",\"unit height (mm)\"],[\"<msub><mi>j<\\\/mi><mi>h<\\\/mi><\\\/msub>\",\"bed joint (mm)\"],[\"<msub><mi>V<\\\/mi><mi>j<\\\/mi><\\\/msub>\",\"mortar in joints (m\u00b3)\"],[\"<mi>T<\\\/mi>\",\"leaf thickness (mm)\"],[\"<mi>w<\\\/mi>\",\"allowance (%)\"],[\"<mtext>order<\\\/mtext>\",\"mortar with allowance (litres)\"]]},\"bags\":{\"m\":[\"<math display=\\\"block\\\"><mi>B<\\\/mi><mo>=<\\\/mo><mo>\u2308<\\\/mo><mfrac><mrow><mi>V<\\\/mi><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/mrow><mi>Y<\\\/mi><\\\/mfrac><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>B<\\\/mi>\",\"bags\"],[\"<mi>V<\\\/mi>\",\"required wet mortar (litres)\"],[\"<mi>w<\\\/mi>\",\"waste (%)\"],[\"<mi>Y<\\\/mi>\",\"declared yield per bag (litres)\"]]},\"mix\":{\"m\":[\"<math display=\\\"block\\\"><mi>p<\\\/mi><mo>=<\\\/mo><mfrac><mi>V<\\\/mi><mrow><mi>c<\\\/mi><mo>+<\\\/mo><mi>l<\\\/mi><mo>+<\\\/mo><mi>s<\\\/mi><\\\/mrow><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mi>k<\\\/mi><\\\/msub><mo>=<\\\/mo><msub><mi>n<\\\/mi><mi>k<\\\/mi><\\\/msub><mi>p<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>p<\\\/mi>\",\"volume of one part (litres)\"],[\"<mi>V<\\\/mi>\",\"total loose volume (litres)\"],[\"<mtext>c, l, s<\\\/mtext>\",\"cement, lime and sand parts\"],[\"<msub><mi>V<\\\/mi><mi>k<\\\/mi><\\\/msub>\",\"volume of ingredient k (litres)\"],[\"<msub><mi>n<\\\/mi><mi>k<\\\/mi><\\\/msub>\",\"parts of ingredient k\"]]},\"dose\":{\"m\":[\"<math display=\\\"block\\\"><mi>D<\\\/mi><mo>=<\\\/mo><mi>B<\\\/mi><mi>d<\\\/mi><\\\/math>\"],\"w\":[[\"<mi>D<\\\/mi>\",\"total dose (litres)\"],[\"<mi>B<\\\/mi>\",\"bags\"],[\"<mi>d<\\\/mi>\",\"specified dose per bag (litres \/ bag)\"]]},\"pointing\":{\"m\":[\"<math display=\\\"block\\\"><mi>f<\\\/mi><mo>=<\\\/mo><mn>1<\\\/mn><mo>\u2212<\\\/mo><mfrac><mrow><mi>L<\\\/mi><mi>H<\\\/mi><\\\/mrow><mrow><mo>(<\\\/mo><mi>L<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>v<\\\/mi><\\\/msub><mo>)<\\\/mo><mo>(<\\\/mo><mi>H<\\\/mi><mo>+<\\\/mo><msub><mi>j<\\\/mi><mi>h<\\\/mi><\\\/msub><mo>)<\\\/mo><\\\/mrow><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mi>V<\\\/mi><mo>=<\\\/mo><mi>A<\\\/mi><mi>f<\\\/mi><mi>d<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mtext>o<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>V<\\\/mi><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>f<\\\/mi>\",\"joint fraction of the face\"],[\"<mi>L<\\\/mi>\",\"unit length (mm)\"],[\"<mi>H<\\\/mi>\",\"unit height (mm)\"],[\"<msub><mi>j<\\\/mi><mi>v<\\\/mi><\\\/msub>\",\"perpend (mm)\"],[\"<msub><mi>j<\\\/mi><mi>h<\\\/mi><\\\/msub>\",\"bed (mm)\"],[\"<mi>V<\\\/mi>\",\"net mortar (litres; m\u00b2 \u00d7 mm = litres)\"],[\"<mi>A<\\\/mi>\",\"face area (m\u00b2)\"],[\"<mi>d<\\\/mi>\",\"pointing depth (mm)\"],[\"<msub><mi>V<\\\/mi><mi>o<\\\/mi><\\\/msub>\",\"mortar with allowance (litres)\"],[\"<mi>w<\\\/mi>\",\"waste (%)\"]]},\"pavers\":{\"m\":[\"<math display=\\\"block\\\"><mi>N<\\\/mi><mo>=<\\\/mo><mo>\u2308<\\\/mo><mfrac><mrow><mi>A<\\\/mi><mo>\u00d7<\\\/mo><mn>1 000 000<\\\/mn><\\\/mrow><mrow><mo>(<\\\/mo><mi>L<\\\/mi><mo>+<\\\/mo><mi>j<\\\/mi><mo>)<\\\/mo><mo>(<\\\/mo><mi>W<\\\/mi><mo>+<\\\/mo><mi>j<\\\/mi><mo>)<\\\/mo><\\\/mrow><\\\/mfrac><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><mo>\u2309<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mi>b<\\\/mi><\\\/msub><mo>=<\\\/mo><mfrac><mrow><mi>A<\\\/mi><mi>d<\\\/mi><\\\/mrow><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>N<\\\/mi>\",\"pavers to order\"],[\"<mi>A<\\\/mi>\",\"area (m\u00b2)\"],[\"<mi>L<\\\/mi>\",\"paver length (mm)\"],[\"<mi>j<\\\/mi>\",\"joint (mm)\"],[\"<mi>W<\\\/mi>\",\"paver width (mm)\"],[\"<mi>w<\\\/mi>\",\"waste (%)\"],[\"<msub><mi>V<\\\/mi><mi>b<\\\/mi><\\\/msub>\",\"bedding volume (m\u00b3)\"],[\"<mi>d<\\\/mi>\",\"bed depth (mm)\"]]},\"ties\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>N<\\\/mi><mtext>field<\\\/mtext><\\\/msub><mo>=<\\\/mo><mo>\u2308<\\\/mo><mi>A<\\\/mi><mi>\u03c1<\\\/mi><mo>\u2309<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>N<\\\/mi><mtext>edges<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>e<\\\/mi><mo>[<\\\/mo><mo>\u2308<\\\/mo><mfrac><mrow><mi>h<\\\/mi><mo>\u00d7<\\\/mo><mn>1000<\\\/mn><\\\/mrow><mi>s<\\\/mi><\\\/mfrac><mo>\u2309<\\\/mo><mo>+<\\\/mo><mn>1<\\\/mn><mo>]<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>N<\\\/mi><mtext>total<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>N<\\\/mi><mtext>field<\\\/mtext><\\\/msub><mo>+<\\\/mo><msub><mi>N<\\\/mi><mtext>edges<\\\/mtext><\\\/msub><\\\/math>\"],\"w\":[[\"<msub><mi>N<\\\/mi><mtext>field<\\\/mtext><\\\/msub>\",\"field ties\"],[\"<mi>A<\\\/mi>\",\"net wall area (m\u00b2)\"],[\"<mi>\u03c1<\\\/mi>\",\"specified field tie density (ties\/m\u00b2)\"],[\"<msub><mi>N<\\\/mi><mtext>edges<\\\/mtext><\\\/msub>\",\"edge ties\"],[\"<mi>e<\\\/mi>\",\"number of separate edges\"],[\"<mi>h<\\\/mi>\",\"height per edge (m)\"],[\"<mi>s<\\\/mi>\",\"specified edge tie spacing (mm)\"]]},\"dpc\":{\"m\":[\"<math display=\\\"block\\\"><mi>L<\\\/mi><mo>=<\\\/mo><mi>r<\\\/mi><mo>+<\\\/mo><mfrac><mrow><mi>n<\\\/mi><mi>l<\\\/mi><\\\/mrow><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>rolls<\\\/mtext><mo>=<\\\/mo><mo>\u2308<\\\/mo><mfrac><mi>L<\\\/mi><msub><mi>L<\\\/mi><mtext>roll<\\\/mtext><\\\/msub><\\\/mfrac><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>L<\\\/mi>\",\"total DPC length (m)\"],[\"<mi>r<\\\/mi>\",\"net run (m)\"],[\"<mi>n<\\\/mi>\",\"number of laps\"],[\"<mi>l<\\\/mi>\",\"specified lap length (mm)\"],[\"<msub><mi>L<\\\/mi><mtext>roll<\\\/mtext><\\\/msub>\",\"roll length (m)\"]]},\"lintel\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>L<\\\/mi><mtext>lintel<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>W<\\\/mi><mo>+<\\\/mo><msub><mi>b<\\\/mi><mtext>L<\\\/mtext><\\\/msub><mo>+<\\\/mo><msub><mi>b<\\\/mi><mtext>R<\\\/mtext><\\\/msub><\\\/math>\"],\"w\":[[\"<msub><mi>L<\\\/mi><mtext>lintel<\\\/mtext><\\\/msub>\",\"overall lintel length (mm)\"],[\"<mi>W<\\\/mi>\",\"clear opening (mm)\"],[\"<msub><mi>b<\\\/mi><mi>L<\\\/mi><\\\/msub>\",\"left end bearing (mm)\"],[\"<msub><mi>b<\\\/mi><mi>R<\\\/mi><\\\/msub>\",\"right end bearing (mm)\"]]},\"footing\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mtext>net<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>l<\\\/mi><mi>b<\\\/mi><mi>d<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mtext>order<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>V<\\\/mi><mtext>net<\\\/mtext><\\\/msub><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\"],\"w\":[[\"<msub><mi>V<\\\/mi><mtext>net<\\\/mtext><\\\/msub>\",\"net concrete volume (m\u00b3)\"],[\"<mi>l<\\\/mi>\",\"length (m)\"],[\"<mi>b<\\\/mi>\",\"width (m)\"],[\"<mi>d<\\\/mi>\",\"depth (m)\"],[\"<msub><mi>V<\\\/mi><mtext>order<\\\/mtext><\\\/msub>\",\"volume to order (m\u00b3)\"],[\"<mi>w<\\\/mi>\",\"allowance (%)\"]]},\"spoil\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mtext>in situ<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>L<\\\/mi><mi>W<\\\/mi><mi>D<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>V<\\\/mi><mtext>loose<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>V<\\\/mi><mtext>in situ<\\\/mtext><\\\/msub><mi>k<\\\/mi><\\\/math>\"],\"w\":[[\"<msub><mi>V<\\\/mi><mtext>in situ<\\\/mtext><\\\/msub>\",\"in-situ (bank) volume (m\u00b3)\"],[\"<mi>L<\\\/mi>\",\"length (m)\"],[\"<mi>W<\\\/mi>\",\"width (m)\"],[\"<mi>D<\\\/mi>\",\"depth (m)\"],[\"<msub><mi>V<\\\/mi><mtext>loose<\\\/mtext><\\\/msub>\",\"loose volume (m\u00b3)\"],[\"<mi>k<\\\/mi>\",\"bulking factor\"]]},\"mass\":{\"m\":[\"<math display=\\\"block\\\"><mi>m<\\\/mi><mo>=<\\\/mo><mi>V<\\\/mi><mi>\u03c1<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><mi>F<\\\/mi><mo>=<\\\/mo><mfrac><mrow><mi>m<\\\/mi><mo>\u00d7<\\\/mo><mn>9.81<\\\/mn><\\\/mrow><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>m<\\\/mi>\",\"mass (kg)\"],[\"<mi>V<\\\/mi>\",\"volume (m\u00b3)\"],[\"<mi>\u03c1<\\\/mi>\",\"bulk density (kg\/m\u00b3)\"],[\"<mi>F<\\\/mi>\",\"force (kN)\"]]},\"pressure\":{\"m\":[\"<math display=\\\"block\\\"><mi>p<\\\/mi><mo>=<\\\/mo><mfrac><mi>F<\\\/mi><mi>A<\\\/mi><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>p<\\\/mi><mtext>N\/mm\u00b2<\\\/mtext><\\\/msub><mo>=<\\\/mo><mfrac><mi>p<\\\/mi><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\"],\"w\":[[\"<mi>p<\\\/mi>\",\"pressure (kN\/m\u00b2)\"],[\"<mi>F<\\\/mi>\",\"force (kN)\"],[\"<mi>A<\\\/mi>\",\"contact area (m\u00b2)\"],[\"<msub><mi>p<\\\/mi><mtext>N\/mm\u00b2<\\\/mtext><\\\/msub>\",\"pressure (N\/mm\u00b2)\"]]},\"packs\":{\"m\":[\"<math display=\\\"block\\\"><mi>T<\\\/mi><mo>=<\\\/mo><mo>\u2308<\\\/mo><mi>N<\\\/mi><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>w<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><mo>\u2309<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><mi>P<\\\/mi><mo>=<\\\/mo><mo>\u2308<\\\/mo><mfrac><mi>T<\\\/mi><mi>s<\\\/mi><\\\/mfrac><mo>\u2309<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>T<\\\/mi>\",\"target units\"],[\"<mi>N<\\\/mi>\",\"net units\"],[\"<mi>w<\\\/mi>\",\"waste (%)\"],[\"<mi>P<\\\/mi>\",\"packs\"],[\"<mi>s<\\\/mi>\",\"units per pack\"]]},\"cost\":{\"m\":[\"<math display=\\\"block\\\"><mi>B<\\\/mi><mo>=<\\\/mo><mi>q<\\\/mi><mi>c<\\\/mi><mo>+<\\\/mo><mi>d<\\\/mi><mi>r<\\\/mi><mo>+<\\\/mo><mi>o<\\\/mi><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>Q<\\\/mi><mtext>net<\\\/mtext><\\\/msub><mo>=<\\\/mo><mi>B<\\\/mi><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>m<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>Q<\\\/mi><mtext>gross<\\\/mtext><\\\/msub><mo>=<\\\/mo><msub><mi>Q<\\\/mi><mtext>net<\\\/mtext><\\\/msub><mo>(<\\\/mo><mn>1<\\\/mn><mo>+<\\\/mo><mfrac><mi>v<\\\/mi><mn>100<\\\/mn><\\\/mfrac><mo>)<\\\/mo><\\\/math>\"],\"w\":[[\"<mi>B<\\\/mi>\",\"base cost\"],[\"<mi>q<\\\/mi>\",\"quantity\"],[\"<mi>c<\\\/mi>\",\"unit cost\"],[\"<mi>d<\\\/mi>\",\"labour days\"],[\"<mi>r<\\\/mi>\",\"day rate\"],[\"<mi>o<\\\/mi>\",\"other costs\"],[\"<msub><mi>Q<\\\/mi><mtext>net<\\\/mtext><\\\/msub>\",\"net quote\"],[\"<mi>m<\\\/mi>\",\"markup (%)\"],[\"<msub><mi>Q<\\\/mi><mtext>gross<\\\/mtext><\\\/msub>\",\"gross quote\"],[\"<mi>v<\\\/mi>\",\"VAT rate (%)\"]]},\"time\":{\"m\":[\"<math display=\\\"block\\\"><msub><mi>D<\\\/mi><mtext>w<\\\/mtext><\\\/msub><mo>=<\\\/mo><mfrac><mi>U<\\\/mi><mi>r<\\\/mi><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><msub><mi>D<\\\/mi><mtext>t<\\\/mtext><\\\/msub><mo>=<\\\/mo><mfrac><msub><mi>D<\\\/mi><mtext>w<\\\/mtext><\\\/msub><mi>p<\\\/mi><\\\/mfrac><\\\/math>\"],\"w\":[[\"<msub><mi>D<\\\/mi><mi>w<\\\/mi><\\\/msub>\",\"worker-days\"],[\"<mi>U<\\\/mi>\",\"units to lay\"],[\"<mi>r<\\\/mi>\",\"rate (units per person-day)\"],[\"<msub><mi>D<\\\/mi><mi>t<\\\/mi><\\\/msub>\",\"team-days\"],[\"<mi>p<\\\/mi>\",\"number of people\"]]},\"convert\":{\"m\":[\"<math display=\\\"block\\\"><mtext>m<\\\/mtext><mo>=<\\\/mo><mfrac><mtext>mm<\\\/mtext><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>m\u00b2<\\\/mtext><mo>=<\\\/mo><mfrac><mtext>mm\u00b2<\\\/mtext><mn>1 000 000<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>m\u00b3<\\\/mtext><mo>=<\\\/mo><mfrac><mtext>litres<\\\/mtext><mn>1000<\\\/mn><\\\/mfrac><\\\/math>\",\"<math display=\\\"block\\\"><mtext>mm<\\\/mtext><mo>=<\\\/mo><mtext>inches<\\\/mtext><mo>\u00d7<\\\/mo><mn>25.4<\\\/mn><\\\/math>\"],\"w\":[]}};})();\n\n<\/script>\n<script>\n\/* Tradefox calculators \u2014 shared interface. Expects window.TF_CALC = {name, h1, sub, calcs, run}. *\/\n(function(){\n'use strict';\nconst D=window.TF_CALC, root=document.getElementById('tfc');\nif(!D||!root)return;\nconst esc=s=>String(s==null?'':s).replace(\/[&<>\"']\/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c]));\nconst byId=Object.fromEntries(D.calcs.map(c=>[c.id,c]));\nconst groups=[];D.calcs.forEach(c=>{if(!groups.includes(c.group))groups.push(c.group)});\nconst LOGO='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMQAAAAoCAYAAAChIFWSAAAaUUlEQVR42u1dfZRcRZX\/3Vv1uns+kpmQDyQhG0MgSoCQMIkYBIaIQVARRTtKgoCEg66oq+JZ9ahMRnGVVXdX9+giCqJAgDR+ggqixlEBgUyEgAEkEAgkIV8zmcl8dL\/3qu7+0fXGN53+nmDCMXVOZTLd79Wrd+t+\/urWHeBQO9QOtUPtUPunaARAAeBDpDjUXpFNOsBr2tu1tLdrSadVR0fdzEwFv6sin+2fm2po1vX9MXZ8rFq0Q6VmAEiFa3gMWkbcM4q1\/UHvUfNf096uzxjLaFOmCGUyRecrAsLSNGPHjurmPKVLkIGlyvSFOManzuJrLOm0wpyMlPq+yNoLACilviYia621t8V4ouSa0ytMgXCNQnEwmW5UIXgHr+ZOQ1GmpGBXZPZyjBwfu++SeceETG1hyAkInvWT\/nPTv\/fYizXSmgB4RHQrEb0TwG4AH7fW3gFgOKaMTKmFIgCitf6wiBwLILDWjsXvsszsAbjLGPMrANBa\/6uIHA8gjJ5rbWneZuaYZpJt1tp7AKyrQigi7TBNKfWpEs+R\/CM4MMZcDaAnrlUKBVApdSYzn2+tDay1zMxVzV1EdjBzVxiGfyyYGzsarSCi+dbasA4LZJlZM\/N1QRCsB0B\/+8jZiQm7N70rYZECw1oBASo\/cMxWWpERRchEYp2d8ZRwnzT0TLul+6cASSFDb\/zgkilTsttPNX4wAUKW1eixovHykwOg6bl79875w9JMxpQSitVpqKUZmCcvOnXuVBn4osXw2eM5maBEfpV35azVbP8asvr9Tk7deuwND\/\/ZEbKUctEAQqXUahFJi0gOQJKIAOApANdaa68HsDcmPLZQIBiAJaIHReR17ub90f5TRD4FAER0P4BFdatYIiGiLxljPl9BKDSAkJmXicgtFcYEEb3ZGPPrEhojGuvzAL4gIvXMG0R0mzHmMgBDMXobIroHwFljMj1E7xVrbxcAG65YOPHw3oGdhyWIarVFIgBpYIevth0+a\/2R6CQLgKSjg6iz0z6\/vO0DE1X26kYyk2iEj8qMRxZiBUOS6t4bJD449baH1wrAFFs3SacVZTJmywXzLmvVwTcaWRr7\/EASTMEQ9E\/gNa7utYneFELohDTttHhp7g0Pry3zWAXAMPNVADpFJAsg5b4LnNUAgGcAdFhrbynGPHFNvMdpcFOl\/12qhQA0EQ3GmGhMY4sIE9HnmHmztfa7pUxe7PqT3PPCwveM5igiGsDJAH5dYYUHRaTcWOXmDQDvZeYma+15Ma0EAH0V5lgpdlBElIsobLNKAOoZ8sOWUCDxd5LK\/rFNWTCBemPxiKLOznD7hW0XTUkMXzuY87HHKqMgAkjZMQVMliwmeEEbtH\/P8+8\/dSG+\/6dNkaVY29bmUSYTbFk296NTU+E3BodD2SMSNCilB4R3TVq14b010iPih1MBrAQQElFKRF4C8CKABU4YQgCzANzMzB8XkbtF5HMjVruIu8ElunKLVti5TKeCCRfeq2LPpFjnWAAUXSs276d8HkCDsxBUIvgGEbW5+7yC5+mCzxdV4d9zHe8+cp2I+ADOZea0m5+qgyZUgkaFrKgA0gLScF1ABBBJ3g9ynVx3vwvytswNSQDO6Ooymy5ub\/Xs4Nf8rBVjtVEEJRAtzmaPGiMaU8BEVilh1ZcL\/WatDmsw\/V8hQLAhTdLRrhd0dwd\/evsp45rYXzmc80MD6xNI5ay147U6YvOFC64AgE0Xz0hJRwevTqeVlEacIle0kZmvl7wbRwB+LiIni8hCInoPgHsBKBGBW5M2Zj4qtsb7aKWGOhCVYtcmnHZM7CckKGIeEZHpAOYCeLCIlYj8wfFEdJzTzlwCRIj+P9e993CJOKIc+MA1ggEXAVhdQfiqpUl0jVduskxAk2Yl4Biryz4mwwqUUgwbhC1YCdgN+UB3i+xd3JxUkwezgSGCIskPOk6xAhjkxiMhGBYwLIwlDIVh\/hsib8gPxAOfs\/HCRVPo5swOANh22Wkzk9m9\/5cU2yqkaHxK6WxgkDWhCUyAiWy\/uuWCuRun\/WD9PWvaf6+XdnWFFehrlFJfATBb8gv\/pLPIAKCttasBrNZan2yM+SKANwLwjTFfiivSQoH4G4CJzqyoAiZrAXBk3PoSkRGRpx1TUoHL5BHR1hJ+dzTGLgDPRsxesKYGwKsBTIldH10zoRxhtNazRWRygacgLnieGLtWAEz1PO+1QRD8pYxAFGu+80WlyLt5AI6Jx2giwgBmxtydUjTZ7WjCFeZi3TU7iw0kABQIPuAHofcHy9awZQKJSBQkutFJIFYgDYASlXghTreENbM9bYWE8mqXgBAU9oben1hJVgQc6QUKiIwn0KJelYSc4MOCALIigKLmXMKbJpe39W4fCr8wPtd3BVMwjimJPmvu6w\/0vQlLl7R69Oo9QWCSkIZWLb98\/sL575hxc9eda9rb9eLiQqEAWK316621H4nx4mxmvpuZrwrD8KERxgzDB5VS14nIEhH5LoC\/xhWrjksHgBUAqICJtQtI0kS0OrYQBKBHRBa5+GCfBXSSWiwANkSkiehOY8ylZRZ9PjM\/6Hx9KcSYS2lya+189w5RvEJEtFUpda4xpktExsX2B7QxZgGAv1QJ69o8mEIvWmvnOdrE56QAiFLqGyJyhYs9uECrF40JHE3uMsZcUnUgYQwkz6ejaEIC0UooEPQeturRs+KoUcX2QwLa2wnoQoPkkhBFBAMBwnFa656Qbpi0av0HSt2+evVqteSnHRsamWYPh2IFoAQzZVOpvb19vecc3iyf7uvP+Y2ekgHRv1xz3ufPW7p0qXlmxRuvRbjrzvEJs3CPHwaNYD2Jh2\/buuyk06eu6uqOgvASyiQUkSDamXYx55tFZAkz3wlgted5D+RyuaSIfJ2ItllrP1PIt7rE4Pv45MWY0DGdFFxXdbDptCZFaE4Rn\/BFhxSMqwXDJ6LXxYQ68tk3BUHwF2beRERzJXYBES0C8N06gmUbU8ij+FREnqgVlapAk3IbfyWQHoAsaNfyk8dNPBoD2ADCnMp0jMOjVshCHGglADEBgucF4KfPPto75uSNwaibN4Bo6VLTs+zYHZp4NsgIIGQFSEKahzh1H4ayGyc0JI7e6\/NQL0380NKlS82mi2ekZl7\/u+3dyxanj1EvrWv2EodlA99PUbKxWdmfPrf8tNfRLZltBfBtZIETIvK1KNaM0TNSiOeJyHm+7w8wswUw3hhzllPko9xuXYW\/zGUCWBQEf1LtYrkJxxmqlOtBNSIvsNbOL9zIE5H1zvr9xcUNNqa5F8TctFoEotS7UxRHjWF3W8aykScAWACCkpf8BjupE7aYJakq\/Ck0LqQ8AqwMTzPUudEWPJcEoF5hLbHXsCCwL6kjb3p497pL3vqWhN5yzW7fXjfrpt9sXp1Oq5k\/yGQlnVa0KvP84xe8\/pyj1NBdTdpO7guM35Lyj2wxu+9Yne5YDHSGHQB3\/l3RhUT0PRFpL4JgKqf4Ik+lmYggIitdgL2P0qnGQlRamPj3UiOGnq2gRaXGHUoBMIWIZrtxKfastZJ3nx8QkYtHPIu8Vj4mlUpNz2azm2vcDS\/17mNi5v22u0z5QHfn5P07rq28ENJDzn0ggQiDYZCkPUYAoht\/8TSA8yMBitwgymSMpNOKbs089MyyE86czN4vWhN2+uCwn21tTJ1ymvrZDdSJCyWdVndlMl43EDDzlQAuca6pLrY+RBQCeALAC0R0vzHmy1G8WS9K8vIsWJ5rK0GLNaFdSqk5zsWK1k0TkVhrH3HfPzwSc\/7dqqSCIJi3P9NZyu1k15B+UKmXT1ATAdkxvg8J1SXaNn47QYnF+GAYBMh3LocnaSjpAO8T+2QyZk17u5616rHHHrWHnzFok0+OS+lU37CffZUOl\/csn\/dflMmYRwhBo1JvAfC1AhBo1F4TETER\/cxaO89ae24Yhl+OzVAOKoGIadKwwE2IJjtUa76QiLTF\/Ptop3g7gKcBIAiCJwFsjVkUcQz8+oMkv6sUTYp1lIPwxP07Z+fOUTk6NUnXfnolEQc\/AJjQC0sZmFL5TYu7usI17e36tFW\/fXZjouHMAZNY3+JRqi8bZCckwo8PX7xopREcGxLfmt9jl2J7MiEReUqpXzQ0NHwoFpfpWvcQioPeSu1XEhERlFIJAM0AWp1Wj3orgGal1ClE1Fil+yFu3IWx1JMoftgAYMARYwjA+sINXCI6uYxH8A9xf4gILgesGE0K+\/hSqBUVLPEzR77ZCAiU339DqV5RLOqUmnpuW9zVFUo6rdpuuH\/rDjQt6UfysXEepXqG\/TBFAx3\/e\/KMh\/wQ4xkKkFF8LC59Q3ued\/OMGTPeNTAwsCu2HVAWqNC1hKt1RGQln+u0+HIiOrcEzUREJjvURQo0OpVKZRCRuUUC6nXx3CQi+jOAc5zLFjHVCY7J+mvcj9hfLaLJO4locQU+sg5aTAP44xkuuBwl4gQKLcAID3vN9nse2L3sWCOgfdLUJA\/R2kYN7pXUU1NvWncBQdD9mgFClwsCCrVofU4UPKbaYswoprg5s6P70lPOPjo3cH9zYnhGTzZrPnxcS7MvIlc+9AIpNaLGRISFFZTW+ppcLvfpjRs31pQlrYEDGkM0AmisgOQU22EeLIGETQcwKxZQR9q\/Ow4RuyTGOEokACYDOA7AA6UCrn8QTVIAXlXl5akKjgoYpJvYnjiizGRf7W0AJJjAQdBQ+YRB\/S2ox7q4mKLthq6tcsWZZ\/X37+5uUNnG3QPD9uPHt\/CgCXBV93Z4SiQUkFZMiWTik4ODg1+P7THYsaRdHAh\/uRo\/2Thm3g7gkYK0XXJu3QkuXcTEYDertV4fH8MY86gTKo4f4GHmhQdBHFENTUzJhaZ94a7BUOxAKGYwEDtkxMT7YP5nGARiBTRY1uc5QFRZ3NUFRQB967cLzv\/Nc8kcayS15t7BIXz2xCn4xPFTJTBCjToRjGtqWeGEQdWD9h0MZ01NrKNErBdldjKAzyCfy84Fu9ew1rYVgT23+L6\/KTYOAdguIk\/F4wMHvy46SA7ymCq7VErBBhhEEqVdSDFcmAFhQnk46cBRJL\/XoPQbElr98Lfb9ugVf9hJ5Cl4itA3nJVrFrTi6vnTs4M+zu7t33VDW37\/ytQzaz4ITpLFMz1L6SBFRLsAfNha+\/0iLk2EKC0oYuCfAJCNjR9t9q0ryAkCEZ3krjMH0EpQiczaeE\/EfpYMYVkIChZNHqlmj1Szx66TGud6s0eqwSNPeVBCNO7lem0B4AV1nZA0AKaLSCY0UAlm+fHz2+myP24H65T1hOxgNiufnd+ihy+Z8xYRobXp\/CZkXYHcAVp067T9gwBuimn7TwGYFu1PuJYTkQ9aa38FYHuRAClynZIuMB75zKE294VhKDF0wXcW4TdEdFkBFx2VSCRm+r7\/9AEQCOsw84dE5AdR0lqxk3huj4NF5HEAOAOwXUUCCKWYhkX2+CFfwiTDsEzg4lqzyQCGEnsBCwHQ9lSzHGArEdE\/ycw\/stYeQYAJwSqpGLc9u9O2eszfesMk9A0Z2zMUqsMa5MqdF8ybQLdihaTTSjIZWysOdMAEwqFHj4rIt2IL3gjgmijpzuWiJKy1fU4YEhFDFwn3ZiGfjTsqhdpau5yI3lQkLBxXQAMDQIdheBLyexZ8IGgiIo+JyLdr2exbCUhnEa5lEqiQchNuf\/JnB8Nx7qAeV4noBgALAYQC0iwWgVCY0Epf+7fdd31qwdSeV6f4ot5cLuzLikxqxKU7lx8vdEvmMklDSZVFDuoQiP3vRYhIMnZYJ7DW3sjMn0E+1Tzy7YmIvigid5agaXQ++UQi4lhCV4RSzXa92n2MRQBuP4B8k4y5RmEtFTfG53NR\/h5YCyAs9Ez6pJajcNQAduwgTJlSkjkyAJYWZJPasmlsL9tuRHR097MAlrksVg8QsYAlhlasV19+Yu7Co1c9Gmxbfvz0ycnE4r6sCfqG\/XBSMrnipWXzhmjVIx+V9nYtXV2mWqHQOPAoU3zRd7hz0FfEjlVaIjqOmd9kjLm71NFREVlYkH2Lclv0RVJDorymhYWxxQGkSVjLjf0Amop8PoxmQ5mMqSe57wAQICoS8G5r7dUxPhAAwsxKa\/3N4Wz2Y98B4QiynJ3c+O7+HXvXNDeYuf1ZDvuzQXh4yn5k27ITe2lVV8fatjYP3d3BKwVlijMuORcqnptiHaNeWSE9va2IKjIFKdqF6SFhEVocD2BSQYbvK6JcTz\/GQ4hjkyUQJL\/DgjFU\/pFa0\/vqdpqiDcZ5InJjLHVfnEvNSqnP5nK5f8sfeAVWdnTgX\/77zz1bYM7uN\/rJFo90CMJANginJOxVW5a3fWRBd3ewtq3N268CYV7+mCpiwCeI6G73\/xErISJv9DxvfsGZ5PiR0TlF3klVgdjsc\/xUKXVClfRRRToDUByvo1O7b8E1dCrlmgiAkAkbMNZSWE7IKJ8wyGJJOsAYGCARjDqXjQ7kv2OMpI1byh\/MgFcVojRZKfUTImqKZ7IrpYSZP+D7\/n\/E1l+os9NKOq3m3PLktmdlwpv3Gr2p1RMdCmPYD81EPfzNze+bs2xBd3ew9vLKQqFxEBb0IqL\/AfA2F3hHwqLDMPwYgIuLHBl9jbV2UkGKBwG4B8CWMvusGkAa+TPV8ZSI1wFYU0X6RLbUmQwAOZd7jzoqltgi4EHNDjrBgiSByZgytgSrOOkIgHAun5jXbYucUhcA2HXBSL4rlAhIGAE1VMruVcycEZFXu1gQ7rO9zPx+3\/d\/FIPFZZ8Uj5symx97z+Il03jbveOTMnOPjyAVGJqo6IdPXrSg97XXrf2VtLdrKnM++2ATCAOAjDFriGgdgPmxQx9CRGkRuQrA5rh2jB0Iih8ZDa21lyKf2VpuvY9BvvJGHDWouEFHRA1KqUVF\/HwCoIwx76jRCkfKYKIrFufFi7qVAEDJ0WIgCqo5Vh5GQFDWjMljspz3usS9dWgNQqIzd7\/nuFuS2oSDmqUxx3lAImlJcixZeNM98l+TMxaRnQiZ0a9S7l3SLoQf7Soppb4jIu3ubEMkIFs9z0tns9n7ywENI0Jxe+aZx9\/3hjNI9tzbkghn9+ckSIH0kTR0x9PvmbeEbu+6v8xR1INOIOJw2zeJ6EYHNUbuUwMRfVBEPhPP9CSihTFNLC6FbTPyRQV0CQsRIRkPA1hkrZUY8853aE8pVAtENM1ae38VFoBjccxwGY0evc+5RPS2AktXtF6sO4N9PhvzEwAY398PjtW6ppHcvB11L8YgTH8LQVxSoBoMgCZl3pSz9m++hUn4gjAyin5eJ2kOGzWBgnzpQAZZWKPEJFNDAJCek5Ei6\/AJAJc7RInymTjqKWY+P5vNbqgGdYtbisff94Yl02X3b8elcPRAzvqNbBqnJPhnT73v9NPppswTpYTiH5n+TbVYCWvtHSLyYoyh2G3YrUA+NTqe7jG\/oJIGkE\/xzrrfg1jq76guIvfFkgEjekz3PO+YctGjC\/TL5RvZgrKTBKC7UrGBgpN+VC7OKBTG\/vHjEfL+SdXNOHg2tE3dvs3HCNGDAyPiMaU0U5MmNGmmfKf8TxahIKpxKbBJUjYgu62VT8+n0HSOKsgQKqXOgcjXXUlPEJFm5ge11kt8399Qw\/nyEaE4\/qb7Nm80E940KLRxXJISe43ym2AmHSm9dz5x6SlTyZXXPJhRprj2Uy757nuxYDcq\/ziZmS+MMd6U2D5DnBcersBUFgA8z1vnBEbFIE9ylTgwxsB4RMBFBFrrb1e551tNgt8+cHJ\/\/sn5snruJxHXJRtL8zAtP+jPuH9PiLUtHisR8SPvyVhYMbDGwhoro7oInDCItSxBMpnkrFXfmXZd55Ck04pi9W0BzAOwCkQWgDCR53nez1taWs7KZrMvIJ7aXmPaeNuqB55\/Dskle433TEuCEv2B8VMqN+sIv+8Xmy86cRo680dY60OZjJFYSfp4r4XRC++VcoiTtfa7zDzg0jxM7LsPRQW6lFJzrLXNzu8cSdQjou4KzCcAKJfLbUK+vpKNYFoRsSJycoW52wrMGn2vmFkB+PcgCNYV7KPUOm7Fk3MkUB4JKYjySAgS1u8Wd+QFY6Bhwoo9SPS0pHRCMZFHQh4L64IefZZgIWaQ0ppbG73k9sD+bnrv1GukA4xMxhYor6MBtIqIZWbPSySuf\/vb335+T09P\/1jS8COhmP+DR5\/bnJ2wJBfSC80eJfqzGGxJyTxt5GoCLNrbVb0WIird6EXwooPGqEqwIhW7P+HydpIVinBtBXBbvJSmQ56OdVYCInJ6LCEuKiFpjTGPVyEQypWMeSR2b8L9\/4xI6Jg54YQyUS0c6t6PADwlIhdba79aZIGTtY4b615szgCA5sSQhMDgMGjIJwwMixoKwAM76zVznbDSAZ51\/Z\/Wv+i1ntpv+ccAdmZBQ1HPxXr0+zBoKAQPEIfP9QT6y0\/wxLfS3Xfn0AmJQVbGzf8OEblSsSKt9Zey2exlmbzQjPlPH0RnKeZl\/rjpaTSfHRi9s7WZm\/b6qtdQw7UCEM7osrX69SPVLJRSc40xIxtWWms\/DMMHKpg0AiCe582z1k4yxlgXj7AxZiuADSWC3mhuE5VS8xyTx92n7QAeB3CsUmqamxcAkNZ62M1Lqnm3ZDI5M5fLzSo4XxEgf1goSKVSM4IgOCb+7tXEXMzcEwTBX124yQXjC4ATlFKHlxq3QtwmjoaPRtX7Ojo6+B2b7jmiKTFI4rNkTZI8TDDH3nzPS0RjKGkTq4X0+IrXH5Y0YdNQwNJQ+jgRDvNZ9s5M7p7Z2ZUdqa5RZj0aGxtPGhoaWrf\/jiPF5u+g1s3LTjt9UnLok88JVs65sXtdrJzNoXYAkDO80v\/UldTx560knVZVpGLzy50RUDj3Uu9SywRKlYUxNWx5Uom4op7nSkFZzXrnhSrGoDoBiEoVMng\/MIEdXa0OtHLl38dcuRIyFutQ5IVoZUd1c1452kU64H8dSjrAUfXCKv8016F2qP1zt\/8H3pWYzFCjWXUAAAAASUVORK5CYII=';\nconst MX=window.TF_MATH||{};\nfunction cardMath(c){const m=MX[c.id];return m&&m.m&&m.m.length?`<span class=\"f tfc-cm\" role=\"math\" aria-label=\"${esc(c.formula)}\">${m.m[0]}<\/span>`:`<span class=\"f\">${esc(c.formula)}<\/span>`}\nfunction mathHTML(c){const m=MX[c.id];if(!m||!m.m||!m.m.length)return `<div class=\"tfc-formula\">${esc(c.formula)}<\/div>`;\n const w=(m.w||[]).length?`<dl class=\"tfc-where\"><dt class=\"tfc-where-h\">where<\/dt>${m.w.map(x=>`<div><dt><math>${x[0].startsWith('<')?x[0]:`<mi>${esc(x[0])}<\/mi>`}<\/math><\/dt><dd>${esc(x[1])}<\/dd><\/div>`).join('')}<\/dl>`:'';\n return `<div class=\"tfc-math\" role=\"math\" aria-label=\"${esc(c.formula)}\">${m.m.join('')}${w}<\/div>`}\nlet filterGroup='All', query='';\nconst TRADES=[['Electrical','https:\/\/tradefoxapp.com\/calculators\/electrical\/'],['Gas and plumbing','https:\/\/tradefoxapp.com\/calculators\/gas-plumbing\/'],['Bricklaying','https:\/\/tradefoxapp.com\/calculators\/bricklaying\/'],['Carpentry','https:\/\/tradefoxapp.com\/calculators\/carpentry\/']];\nfunction localNav(){\n const others=TRADES.filter(t=>t[0].toLowerCase()!==D.name.toLowerCase());\n return `<nav class=\"tfc-local\" aria-label=\"Calculators\"><div class=\"tfc-wrap tfc-local-in\"><a class=\"tfc-local-title\" href=\"#\/\">${esc(D.name)} calculators<\/a><div class=\"tfc-local-links\"><a href=\"https:\/\/tradefoxapp.com\/calculators\/\">All trades<\/a>${others.map(t=>`<a href=\"${t[1]}\">${esc(t[0])}<\/a>`).join('')}<\/div><\/div><\/nav>`;\n}\n\nfunction fmt(v){\n if(!Number.isFinite(v))return '\u2014';\n if(v===0)return '0';\n const a=Math.abs(v);\n if(a>=1e9||a<1e-4){const [m,e]=v.toExponential(4).split('e');return Number(m)+' \u00d7 10'+String(Number(e)).replace(\/-\/,'\u207b').replace(\/\\d\/g,d=>'\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079'[d]);}\n return Number(v.toPrecision(6)).toLocaleString('en-GB',{maximumFractionDigits:6});\n}\nfunction title(t){try{document.title=t}catch(e){}}\n\nfunction listView(){\n const q=query.trim().toLowerCase();\n const hits=D.calcs.filter(c=>(filterGroup==='All'||c.group===filterGroup)&&(!q||(c.title+' '+c.group+' '+c.formula+' '+(c.intro||[]).join(' ')).toLowerCase().includes(q)));\n const sections=groups.map(g=>{const cs=hits.filter(c=>c.group===g);if(!cs.length)return '';return `<section class=\"tfc-group\"><h2 class=\"tfc-h2\">${esc(g)}<\/h2><div class=\"tfc-grid\">${cs.map(c=>`<a class=\"tfc-card\" href=\"#\/${encodeURIComponent(c.id)}\"><span class=\"k\">${esc(c.group)}<\/span><span class=\"t\">${esc(c.title)}<\/span>${cardMath(c)}<\/a>`).join('')}<\/div><\/section>`}).join('');\n return sections||`<p class=\"tfc-empty\">No calculators match \u201c${esc(query)}\u201d. Try a different word.<\/p>`;\n}\nfunction fitCards(){root.querySelectorAll('.tfc-cm').forEach(el=>{const m=el.querySelector('math');if(!m)return;m.style.fontSize='';const w=el.clientWidth,sw=m.getBoundingClientRect().width;if(w&&sw>w)m.style.fontSize=Math.max(11,Math.floor(17*w\/sw*0.97))+'px'})}\nwindow.addEventListener('resize',()=>fitCards());\nfunction renderList(){\n title(D.h1+' | Tradefox');\n root.innerHTML=localNav()+`<div class=\"tfc-wrap\"><a class=\"tfc-brand\" href=\"https:\/\/tradefoxapp.com\/\" aria-label=\"Tradefox home\"><img decoding=\"async\" src=\"${LOGO}\" alt=\"Tradefox\" width=\"98\" height=\"20\"><\/a>\n <header class=\"tfc-hero\"><h1 class=\"tfc-h1\">${esc(D.h1)}<span>${esc(D.sub)}<\/span><\/h1>\n <div class=\"tfc-search\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M20 20l-3.5-3.5\"\/><\/svg>\n <input type=\"search\" id=\"tfc-q\" placeholder=\"Search ${D.calcs.length} ${esc(D.name.toLowerCase())} calculators\" aria-label=\"Search calculators\" value=\"${esc(query)}\"><\/div>\n <div class=\"tfc-chips\" role=\"toolbar\" aria-label=\"Filter by topic\">${['All',...groups].map(g=>`<button type=\"button\" class=\"tfc-chip\" data-g=\"${esc(g)}\" aria-pressed=\"${g===filterGroup}\">${esc(g)}<\/button>`).join('')}<\/div><\/header><\/div>\n <div class=\"tfc-band\"><div class=\"tfc-wrap\" id=\"tfc-list\">${listView()}<\/div><\/div>`;\n const input=root.querySelector('#tfc-q');\n input.addEventListener('input',()=>{query=input.value;(root.querySelector('#tfc-list').innerHTML=listView(),fitCards())});\n root.querySelectorAll('.tfc-chip').forEach(b=>b.addEventListener('click',()=>{filterGroup=b.dataset.g;root.querySelectorAll('.tfc-chip').forEach(x=>x.setAttribute('aria-pressed',String(x===b)));(root.querySelector('#tfc-list').innerHTML=listView(),fitCards())}));\n fitCards();\n}\n\nfunction fieldHTML(f){\n const id='tfc-f-'+f.key, unit=f.units&&f.units.length>1\n  ?`<select id=\"${id}-u\" aria-label=\"${esc(f.label)} unit\">${f.units.map(u=>`<option${u===f.unit?' selected':''}>${esc(u)}<\/option>`).join('')}<\/select>`\n  :(f.unit?`<span class=\"tfc-unit\">${esc(f.unit)}<\/span>`:'');\n return `<div class=\"tfc-field\"><label for=\"${id}\">${esc(f.label)}<\/label><div class=\"tfc-row\"><input id=\"${id}\" inputmode=\"decimal\" autocomplete=\"off\" placeholder=\"e.g. ${esc(f.example)}\">${unit}<\/div><\/div>`;\n}\nfunction renderDetail(c){\n title(c.title+' calculator | Tradefox');\n const info=[];\n if(c.notes)info.push(`<section><h3>Good to know<\/h3><p>${esc(c.notes)}<\/p><\/section>`);\n if(c.mistake)info.push(`<section><h3>Common mistake<\/h3><p>${esc(c.mistake)}<\/p><\/section>`);\n if(c.limits)info.push(`<section><h3>Limits<\/h3><p>${esc(c.limits)}<\/p><\/section>`);\n if(c.sources&&c.sources.length)info.push(`<section><h3>Sources<\/h3><ul>${c.sources.map(s=>s.url?`<li><a href=\"${esc(s.url)}\" target=\"_blank\" rel=\"noopener\">${esc(s.title)}<\/a><\/li>`:`<li>${esc(s.title)}<\/li>`).join('')}<\/ul><\/section>`);\n const ix=D.calcs.indexOf(c),prev=D.calcs[ix-1],next=D.calcs[ix+1];\n root.innerHTML=localNav()+`<div class=\"tfc-wrap tfc-detail\"><a class=\"tfc-back\" href=\"#\/\">\u2039 All ${esc(D.name.toLowerCase())} calculators<\/a>\n <div style=\"margin-top:22px\"><p class=\"tfc-eyebrow\">${esc(c.group)}<\/p><h1 class=\"tfc-title\">${esc(c.title)}<\/h1>${mathHTML(c)}\n ${(c.intro||[]).length?`<div class=\"tfc-intro\">${c.intro.map(p=>`<p>${esc(p)}<\/p>`).join('')}<\/div>`:''}<\/div>\n <div class=\"tfc-layout\"><form class=\"tfc-panel\" id=\"tfc-form\" novalidate>${c.fields.map(fieldHTML).join('')}\n  <div class=\"tfc-actions\"><button class=\"tfc-btn\" type=\"submit\">Calculate<\/button><button class=\"tfc-link\" type=\"button\" id=\"tfc-ex\">Use example values<\/button><button class=\"tfc-link\" type=\"button\" id=\"tfc-clear\">Clear<\/button><\/div>\n  <p class=\"tfc-error\" id=\"tfc-err\" role=\"alert\"><\/p><\/form>\n  <div class=\"tfc-results\" id=\"tfc-res\" aria-live=\"polite\"><p class=\"tfc-wait\">Enter your values to see the result.<\/p><\/div><\/div>\n ${info.length?`<div class=\"tfc-info\">${info.join('')}<\/div>`:''}\n <nav class=\"tfc-pager\" aria-label=\"More calculators\">${prev?`<a class=\"tfc-prev\" href=\"#\/${encodeURIComponent(prev.id)}\"><span>Previous<\/span>\u2039 ${esc(prev.title)}<\/a>`:'<span><\/span>'}<a class=\"tfc-all\" href=\"#\/\">All ${esc(D.name.toLowerCase())} calculators<\/a>${next?`<a class=\"tfc-next\" href=\"#\/${encodeURIComponent(next.id)}\"><span>Next<\/span>${esc(next.title)} \u203a<\/a>`:'<span><\/span>'}<\/nav>\n <p class=\"tfc-foot\">${esc(D.disclaimer||'Results are arithmetic from the formula shown. They do not replace manufacturer instructions, regulations, design calculations or inspection and testing by a competent person.')}<\/p><\/div>`;\n const form=root.querySelector('#tfc-form'), err=root.querySelector('#tfc-err'), res=root.querySelector('#tfc-res');\n let example=false, touched=false;\n function read(strict){\n  const vals={};\n  for(const f of c.fields){\n   const el=root.querySelector('#tfc-f-'+f.key), u=root.querySelector('#tfc-f-'+f.key+'-u');\n   const raw=el.value.trim().replace(\/,\/g,'');\n   el.removeAttribute('aria-invalid');\n   if(raw===''){if(strict){el.setAttribute('aria-invalid','true');throw Error('Enter a value for '+f.label.toLowerCase()+'.')}return null}\n   if(!\/^[+-]?(\\d+\\.?\\d*|\\.\\d+)(e[+-]?\\d+)?$\/i.test(raw)){el.setAttribute('aria-invalid','true');throw Error(f.label+': enter a number, using a decimal point.')}\n   vals[f.key]={value:Number(raw),unit:u?u.value:f.unit};\n  }\n  return vals;\n }\n function show(strict){\n  err.textContent='';\n  let vals;\n  try{vals=read(strict)}catch(e){if(strict||touched)err.textContent=e.message;return}\n  if(!vals){res.innerHTML='<p class=\"tfc-wait\">Enter your values to see the result.<\/p>';return}\n  try{\n   const r=D.run(c,vals);\n   res.innerHTML=(example?'<span class=\"tfc-tag\">Example values<\/span>':'')+r.outputs.map(o=>`<div class=\"tfc-out\"><p class=\"lbl\">${esc(o.label)}<\/p><div class=\"tfc-num\">${esc(fmt(o.value))}${o.unit?`<small>${esc(o.unit)}<\/small>`:''}<\/div>${o.pct?`<span class=\"tfc-pct\">${esc(fmt(o.value*100))}%<\/span>`:''}<\/div>`).join('')\n    +(r.notice?`<p class=\"tfc-notice\">${esc(r.notice)}<\/p>`:'')\n    +(r.working?`<details class=\"tfc-work\"><summary>Show the working<\/summary><pre>${esc(r.working)}<\/pre><\/details>`:'');\n  }catch(e){err.textContent=e.message;res.innerHTML='<p class=\"tfc-wait\">Check the values above.<\/p>'}\n }\n form.addEventListener('submit',e=>{e.preventDefault();touched=true;show(true)});\n form.addEventListener('input',()=>{example=false;show(false)});\n form.addEventListener('change',()=>show(false));\n root.querySelector('#tfc-ex').addEventListener('click',()=>{c.fields.forEach(f=>{root.querySelector('#tfc-f-'+f.key).value=f.example;const u=root.querySelector('#tfc-f-'+f.key+'-u');if(u)u.value=f.unit});example=true;show(true)});\n root.querySelector('#tfc-clear').addEventListener('click',()=>{form.reset();example=false;touched=false;err.textContent='';show(false)});\n}\nfunction route(){\n const id=decodeURIComponent((location.hash.match(\/^#\\\/(.+)$\/)||[])[1]||'');\n if(id&&byId[id]){renderDetail(byId[id]);root.scrollIntoView({block:'start'})}else renderList();\n}\nwindow.addEventListener('hashchange',route);route();\n})();\n\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":27953,"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":"unboxed","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":"","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":"","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-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":"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":""},"mobile":{"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":""}},"_glsr_average":0,"_glsr_ranking":0,"_glsr_reviews":0,"footnotes":""},"class_list":["post-27956","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Bricklaying calculators - Tradefox | Construction Training Online<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tradefoxapp.com\/fr\/calculators\/bricklaying\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bricklaying calculators - Tradefox | Construction Training Online\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tradefoxapp.com\/fr\/calculators\/bricklaying\/\" \/>\n<meta property=\"og:site_name\" content=\"Tradefox | Construction Training Online\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=61561067514381\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-09T15:56:38+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Tradefox_app\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/bricklaying\\\/\",\"url\":\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/bricklaying\\\/\",\"name\":\"Bricklaying calculators - Tradefox | Construction Training Online\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#website\"},\"datePublished\":\"2026-11-09T15:09:15+00:00\",\"dateModified\":\"2026-11-09T15:56:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/bricklaying\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/bricklaying\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/bricklaying\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tradefoxapp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculators\",\"item\":\"https:\\\/\\\/tradefoxapp.com\\\/calculators\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Bricklaying calculators\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#website\",\"url\":\"https:\\\/\\\/tradefoxapp.com\\\/\",\"name\":\"Tradefox | Construction Training Online\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tradefoxapp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#organization\",\"name\":\"Tradefox | Construction Training Online\",\"url\":\"https:\\\/\\\/tradefoxapp.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/tradefoxapp.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/logo-transperent.png\",\"contentUrl\":\"https:\\\/\\\/tradefoxapp.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/logo-transperent.png\",\"width\":1024,\"height\":208,\"caption\":\"Tradefox | Construction Training Online\"},\"image\":{\"@id\":\"https:\\\/\\\/tradefoxapp.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=61561067514381\",\"https:\\\/\\\/x.com\\\/Tradefox_app\",\"https:\\\/\\\/www.instagram.com\\\/tradefoxapp\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tradefox-ltd\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Bricklaying calculators - Tradefox | Construction Training Online","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/tradefoxapp.com\/fr\/calculators\/bricklaying\/","og_locale":"fr_FR","og_type":"article","og_title":"Bricklaying calculators - Tradefox | Construction Training Online","og_url":"https:\/\/tradefoxapp.com\/fr\/calculators\/bricklaying\/","og_site_name":"Tradefox | Construction Training Online","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=61561067514381","article_modified_time":"2026-11-09T15:56:38+00:00","twitter_card":"summary_large_image","twitter_site":"@Tradefox_app","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/tradefoxapp.com\/calculators\/bricklaying\/","url":"https:\/\/tradefoxapp.com\/calculators\/bricklaying\/","name":"Bricklaying calculators - Tradefox | Construction Training Online","isPartOf":{"@id":"https:\/\/tradefoxapp.com\/#website"},"datePublished":"2026-11-09T15:09:15+00:00","dateModified":"2026-11-09T15:56:38+00:00","breadcrumb":{"@id":"https:\/\/tradefoxapp.com\/calculators\/bricklaying\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tradefoxapp.com\/calculators\/bricklaying\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tradefoxapp.com\/calculators\/bricklaying\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tradefoxapp.com\/"},{"@type":"ListItem","position":2,"name":"Calculators","item":"https:\/\/tradefoxapp.com\/calculators\/"},{"@type":"ListItem","position":3,"name":"Bricklaying calculators"}]},{"@type":"WebSite","@id":"https:\/\/tradefoxapp.com\/#website","url":"https:\/\/tradefoxapp.com\/","name":"Tradefox | Formation en construction en ligne","description":"","publisher":{"@id":"https:\/\/tradefoxapp.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tradefoxapp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/tradefoxapp.com\/#organization","name":"Tradefox | Formation en construction en ligne","url":"https:\/\/tradefoxapp.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/tradefoxapp.com\/#\/schema\/logo\/image\/","url":"https:\/\/tradefoxapp.com\/wp-content\/uploads\/2026\/03\/logo-transperent.png","contentUrl":"https:\/\/tradefoxapp.com\/wp-content\/uploads\/2026\/03\/logo-transperent.png","width":1024,"height":208,"caption":"Tradefox | Construction Training Online"},"image":{"@id":"https:\/\/tradefoxapp.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=61561067514381","https:\/\/x.com\/Tradefox_app","https:\/\/www.instagram.com\/tradefoxapp\/","https:\/\/www.linkedin.com\/company\/tradefox-ltd\/"]}]}},"_links":{"self":[{"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/pages\/27956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/comments?post=27956"}],"version-history":[{"count":4,"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/pages\/27956\/revisions"}],"predecessor-version":[{"id":27970,"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/pages\/27956\/revisions\/27970"}],"up":[{"embeddable":true,"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/pages\/27953"}],"wp:attachment":[{"href":"https:\/\/tradefoxapp.com\/fr\/wp-json\/wp\/v2\/media?parent=27956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}