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
-
Design moment strength at an axial load
The largest design moment the strength diagram allows at a given axial force.
linear interpolation between the two diagram points that bracket Pu
Concrete member and slab checks on a solved frame frame/rc-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Moment magnification of a slender column
The magnified design moment of a non-sway column about one axis.
Pc = π² (0.4 Ec Ig ÷ (1 + βdns)) ÷ (k L)²; δ = Cm ÷ (1 − Pu ÷ 0.75 Pc) ≥ 1; Mc = δ max(M₂, Pu (15 + 0.03 h)); Ec = 4700 √f′c
Concrete member and slab checks on a solved frame frame/rc-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Drawn section against the concrete section
Checks that the analyzed section's area and inertias agree with the b × h the bars were given for.
|A − b h| ≤ 0.05 b h; I within 5 % of b h³ ÷ 12 × 1, 0.70 or 0.35
Concrete member and slab checks on a solved frame frame/rc-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Beam flexure ratio
The utilization of a beam in bending about one or both axes.
|My| ÷ φMny + |Mz| ÷ φMnz
Concrete member and slab checks on a solved frame frame/rc-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Column axial force and bending ratio
The utilization of a column under axial force with one or two moments.
one moment: the ray ratio on its diagram; two, Pu ≥ 0.1 f′c Ag: max(r_y + r_z − Pu ÷ (φ Po), Pu ÷ φPn,max); two, lower Pu: |My| ÷ φMny(Pu) + |Mz| ÷ φMnz(Pu)
Concrete member and slab checks on a solved frame frame/rc-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Design moments of the slab's bar layers
The moment each of the four bar layers must carry so that bending and twisting are both covered.
M*x = Mx + |Mxy|, M*y = My + |Mxy|; if one is negative: 0, and the other raised by Mxy² ÷ |that moment|
Concrete member and slab checks on a solved frame frame/slab-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Slab reinforcement and shear
The steel required and provided per meter in each layer, and the one-way shear check of a slab.
d = h − cover − bar ÷ 2 (outer layer); provided = (π d_b² ÷ 4) × 1000 ÷ s; need = max(required, ρ_min × 1000 × h); ratio = need ÷ provided
Concrete member and slab checks on a solved frame frame/slab-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Concrete stiffness for the analysis
The elastic modulus, shear modulus and density given to concrete members.
E = 4700 √f′c; G = E ÷ 2.4; ρ = 2400 kg/m³
Concrete member and slab checks on a solved frame frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Cracked stiffness factor
The share of the gross stiffness used for cracked members.
0.70 columns; 0.35 beams; 1 when not cracked
Concrete member and slab checks on a solved frame frame/frame-concrete.jsExact- CadCraft
- BimCraft
- DetailCraft
-
Area of a bar
The cross-section area of a reinforcing bar from its diameter.
A = π d² ÷ 4
Concrete member and slab checks on a solved frame frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Approximate period
The building's approximate fundamental period from its height and structural system.
Ta = Ct × (hn ÷ 1000)^x, hn in mm
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Upper limit factor on the period
The factor Cu that caps a period taken from analysis.
table of SD1 against Cu, straight lines between rows
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Seismic response coefficient
The coefficient Cs that multiplies the building's weight to give the base shear.
Cs = SDS ÷ (R ÷ Ie), at most SD1 ÷ (T R ÷ Ie) or SD1 TL ÷ (T² R ÷ Ie), at least max(0.044 SDS Ie, 0.01) and 0.5 S1 ÷ (R ÷ Ie) where S1 ≥ 0.6
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Height exponent
The exponent k of the vertical distribution of the story forces.
k = 1 for T ≤ 0.5 s; 2 for T ≥ 2.5 s; 1 + (T − 0.5) ÷ 2 between
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Base shear and story forces
The base shear, the force on each floor and the shear in each story.
V = Cs W; Cvx = wx hx^k ÷ Σ wi hi^k; Fx = Cvx V; Vx = Σ F from the top down
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Story force on a rigid floor
Puts a story force on a floor at its master point, with the accidental torsion.
Mz = −((x₀ − x_m) Fy − (y₀ − y_m) Fx) ± 0.05 × plan size × F
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Design drift against the allowable
The design story drift and its ratio to the allowable drift.
δ = Cd δ_e ÷ Ie; allowed = 0.020, 0.015 or 0.010 × story height; ratio = δ ÷ allowed
Seismic loads and story drift to ASCE 7-22 frame/loads-asce7.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Suggested floor levels
The heights at which level members meet, offered as the building's floors.
z = (z_a + z_b) ÷ 2 of a level member; levels within 1 mm are one; stored z rounded to 0.1 mm
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Floor weights into newtons
Turns the floor weights typed in kN into the N the procedure works in.
w (N) = w (kN) × 1000
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Period of the analyzed frame
The fundamental period in each direction from the floor weights and the frame's displacements under the seismic forces.
T = 2π √(Σ wᵢ δᵢ² ÷ (g Σ fᵢ δᵢ))
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Weight of each floor from the loads
The vertical load of chosen load cases gathered at each floor, as its seismic weight.
node load = node forces + member equivalent loads + plate corner loads; each node's load goes to the floor at or above it
Seismic loads and story drift to ASCE 7-22 frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
A number as report text
Writes a value with a fixed number of decimals.
text = v.toFixed(d); 0 when |v| < 0.5 × 10⁻ᵈ
Numbers in the frame analysis report frame/frame-report.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Force in kN
A force in newtons printed in kilonewtons.
kN = N ÷ 1000, 2 decimals; kN·m = N·mm ÷ 10⁶, 2 decimals
Numbers in the frame analysis report frame/frame-report.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Reactions, largest displacement and the envelope
Gathers each set's reactions, the node that moves most, each member's extremes, and the largest value of each force over all sets.
displacement = √(ux² + uy² + uz²); envelope = the value with the largest magnitude over the sets
Numbers in the frame analysis report frame/frame-report.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Deflection as a span ratio
Prints a member's deflection as L over a whole number.
'L/' + round(L ÷ deflection)
Numbers in the frame analysis report frame/frame-report.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Demand and capacity as text
Prints a design check's demand and capacity in kN or kN·m.
kN = round(N ÷ 10) ÷ 100; kN·m = round(N·mm ÷ 10⁴) ÷ 100; ratios to 3 decimals
Numbers in the frame analysis report frame/frame-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Utilization as a percentage
Prints a utilization ratio as a percentage with one decimal.
round(ratio × 1000) ÷ 10, 1 decimal
Numbers in the frame analysis report frame/frame-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
A number in the concrete and seismic tables
Writes a value with a chosen number of decimals.
round(v × 10ᵈ) ÷ 10ᵈ, then d decimals
Numbers in the frame analysis report frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Values in the shared problem list
The found and required values attached to a failed concrete check or drift.
utilization rounded to 0.0001; drift rounded to 0.01 mm
Numbers in the frame analysis report frame/frame-concrete.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Slab and wall rows of the report
For each slab or wall: its largest deflection, its largest positive and negative moments, twisting moment and shear.
max and min of the plates' center values; Q = √(Qx² + Qy²); w = largest node displacement; kN·m/m = N·mm/mm ÷ 1000, 2 decimals
Numbers in the frame analysis report frame/plate-draw.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Values in a slab problem
The required and provided steel, or the shear and its strength, attached to a failed slab check.
steel rounded to 0.1 mm²/m; shear to 0.1 kN/m
Numbers in the frame analysis report frame/slab-design.js64-bit- CadCraft
- BimCraft
- DetailCraft
-
Deflected shape
The members' deflected shape, enlarged so it can be seen.
drawn point = point + scale × displacement; scale = 0.015 × model size ÷ largest displacement
Analysis results drawn on the model frame/frame-draw.js32-bit, display only- CadCraft
- BimCraft
- DetailCraft
-
Force diagram beside a member
A filled diagram of one internal force drawn square to each member, with its largest value labeled.
height = value × 0.08 × model size ÷ largest value
Analysis results drawn on the model frame/frame-draw.js32-bit, display only- CadCraft
- BimCraft
- DetailCraft
-
Plate contours
Each plate as two triangles colored by its corner values, with the largest values labeled.
color = ramp(|value| ÷ largest |value|); kN·m/m = N·mm/mm ÷ 1000
Analysis results drawn on the model frame/plate-draw.js32-bit, display only- CadCraft
- BimCraft
- DetailCraft
-
Arcs into chords
Replaces each bulge arc of a path by straight chords that stay within a tolerance of the arc.
θ = 4 atan(b); r = chord ÷ (2 sin(|θ| ÷ 2)); steps = ⌈|θ| ÷ (2 acos(1 − min(tol, r) ÷ r))⌉
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Signed area of a loop
The area of a closed path, used to tell which loop is the larger when one lies in another.
A = ½ Σ (xᵢ yᵢ₊₁ − xᵢ₊₁ yᵢ)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Length of a path
The total length of a flattened path.
L = Σ √(Δx² + Δy²)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Which loop lies in which
Counts how many other loops contain each loop, so inner shapes are cut first.
two edge midpoints inside the other loop, and the other loop larger in area
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Turn into and out of the fill direction
Rotates a point by the fill angle so the fill lines are horizontal, and back.
x′ = x cos a − y sin a; y′ = x sin a + y cos a; a in degrees × π ÷ 180
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Fill lines of a closed shape
The scan lines that fill the even–odd region of the loops, with the spans to burn on each line.
y_k = (k + 0.5) × interval + offset; x = a_x + (b_x − a_x)(y − a_y) ÷ (b_y − a_y)
Laser job paths, fill lines and run estimate laser/laser-geom.js64-bit- CadCraft
- PartCraft
-
Machine coordinates
Moves every point so the job's lower left corner is the machine's 0, 0.
x_machine = x − x_origin; y_machine = y − y_origin
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Burn length, travel and time
The length burned, the length traveled with the laser off, and the time of the job.
burn = Σ d × passes; time = Σ (d ÷ speed) × 60 × passes
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Fill lines into moves
Turns the fill lines back to drawing coordinates and adds the overscan before and after each line.
start = first − dir × overscan; end = last + dir × overscan
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Picture rows into moves
Lays a picture's burn levels on its rectangle as rows of moves with a power for each run.
cols = round(w ÷ interval); dx = w ÷ cols; y = y₀ + h − (r + 0.5) dy; power = min + (max − min) × level ÷ 255
Laser job paths, fill lines and run estimate laser/laser-plan.js64-bit- CadCraft
- PartCraft
-
Gray value of each engraving cell
The average gray of the picture's pixels under each cell of the engraving grid.
gray = Σ w × pixel ÷ Σ w, w = overlap area of pixel and cell
Burn levels of an engraved picture laser/laser-image.js32-bit in part- CadCraft
- PartCraft
-
Burn level of each cell
Turns the gray values into burn levels from 0 to 255 by the chosen method.
darkness = 1 − (gray ÷ 255)^gamma; threshold: darkness > t; gray steps: round(round(darkness × (n − 1)) ÷ (n − 1) × 255)
Burn levels of an engraved picture laser/laser-image.js32-bit in part- CadCraft
- PartCraft
-
Points written to a file
Each point's northing, easting and elevation as text.
text = v.toFixed(3); 0 when |v| < 0.0005
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Points read from a file
Turns the northing, easting and elevation text of a row into numbers.
x = Number(E); y = Number(N); z = Number(Z) or none
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Difference between a design and an as-built point
The offsets in x, y and height, the horizontal and 3D distance, and whether the point is within tolerance.
dh = √(dx² + dy²); d3 = √(dh² + dz²); out when dh > tol or |dz| > tolZ
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Matching points by nearness
Pairs each design point with the closest unused as-built point within a radius.
pairs sorted by horizontal distance, taken closest first; radius = 10 × tol by default
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- 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.