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
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Mesh volume
The volume of the linear tetrahedral mesh, kept in its statistics.
V = Σₑ volume of tet e
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Stefan–Boltzmann constant
The radiation constant in the solver's units, W/(mm²·K⁴).
σ = 5.670374419 × 10⁻¹⁴
Heat conduction, steady and transient thermal.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
Incomplete Cholesky preconditioner
Factors the conduction matrix on its own pattern to speed up the temperature solve.
Heat conduction, steady and transient thermal.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- PartCraft
-
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.js64-bit- 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
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.