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
-
Fields of each time step on tetrahedra
Copies the stress, displacement and temperature-rise fields of every stored time step to the plot vertices.
Result fields sent to the plot, legend and probe thermal-worker.js32-bit in part- PartCraft
-
Density filter
Averages each element's density with its neighbors within the minimum member size.
x̃ₘ = Σ w xₙ ÷ Σ w, w = r − distance (in elements)
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Element strain energy
uᵀ Kₑ u for every element, the quantity the sensitivities are built from.
s = uₑᵀ Kₑ uₑ
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Stiffness scale, compliance and sensitivities
The stiffness of each element from its density, the compliance of the design and how the compliance changes with each density.
E = E_min + xᵖ (1 − E_min); c = Σ E k uᵀKₑu; ∂c/∂x = −p xᵖ⁻¹ (1 − E_min) k uᵀKₑu
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Threshold projection
Pushes filtered densities toward 0 or 1 when the projection option is on.
x = (tanh βη + tanh β(x̃ − η)) ÷ (tanh βη + tanh β(1 − η)), η = 0.5
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Density update at the target volume
Updates every density and finds the multiplier at which the design's volume meets the target.
x_new = clamp(x √(−∂c ÷ (∂v λ)), x ± move, 0, 1); bisect λ until (l₂ − l₁) ÷ (l₁ + l₂) ≤ 10⁻⁵
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Final compliance and returned densities
The compliance of the final design and the density field handed to the next steps.
c = Σ f·u
Generative design by topology optimization topopt.js32-bit in part- PartCraft
-
How many elements the solid design keeps
The number of densest elements kept so the design holds its optimized volume, and the density of the last one kept.
n = round(Σx), at least the preserved elements; level = density of the n-th densest
Generative design by topology optimization topopt.js32-bit in part- PartCraft
-
Surface level that holds the optimized volume
Finds the density level whose surface encloses the optimized material volume.
target = Σx × h³; 10 bisections of the level between 0.05 and 0.95
Generative design by topology optimization topopt.js32-bit in part- PartCraft
-
Surface vertex in a cell
Places one surface vertex in each grid cell the surface passes through.
t = (vₐ − iso) ÷ (vₐ − v_c), kept in [0.1, 0.9]; vertex = mean of the edge crossings
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Smoothed surface mesh and its volume
Smooths the surface, restores its volume, and returns the mesh with its volume.
Generative design by topology optimization topopt.js32-bit in part- PartCraft
-
Surface smoothing
Smooths the surface mesh without shrinking it as much as plain averaging would.
p ← p + f (mean of neighbors − p), f alternating 0.5 and −0.53
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Volume restored after smoothing
Moves every vertex along its normal by one distance so the mesh volume is the voxel volume again.
d = (V₀ − V) ÷ area, three steps
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Volume of a closed mesh
The volume enclosed by a triangle mesh.
V = Σ a · (b × c) ÷ 6
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Check of the solid design
The mass, volume, largest stress and displacement and the safety factor of the kept elements, solved again with the real material.
volume = elements × h³; mass in kg = volume × ρ (t/mm³) × 1000; safety = yield ÷ max von Mises
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Compliance for another material
Rescales the compliance of a shape when an outcome uses a different material.
c = c₀ × E₀ ÷ E
Generative design by topology optimization topopt.js64-bit- PartCraft
-
Grid size and origin
The number of cubes along each axis and where the grid starts.
n = max(1, ceil(size ÷ h − 10⁻⁶)); origin = box center − n h ÷ 2
Voxel grid of a part voxel.js64-bit- PartCraft
-
Bounding box of the mesh
The smallest box around the part's surface triangles.
Voxel grid of a part voxel.js64-bit- PartCraft
-
Study size estimate
The rough element count, node count and memory shown before a voxel study is meshed.
elements ≈ round(volume ÷ h³)
Voxel grid of a part voxel.js64-bit- PartCraft
-
Where a row's ray crosses the surface
The x positions at which the ray through a row of cube centers enters and leaves the part.
x = (w₀ xₐ + w₁ x_b + w₂ x_c) ÷ (w₀ + w₁ + w₂), w from the y/z projection
Voxel grid of a part voxel.js64-bit- PartCraft
-
Cubes between two crossings
Marks the cubes of a row whose centers lie between an entry and an exit crossing.
i from ceil((x_in − origin) ÷ h − 0.5) to floor((x_out − origin) ÷ h − 0.5)
Voxel grid of a part voxel.js64-bit- PartCraft
-
Position of a grid node
The coordinates of a grid node from its index.
p = origin + (i, j, k) × h
Voxel grid of a part voxel.js64-bit- PartCraft
-
Distance from a point to a triangle
The squared distance from a grid node or cube center to a surface triangle.
Voxel grid of a part voxel.js64-bit- PartCraft
-
Faces nearest a point
Which of the part's faces a grid node lies on, with each face's normal there.
faces with d² ≤ max(d_min² + (10⁻³ h)², (d_min + 10⁻³ h)²)
Voxel grid of a part voxel.js64-bit- PartCraft
-
Tributary area of surface nodes
The share of a picked face's area carried by each grid node, used to spread loads.
each exposed cube face with all four corners on the picked faces gives h² ÷ 4 to each corner; area = Σ h²
Voxel grid of a part voxel.js64-bit- PartCraft
-
Mean outward normal at picked nodes
The direction used for pressure and normal force at each node of a picked face.
n = Σ face normals ÷ |Σ face normals|
Voxel grid of a part voxel.js32-bit in part- PartCraft
-
Cubes near picked faces
Marks the cubes whose centers are within a distance of picked faces, for preserve and obstacle regions.
kept when the distance from the cube center to the faces' triangles ≤ dist
Voxel grid of a part voxel.js64-bit- PartCraft
-
Section outline at its anchor
The section's outline moved so the chosen anchor point sits on the member's line, with its width, height and radius.
w = u_max − u_min; h = v_max − v_min; R = max |point|
Structural members and their cut list weldment.js64-bit- PartCraft
-
Member orientation
The across and depth directions of a member's section about its line.
v = up − (up·d) d, normalized; u = v × d; then rotated about d
Structural members and their cut list weldment.js64-bit- PartCraft
-
When line ends meet
The distance within which two line ends count as one joint.
tol = 10⁻⁶ × max(1, largest |end point|, longest member)
Structural members and their cut list weldment.js64-bit- PartCraft
-
How far a member runs past a corner
The extra length a raw member needs so a miter cut still has material.
ext = min(50 R, R ÷ max(tan(angle ÷ 2), 0.02)) + R
Structural members and their cut list weldment.js64-bit- PartCraft
-
Miter cut plane
The plane halfway between two members that both are cut on.
n = (d_in + d_out) ÷ |d_in + d_out|; offset = n·P
Structural members and their cut list weldment.js64-bit- PartCraft
-
Butt cut planes
Where the through member ends and where the other is cut square against it.
reach = max |(u U + v V)·d| over the outline; offsets = ∓(d·P) ∓ reach
Structural members and their cut list weldment.js64-bit- PartCraft
-
Gusset plate
The triangular plate in a corner and the angle listed for it.
corners (0, 0), (s, 0), (s d_out·x, s d_out·y); angle = acos(x·d_out)
Structural members and their cut list weldment.js64-bit- PartCraft
-
Cut length and end angles of a member
The length of each finished piece along its line and the angle of each end cut, as stored in the cut list.
length = round((max s − min s) × 10) ÷ 10, s = (vertex − a)·d; angle = round(acos(|cut·d|) × 180 ÷ π × 100) ÷ 100
Structural members and their cut list weldment.js32-bit in part- PartCraft
-
Cut list rows
Groups identical pieces and counts them.
same piece when section, length to one decimal, both angles and both end kinds match
Structural members and their cut list weldment.js32-bit in part- PartCraft
-
Cut list CSV
Writes the cut list as CSV text.
member: length with one decimal; cap: w × h with one decimal
Structural members and their cut list weldment.js32-bit in part- PartCraft
-
Part mesh for scripts
The open part as a triangle mesh a script can compute on through part().
Script workspace: the part handed to scripts and picked values ws-script.js32-bit in part- PartCraft
-
Picked point and nearest node
The coordinates of the clicked point and the mesh node closest to it.
node = the hit triangle's corner with the least √(Δx² + Δy² + Δz²) to the hit point
Script workspace: the part handed to scripts and picked values ws-script.js32-bit in part- PartCraft
-
Field values at the picked node or element
The value of each shown field at the picked node or element.
Script workspace: the part handed to scripts and picked values ws-script.js64-bit- PartCraft
-
Deformed shape for drawing
The drawn position of each surface corner when a displacement field deforms the shape.
drawn position = position + scale × displacement
Script workspace: the part handed to scripts and picked values ws-script.js32-bit, display only- PartCraft
-
Element size of a live analysis level
The element size the coarse and refined live solves use.
h = base size × level factor
Simulation workspace: plot values and the hover probe ws-simulation.js64-bit- PartCraft
-
Mode shape magnitude
The size of the mode shape's displacement at each plot vertex.
|u| = √(u_x² + u_y² + u_z²)
Simulation workspace: plot values and the hover probe ws-simulation.js32-bit in part- PartCraft
-
Safety factor plot values
The safety factor at each plot vertex, for coloring.
safety = min(yield ÷ stress, 100)
Simulation workspace: plot values and the hover probe ws-simulation.js32-bit, display only- PartCraft
-
Legend range
The least and largest value of a plotted result, for the legend.
Simulation workspace: plot values and the hover probe ws-simulation.js64-bit- PartCraft
-
Result under the pointer
The stress, displacement, strain and safety factor at the point under the pointer.
value = w₀v₀ + w₁v₁ + w₂v₂; safety = yield ÷ stress
Simulation workspace: plot values and the hover probe ws-simulation.js32-bit in part- PartCraft
-
Barycentric weights
The three weights of a point inside a triangle.
w₁ = (d₁₁d₂₀ − d₀₁d₂₁) ÷ (d₀₀d₁₁ − d₀₁²); w₂ = (d₀₀d₂₁ − d₀₁d₂₀) ÷ (d₀₀d₁₁ − d₀₁²); w₀ = 1 − w₁ − w₂
Simulation workspace: plot values and the hover probe ws-simulation.js64-bit- PartCraft
-
Deformed plot positions
The drawn position of each plot vertex when the deformed shape is shown.
drawn position = position + scale × displacement
Simulation workspace: plot values and the hover probe ws-simulation.js32-bit, display only- PartCraft
-
Automatic deformation scale
The factor the displacements are multiplied by so the deformed shape can be seen.
raw = 0.08 × box diagonal ÷ largest |u|, rounded up to 1, 2, 5 or 10 × 10ᵉ
Simulation workspace: plot values and the hover probe ws-simulation.js32-bit, display only- PartCraft
-
A flat face's box in its own plane
The extent of a flat face along two axes lying in its plane.
u = (n × t) ÷ |n × t|; v = n × u; box = least and largest p·u and p·v over the face's triangle corners
Advanced simulation add-on: finding contact pairs addons/advanced-sim/lib/setup.js32-bit in part- PartCraft
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.