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
-
Support directions on faces
Finds which nodes of a supported face are held and the normal direction used for a sliding support.
held when distance to the exact face ≤ 0.002 × mean edge length
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Is the part held
Checks that the supports stop all six rigid-body motions.
free when an eigenvalue of Σ rᵀr is ≤ 10⁻⁹ × the largest, or ≤ 10⁻¹²
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Natural frequencies
The lowest natural frequencies and mode shapes of the supported part.
K̃ x = λ M x; f = √max(λ, 0) ÷ 2π
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Temperature rise for thermal stress
The temperature rise at every node over the stress-free temperature, and the load it adds.
ΔT = T − T_ref (20 when not given); f += thermal load
Tetrahedral stress, vibration and buckling solve tet-elements.js64-bit- PartCraft
-
Buckling pre-stress and geometric stiffness
Solves the pre-stress and assembles the stress stiffness that the buckling eigen-solve uses.
K u = f (tol 10⁻¹⁰); G = −Σₑ Gₑ; each inner solve tol 10⁻⁸
Tetrahedral stress, vibration and buckling solve tet-elements.js64-bit- PartCraft
-
Longest edge of a tetrahedron
The length of the longest of an element's six edges.
L = √max((Δx)² + (Δy)² + (Δz)²)
Automatic mesh refinement of tetrahedral studies tetadapt.js64-bit- PartCraft
-
Which elements to refine and to what size
Marks the elements with the largest error and gives each a new target edge length.
ē = (target ÷ 100) √((U + Σe²) ÷ m); h_new = h × clamp((e_K ÷ ē)^(−1/2), 0.5, 0.7)
Automatic mesh refinement of tetrahedral studies tetadapt.js64-bit- PartCraft
-
New boundary vertices onto the exact faces
Moves a vertex created on the boundary onto the true surface of its faces, unless that would damage the elements around it.
accept when every tet keeps volume > 0 and min dihedral ≥ min(10°, before)
Automatic mesh refinement of tetrahedral studies tetadapt.js64-bit- PartCraft
-
Volume of the refined mesh
The volume of the refined linear mesh, kept in its statistics.
V = Σₑ volume of tet e
Automatic mesh refinement of tetrahedral studies tetadapt.js64-bit- PartCraft
-
When the refinement stops
Compares each pass's estimated error with the target and decides whether to refine again.
stop when η ≤ target, or passes used, or elements > limit
Automatic mesh refinement of tetrahedral studies tetadapt.js64-bit- PartCraft
-
Closest point on a triangle
The nearest point of a surface triangle to a given point, and the squared distance.
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Ray against a triangle
Where a ray crosses a surface triangle, used for inside tests, wall thickness and cut points.
t = (e₂·q) ÷ det, det = e₁·(d × e₂)
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Is a point inside the part
Decides whether a point lies inside the closed surface.
inside when most clean rays cross the surface an odd number of times
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Projection onto a face
Moves a point onto a plane, a cylinder, a recorded surface or, failing those, the face's triangles.
plane: p − ((p − o)·n) n; cylinder: axis point + r × radial ÷ |radial|
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Projection onto the meeting of several faces
Moves a point onto the edge or corner where two or three faces meet.
repeat: project onto each face in turn, until the move < 10⁻¹² × diagonal
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Signed volume of a tetrahedron
The volume of one element, positive for the expected vertex order.
V = (u · (v × w)) ÷ 6
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
Dihedral angles and aspect ratio of a tetrahedron
The smallest and largest dihedral angle and the aspect ratio of one element.
θ = atan2(1.5 V |e|, −n₁·n₂ ÷ 4); aspect = L_max ÷ (2√6 × r_in), r_in = 3V ÷ ΣA
Tetrahedral mesh of a part tetmesh.js64-bit- PartCraft
-
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
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.