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
-
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
-
Summary of the comparison
The counts, the largest horizontal and height differences and the root mean square of the horizontal differences.
rms = √(Σ dh² ÷ n)
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Comparison table
The rows of the comparison as text for the page and the CSV.
text = v.toFixed(3)
Layout point files and as-built comparison layout/layout-points.js64-bit- CadCraft
- BimCraft
-
Add, subtract, multiply, divide
The four arithmetic functions on integers and reals.
all integers: 32-bit result; any real: 64-bit result; integer ÷ integer truncates toward zero
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
FIX: a real to an integer
Drops the fraction of a number.
int(trunc(x))
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
Square root, exponential, logarithm and power
SQRT, EXP, LOG and EXPT.
Math.sqrt, Math.exp, Math.log, Math.pow
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
EQUAL with a fuzz
Whether two numbers or lists of numbers are equal within a given amount.
|a − b| ≤ fuzz
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
RTOS: a number as text
Formats a length in decimal or in the drawing's other length formats.
decimal: v.toFixed(prec); 0 when |v| < 0.5 × 10⁻ᵖʳᵉᶜ
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
ANGTOS: an angle as text
Formats an angle in degrees, degrees-minutes-seconds, grads, radians or surveyor's bearings.
degrees = a × 180 ÷ π; grads = a × 200 ÷ π; minutes = (deg − whole) × 60
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
ANGTOF: text to an angle
Reads an angle written in any of the angle formats and returns radians.
degrees × π ÷ 180; d + m ÷ 60 + s ÷ 3600; grads × π ÷ 200
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
Unit factors for CVUNIT
The factor of each unit to its base unit: meter, radian, kilogram or square meter.
inch 0.0254; foot 0.3048; yard 0.9144; mile 1609.344; pound 0.45359237; sq inch 0.00064516; sq foot 0.09290304; acre 4046.8564224
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
CVUNIT: convert between units
Converts a number or a list of numbers from one unit to another of the same kind.
result = v × from ÷ to
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
POLAR, DISTANCE and ANGLE
A point at an angle and distance from another, the distance between two points, and the angle of the line between them.
q = p + d (cos a, sin a); dist = √(Δx² + Δy² + Δz²); angle = atan2(Δy, Δx) into 0 to 2π
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
INTERS: where two lines meet
The intersection of two lines or segments given by their end points.
den = Δ₁ × Δ₂; u = ((p₃ − p₁) × Δ₂) ÷ den; q = p₁ + u Δ₁
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
-
ATOI and ATOF: text to a number
Reads the leading whole number or real number of a text.
parseInt or parseFloat of the leading number
LISP arithmetic, conversions and geometry lisp/builtins.js64-bit- CadCraft
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.