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

  • Joist and rafter span from the table

    The allowed span of a joist or rafter size at its spacing.

    column = first listed spacing ≥ spacing ÷ 25.4 − 0.05; span = least span of the listed species

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Horizontal span of a rafter

    The span of the longest rafter or ceiling joist measured on the horizontal, compared with the table.

    span = sloped length × cos(pitch × π ÷ 180)

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Insulation R-value of a wall type

    The nominal R-value of a wall type's cavity and continuous insulation layers, in imperial units.

    R = thickness (mm) ÷ 1000 ÷ λ × 5.678263

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Wall insulation against the table's options

    Whether a wall type's insulation meets any of the cavity and continuous options of its climate zone.

    met if cavity + 0.05 ≥ option cavity and continuous + 0.05 ≥ option continuous, for any option

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • K-factor in SI units

    Converts a head's K-factor from L/min per √bar to m³/s per √Pa.

    k = K ÷ 1000 ÷ 60 ÷ √100000

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Pipe friction

    The friction loss in pascals per meter of pipe for a flow, an inside diameter and a roughness coefficient C.

    Δp per m = 10.67 × Q^1.852 ÷ (C^1.852 × D^4.871) × 998.2 × 9.80665

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Pipe sizes

    Chooses for each pipe the smallest steel schedule 40 size that keeps the velocity within the limit.

    Q = heads below × flow per head ÷ 1000 × 1.15; v = Q ÷ (π d² ÷ 4) ≤ vmax

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Design areas to test

    The groups of heads tried as the design area: blocks of rows at the far and near ends of the branch lines.

    heads = ceil(area ÷ coverage); per row m = ceil(1.2 × √area ÷ spacing); rows = ceil(heads ÷ m)

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Minimum flow and pressure at a head

    The least flow and pressure every operating head must have.

    q = density ÷ 1000 ÷ 60 × coverage; P = max((q ÷ k)², minimum head pressure)

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Pressures and flows for a source pressure

    The pressure at every node and the flow in every pipe when the source is at a given pressure and each operating head discharges K √P.

    P(b) = P(a) − friction × (length + equivalent length) − ρ g Δz

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Lowest source pressure

    The lowest source pressure at which every operating head has its minimum.

    upper bound doubled from 200000 Pa until it works, then halved 40 times

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Head and pipe results

    Each head's flow, pressure and density, each pipe's flow, velocity and pressure drop, and the total flow.

    density = q × 1000 × 60 ÷ coverage; v = Q ÷ (π D² ÷ 4); total = Σ head flows

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Supply pressure at a flow

    The pressure the water supply gives at a flow, from the static and residual pressures of a flow test.

    P = Ps − (Ps − Pr) × (Q ÷ Qr)^1.85

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Required against available pressure

    Takes the design area needing the most pressure, adds the hose allowance and margin, and compares with the supply.

    Q total = Q heads × 60 + hose; required = P source ÷ 100000 + margin; ok if available ≥ required − 10⁻⁹

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/hydraulics.js
    • BimCraft
    64-bit
  • Head spacing

    The number of heads each way and their spacing, the largest the hazard's maximum spacing and coverage allow.

    nx = ceil(W ÷ maxS − 10⁻⁹); ny likewise; raised until (W ÷ nx)(D ÷ ny) ≤ max coverage; sx = W ÷ nx

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js
    • BimCraft
    64-bit
  • Point inside the room

    Whether a point lies inside the room outline.

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js
    • BimCraft
    64-bit
  • Head in a partly filled cell

    Moves the head of a grid cell the room only partly fills to the middle of the part inside.

    position = mean of the cell's 6 × 6 sample points that lie inside

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js
    • BimCraft
    64-bit
  • Uncovered share of the room

    The share of the room farther than 0.75 × the allowed spacing from every head.

    uncovered = samples with no head within 0.75 × maxS ÷ samples inside the room

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js
    • BimCraft
    64-bit
  • Pipe length and rise

    The length in meters and the rise of each pipe of the network from its two end points.

    length = √(Δx² + Δy² + Δz²) ÷ 1000; dz = Δz ÷ 1000

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js
    • BimCraft
    64-bit
  • Sprinkler properties in the model

    The K-factor, coverage, design density and hazard class written on each placed head.

    CoverageM2 = round(coverage × 100) ÷ 100

    Sprinkler layout and hydraulic calculation addons/sprinkler/lib/place.js
    • BimCraft
    64-bit
  • Segments of an arc

    How many chords replace an arc of a given sweep.

    n = max(2, ceil(|sweep| ÷ 2π × 36))

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    Exact
  • Arc through three points

    The circular arc of an indexed poly-curve from its start, middle and end points.

    center = a + ((|ab|² (ac × n)) + (|ac|² (n × ab))) ÷ (2 |n|²), n = ab × ac

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Circle and ellipse points

    Points on a circle or ellipse between two parameters.

    p = M · (r₁ cos θ, r₂ sin θ, 0), θ = a₀ + sweep × i ÷ n

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Trimmed curve

    The part of a line, circle, ellipse or other curve between two trims given as parameters or points.

    conic: angle = parameter × angle unit, or atan2 of the trim point in the conic's frame

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • B-spline curve points

    Points on a B-spline curve, rational or not, at 12 evenly spaced parameters per knot span.

    de Boor: d_j = (1 − a) d_{j−1} + a d_j, a = (u − k_i) ÷ (k_{i+p+1−r} − k_i); point = (x, y, z) ÷ w

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Offset of a polyline

    A 2D polyline moved to its left by a distance, with mitered corners.

    p' = p + n × d ÷ max(0.2, n · n₁), n = normalized sum of the two edge normals

    IFC curves and profiles as point lists ifc/geo-curve.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Circle and ellipse profiles

    The outline of a circular, hollow circular or elliptical profile.

    (r₁ cos a, r₂ sin a), a = 2π i ÷ 36

    IFC curves and profiles as point lists ifc/geo-profile.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Fillets and edge radii

    Replaces corners of a profile outline with arcs of given radii tangent to both edges.

    d = r ÷ tan(half); center = corner + bisector × r ÷ sin(half), half = half the corner angle

    IFC curves and profiles as point lists ifc/geo-profile.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • I-shape outline

    The outline of a symmetric or asymmetric I-section with flange slopes, fillets and edge radii.

    inner flange face = thickness + tan(slope) × distance from the quarter point of the outstand

    IFC curves and profiles as point lists ifc/geo-profile.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Closing an outline

    Drops repeated points of a profile curve and its closing point.

    IFC curves and profiles as point lists ifc/geo-profile.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Straight extrusion

    The solid of a profile swept along a direction by a depth, with end caps and sides.

    top = bottom + direction × depth

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Side face of a sweep

    Adds a four-sided face as one flat face or as two triangles.

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Revolved solid

    The solid of a profile turned about an axis by an angle.

    p_k = o + R(axis, angle × k ÷ steps) · (p − o), steps = 36 per full turn

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Frames along a path

    The tangent, normal and binormal at each point of a 3D polyline, and the miter stretch at each bend.

    tangent = normalize(t_in + t_out); miter = 1 ÷ max(0.25, t_in · tangent)

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Normal carried round a bend

    Turns the section's normal by the rotation that takes the previous tangent to the next.

    angle = atan2(|a × b|, a · b); v' = R(a × b, angle) v, made square to b

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Swept disk

    A round bar or tube along a path, such as rebar, with an optional inner radius and bend radius.

    section = 36-sided polygon of the radius; swept on the path's frames

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Bends of a swept path

    Rounds the corners of a 3D polyline with arcs of a given radius.

    d = min(r ÷ tan(half), 0.999 × each leg); center = corner + bisector × r' ÷ sin(half)

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Sphere

    The mesh of an IfcSphere.

    (r sin θ cos φ, r sin θ sin φ, r cos θ), θ = π i ÷ 12, φ = 2π j ÷ 24

    IFC swept solids, primitives and faceted shapes ifc/geo-solid.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Outer bound of a face

    Picks the largest loop of a face as its outer bound when the file marks none.

    size = |Σ ((yₐ − y_b)(zₐ + z_b), (zₐ − z_b)(xₐ + x_b), (xₐ − x_b)(yₐ + y_b))| (twice the area)

    IFC swept solids, primitives and faceted shapes ifc/geo-brep.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Repeated points of a loop

    Drops consecutive points of a face loop that coincide, and a closing point equal to the first.

    IFC swept solids, primitives and faceted shapes ifc/geo-brep.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Point on a clothoid

    The point at a length along a clothoid from its origin.

    x = ∫₀ˢ cos(k u²) du, y = ∫₀ˢ sin(k u²) du, k = sign(A) ÷ (2A²); Simpson's rule

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Points of a curve segment

    Samples one alignment segment from its parent curve and places it at the segment's start.

    n = max(2, min(400, ceil(|length| ÷ 2))); p_i = T · f(start + length × i ÷ n)

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Distance along the alignment

    The horizontal distance of each sampled point from the start.

    d_i = d_{i−1} + √(Δx² + Δy²)

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Height from the vertical profile

    The height of each horizontal point from the alignment's vertical profile.

    z = z_lo + (z_hi − z_lo) × (d − d_lo) ÷ (d_hi − d_lo)

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Point at a station

    The position and direction on a curve at a distance along it.

    p = p_{i−1} + (p_i − p_{i−1}) × (d − d_{i−1}) ÷ (d_i − d_{i−1})

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Placement along an alignment

    The matrix of an element placed at a station with lateral, vertical and longitudinal offsets.

    origin = p + left × lateral + (0, 0, vertical) + heading × longitudinal

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Solid between cross sections

    The solid of an IfcSectionedSolidHorizontal: cross sections placed across the alignment at their stations and joined.

    ring point = o + x × ((1 − f) a_x + f b_x) + y × ((1 − f) a_y + f b_y), f = (d − d₀) ÷ (d₁ − d₀)

    IFC alignment curves and stations ifc/geo-align.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Cylinder and cone

    A point on a cylindrical or conical surface from (u, v), and (u, v) from a point.

    p = o + (r + v tan α)(x cos u + y sin u) + z v; u = atan2(d · y, d · x), v = d · z

    IFC faces on curved surfaces ifc/geo-nurbs.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Swept curve by length

    The generating curve of an extruded or revolved surface as a polyline with a length parameter.

    s_i = s_{i−1} + |p_i − p_{i−1}|; point at s by linear interpolation

    IFC faces on curved surfaces ifc/geo-nurbs.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • B-spline basis functions

    The non-zero basis functions of a B-spline at a parameter.

    Cox-de Boor: N_r = saved + right × N_r ÷ (right + left)

    IFC faces on curved surfaces ifc/geo-nurbs.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    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.