Resources Numerical accuracy
Calculations
Every calculation under our calculation policies: what it works out, its formula and the precision it runs at. Open one to see its code as it is in the released app.
Calculations
-
Bend radius of an elbow
The center-line radius an elbow is built with.
pipe: the table's radius; round duct: 1.5 × diameter; rectangular duct: its width for a turn in plan, its height for a turn up or down
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Elbow geometry at a corner
The two tangent points, center and angle of the elbow where a run turns.
θ = acos(d₁ · d₂); T = R × tan(θ ÷ 2); center = p₀ + n × R
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Where runs meet
Finds run ends that touch another run's end or lie on another run's line, to make an elbow, reducer or tee there.
end to end when |P − Q| ≤ max(tol_a, tol_b); tee when the foot of P on a leg is within the tolerance
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Elbow, reducer and tee allowances
How much of each leg an elbow, a reducer or a tee takes.
reducer length (duct) = max(150, max(|Δw|, |Δh|) ÷ 2 ÷ tan 15°); tee half length = max(25, 0.5 × branch + 0.25 × host)
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Straight pieces between fittings
The start and end of every straight piece along each leg, after trims, tees, valves and weld cuts.
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Saving a run's definition
The points, sizes, slope and flow kept in the run's property set.
point = round to 3 decimals of a millimeter
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Length and surface written on each piece
The length of a straight pipe or duct piece and a duct's outside surface, written as IFC quantities.
L = |b − a|; perimeter = π w (round), π h + 2 (w − h) (oval), 2 (w + h) (rectangle); surface = perimeter × L
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Elbow written as a revolved section
The axis and angle of the solid of revolution that an elbow is written as.
axis at R to the side of the section; angle = θ
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Flat-oval outline
The outline of a flat-oval duct with semicircular ends.
r = H ÷ 2; c = W ÷ 2 − r; points at c + r cos a, r sin a
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Connecting ports that touch
Joins a port to a port of another part that lies at the same place.
connected when |p − q| < 0.6 mm
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Position along a run
How far along a run a plan point lies, and how far off the line.
t = clamp((p − a) · d, 0, L); s = Σ earlier legs + t
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Length of a run
The length of a run's center line through its corners, with the slope applied.
L = Σ |Vᵢ − Vᵢ₋₁|
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Pipe size for a flow and a velocity limit
The smallest pipe of a material and class whose velocity stays at or under the limit.
V = Q ÷ (π D² ÷ 4); first size with V ≤ V_max
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Duct size for a flow
A duct sized by equal friction, returned in millimeters.
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Drain sizes by fixture units
The smallest drain size that carries the fixture units reaching each sanitary run, never smaller than what flows into it.
grow when needed nominal > drawn nominal + 1e-9
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Pipe and duct schedules
Total length and piece count per pipe size, and length and surface per duct size.
length = Σ stored piece lengths; surface = Σ perimeter × length
Pipe and duct runs: layout, lengths and sizing mep-model.js64-bit- BimCraft
-
Friction rate of a round duct at the velocity limit
The pressure drop per meter used to propose a duct size when the calculation ran by velocity.
D = √(4 Q ÷ (π v)); rate = 0.02 × (1.204 ÷ D) × v² ÷ 2
Pipe and duct runs: layout, lengths and sizing mep-calc.js64-bit- BimCraft
-
Proposed duct sizes
The width and height proposed for each duct run that is too small or too fast.
size for the largest flow in the run, rounded to 1 mm
Pipe and duct runs: layout, lengths and sizing mep-calc.js64-bit- BimCraft
-
Reading a typed slope
Turns '1/4"/ft', '2%', '1:50' or '0.02' into rise per run.
inch per foot ÷ 12; percent ÷ 100; 1 ÷ n
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Schedule totals
The total length, piece count and duct surface shown under the pipe and duct schedules.
ft² = mm² ÷ 92903.04
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Runs handed to the takeoff
The plan length, pitch and surface height of pipe and duct pieces passed to TakeoffCraft.
pitch = atan(slope) × 180 ÷ π; heightFt = perimeter ÷ 304.8
Pipe and duct runs: layout, lengths and sizing mep-ui.js64-bit- BimCraft
-
Weighted sound reduction index
Rw and the adaptation terms C and Ctr from sixteen third-octave sound reduction values.
highest shift s with Σ max(0, ref + s − R) ≤ 32; Rw = ref₅₀₀ + s; C = round(X_A − Rw)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Spectrum adaptation sum
The A-weighted level difference for a reference spectrum.
X_A = −10 lg Σ 10^((Lⱼ − Rⱼ) ÷ 10)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Weighted impact sound level
Ln,w and the adaptation term CI from sixteen third-octave impact levels.
lowest shift s with Σ max(0, L − (ref + s)) ≤ 32; Ln,w = ref₅₀₀ + s; CI = round(10 lg Σ 10^(L ÷ 10) − 15 − Ln,w)
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Mass law
The sound reduction of a single-leaf wall from its mass per area and the frequency.
R = 20 lg(m × f) − 47
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Critical frequency
The frequency at which a panel's bending wave matches the speed of sound in air.
fc = c² ÷ (2π h) × √(12 ρ (1 − ν²) ÷ E), c = 343
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Mass-law reduction by octave band
The mass-law value in the octave bands from 125 to 4000 Hz, up to half the critical frequency.
m = ρ × h; R(f) for f ≤ fc ÷ 2
Sound insulation ratings and the mass law insul.js64-bit- BimCraft
-
Replacement years, cost and present value
Every replacement in the study period with its cost, and the totals by year and by part.
t = t₀ + k × life; cost = q × c × (1 + i)^t; PV = cost ÷ (1 + r)^t
Replacement schedule and cost over the building's life lifecycle.js64-bit- BimCraft
-
Replacement schedule as CSV
The schedule and the year-by-year costs written as text.
money = round(x × 100) ÷ 100; carbon = round(x × 10) ÷ 10
Replacement schedule and cost over the building's life lifecycle.js64-bit- BimCraft
-
Quantities of the building's parts
Window area, door counts, exterior wall area, room finishes, roof area and stairs taken from the model.
wall = Σ perimeter ÷ 1000 × height − openings; window = w ÷ 1000 × h ÷ 1000; quantity = round(q × 100) ÷ 100
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Age of an installed item
Years between an item's install date and today.
age = (today − installed) ÷ (365.25 days)
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Quantities of the building services
Equipment by class, meters of pipe and duct, and an estimate of the wiring.
pipe = round(Σ |pᵢ − pᵢ₋₁| ÷ 1000, 2); wiring = round(Σ nearest distances ÷ 1000 × 1.25, 2)
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Carbon per unit of each part
The embodied carbon of one unit of a part, from the model's carbon totals.
kg per unit = Σ carbon of the part's elements ÷ quantity
Replacement schedule and cost over the building's life lifecycle-model.js64-bit- BimCraft
-
Reading WAV samples
The first channel of a WAV file as numbers between −1 and 1.
x = sample ÷ 2^(bits − 1)
Room acoustic measures from an impulse response metrics.js32-bit in part- BimCraft
-
Decay time from a line fit
A decay time from the slope of the least-squares line through part of the decay curve.
slope = (m Σ t d − Σ t Σ d) ÷ (m Σ t² − (Σ t)²); T = 60 ÷ −slope
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Decay curve, clarity, definition and center time
The energy decay curve and the measures read from it.
curve = 10 lg(∫ₜ p² ÷ ∫₀ p²); C = 10 lg(early ÷ late); D50 = early ÷ total; Ts = Σ t p² ÷ Σ p²
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Predicted against measured
The difference between a predicted and a measured value in each band, against the just-noticeable difference.
within when |predicted − measured| ≤ JND
Room acoustic measures from an impulse response metrics.js64-bit- BimCraft
-
Circle of an arc
The center, radius, angle and length of the arc between two points with a bulge.
θ = 4 atan(b); h = b c ÷ 2; R = ((c ÷ 2)² + h²) ÷ (2 |h|); length = R |θ|
Curved walls model-arcs.js64-bit- BimCraft
-
Chord of an arc of a given length
The straight distance between the ends of an arc of a given length and bulge.
chord = len × sin(θ ÷ 2) ÷ (θ ÷ 2)
Curved walls model-arcs.js64-bit- BimCraft
-
Arc height and bulge
How far the arc's middle stands off its chord, and the bulge for a typed height.
height = −b × c ÷ 2; b = −2 h ÷ c
Curved walls model-arcs.js64-bit- BimCraft
-
Arc through three points
The bulge of the arc from a through p to b.
d = 2 (a_x (p_y − b_y) + p_x (b_y − a_y) + b_x (a_y − p_y)); bulge = tan(θ ÷ 4)
Curved walls model-arcs.js64-bit- BimCraft
-
Chords of an arc
The points between an arc's ends when it is drawn or saved as straight pieces.
n = max(1, ⌈|θ| ÷ step⌉); point = C + R (cos f, sin f)
Curved walls model-arcs.js64-bit- BimCraft
-
Points along and off a wall
A point at a distance along a wall and an offset to its left, and the reverse, for straight and curved walls.
curved: p = C + (R − off × sg) (cos φ, sin φ), φ = a₀ + sg × s ÷ R
Curved walls model-arcs.js64-bit- BimCraft
-
Where an opening sits in a curved wall
The position and angle of a door or window in the wall's own axes, square to the wall at the opening's middle.
O = at(off + w ÷ 2) − T × w ÷ 2; angle = atan2(T) − chord angle
Curved walls model-arcs.js64-bit- BimCraft
-
Offset of an opening read back
The distance along a curved wall of an opening, from the matrix that places it.
offset = s(middle) − w ÷ 2
Curved walls model-arcs.js64-bit- BimCraft
-
Opening body in a curved wall
The four corners of the body that cuts an opening through a curved wall, with jambs along the radius.
half = w ÷ R ÷ 2; outer radius = r ÷ cos(half)
Curved walls model-arcs.js64-bit- BimCraft
-
Axis curve saved for a curved wall
The circle and its two trim points written as the wall's axis.
circle of radius R about the center in the wall's axes, trimmed from (0, 0) to (chord, 0)
Curved walls model-arcs.js64-bit- BimCraft
-
Profile with arc edges
The closed outline of a curved wall written with true arcs (IFC4) or chords (IFC2X3).
arc edge = start, middle of the arc, end
Curved walls model-arcs.js64-bit- BimCraft
-
Height of a column
The height a column is built with: up to its top level plus an offset, else its fixed height.
h = top elevation − own elevation + offset
Columns: height and quantities model-columns.js64-bit- BimCraft
-
Cross-section area and volume
The quantities written on a column.
area = π (w ÷ 2)² or w × d; volume = area × h
Columns: height and quantities model-columns.js64-bit- BimCraft
A calculation is added only after its source was read. Each statement can be checked in the code shown on its policy's page; the app repositories are public. When a release changes a calculation, its page says so until it has been read again.