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

  • Leg dimension

    The dimension line beside each leg and the number on it.

    real = √(Δx² + Δy² + Δz²) of the leg's 3D ends

    Piping isometric drawing and its bill of materials addons/plant/lib/iso.js
    • BimCraft
    64-bit
  • Coordinates in the DXF file

    Formats paper coordinates, text heights and text angles for the DXF output.

    num(v) = v rounded to 4 decimals

    Piping isometric drawing and its bill of materials addons/plant/lib/iso.js
    • BimCraft
    64-bit
  • Coordinates in the SVG file

    Formats paper coordinates for the SVG output and flips Y to run downward.

    f(n) = n to 2 decimals; Y = paper height − y

    Piping isometric drawing and its bill of materials addons/plant/lib/iso.js
    • BimCraft
    64-bit
  • Corners of an item

    The four corners in plan of an item of given width, depth, position and turn.

    corner = (x₀ + x cos a − y sin a, y₀ + x sin a + y cos a), a = rot × π ÷ 180

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Access strips

    The strips beside each side of an item that must stay free, as turned rectangles.

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Overlap of two convex polygons

    Whether two items, or an item and an access strip or obstacle, overlap by more than a sliver.

    separated if maxA ≤ minB + tol or maxB ≤ minA + tol on any edge normal; tol = 1

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Distance from a point to a segment

    The shortest distance from a corner of one item to an edge of another.

    t = clamp(((p − a) · (b − a)) ÷ |b − a|², 0, 1); d = |p − (a + t (b − a))|

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Gap between two items

    The least distance between two items that do not overlap, compared with the minimum aisle width.

    gap = min over corners and edges of the point-to-segment distance

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Floor load of an item

    The weight of an item divided by its footprint area, compared with the floor load limit.

    load = weight ÷ (area ÷ 10⁶) in kg per m²; area = |Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ)| ÷ 2

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Footprint of Plant equipment

    The width, depth, height and center of a piece of Plant equipment for the layout, from its bounding box.

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Flow path length

    The length of the path through a sequence of items, measured center to center along X then Y.

    L = Σ (|Δx| + |Δy|)

    Factory layout checks addons/plant/lib/layout.js
    • BimCraft
    64-bit
  • Legs of a route

    The straight legs of a route with their axis and length.

    axis = first of x, y, z with |Δ| > 10⁻⁶; length = |Δ| on that axis

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Route against obstacles

    Whether the center line of a route comes within a clearance of any obstacle box.

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Grid lines of the search

    The X, Y and Z coordinates at which a route may turn.

    lines = nozzle and lead coordinates, obstacle faces ± clearance, levels, two outer lines, and the midpoint of each neighboring pair

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Search state and the minimum leg

    The key that identifies a search state: grid node, direction and the length of the current leg.

    cap = round(minLeg); key = ((node × 6 + direction) × (cap + 1)) + min(cap, round(run))

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Cost of a step

    The cost added for moving to the next grid node.

    cost = g + step × (1 + climbCost if vertical, else 1) + (bendCost if the direction changes)

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Route points and length

    The final corner points of the route with collinear points removed, its length, bends and climbs.

    length = Σ leg lengths; bends = legs − 1

    Orthogonal pipe router addons/plant/lib/route.js
    • BimCraft
    64-bit
  • Openings and walls on a room's edge

    Finds the doors, windows and walls that lie on the outline of a room.

    t = clamp(((p − a) · (b − a)) ÷ |b − a|², 0, 1); d = |p − a − t (b − a)|; on the edge if d ≤ tolerance

    Rooms handed to add-ons with their doors, windows and walls addons/bimcraft-api.js
    • BimCraft
    64-bit
  • 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

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.