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

  • Von Mises stress and plastic strain per element

    The largest von Mises stress and the largest equivalent plastic strain among each element's Gauss points.

    vm_e = max over 4 points of vonMises(σ); α_e = max over 4 points of α

    Nonlinear and contact stress study nonlinear.js
    • PartCraft
    32-bit in part
  • Reported maximum stress, displacement and safety factor

    The peak von Mises stress and where it is, the peak displacement, and the smallest safety factor against yield.

    max σ_vm = largest element value; max |u| = largest nodal √(u_x² + u_y² + u_z²); safety = yield ÷ max σ_vm

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    32-bit in part
  • Support reactions

    The total force the supports carry, overall and per support group.

    R = Σ over constrained nodes of (f_int − f_applied)

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    64-bit
  • Element values averaged to nodes

    The nodal stress and plastic strain fields the plot colors by.

    node value = mean of the values of the elements that share the node

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    64-bit
  • Separating the pieces of a part

    Splits a part's surface mesh into its connected pieces so each can be meshed on its own for a contact study.

    vertices are the same when round(x × 10⁴), round(y × 10⁴), round(z × 10⁴) agree

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    32-bit in part
  • Density unit for the solver

    Converts the material's density from kg/m³ to the solver's tonnes per mm³.

    ρ_t/mm³ = ρ_kg/m³ × 1e-12

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    64-bit
  • Von Mises stress from CalculiX results

    The von Mises stress at each node from the six stress components of a results file.

    σ_vm = √(½((a − b)² + (b − c)² + (c − a)²) + 3(d² + e² + f²))

    Nonlinear and contact stress study nl-worker.js
    • PartCraft
    64-bit
  • Density unit change

    Converts a material's density from kg/m³ to tonnes/mm³, the unit the solver uses.

    ρ (t/mm³) = ρ (kg/m³) × 1e-12

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Element values averaged to nodes

    Gives each node the mean of the values of the elements that share it.

    value at a node = Σ element values ÷ number of elements at the node

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Maximum stress, plastic strain and displacement

    The maxima the study reports, and where they occur.

    |u| = √(u_x² + u_y² + u_z²); maximum over the elements (stress, plastic strain) and over the nodes (displacement)

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Per-vertex result arrays

    Copies the nodal stress, plastic strain, displacement size and displacement vector to the vertices of the plot mesh.

    Contact and magnet study results phys-worker.js
    • PartCraft
    32-bit in part
  • Placing a part's mesh in the assembly

    Moves each mesh node of a placed part to the assembly frame with the instance's 4 × 4 matrix.

    x′ = M · (x, y, z, 1)

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Contact penalty stiffness

    Chooses the stiffness of the contact springs for each pair of touching faces when none is given.

    k_n = autoPenalty(min(E_slave, E_master), h_min, factor); factor = 100 (frictionless) or 1000 (bonded)

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Total contact force and peak pressure

    Adds the force at every contact point and finds the highest contact pressure.

    F = Σ forceᵢ; p_max = max pressureᵢ

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Maximum flux density, forces and region areas

    The largest flux density of a magnet study and where it is, the force on each requested body, and the area of each region.

    B_max = max over the elements of |B|; region area = Σ element areas

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Flux density and potential fields

    The flux density of every element and the magnetic vector potential of every node, as returned to the page.

    Contact and magnet study results phys-worker.js
    • PartCraft
    32-bit in part
  • Maxima from a results file read back

    The largest displacement and von Mises stress in a CalculiX results file read back onto the study's mesh.

    σ_vm = √(½·((a − b)² + (b − c)² + (c − a)²) + 3·(d² + e² + f²)); |u| = √(u_x² + u_y² + u_z²)

    Contact and magnet study results phys-worker.js
    • PartCraft
    64-bit
  • Automatic element size

    A tidy element size that gives about the target number of elements for a solid of a given volume.

    raw = ∛(volume ÷ target); size = next step ≥ raw among 1, 1.25, 1.5, 2, 2.5, 3, 4, 5, 6, 8 × 10ⁿ

    Study set-up: element size and the mesh handed to the solver sim.js
    • PartCraft
    64-bit
  • Estimated element count

    The element size a study will use and the number of elements that size is expected to give.

    estimate = round(volume ÷ h³) (× 12 for tetrahedra)

    Study set-up: element size and the mesh handed to the solver sim.js
    • PartCraft
    64-bit
  • Mesh copy for the solver

    Copies the body's triangle mesh for the worker that meshes and solves the study.

    Study set-up: element size and the mesh handed to the solver sim.js
    • PartCraft
    32-bit in part
  • Design box and size of a generative study

    The design space of a generative study (the body's box grown by a margin), its volume, element size and estimated element count.

    box = bbox ± margin; volume = Δx × Δy × Δz (box) or the body's volume; estimate = round(volume ÷ h³)

    Study set-up: element size and the mesh handed to the solver sim.js
    • PartCraft
    64-bit
  • Sketch plane from the file

    Reads a sketch plane's origin, normal and x direction and checks that x lies in the plane.

    |x̂ · n̂| ≤ 1e-6

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Sketch points into the part's plane

    Builds the file's sketch frame and maps each sketch point into the frame of the plane the sketch is put on.

    x = unit(x − n·(x · n)); y = n × x; (u, v) → world = o + u·x + v·y → plane = ((w − o′) · x′, (w − o′) · y′)

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Distance from a point to a segment

    The distance from a position to a straight piece of an edge.

    t = clamp((p − a) · (b − a) ÷ |b − a|², 0, 1); d = |p − (a + t·(b − a))|

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Nearest edge to a stored position

    Finds which edge of the part built so far a fillet or chamfer in the file refers to, and how far the stored position is from it.

    minimum over the edge polyline segments of the point-to-segment distance

    Import of a parametric export file swimport.js
    • PartCraft
    32-bit in part
  • Distance from a point to a triangle

    The distance from a position to one display triangle of a face.

    inside the triangle: |(p − a) · n̂|; else the least distance to its three sides

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Nearest face to a stored position

    Finds which face of the part built so far a feature in the file refers to.

    minimum over the display triangles of the point-to-triangle distance

    Import of a parametric export file swimport.js
    • PartCraft
    32-bit in part
  • Flat face lying in a sketch's plane

    Looks for a named flat face of the part in the plane a sketch was drawn on, so the sketch can follow that face.

    | |n_face · n| − 1 | < 1e-9 and |(o − o_face) · n_face| < 1e-7 × max(1, |o|)

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Base plane and world axis tests

    Decides whether a plane is one of the three base planes.

    | |n̂ · n_base| − 1 | < 1e-9 and |o · n_base| < 1e-9 × max(1, |o|)

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Dimension turned into a parameter

    Gives a dimension that other equations use a parameter of its own, holding its value.

    expression text = formatNumber(value) (12 significant digits, expr.js)

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Equation result against the stored value

    Warns when an imported equation would give a different number from the value the file holds.

    |v − held| > 1e-6 × max(1, |held|)

    Import of a parametric export file swimport.js
    • PartCraft
    64-bit
  • Volume check

    Compares the volume of the rebuilt part with the volume recorded in the file.

    same when |V − V_file| ≤ 1e-4 × max(1, V_file)

    Import of a parametric export file swimport.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

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.