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.

  • 6,917 calculations in 1,248 source files
  • 143 exact
  • 6,286 in 64-bit
  • 335 with a 32-bit step
  • Last reviewed

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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • Volume of a closed mesh

    The volume enclosed by a triangle mesh.

    V = Σ a · (b × c) ÷ 6

    Generative design by topology optimization topopt.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • Bounding box of the mesh

    The smallest box around the part's surface triangles.

    Voxel grid of a part voxel.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit, display only
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit, display only
  • Legend range

    The least and largest value of a plotted result, for the legend.

    Simulation workspace: plot values and the hover probe ws-simulation.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit, display only
  • 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.js
    • PartCraft
    32-bit, display only
  • 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.js
    • PartCraft
    32-bit in part

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.