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

  • Cables and pipes under an overhead line

    The cable routes and pipes an overhead line crosses in plan, with the line's chainage and the level of the top of each.

    cable top = ground − cover ÷ m per unit; pipe top = invert at the crossing + diameter

    Underground cable routes: cover, crossings, joints and trench quantities powerline/underground.js
    • CivilCraft
    64-bit
  • Joints from the drum length

    How many joints each cable needs and where along the route they fall.

    run = length × (1 + slack %); joints per cable = ⌈run ÷ drum⌉ − 1; at = k × drum ÷ (1 + slack %)

    Underground cable routes: cover, crossings, joints and trench quantities powerline/underground.js
    • CivilCraft
    64-bit
  • Trench quantities

    Trench length, excavation, bedding and backfill volumes, duct length and cable length of a route.

    excavation = width × depth × length; bedding = width × bedding × length; backfill = excavation − bedding − ducts × π(d ÷ 2)² × length; cable = (length × slack + 2 × depth) × count

    Underground cable routes: cover, crossings, joints and trench quantities powerline/underground.js
    • CivilCraft
    64-bit
  • Numbers in the file

    Turns a value into the fixed-decimal text the file carries, and newtons into decanewtons.

    text = v.toFixed(d); daN = N ÷ 10, 2 decimals

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Signed line angle at each support

    The turn of the line at each support in degrees, counter-clockwise positive.

    turn = atan2 of the span ahead − atan2 of the span behind, wrapped to ±180°

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Support coordinates and heights written

    Each support's position, ground level, pole length, height above ground and line angle as written to the file.

    X = x × m per unit, 3 decimals; Hauteur = typed height × m per unit + embedment

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Section tension and catenary parameter written

    The reference temperature, horizontal tension and catenary parameter of each section as written to the file.

    Parametre = H ÷ w, 3 decimals; TensionIni = H ÷ 10 daN, 2 decimals

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Reading a number

    Turns a field's text into a number, accepting a decimal comma.

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Angles in grades

    Converts a line angle given in grades to degrees.

    degrees = grades × 0.9

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • A study file into a line

    Turns the supports read from a file into a line in project units.

    x = X (m) ÷ m per unit; voltage kV = V ÷ 1000

    Line study file (.DON) export and import powerline/don.js
    • CivilCraft
    64-bit
  • Cubic meters per cubic yard

    The factor used to give volumes in cubic yards in a feet project.

    1 yd³ = 0.764554857984 m³

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    Exact
  • Stringing table rows

    Tension, span length, sag and conductor length per section and temperature, in project units.

    length ÷ m per unit; force ÷ 10 for daN or ÷ 4.4482216152605 for lbf

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Stringing table CSV

    The stringing table as CSV text.

    lengths and sags round(v, 2); tension round(v, 1)

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Support table rows

    Ground, attachment, load, nominal load, foundation and swing per support, in project units.

    attach height = attach z − ground z; load = worst F_eq in daN or lbf

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Conductor length to buy

    The conductor length of a line with an allowance for jumpers and waste.

    length = Σ catenary lengths × phases × circuits × 1.02 ÷ m per unit

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Lengths and volumes in project units

    Converts meters and cubic meters to feet and cubic yards for the quantity rows.

    LF = m ÷ 0.3048; CY = m³ ÷ 0.764554857984

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Quantities file for TakeoffCraft

    The quantity rows in the format TakeoffCraft reads.

    qty = round(qty, 2)

    Power line tables, quantities and GIS export powerline/outputs.js
    • CivilCraft
    64-bit
  • Clear-sky beam and diffuse irradiance

    The irradiance outside the atmosphere, the beam transmittance, and the beam and diffuse irradiance at the ground.

    τ_b = a₀ + a₁·exp(−k ÷ cos Z); G_on = 1367·(1 + 0.033·cos(2πn ÷ 365)); G_bn = G_on·τ_b; τ_d = 0.271 − 0.294·τ_b

    Clear-sky solar irradiance pv/daylight-bim-sky.js
    • CivilCraft
    64-bit
  • Meters per unit

    The length of each supported unit in meters.

    ft = 0.3048; US survey ft = 1200 ÷ 3937; in = 0.0254; yd = 0.9144; mi = 1609.344

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    Exact
  • Scale from two points

    Project units per pixel from two points on the scan and the true distance between them.

    units per pixel = distance ÷ √(Δpx² + Δpy²)

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Scale from a stated scale

    Project units per pixel from the scan's resolution and a scale such as 1 inch = 50 feet or 1:500.

    per ÷ dpi, or ratio × 0.0254 ÷ (m per unit) ÷ dpi

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Placement from a scale, origin and rotation

    The transform that puts the sheet's lower-left corner at a point, turned by an angle, at a given scale.

    c = s·cos θ, d = s·sin θ; X = x₀ − d·h + c·px + d·py; Y = y₀ + c·h + d·px − c·py

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Pixel to project coordinates

    The project position of a pixel.

    X = g₀ + g₁·px + g₂·py; Y = g₃ + g₄·px + g₅·py

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Inverse placement

    The transform from project coordinates back to pixels.

    det = g₁·g₅ − g₂·g₄; inverse = adjugate ÷ det

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Scale of a placement

    The project units per pixel a placement stands for, reported with every fit.

    scale = √|g₁·g₅ − g₂·g₄|

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Rotation of a placement

    The angle a placement turns the sheet by, in degrees.

    rotation = atan2(g₄, g₁) × 180 ÷ π

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • 3 × 3 linear solve

    Solves the normal equations of the affine fit.

    Gauss-Jordan elimination with partial pivoting

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Least-squares fit to matched points

    The placement that best matches points picked on the scan to their project coordinates, with each point's residual and the root mean square.

    similarity: c = Σ(u·X + v·Y) ÷ Σ(u² + v²), d = Σ(u·Y − v·X) ÷ Σ(u² + v²); rms = √(Σ r² ÷ n)

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Traced arc to points

    Turns an arc found on the scan into points for a line layer.

    n = max(2, ⌈|sweep| ÷ 5°⌉); point = center + r·(cos t, sin t)

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Traced lines in project coordinates

    The lines and arcs traced on the scan as one line layer in project coordinates.

    each end point through the placement; kept when its length > the minimum

    Placing a scanned sheet in the project scanstart/place.js
    • CivilCraft
    64-bit
  • Frame of a member

    The origin, the unit direction, the two section axes and the length of a member line.

    x = (e − s) ÷ |e − s|; v = unit(Z − x·x_z); u = v × x; u′ = cos a·u + sin a·v, v′ = −sin a·u + cos a·v

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Local point to model point

    The model coordinates of a point given along the member and across its section.

    p = o + x·x̂ + u·û + (v + voff)·v̂

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Model point to local point

    Where a model point lies along a member and across its section.

    d = p − o; x = d·x̂, u = d·û, v = d·v̂ − voff

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • End face position on a plane-cut end

    How far along the part its end face is at a given point of the section, for square ends and mitre cuts.

    x = x0 + ku·u + kv·v

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Section outline clipped at a height

    The part of a section outline below or above a line, used for coped ends.

    t = (limit − a_v) ÷ (b_v − a_v); new point = (a_u + (b_u − a_u)·t, limit)

    Member frames and local coordinates geom.js
    • DetailCraft
    64-bit
  • Node merging

    One analysis node for every group of points that lie within 1 mm of each other.

    same node when |p − n| ≤ 1 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Splitting a member at the points on it

    The stations along a drawn member where another member's end or a node load lies on it.

    s = (q − start)·u; foot = start + u·s; cut when |foot − q| ≤ 2 mm and 2 mm < s < L − 2 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • End points of each piece

    The two points of every piece a split member becomes.

    p = start + u·s

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Section properties per profile

    Area, second moments of area and torsion constant of each profile in use, with the reduced bending stiffness of cracked concrete.

    Iy′ = f·Iy, Iz′ = f·Iz

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Which column feet are supports

    Decides which column feet are held: those with a base plate, or with no member going lower at that node.

    support when lowest z at the node ≥ node z − 1 mm

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Point load on a split member

    Moves a point load from its distance along the drawn member to the piece it falls on.

    a′ = max(0, a − s0)

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Distributed load on a split member

    Cuts a uniform or linearly varying load into the part that falls on each piece.

    w(s) = w + (w₂ − w)·(s − a) ÷ (b − a)

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • Sections the drawn members use

    The area and second moments of area listed for each profile in the model.

    Analytical frame model from the drawn members analysis.js
    • DetailCraft
    64-bit
  • One bolt's shear strength

    The single-shear design strength of one bolt in kN.

    φRn = 0.75 × Fnv × (π·d² ÷ 4) ÷ 1000

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • End shear from a uniform load

    The end shear of a beam when only a uniform load per meter is given.

    R = w × L ÷ 1000 ÷ 2

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Shear tab rows and plate

    Bolt diameter, number of rows, edge distance and plate thickness for a shear tab.

    clear = d − 2(tf + r); maxRows = ⌊(clear − 2·edge) ÷ 75⌋ + 1; need = max(2, ⌈R ÷ φRn⌉)

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • End plate rows and plate

    Bolt rows, plate width, thickness and gauge for an end plate.

    rows wanted = max(4, 2·⌈R ÷ φRn ÷ 4⌉); width = max(150, bf rounded up to 10); gauge = max(90, round(0.55·bf ÷ 5)·5)

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Base plate size and rod spacing

    Plate length and width, rod diameter, hole and rod spacing for a column base.

    length = max(300, (depth + 150) rounded up to 25); sx = length − 100

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Rounding up to a step

    Rounds a size up to the next multiple of a step.

    ⌈v ÷ step − 1e-9⌉ × step

    Connection autopilot starting sizes autopilot.js
    • DetailCraft
    64-bit
  • Box round each part and footing

    The center, axes and half sizes of the box used for the first, coarse test.

    c = o + x̂·L ÷ 2 + v̂·voff; h = (L ÷ 2, width ÷ 2, depth ÷ 2)

    Clash check between parts clash.js
    • 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.