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

  • Sample pieces of a room's surface

    Cuts each triangle of the room's shell into small pieces and starts one ray from each.

    k = ⌈longest edge ÷ 0.25 m⌉; k² pieces of area (triangle area ÷ k²); start = piece center + 1e-4 m × normal

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • What lies beyond a bounding element

    Whether a piece of the room's surface faces another room, the ground or the outside.

    probe = start + normal × (farthest crossing + 0.25 m)

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • Window and door areas

    Sets each window's and door's area to its own width times height and takes the difference from its wall.

    A = OverallWidth × OverallHeight (in m); wall area = wall area − (A − sampled area)

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • U-value from material layers

    The U-value of an element from the thickness and conductivity of its layers.

    U = 1 ÷ (Rsi + Σ dᵢ ÷ λᵢ + Rse); Rsi, Rse = 0.13, 0.04 sideways; 0.10, 0.04 upward; 0.17, 0.04 downward

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • Heating load, annual energy and cooling peak

    Each room's design heat loss, its degree-day year and its cooling peak.

    H_vent = 0.335 × n × V; heat = H_out·ΔT + H_ground·ΔT_g + H_vent·ΔT; annual kWh = (H_out + H_vent + H_ground × ΔT_g ÷ ΔT) × DD × 24 ÷ 1000

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • Degree-days from a CSV file

    The sum of the degree-day column of a CSV file, for a year.

    total = Σ of the last numeric cell of each row

    Heating and cooling loads per room energy-bim.js
    • BimCraft
    64-bit
  • A number in the file

    A value written into the input file as text.

    text = round(x × 10ᵈ) ÷ 10ᵈ, d = 4 unless stated

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Triangles grouped into planes

    The triangles of a room's shell sorted into the flat faces they belong to.

    key = (round(1000·n), round(1000·d)), n = unit normal, d = n · A

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Outline of a face

    One polygon from the triangles of a flat face.

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Which way a polygon faces

    The normal of a polygon, used to order its corners counter-clockwise seen from outside.

    n = Σ ((yᵢ − yⱼ)(zᵢ + zⱼ), (zᵢ − zⱼ)(xᵢ + xⱼ), (xᵢ − xⱼ)(yᵢ + yⱼ))

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Construction by U-value

    The thermal resistance written for a wall, roof or floor that has no layer build-up.

    R = max(0.001, 1 ÷ U − Rs), Rs = 0.17 wall, 0.14 roof, 0.21 floor

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Mean U-value of a room's walls, roof and floor

    The area-weighted U-value of each kind of surface in a room.

    U = Σ (Aᵢ × Uᵢ) ÷ Σ Aᵢ

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Boundary of a surface

    Whether a surface of a room faces another room, the ground or the outside, and its corners as written.

    probe = mean of the corners + 0.6 m × outward normal

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Window rectangle on its wall

    The four corners of a window as written on the wall it faces.

    k = √(area ÷ (span × height)); half width = span × k ÷ 2; half height = height × k ÷ 2; corners projected onto the wall plane

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Glazing written for every window

    The one window construction every window in the file uses.

    U = 1.4 W/m²K, solar heat gain 0.6, visible transmittance 0.7

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Site and time zone

    The latitude, longitude and time zone written to the file.

    time zone = round(longitude ÷ 15)

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Design loads read back

    Each zone's design heating and cooling load in watts, from the engine's sizing report.

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Yearly energy per zone

    Each zone's yearly heating and cooling energy in kilowatt-hours.

    kWh = J ÷ 3.6 × 10⁶

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Difference between the two methods

    How far the engine's design loads are from the quick loads, per room.

    ratio = (engine − quick) ÷ quick

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • Rooms the two methods disagree on

    A note for each room whose design heating differs by more than 15 %.

    note when |ratio| > 0.15

    Energy model input file (IDF) and its results energy-ep.js
    • BimCraft
    64-bit
  • A parameter's value as kept

    A typed or imported value made safe for its kind.

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • When two sizes are the same

    The key that tells one size of a family from another.

    key = every input value rounded to 0.001

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Parameters driven by formulas

    The value of every parameter that has a formula.

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • A solid's numbers

    The evaluated box, profile, depth, axis, angle, path and radius of each solid, and the check that it is not flat.

    box = (min, max) of each pair; a negative depth moves the start: at = at + depth, depth = −depth

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Copies in an array

    The solids of an array, each moved by a whole number of steps.

    copy i is moved by (dx × i, dy × i, dz × i), count = round(count expression)

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • A family placed inside another

    The position and quarter-turn of a nested family.

    turns = rotation ÷ 90; accepted when round(turns × 10⁶) ÷ 10⁶ is a whole number; k = turns mod 4

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Quarter turn of a solid

    An evaluated solid turned 90° about the vertical axis.

    (x, y) → (−y, x)

    Family geometry from parameters family-model.js
    • BimCraft
    Exact
  • Move a solid

    An evaluated solid moved by an offset in the family's axes.

    p → p + (dx, dy, dz), mapped to the profile plane's own axes

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Area of a profile

    The area of a profile with its arcs, used to refuse a flat outline.

    area = ½ Σ (xᵢ·yᵢ₊₁ − xᵢ₊₁·yᵢ) with arcs flattened to chords

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Is the profile on one side of the axis

    Whether a revolve's profile stays on one side of its axis.

    s = ((axis direction) × (p − axis start)) ÷ |axis|; sides counted beyond ±0.01 mm

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Middle point of a profile arc

    The point halfway along an arc given by its two ends and a bulge.

    sagitta = bulge × chord ÷ 2; middle = chord middle + sagitta × (dy, −dx) ÷ chord

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Chords of a profile arc

    The points inside an arc, for outlines that cannot hold a true arc.

    θ = 4·atan(bulge); n = max(2, ⌈|θ| ÷ 15°⌉); center = circle through start, middle and end

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Profile written to the file

    A closed profile as an IFC curve: lines and true arcs in IFC4, a polyline in IFC2X3.

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • A solid written to the file

    One box, extrusion, revolve or swept solid as its IFC item.

    revolve axis direction = (u₁ − u₀, v₁ − v₀) ÷ L; angle = degrees × π ÷ 180 (file in radians)

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Plan outline written to the file

    The outline other programs see in plan: the family's symbol, or each solid's outline from above.

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • Plan bounds of a solid

    The smallest plan rectangle round a solid.

    revolve: R = largest distance of a profile point from the axis; bounds = axis start ± R, joined with the profile

    Family geometry from parameters family-model.js
    • BimCraft
    64-bit
  • A plan symbol's numbers

    The evaluated lines, rectangles, circles, arcs, outlines and texts of a family's 2D symbol.

    Family geometry from parameters family-symbol.js
    • BimCraft
    64-bit
  • Circles and arcs of a symbol

    A symbol's circle or arc as points.

    n = max(2, ⌈sweep ÷ 7.5°⌉); pᵢ = (cx + r·cos aᵢ, cy + r·sin aᵢ)

    Family geometry from parameters family-symbol.js
    • BimCraft
    64-bit
  • A symbol placed in the plan

    The symbol turned by the element's rotation and moved to its place.

    (u, v) → (x + u·cos a − v·sin a, y + u·sin a + v·cos a), a = rotation × π ÷ 180

    Family geometry from parameters family-symbol.js
    • BimCraft
    64-bit
  • Where a placed family stands

    A placed element's position and rotation in its level's plan.

    x = M₁₂, y = M₁₃, z = M₁₄; rotation = atan2(M₁, M₀) × 180 ÷ π

    Family geometry from parameters family-ops.js
    • BimCraft
    64-bit
  • Connector written as a port

    A family's pipe or duct connector written on a placed element: its point, direction and nominal size.

    Family geometry from parameters family-ops.js
    • BimCraft
    64-bit
  • Snap to a step

    A sketch coordinate moved to the nearest multiple of the grid step.

    v → round(v ÷ step) × step

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Quarter-arc bulge

    The bulge that makes a segment a quarter circle, and the cycle straight, left arc, right arc.

    bulge = tan(90° ÷ 4) = tan(π ÷ 8) = √2 − 1

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Move a sketch point

    A profile or path point moved to a new place.

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Set a segment's bulge

    Makes a profile segment straight or an arc of a given bulge.

    bulge = tan(angle ÷ 4), rounded to 12 decimals, |bulge| ≤ 10

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Bounds of a family

    The box round a family's visible solids.

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Height range of a solid

    The lowest and highest point of one solid.

    sweep: path z ± radius; revolve on the floor plane: at ± largest |profile point|

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Which parameter moves which face

    Finds, for each input length, the face of the family it pushes out.

    nudge the parameter by 10 mm; the face that moves most, and by more than 0.5 mm, is its handle

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Solve for a parameter

    The parameter value that puts a face or a hotspot at the dragged position.

    secant: c = b − f(b)·(b − a) ÷ (f(b) − f(a)); then bisection on a bracket; stop at |f| < 10⁻⁷

    Family editor: sketch points, handles and solved sizes family-edit.js
    • BimCraft
    64-bit
  • Drag a hotspot

    The size values after a hotspot is dragged along its axis.

    x = solve(position(x) = dragged position); kept value = round(x × 1000) ÷ 1000

    Family editor: sketch points, handles and solved sizes family-edit.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.