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

  • 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
  • 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
  • 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

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.