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

  • Openable share of a window

    How much of a window opens, from its type name.

    fixed, picture, transom: 0; hung: 0.5; anything else: 1

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    Exact
  • Net clear opening of a window

    The clear width, height and area of a window for the escape opening rules, estimated from its type.

    hung: w × h ÷ 2; slider: w ÷ 2 × h; other opening types: w × h; fixed: 0

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Least width of a room

    The narrowest width across a room outline, used for the least room dimension and hall width rules.

    min over edges of (max − min of p · n), n = unit normal of the edge

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Window area credited to a room

    Adds each window's area and openable area to the room on either face of its wall.

    center = a + u × (offset + width ÷ 2); area = width × height; open = area × share

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Ceiling height, light and ventilation of a room

    The values compared with the ceiling height, natural light and ventilation rules.

    ceiling = lowest wall height on the level; light % = window area ÷ floor area × 100; vent % = openable area ÷ floor area × 100

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Egress door clear width

    Finds the widest exterior door and its clear width and height for the egress door rules.

    clear width = max(0, leaf width − 50.8)

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Position of a point along a room's perimeter

    The distance along the room outline to the point nearest an outlet or a door, and the outline's total length.

    s = Σ earlier edge lengths + t × L; t = clamp(((p − a) · (b − a)) ÷ L², 0, 1)

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Longest distance to an outlet along the wall

    The greatest distance, measured along the floor line, from any point of a wall space to an outlet in that space.

    per wall space: max(first, length − last, half of each gap between neighbors); a space with no doorway: (first + length − last) ÷ 2

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Numbers in the regulation schedule

    Formats a found value or a limit for the schedule table.

    percent: 1 decimal; m²: 2 decimals; ratio and U-value: 2 decimals; R-value: 1 decimal; count: whole number

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Rooms and doors of the escape routes

    Builds the graph of rooms and the doors that join them or lead outside, with each door's clear width.

    clear width = max(0, leaf width − 50.8)

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/route.js
    • BimCraft
    64-bit
  • Narrowest door on the way out of a room

    The finding for each room: the narrowest door on its best way out against the pack's egress width.

    utilization = minimum ÷ bottleneck; stated width = round(bottleneck)

    Regulation checks of rooms, doors, windows and outlets addons/regs/lib/route.js
    • BimCraft
    64-bit
  • Footing width and thickness from the table

    The footing size the pack's table gives for the number of stories, the foundation type, the snow load and the soil pressure.

    width = inches × 25.4; thickness = inches × 25.4

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Footing depth below grade

    The depth of the footing's underside below grade compared with the rule and the frost depth.

    required = max(rule, frost depth); found = max(0, depth below the floor − 6 × 25.4)

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Feet and inches in a table cell

    Turns a span written as feet-inches in a table into millimeters.

    mm = (feet × 12 + inches) × 25.4

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Header span from the table

    The allowed span of a header for its size, what it carries, the snow load and the building width.

    span = a + (b − a) × (w − lo) ÷ (hi − lo), w = building width ÷ 304.8

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Span of a header in the model

    The span of a framed header compared with the table.

    span = max(0, length − 3 × 25.4)

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • Stud height and spacing from the table

    The greatest stud height and spacing the table allows for a stud size, bearing or not, and the floors above.

    height = feet × 304.8; spacing = inches × 25.4

    Regulation limits read from the pack's tables addons/regs/lib/check.js
    • BimCraft
    64-bit
  • 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
  • SI value of a file unit

    Meters per file length unit and radians per file angle unit.

    SI unit: 10^prefix; conversion-based unit: factor × factor of its base unit; by name: degree π ÷ 180, inch 0.0254, foot 0.3048

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Axis placement as a matrix

    The matrix of an IfcAxis2Placement3D, 2D or IfcAxis1Placement.

    columns = (x, z × x, z, origin), x = reference direction projected square to z

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • First projection axis

    The X axis of a placement: the reference direction projected into the plane normal to Z.

    x = normalize(v − z (v · z))

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Cartesian transformation operator

    The matrix of an IfcCartesianTransformationOperator, uniform or not, in 2D or 3D.

    columns = (x s₁, y s₂, z s₃, origin)

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • World matrix of a placement

    The position of an element in the model from its chain of relative placements.

    world = parent world × local

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Grid placement

    The point where two grid axes meet, with their offsets, as a placement.

    t = ((pB − pA) × dB) ÷ (dA × dB); point = pA + dA t

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Map conversion

    The matrix that takes model coordinates to map coordinates, with its rotation and scale.

    map = (E, N, H) + R(θ) · S · model; θ = atan2(ordinate, abscissa)

    IFC units and placements ifc/geo-ctx.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Matrix product

    The product of two 4 × 4 matrices.

    IFC units and placements ifc/geo-math.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Point through a matrix

    Transforms a point by a matrix.

    p' = M · (x, y, z, 1)

    IFC units and placements ifc/geo-math.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Matrix inverse

    The inverse of a 4 × 4 matrix, or null when it has none.

    M⁻¹ = adjugate ÷ determinant

    IFC units and placements ifc/geo-math.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Rotation about an axis

    The matrix that turns by an angle about an axis through the origin.

    R = c I + s [a]× + (1 − c) a aᵀ

    IFC units and placements ifc/geo-math.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Polygon normal

    The normal of a 3D polygon, with a length of twice its area.

    n = Σ ((yₐ − y_b)(zₐ + z_b), (zₐ − z_b)(xₐ + x_b), (xₐ − x_b)(yₐ + y_b))

    IFC units and placements ifc/geo-math.js
    • BimCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    64-bit
  • Signed area of a 2D polygon

    The area of a profile outline, positive when counter-clockwise; used to orient outlines and holes.

    A = Σ (xₐ y_b − x_b yₐ) ÷ 2

    IFC units and placements ifc/geo-math.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.