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

  • Mesh quality summary

    The smallest and largest dihedral angle, the worst and mean aspect ratio and a histogram, as shown with the study.

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Element size from surface curvature

    Estimates the radius of curvature between neighboring surface triangles of one face and the element size it allows.

    angle = acos(n₁·n₂); r ≈ |c₁ − c₂| ÷ angle; size = r × curv

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Element size from wall thickness and gaps

    Measures the wall behind and the gap in front of each surface triangle and the element size they allow.

    wall: size = distance ÷ thick; gap: size = distance ÷ 1.5

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Background lattice spacing

    Chooses the cube size of the background lattice so the part's box is a whole number of cubes where possible.

    s = L_min ÷ ceil(L_min ÷ h − 10⁻⁹); per axis: L ÷ n when within 8 % of s

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Longest edge chosen for bisection

    Picks the edge of an element that is split, the same way in every element that shares it.

    compare round(length² ÷ unit × 10⁷); ties by vertex numbers

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Where a lattice edge crosses the surface

    The point on a lattice edge where it leaves the part.

    p = a + t (b − a), t from the first ray hit; else 40 bisections of the inside test

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Lattice vertices warped onto the surface

    Moves a lattice vertex onto a nearby cut point so no very short edge is created.

    warp when fraction of the edge < α (0.24999, 0.41189 or 0.33)

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Closest point on the part's edges

    Finds the nearest point on the part's edge polylines, used to snap boundary vertices onto sharp edges.

    t = clamp(((p − a)·d) ÷ |d|², 0, 1); distance = √min d²

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Boundary vertices onto exact faces

    Moves each boundary vertex onto the true surface of its faces when all of them have an exact record.

    move when 10⁻¹² × diagonal ≤ distance ≤ 0.25 h and the tets around keep min dihedral ≥ min(10°, before)

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Mesh volume

    The volume of the linear tetrahedral mesh, kept in its statistics.

    V = Σₑ volume of tet e

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Interior vertices moved to improve angles

    Moves interior vertices of poor elements when that raises the worst dihedral angle around them.

    accept a trial position when the worst angle rises by more than 10⁻⁹ degrees

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Jacobian check of a quadratic element

    The Jacobian determinant at the four corners and four Gauss points of a 10-node tetrahedron.

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Midside nodes onto the exact surface

    Places the middle node of each boundary edge on the true surface so curved faces stay curved.

    start at (a + b) ÷ 2; move onto the faces when every Jacobian stays > 0.2 × its straight value

    Tetrahedral mesh of a part tetmesh.js
    • PartCraft
    64-bit
  • Stefan–Boltzmann constant

    The radiation constant in the solver's units, W/(mm²·K⁴).

    σ = 5.670374419 × 10⁻¹⁴

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Unit factors from SI

    The factors that convert conductivity, flux, film coefficient, heat generation and heat capacity from SI to the solver's millimeter units.

    k × 10⁻³; flux and h × 10⁻⁶; generation and ρc × 10⁻⁹

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Unit-cube element matrices

    The conduction, capacity and thermal-load matrices of a unit cube, scaled for every voxel element.

    K = Σ_g ∇Nₐ·∇N_b ÷ 8; M = Σ_g NₐN_b ÷ 8

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Thermal load of the incompatible-mode element

    The share of a thermal load carried by the element's internal bubble modes, and their thermal stress.

    f = E α h² (TH ÷ (1 − 2ν) + Aᵀ Fᵢ) ΔT, A = −Kᵢᵢ⁻¹ Kᵢc

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Voxel element routines

    Conduction, capacity, heat load, gradient, thermal load, stresses and geometric stiffness of one voxel element.

    K = k h K_unit; C = ρc h³ M_unit (lumped: ρc h³ ÷ 8); ∇T = Σ G₀ Tₐ ÷ h

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Area of a boundary quad

    The area of a four-node boundary facet.

    A = |d₁ × d₂| ÷ 2 (d₁, d₂ the diagonals)

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Volume and facet areas of the voxel mesh

    The mesh volume and the area of every exposed voxel face.

    volume = elements × h³; facet area = h²

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Incomplete Cholesky preconditioner

    Factors the conduction matrix on its own pattern to speed up the temperature solve.

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Conjugate-gradient solve for temperatures

    Solves the heat system for the temperature of every free node.

    stop when ‖r‖ ÷ ‖b‖ < 10⁻¹⁰

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Heat flux from a power

    Turns a total power on picked faces into a flux per unit area.

    q = P ÷ A (meshed area); flux input: q × scale

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Radiation as a film coefficient

    The equivalent film coefficient of a radiating facet at its current temperature.

    h_r = ε σ (T² + T∞²)(T + T∞) × scale, T in kelvin (°C + 273.15)

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Steady solve with radiation

    Repeats the temperature solve with updated radiation coefficients until the temperatures settle.

    stop when max |T_new − T_old| ≤ 10⁻⁶ K, at most 60 passes

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Transient time stepping

    Advances the temperature field in time and stores the frames shown on the time slider.

    (C ÷ Δt + θK) T⁺ = (C ÷ Δt − (1 − θ)K) T + f, Δt = t ÷ steps, time of step s = s × Δt

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Heat balance

    The heat entering through each boundary condition, generated, stored, and what is left over.

    imbalance = inflow − outflow − stored; fixed temperature: Q = (K T)ₙ − other heat into node n

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Heat flux

    The heat flux of every element, its average at the nodes and the largest element value.

    q = −k ∇T; |q| = √(q_x² + q_y² + q_z²)

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Structural load of a temperature rise

    Adds every element's thermal load into the nodal force vector of a thermal-stress study.

    f = Σₑ ∫ Bᵀ D ε_th dV

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Boundary conditions and area scale

    Converts the study's heat inputs to solver units and scales them for the difference between true and meshed face area.

    scale = true face area ÷ meshed area (1 when either is 0)

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Minimum and maximum temperature, maximum flux

    The lowest and highest temperature with their locations, and the largest heat flux in W/m².

    max flux in W/m² = max |q| ÷ 10⁻⁶

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Material values in solver units

    Conductivity and volumetric heat capacity of the material in the solver's units.

    k × 10⁻³; ρc = density × cp × 10⁻⁹

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Volume and mass of a voxel thermal study

    The meshed volume and the mass shown in the study summary.

    mass in kg = volume (mm³) × density (kg/m³) × 10⁻⁹

    Heat conduction, steady and transient thermal.js
    • PartCraft
    64-bit
  • Thread diameters

    The major, minor and pitch diameter and the thread depth of a size.

    ISO: depth = 5√3 ÷ 16 × P, d₁ = d − 2 × depth, d₂ = d − 0.649519 P; trapezoidal: depth = P ÷ 2, d₂ = d − P ÷ 2

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Size that fits a round face

    Chooses the thread size nearest a shaft's or a bore's diameter.

    shaft: nearest d; bore: nearest (d₁ + d₂) ÷ 2; accepted when the difference ≤ 0.12 × the face diameter

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Profile corners over one pitch

    The crest, flank and root corners of the thread profile as axial position and radius.

    ISO: crest P ÷ 8, root P ÷ 4; trapezoidal: crest = root = P (0.5 − tan(π ÷ 12) ÷ 2); flank = (P − crest − root) ÷ 2

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Profile radius at an axial position

    The radius of the thread profile at any position along the axis.

    r = r₀ + (r₁ − r₀)(w − u₀) ÷ (u₁ − u₀), w = u mod P

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Cross-section of a modeled thread

    The polygon cut square to the axis whose twisted extrusion is the thread.

    point = (r cos θ, r sin θ), r = profile(∓P θ ÷ 2π)

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Helical solid

    The thread's solid shape from the cross-section.

    turns = h ÷ P; slices = ceil(turns × max(24, segments)); twist = 360° × turns

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Cutting tool of a modeled thread

    The solid that is cut from a shaft or a bore to leave the thread, with its clearance.

    profile shifted by ∓clearance; start moved back by ceil(ext₀ ÷ P) × P

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • Numbers in the thread callout

    Formats the pitch and the thread length written in a drawing's thread note.

    text = value rounded to 3 decimals, trailing zeros dropped

    Thread dimensions and modeled threads threads.js
    • PartCraft
    64-bit
  • 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

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.