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
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
Point inside the room
Whether a point lies inside the room outline.
Sprinkler layout and hydraulic calculation addons/sprinkler/lib/layout.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
Matrix product
The product of two 4 × 4 matrices.
IFC units and placements ifc/geo-math.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
Point through a matrix
Transforms a point by a matrix.
p' = M · (x, y, z, 1)
IFC units and placements ifc/geo-math.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
-
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.js64-bit- BimCraft
- TakeoffCraft
- CivilCraft
- DetailCraft
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.