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.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • Duct size for a flow

    A duct sized by equal friction, returned in millimeters.

    Pipe and duct runs: layout, lengths and sizing mep-model.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    32-bit in part
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit
  • 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.js
    • BimCraft
    64-bit

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.