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

  • Revolve axis checks

    Checks that the axis lies in the sketch plane and that the profile stays on one side of it.

    side s = −u_y (p_x − a_x) + u_x (p_y − a_y); crosses when some s > 1e-7 × scale and some s < −1e-7 × scale

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Revolve angle

    The sweep angle given to the kernel.

    full turn when |angle − 360| < 1e-9; else angle × π ÷ 180

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Through-hole depth

    How deep a through hole is drilled.

    depth = distance to the body's far side + 1 + 0.01 × body range

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Countersink depth

    How deep the cone of a countersunk hole goes.

    h = (D_csink − d) ÷ 2 ÷ tan(angle × π ÷ 360)

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Cosmetic thread radii

    The major and minor radius recorded for a tapped hole's thread.

    r₁ = D ÷ 2; r₀ = min(tap drill, D − 1.082532 × P) ÷ 2

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Linear pattern positions

    Where each copy of a linear pattern sits.

    copy i moved by direction × spacing × i

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Circular pattern angles

    The angle of each copy of a circular pattern.

    full circle: step = 360 ÷ count; otherwise step = angle ÷ (count − 1); copy i turned by step × i

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Shell wall offset

    Hollows a body to a wall thickness.

    offset = +t (outward) or −t; kernel tolerance 1e-3

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Fillet and chamfer sizes

    The radius, distances or distance and angle given to the kernel for each picked edge.

    two distances: (d, d₂); distance and angle: (d, angle × π ÷ 180); fillet: r, or (r, r₂) along the edge

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Sewing an imported surface model

    Joins the faces of a STEP file that has no solid into a closed shell.

    sewing tolerance = 1e-6

    Exact-kernel feature dimensions brep.js
    • PartCraft
    64-bit
  • Mesh tolerances

    How closely the triangle mesh follows the exact faces.

    linear = 2e-4 × bounding-box diagonal; angular = 2π ÷ max(16, resolution)

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Mesh read from the kernel

    Copies the mesh's vertices, normals and triangles out of the kernel's memory.

    vertices and normals: Float32Array view of the WebAssembly buffer

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    32-bit in part
  • Welding the mesh

    Merges vertices that different faces share so the mesh is watertight.

    same vertex when x, y and z are identical

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    32-bit in part
  • Volume and surface area

    The solid's volume and total surface area, from the exact faces.

    V = ∭ dV (Gauss–Kronrod, tolerance 1e-12, when a non-line, non-circle edge exists); A = ∬ dA

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Genus

    The number of through holes (handles) of the solid, from the welded mesh.

    χ = V − E + F; genus = round(bodies − χ ÷ 2)

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Face area and center

    Each face's area and center point, listed with the face.

    area = ∬ dA over the face; center = its centroid

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Edge length and points

    Each edge's length, end points and middle point.

    length = ∫ |C′(t)| dt; middle = C((t₀ + t₁) ÷ 2)

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Bounding box

    The smallest axis-aligned box around a shape.

    min, max per axis from the kernel's optimal box

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Facts about an imported STEP file

    The solid count, face count, volume and bounding box shown when a STEP file is imported.

    volume = ∭ dV (default integration)

    Exact solid: mesh, volume, area and tables brep.js
    • PartCraft
    64-bit
  • Stress at the integration points

    The six stress components at every integration point of every element, from the displacements.

    σ = D (ε − α ΔT I) per point, by the element's own routine

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Geometric stiffness times a vector

    Applies the stress-dependent stiffness Kσ to a vector, element by element.

    y = s × Σ_elements G_e x_e on each of the three directions

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Buckling factors by subspace iteration

    The lowest positive buckling load factors and their mode shapes.

    Z = K⁻¹ G X; reduce (Zᵀ G Z, Zᵀ K Z); Kr = L Lᵀ; eig(L⁻¹ Gr L⁻ᵀ) = μ; λ = 1 ÷ μ

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Solver tolerances of a buckling study

    How tightly the pre-stress solve and each inner solve are converged.

    pre-stress: 1e-10; each K⁻¹ solve: 1e-9

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Temperature rise at each node

    The temperature change that drives thermal stress: a uniform rise, or the temperature field minus the stress-free temperature.

    ΔT = T − T_ref, T_ref = 20 when not given

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Time step for a transient thermal load

    Which saved time step of a transient run is nearest the requested time.

    step = round(time ÷ (t ÷ steps)), held in [0, steps]; time = step × dt

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Voxel model volume and mass

    The volume and mass of the analysis model listed with the study.

    volume = elements × h³; mass = volume × density (tonne/mm³) × 1000

    Buckling load factors and thermal stress setup buckling.js
    • PartCraft
    64-bit
  • Numbers written to the deck

    Formats every coordinate, material value, load and penalty for the input deck.

    text = v.toExponential(10)

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Material cards

    Writes elastic constants, density and the two-point plastic curve of each part's material.

    density (tonne/mm³) = density (kg/m³) × 1e-12; plastic: (σ_y, 0) and (σ_y + H, 1)

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Support directions

    Writes each held direction, and a local axis system for supports on slanted faces.

    axis when ||v| − 1| < 1e-9; slanted: local x = n, local y = unit(t − (t · n) n)

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Nodal loads

    Writes the nodal forces of the study as concentrated loads.

    one line per non-zero force component

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Load increments

    The first and smallest load increment given to the other program.

    first = 1 ÷ steps; smallest = 1 ÷ (64 × steps); total and largest = 1

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Reading the result file

    Reads node positions and result values from the text result file.

    value = parseFloat(12-character field, D exponent read as E)

    CalculiX deck export and result import calculix.js
    • PartCraft
    64-bit
  • Default penalty stiffness

    The contact stiffness used when none is given.

    kn = 20 × E ÷ h

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Closest point on a triangle

    The point of a flat triangle nearest a given point, as weights of the three corners.

    region tests on d₁ … d₆ = dot products of edges with corner-to-point vectors; inside: v = v_b ÷ (v_a + v_b + v_c)

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Closest point on a curved face

    The nearest point of a six-node master face, in the face's own coordinates.

    best of 4 flat sub-triangles (corners and midsides); (L₁, L₂) = weights × reference coordinates

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Point and normal on a face

    The position and outward unit normal of a six-node face at given face coordinates.

    x = Σ N_k x_k; n = unit(Σ ∂N_k/∂L₁ x_k × Σ ∂N_k/∂L₂ x_k)

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Integration weights on the slave face

    The area each contact point on a slave face stands for.

    w = w_q × |∂x/∂L₁ × ∂x/∂L₂| ÷ 2

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Pairing slave points with the master

    Finds the master point each slave point faces, and reports whether the pairing changed.

    paired when d² ≤ cutoff²; moved when the face changes or |ΔL| > 2e-3

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Gap, contact force and stiffness

    The normal gap at a contact point and the force and stiffness it adds.

    g = n · (x_s − x_m); force = kn × w × (−g) when g < 0; stiffness = kn × w × c cᵀ ⊗ n nᵀ; pressure = force ÷ w

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Bonded tie

    Holds a slave point to the master point it started nearest to.

    rel = (x_s − x_m) − (x_s − x_m) at the first call; force = −kt × w × rel

    Contact between parts in stress analysis contact.js
    • PartCraft
    64-bit
  • Machined part: stock, cutting, holes, handling

    The cost rows of a part cut from a block of stock.

    stock = (size + 2 × allowance) per axis; stock cost = stock volume × density × 1e-9 × price per kg; cutting minutes = (stock volume − volume) ÷ removal rate × finishing; cost = minutes ÷ 60 × rate per hour

    Manufacturing cost estimate cost.js
    • PartCraft
    64-bit
  • Printed part: filament and machine time

    The cost rows of a 3D-printed part.

    printed volume = volume × fill; filament = printed volume × density × 1e-9 × price per kg; hours = printed volume ÷ volume per hour

    Manufacturing cost estimate cost.js
    • PartCraft
    64-bit
  • Cost per part and rounding

    The cost of each part at the given quantity, the share of each row, and the rounded figures returned.

    total = unit + setup ÷ quantity; share = row ÷ total; returned amounts = round to 0.01

    Manufacturing cost estimate cost.js
    • PartCraft
    64-bit
  • Rounding to two decimals

    Rounds an amount or a listed quantity to hundredths.

    r2(v) = round(v × 100) ÷ 100

    Manufacturing cost estimate cost.js
    • PartCraft
    64-bit
  • Number of holes

    Counts the holes the part has, for the time per hole.

    hole features + circles in cut sketches, each × (pattern count − 1) more for patterns

    Manufacturing cost estimate cost.js
    • PartCraft
    Exact
  • Stock block

    The size and position of the stock around the part.

    offset mode: min = box min − (side, side, bottom), max = box max + (side, side, top); cylinder: r = ½ × box diagonal in XY + side

    Part and stock in machine coordinates cam.js
    • PartCraft
    64-bit
  • Work origin and frame change

    Moves points from model coordinates to the work frame (G54) and back.

    work = (p · x, p · y, p · z) − origin

    Part and stock in machine coordinates cam.js
    • PartCraft
    64-bit
  • Mesh in the work frame and snap tolerance

    Copies the part's mesh into work coordinates and sets how close a mesh point must be to an exact edge to be taken as that edge.

    tol = 1e-4 + 2e-6 × largest model dimension

    Part and stock in machine coordinates cam.js
    • PartCraft
    32-bit in part
  • Where a vertical line meets the part

    The heights at which a vertical line through (x, y) crosses the part's surface.

    weights l₁, l₂, l₃ from the triangle's XY corners; z = l₁ z₁ + l₂ z₂ + l₃ z₃

    Part and stock in machine coordinates cam.js
    • PartCraft
    32-bit in part
  • Top facet and its slope

    The height and slope of the highest mesh triangle under a point, used by 3D finishing.

    g_x = ((z₂ − z₁)(y₃ − y₁) − (z₃ − z₁)(y₂ − y₁)) ÷ d₂; g_y likewise

    Part and stock in machine coordinates cam.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.