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

  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • Constrained stiffness

    Builds the stiffness with supports applied.

    K̃ = P K P + α (I − P)

    Tetrahedral stress, vibration and buckling solve tetfea.js
    • PartCraft
    64-bit
  • Scale of the supported directions

    The value α put on the diagonal for supported directions.

    α = Σ Kᵢᵢ ÷ N

    Tetrahedral stress, vibration and buckling solve tetfea.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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.js
    • PartCraft
    32-bit in part
  • 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
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.js
    • PartCraft
    64-bit
  • 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.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.