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
-
Conjugate gradient solve
The displacement of every node under the loads.
repeat until ‖r‖ ÷ ‖b‖ < 1e-8
Stress analysis fea.js64-bit- PartCraft
-
Von Mises stress
One equivalent stress from the six stress components.
σᵥ = √(½[(σ_x − σ_y)² + (σ_y − σ_z)² + (σ_z − σ_x)²] + 3(τ_xy² + τ_yz² + τ_zx²))
Stress analysis fea.js64-bit- PartCraft
-
Stress and displacement at each node, and their maximum
The values the plot colors by, and the maximum the report states.
σ at a node = mean of its corners; |u| = √(u_x² + u_y² + u_z²); maximum over the nodes
Stress analysis fea.js32-bit in part- PartCraft
-
Volume, surface area and bounding box
The measured properties of the finished body.
volume, area, genus and bounding box, asked of the kernel
Solid modeling kernel.js64-bit- PartCraft
-
Vertex positions of the body
The mesh that faces, edges and the display are built from.
positions = 32-bit copy of the kernel's vertices
Solid modeling kernel.js32-bit in part- PartCraft
-
Fast Fourier transform
The transform behind the band filters and the convolution.
X_k = Σ x_n e^(∓2πi kn ÷ N), N a power of two
Room impulse response and listening acoustics-ir.js64-bit- BimCraft
-
Octave band weight
How much of a frequency belongs to one octave band.
w = cos(π ÷ 2 × |log₂(f ÷ f_band)|) within one octave, else 0
Room impulse response and listening acoustics-ir.js64-bit- BimCraft
-
Zero-phase band filter
Keeps one octave band of a signal.
Room impulse response and listening acoustics-ir.js64-bit- BimCraft
-
Decaying reverberant tail
The diffuse part of the response: noise that falls 60 dB in each band's reverberation time.
tail(t) = Σ_bands noise_b(t) × e^(−k t), k = 6.907755 ÷ T_b; × (t ÷ onset)² up to onset = max(0.002, 2 × mean free path ÷ 343)
Room impulse response and listening acoustics-ir.js64-bit- BimCraft
-
First reflections and the tail's level
Places the six first reflections and sets the level of the tail against the direct sound.
R = S a ÷ (1 − a); reflection gain = √(1 − a) × d₀ ÷ d at sample round((d − d₀) ÷ 343 × sr); tail energy = 16π d₀² ÷ R less the reflections; r_c = √(R ÷ 16π)
Room impulse response and listening acoustics-ir.js32-bit in part- BimCraft
-
Reverberation time measured from a response
The reverberation time of an impulse response in one band, by Schroeder's backward integration.
E(t) = Σ over τ ≥ t of x²; L = 10 log₁₀(E(t) ÷ E(0)); T = 60 ÷ −slope of L between −5 and −35 dB
Room impulse response and listening acoustics-ir.js64-bit- BimCraft
-
Convolution
A dry sound passed through the room's impulse response.
y = IFFT(FFT(x) × FFT(h)) ÷ N
Room impulse response and listening acoustics-ir.js32-bit in part- BimCraft
-
Level matching
Brings the sound in the room to the loudness of the dry sound, so switching between them changes the room and not the volume.
k = rms(dry) ÷ rms(wet over the dry sound's length)
Room impulse response and listening acoustics-ir.js32-bit in part- BimCraft
-
WAV file samples
The numbers written to the downloaded sound file.
s = round(clamp(x × k, −1, 1) × 32767), k = 1 ÷ peak when peak > 1
Room impulse response and listening acoustics-ir.js32-bit in part- BimCraft
-
Distance and area measured in 3D
The length between two picked points with its X, Y and Z parts, or the area of a picked face.
distance = |b − a|; area = the picked face's area
Measurements and typed values in the main window bimcraft.js32-bit in part- BimCraft
-
Map position of a picked point
The map grid coordinates, height, latitude and longitude of a point picked on the model.
picked point → file coordinates → map grid (IfcMapConversion) → latitude and longitude (proj4)
Measurements and typed values in the main window bimcraft.js32-bit in part- BimCraft
-
Latitude and longitude as text
How a located point's latitude and longitude are written in the readout and the label.
round(v × 10ⁿ) ÷ 10ⁿ, then n decimals
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
Lengths shown in Properties
A length property or quantity shown in the person's display unit.
shown = file value × file unit in mm
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
A typed length written to the file
Converts a length typed in Properties from the display unit to the file's own unit.
file value = round(mm ÷ file unit × 10⁹) ÷ 10⁹
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
Numbers in the quantity tables
How a total or a quantity is written in the on-screen quantity tables.
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
Height of a ceiling-mounted item
How far above its level a library item is placed when it hangs from the ceiling.
z = max(0, top − item height)
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
Clash tolerance as typed
Reads the tolerance for the clash check, in meters.
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
Offset of an added model
The X, Y and Z move typed for a model added beside the first one.
offset in m = typed length in mm ÷ 1000
Measurements and typed values in the main window bimcraft.js64-bit- BimCraft
-
World triangles and box of each element
Each element's triangles in the scene's coordinates and the box round them.
p' = M p
Clash check clash.js32-bit in part- BimCraft
-
Overlap of two boxes
How far two elements' boxes overlap, the figure reported as the clash depth.
depth = min over X, Y, Z of (min of the two maxima − max of the two minima)
Clash check clash.js64-bit- BimCraft
-
Candidate pairs and the result list
Pairs one element from each set whose boxes overlap by more than the tolerance, tests them and lists the clashes deepest first.
candidate when depth > tolerance
Clash check clash.js64-bit- BimCraft
-
Do two elements' surfaces cross
Looks for a pair of triangles, one from each element, that cross.
Clash check clash.js32-bit in part- BimCraft
-
Triangle against triangle
Decides whether two triangles cross and gives a point on the crossing.
dᵢ = n₂·pᵢ + d₂ for each corner; crossing when each triangle has corners on both sides of the other's plane and their intervals on the line n₁ × n₂ overlap
Clash check clash.js32-bit in part- BimCraft
-
Speed of sound
The speed of sound used for every delay.
c = 343 m/s
Geometric room acoustics geo.js64-bit- BimCraft
-
Image sources of a box room
The energy arriving at the listener from the source and every mirror image of it within the time limit.
image = ((1 − 2p)·s + 2·i·L); e[round(d ÷ c × sr)] += Π (1 − α)^hits × exp(−m·d) ÷ (4π·d²)
Geometric room acoustics geo.js64-bit- BimCraft
-
Plane of a surface
The unit normal and plane distance of each room surface, from its first three corners.
n = (b − a) × (c − a) ÷ |…|; d = n · a
Geometric room acoustics geo.js64-bit- BimCraft
-
Is a hit inside the surface
Whether a point on a surface's plane lies inside its convex outline.
the sign of ((b − a) × (p − a)) · n is the same for every edge
Geometric room acoustics geo.js64-bit- BimCraft
-
Ray tracing of a room
The energy arriving at a spherical receiver from rays sent out evenly from the source and reflected round the room.
e[⌊t × sr⌋] += E × chord ÷ (4⁄3·π·r³) × exp(−m·c·t); after a hit E = E × (1 − α)
Geometric room acoustics geo.js64-bit- BimCraft
-
Reverberation and clarity from an echogram
EDT, T20, T30, C50, C80, D50 and Ts per octave band, from the energy in each time bin.
amplitude[i] = √e[i]; the measures are taken from the amplitudes
Geometric room acoustics geo.js32-bit in part- BimCraft
-
Vertices of one batch
The positions, normals and texture coordinates of the triangles a batch shows.
normal = (x, y, z) ÷ √(x² + y² + z²); uv = planar meters ÷ tile size
Model for rendering (glTF export) glb-bim.js32-bit in part- BimCraft
-
Bounds of a mesh
The smallest and largest coordinate of a mesh, which glTF requires beside its positions.
Model for rendering (glTF export) glb-bim.js32-bit in part- BimCraft
-
Placement of a batch
The world matrix written on each node.
Model for rendering (glTF export) glb-bim.js64-bit- BimCraft
-
Lamps
Each lamp as a glTF light: its intensity, cone and position.
candela = lumens ÷ 4π; outer cone = angle × π ÷ 360, held between 0.02 and π ÷ 2; inner = 0.8 × outer
Model for rendering (glTF export) glb-bim.js64-bit- BimCraft
-
Direction of a spot
The rotation that points a spot light along its direction.
q = (a × d, 1 + a · d) ÷ |…|, a = (0, 0, −1)
Model for rendering (glTF export) glb-bim.js64-bit- BimCraft
-
Placing each vertex of an element
Moves an element's vertices and normals from its own axes into the scene with its placement matrix.
p′ = M × p; n′ = (rotation part of M) × n ÷ |…|
Measuring on the IFC view's mesh ifc-model.js32-bit in part- BimCraft
-
Storing the mesh
Turns the collected positions, normals, indices and element runs of a batch into typed arrays.
Measuring on the IFC view's mesh ifc-model.js32-bit in part- BimCraft
-
Area of a picked flat face
The flat face a picked triangle belongs to and its area.
area = Σ |(b − a) × (c − a)| ÷ 2 over the triangles in the picked plane
Measuring on the IFC view's mesh measure.js32-bit in part- BimCraft
-
Distance between two picked points
The straight-line distance Measure reports.
d = √(Δx² + Δy² + Δz²)
Measuring on the IFC view's mesh measure.js32-bit in part- BimCraft
-
Distance split along the IFC axes
The measured difference as ΔX, ΔY and ΔZ in the file's Z-up axes.
ΔX = Δx; ΔY = −Δz; ΔZ = Δy (the viewer is Y up)
Measuring on the IFC view's mesh measure.js32-bit in part- BimCraft
-
Room floor area and volume from its shape
The floor area and volume of a space measured from its triangles, used when the file states neither.
area = Σ −n_y ÷ 2 over triangles with n_y ÷ |n| < −0.5; volume = |Σ a · (b × c) ÷ 6|
Measuring on the IFC view's mesh ifc-qto.js32-bit in part- BimCraft
-
Room area and volume in the spaces schedule
Chooses the file's stated value or the measured one for each room, and rounds the measured one.
measured value kept as Number(value.toFixed(4))
Measuring on the IFC view's mesh ifc-qto.js32-bit in part- BimCraft
-
Bounding box of each element in a shared frame
The box and triangle count of every element of a model, in coordinates both versions share.
Measuring on the IFC view's mesh ifc-compare.js32-bit in part- BimCraft
-
How far an element moved, and whether its shape changed
The move of an element between two versions and a yes or no on a change of size or triangle count.
moved = |center of box B − center of box A|, reported when > tolerance; reshaped when a box side differs by > tolerance
Measuring on the IFC view's mesh ifc-compare.js32-bit in part- BimCraft
-
Bounding box of chosen elements
The smallest box round the vertices of the chosen elements.
Measuring on the IFC view's mesh ifc-vis.js32-bit in part- BimCraft
-
Wall faces in plan
The two long faces of each wall as plan segments in model millimeters, with a normal pointing away from the wall.
Wall faces and plan frames from element meshes ifc-place.js32-bit in part- 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.