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
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
Reading a number
Turns a field's text into a number, accepting a decimal comma.
Line study file (.DON) export and import powerline/don.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.jsExact- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.jsExact- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- CivilCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- DetailCraft
-
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.js64-bit- 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.