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
-
Element heat capacity
The heat capacity matrix of one element, or its lumped diagonal for transient runs.
M = Σₚ wₚ det Jₚ ρc NₐN_b; lumped: Mₐₐ × (ΣM ÷ Σ diagonal)
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Element heat generation load
The nodal heat input of a uniform internal heat source.
fₐ = Σₚ wₚ det Jₚ Q Nₐ
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Temperature gradient at the element center
The temperature gradient used for the heat flux of an element.
∇T = Σ ∇Nₐ Tₐ at L = (¼, ¼, ¼, ¼)
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Element thermal load
The nodal forces that a temperature rise produces in one element.
f = Σₚ wₚ det Jₚ E α ΔTₚ (D₀₀ + D₀₁ + D₀₂) ∇N
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Stresses at the four Gauss points
The stresses used to build the geometric stiffness of a buckling study.
σ = E · D (B u − α ΔT [1 1 1 0 0 0])
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Element geometric stiffness
The stress stiffness of one element for linear buckling.
Gₐ_b = Σₚ wₚ det Jₚ ∇Nₐᵀ σₚ ∇N_b
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Face areas and volume of the tetrahedral mesh
The area of every boundary face and the mesh volume handed to the heat and buckling routines.
area = Σ ∫Nₐ dA; volume = Σₑ Σₚ wₚ det Jₚ
Quadratic tetrahedron element matrices tet-elements.js64-bit- PartCraft
-
Stiffness and mass assembly
Adds every element's stiffness (and mass) into the model's sparse matrices and totals the volume.
K = Σₑ Kₑ; volume = Σₑ volumeₑ
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Matrix times vector
Multiplies the symmetric stiffness, stored as its lower triangle, by a vector.
y = K x
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Constrained stiffness
Builds the stiffness with supports applied.
K̃ = P K P + α (I − P)
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Scale of the supported directions
The value α put on the diagonal for supported directions.
α = Σ Kᵢᵢ ÷ N
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Incomplete Cholesky preconditioner
Factors the constrained stiffness on its own sparsity pattern to speed up the iteration.
L Lᵀ ≈ K̃ on the pattern of K̃
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Conjugate-gradient solve for displacements
Solves the constrained system for the displacement of every node.
stop when ‖r‖ ÷ ‖P f‖ < tol
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
Loads on faces and gravity
Turns forces, pressures and gravity into nodal loads and totals them.
force: t = total ÷ A; pressure: t = −p n; f = Σ N t dA; gravity: f = ρ g ∫N dV
Tetrahedral stress, vibration and buckling solve tetfea.js64-bit- PartCraft
-
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
-
Principal stresses
The largest, middle and smallest principal stress of a stress state.
s₁ = m + 2q cos φ, s₃ = m + 2q cos(φ + 2π ÷ 3), s₂ = 3m − s₁ − s₃; φ = acos(det ÷ 2q³) ÷ 3
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Equivalent strain
The von Mises equivalent strain from the six engineering strains.
ε_eq = √(⅔ (a² + b² + c² + (γ_xy² + γ_yz² + γ_zx²) ÷ 2)), a, b, c = normal strains − mean
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Gauss points to corners
The value at an element corner of the linear field that passes through the four Gauss-point values.
cᵢ = (gᵢ − 0.1381966… × Σg) ÷ (0.5854101… − 0.1381966…)
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Largest von Mises stress in an element
The unaveraged maximum von Mises stress of each element and the largest over the mesh.
max over the 4 Gauss points and the 4 extrapolated corners
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Nodal stress, strain and displacement, and their maxima
The values the plot colors by and the maxima the result reports.
σ at a node = mean over its elements; |u| = √(u_x² + u_y² + u_z²); maximum over the nodes
Stress, displacement and error results on tetrahedra tetfea.js32-bit in part- PartCraft
-
Error indicator per element
How far the averaged stress field is from each element's own stresses, in the energy norm.
e_K² = ∫ (σ* − σₕ)ᵀ C⁻¹ (σ* − σₕ) dV; U = ∫ σₕᵀ C⁻¹ σₕ dV
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Support reactions
The total reaction force and the reaction of each support group.
r = K u − f at the supported nodes, kept along the supported directions; R = Σ r
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Reported maxima, safety factor and error percentage
The numbers the study result states: error percentage, maximum stress and displacement, principal stress range and minimum safety factor.
η = 100 √(Σe² ÷ (U + Σe²)); safety = yield ÷ maximum von Mises
Stress, displacement and error results on tetrahedra tetfea.js32-bit in part- PartCraft
-
Error estimate of several fields
Combines the error indicators of mode shapes, or of a buckling pre-stress and its modes, into one estimate.
e_K² = Σ_f e_K,f² ÷ U_f; η = 100 √(Σe² ÷ (n + Σe²))
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Mesh volume and mass
The volume and mass of the meshed part shown with the study.
volume = Σₑ Σₚ wₚ det Jₚ; mass in kg = volume × ρ (t/mm³) × 1000
Stress, displacement and error results on tetrahedra tetfea.js64-bit- PartCraft
-
Error estimate of a heat solution
The estimated error of a steady temperature solution, per element and as a percentage.
e_K² = ∫ (q* − qₕ)·(q* − qₕ) ÷ k dV; η = 100 √(Σe² ÷ (U + Σe²))
Stress, displacement and error results on tetrahedra tet-elements.js64-bit- PartCraft
-
Nodal values onto plot vertices
Copies a solved nodal field (stress, displacement, temperature, strain) to the vertices of the plot mesh.
Result fields sent to the plot, legend and probe tet-worker.js32-bit in part- PartCraft
-
Heat flux size per vertex
The heat flux magnitude in W/m² at each plot vertex.
q = flux × 10⁶; |q| = √(q_x² + q_y² + q_z²)
Result fields sent to the plot, legend and probe tet-worker.js32-bit in part- PartCraft
-
Mode shape per vertex
A vibration or buckling mode shape scaled so its largest displacement is 1.
shape = u ÷ max |u|
Result fields sent to the plot, legend and probe tet-worker.js32-bit in part- PartCraft
-
Plot mesh of the tetrahedral model
The surface of the tetrahedral mesh as triangles for the result view, each boundary face split in four through its midside nodes.
Result fields sent to the plot, legend and probe tet-worker.js32-bit in part- PartCraft
-
Grid field sampled at plot vertices
Samples a voxel-grid result (temperature, flux, temperature rise, mode shape) at each vertex of the plot mesh.
Result fields sent to the plot, legend and probe thermal-worker.js32-bit in part- PartCraft
-
Heat flux size per vertex on a voxel mesh
The heat flux magnitude in W/m² at each plot vertex of a voxel study.
q = flux × 10⁶; |q| = √(q_x² + q_y² + q_z²)
Result fields sent to the plot, legend and probe thermal-worker.js32-bit in part- PartCraft
-
Buckling mode shape on a voxel mesh
A buckling mode shape sampled on the plot mesh and scaled to a largest displacement of 1.
shape = u ÷ max |u|
Result fields sent to the plot, legend and probe thermal-worker.js32-bit in part- PartCraft
-
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
-
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
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.