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
-
Matching walls to the rating asked for
Which walls are rated exactly, or at least, the time asked for.
want = minutes, or hours × 60; match: minutes ≥ want, or minutes = want
Assistant answers: fire ratings and room areas ask-tools.js64-bit- BimCraft
-
Rooms under or over an area
The rooms smaller or larger than a limit, with each area in square meters and square feet.
limit in m² = limit in sq ft × 0.09290304; area in sq ft = area ÷ 0.09290304
Assistant answers: fire ratings and room areas ask-tools.js64-bit- BimCraft
-
Rounding to a number of decimals
A value rounded to three decimals (or another count) for the workbook.
round(x, d) = Math.round(x × 10ᵈ) ÷ 10ᵈ
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Lengths and areas written to the sheet
Floor elevation and height, room height and room areas as the workbook holds them.
length = round(x × k, 3); area = round(x × k², 3)
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Floor height
The height of each floor, from its elevation to the next floor's.
height = elevationₙ₊₁ − elevationₙ
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Warranty duration in years
The length of a warranty from its start and end dates.
years = (end − start) ÷ (365.25 × 86400000 ms), rounded to 0.1
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Expected life read from a workbook
A type's expected life in years, from a value in years, months, weeks or days.
years = months ÷ 12, weeks ÷ 52.1775, days ÷ 365.25; rounded to 0.1
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Warranty end date from its duration
The day a warranty ends, when the workbook gives only its start and its length in years.
end = start + round(years × 12) months
COBie export: sizes, areas and durations assets-bim-cobie.js64-bit- BimCraft
-
Service life read from the file
The service life shown in the asset form, in years.
years = seconds ÷ 31557600, or Y + M ÷ 12; rounded to 0.1
Asset service life and maintenance due dates assets-bim.js64-bit- BimCraft
-
Service life written to the file
The service life as the IFC property holds it.
IFC2x3: seconds = round(years × 31557600); IFC4: 'P' + years + 'Y'
Asset service life and maintenance due dates assets-bim.js64-bit- BimCraft
-
Day number of a date
A calendar date as a count of days since 1970-01-01.
day = round(ms at 00:00 UTC ÷ 86400000)
Asset service life and maintenance due dates assets-bim.jsExact- BimCraft
-
Overdue or due soon
Whether an asset's next maintenance date has passed or falls within 30 days.
d = day(next due) − day(today); overdue if d < 0; soon if d ≤ 30
Asset service life and maintenance due dates assets-bim.jsExact- BimCraft
-
Reading text as a number
A cell of a sensor file as a value.
Sensor readings: values, times and limits assets-bim-sensors.js64-bit- BimCraft
-
Time text as milliseconds
The time of a reading, from Unix time or a written date and time.
Unix seconds × 1000; with a zone: UTC ms − sign × (hh × 60 + mm) × 60000
Sensor readings: values, times and limits assets-bim-sensors.js64-bit- BimCraft
-
High or low against the limits
Whether a reading is above the asset's high limit or below its low limit.
high if v > high; low if v < low
Sensor readings: values, times and limits assets-bim-sensors.js64-bit- BimCraft
-
Room floors and opening sills for flooding
Each room's floor height above the lowest level and each opening's sill height, in meters.
floor = (elevation − lowest elevation) ÷ 1000; sill = max(0, sill) ÷ 1000
Building data for flood, wind and earthquake checks hazard-model.js64-bit- BimCraft
-
Storey height, area, width and mass
The storey data the wind and earthquake checks use, from the model's levels and outlines.
area = Σ |outline area| ÷ 1e6; h = (next elevation − elevation) ÷ 1000; z = (elevation − datum) ÷ 1000 + h ÷ 2; mass = area × mass per m²; T1 = 0.1 × storeys when not given
Building data for flood, wind and earthquake checks hazard-model.js64-bit- BimCraft
-
Storey data from the analysis frame
The same storey data when the stiffness comes from the structural frame instead of a typed period.
z = (floor z − base) ÷ 1000 − h ÷ 2; width = extent of the nodes within 150 mm of the floor
Building data for flood, wind and earthquake checks hazard-model.js64-bit- BimCraft
-
Millimeters per unit of one IFC unit
The size in millimeters of an SI or conversion-based length unit.
mm per unit = prefix table value, or conversion factor × mm of the base unit
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
Length unit of the file
The millimeters per length unit of the open file, from its project units.
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
Product of two 4 × 4 matrices
Two placements combined into one.
(A·B)ᵣ꜀ = Σₖ Aᵣₖ × Bₖ꜀
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
A point moved by a matrix
A point in one frame as a point in another.
p′ = M · (x, y, z, 1)
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
Inverse of a 4 × 4 matrix
The matrix that undoes a placement.
M⁻¹ = adj(M) ÷ det(M)
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
Where a federated model goes
The matrix that puts a second model in the first model's coordinates, moved by an offset.
M = T(offset) · C_ref · C⁻¹
IFC length unit and placement matrices ifc-util.js64-bit- BimCraft
-
Placed point in millimeters
A point of an element's own frame in the file's coordinates, in millimeters.
p = (M · (x, y, z, 1)) × unitMm
Field layout points from the model layout-bim.js64-bit- BimCraft
-
Wall axis ends
The two ends of a wall's axis as field points.
Field layout points from the model layout-bim.js64-bit- BimCraft
-
Points in the unit and coordinates asked
The field points in meters, millimeters or feet, in model or survey coordinates.
k = 1 ÷ (mm per unit); model: x × k; survey: E × 1000 × k
Field layout points from the model layout-bim.js64-bit- BimCraft
-
Material a set of cuts needs
The bar length a group of cuts takes, with trim and saw kerf.
need = trim + Σ lengths + kerf × cuts
Cut-list nesting of bars nest.js64-bit- BimCraft
- DetailCraft
-
Nesting pieces on stock bars
Which pieces are cut from which bar, each bar's drop, and the bought, used and waste totals.
length = round(length × 10) ÷ 10; fits if need ≤ stock + kerf; drop = stock − trim − used − kerf × cuts; waste = 1 − used ÷ bought
Cut-list nesting of bars nest.js64-bit- BimCraft
- DetailCraft
-
Cut list tables
The summary per profile and the list of bars as printed.
m = mm ÷ 1000, 2 decimals; waste % = waste × 100, 1 decimal
Cut-list nesting of bars nest.js64-bit- BimCraft
- DetailCraft
-
Module voltage at a temperature
The open-circuit voltage of a module at a cell temperature.
V(T) = V × (1 + β × (T − 25))
Solar string sizing pv-string.js64-bit- BimCraft
- CivilCraft
-
Longest and shortest string
The most and the fewest modules a string may have.
nMax = min(⌊V_limit ÷ (Voc,cold × f) + 1e-9⌋, ⌊MPPT max ÷ Vmp,cold + 1e-9⌋); nMin = ⌈MPPT min ÷ Vmp,hot − 1e-9⌉
Solar string sizing pv-string.js64-bit- BimCraft
- CivilCraft
-
String length and number of strings
The string length inside the window that leaves the fewest modules over.
count = ⌊modules ÷ n⌋; left = modules − count × n
Solar string sizing pv-string.jsExact- BimCraft
- CivilCraft
-
String voltage checks
The string's cold and hot voltages against the inverter's and the system's limits.
V_string = round(n × round(V_module, 2 decimals), 2 decimals)
Solar string sizing pv-string.js64-bit- BimCraft
- CivilCraft
-
Strings per inverter input
How many strings one input can carry by its current limits, and how many inputs are needed.
per input = min(⌊I_dc max ÷ Imp + 1e-9⌋, ⌊I_sc max ÷ Isc + 1e-9⌋); inputs needed = ⌈count ÷ per input⌉
Solar string sizing pv-string.js64-bit- BimCraft
- CivilCraft
-
DC to AC ratio
The array's peak power against the inverter's AC rating.
kWp = n × count × Wp ÷ 1000; DC ÷ AC = kWp ÷ (P_ac × inverters)
Solar string sizing pv-string.js64-bit- BimCraft
- CivilCraft
-
Stair parameters
The sizes and counts the stair family is made with.
Width, Height, Gap = round(v × 100) ÷ 100; Tread, Rise = round(v × 1e4) ÷ 1e4; Rise = Height ÷ Steps
Stair family from a sketch stair-family.js64-bit- BimCraft
-
Where the stair family is placed
The insertion point and rotation that put the family on the sketch.
rot = ((angle mod 360) + 360) mod 360
Stair family from a sketch stair-family.js64-bit- BimCraft
-
Tag values of an element
An element's tags as their kinds keep them, lengths in millimeters.
length in mm = round(value × unitMm × 1e6) ÷ 1e6
Length tags and tag schedules tags.js64-bit- BimCraft
-
Tag value written to the file
A tag as the IFC property that holds it.
stored length = round(u(value) × 1e6) ÷ 1e6
Length tags and tag schedules tags.js64-bit- BimCraft
-
Schedule rows and groups
The rows of a tag schedule and the groups they fall in.
length column = round(value × unitMm × 1e6) ÷ 1e6
Length tags and tag schedules tags.js64-bit- BimCraft
-
Sizes a spec allows
The pipe sizes between the spec's smallest and largest.
min − 1e-9 ≤ nominal ≤ max + 1e-9
Pipe spec rules addons/plant/lib/spec.js64-bit- BimCraft
-
How a branch is made
Whether a branch on a header is a tee, a reducing tee or a stub-in.
ratio = branch ÷ header; rule = first with ratio ≤ limit + 1e-9
Pipe spec rules addons/plant/lib/spec.js64-bit- BimCraft
-
Bend radius of a spec
The center-line radius of the spec's elbows for a size, in inches.
short: max(nominal size, outside diameter); long: the table's radius
Pipe spec rules addons/plant/lib/spec.js64-bit- BimCraft
-
Starter door sizes
Width and height of each starter door type in millimeters.
width = inches × 25.4
Starter door and window sizes opening-types.js64-bit- BimCraft
-
Starter window sizes
Width, height and sill height of each starter window type in millimeters.
size = inches × 25.4
Starter door and window sizes opening-types.js64-bit- BimCraft
-
Reading time of a line
How long a spoken line takes, for placing the next one.
max(2, round(words ÷ 2.5, 1 decimal))
Narration cue times narration.js64-bit- BimCraft
-
Cue times from a script
The start time of each cue from a typed script, and the squeeze when the speech is longer than the walk.
t = round(min × 60 + s, 1 decimal); squeezed t = round(t × duration ÷ end, 1 decimal)
Narration cue times narration.js64-bit- BimCraft
-
Subtitle timestamp
A cue time as an SRT or WebVTT timestamp.
ms = round(s × 1000); h, m, s, ms by integer division
Narration cue times narration.js64-bit- BimCraft
-
Stored size, roughness and bump
The numbers saved with a photo material.
x = round(clamp(x) × 100) ÷ 100
Photo material settings photo-materials.js64-bit- BimCraft
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.