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

  • Inline values

    A value that the file stores inside its 32-bit payload word.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Raw arrays

    A packed array of numbers of one type.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Compressed float arrays

    An array stored as whole numbers or as a lookup table and indexes.

    Floats read from USD files usd/usdc-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Float text rounding

    A float or half value read from .usda text.

    Floats read from USD files usd/usda-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Arrays from text

    A list of parsed numbers as a typed array of the right type.

    Floats read from USD files usd/usda-read.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Half to float

    The value of a 16-bit half float.

    v = ± (1 + m ÷ 1024) × 2^(e − 15)

    Half floats in USD usd/util.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Float to half

    The 16-bit half closest to a number.

    Half floats in USD usd/util.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    32-bit in part
  • Measure to SI

    A property value in meters, square meters or cubic meters.

    area = v × L²; volume = v × L³

    IFC measures in SI for USD usd/ifc.js
    • CadCraft
    • BimCraft
    • ModelCraft
    • TakeoffCraft
    • CivilCraft
    • DetailCraft
    • PartCraft
    64-bit
  • Factor from text

    A factor from a plain number, a percent of the size, or a percent change.

    f = n; n ÷ 100; 1 ± n ÷ 100

    Typed scale factors and shrinkage allowance scale-factors.js
    • ModelCraft
    • PartCraft
    64-bit
  • Shrinkage allowance

    The pattern factor for a casting that shrinks by a percentage.

    add: 1 + s ÷ 100; exact: 1 ÷ (1 − s ÷ 100)

    Typed scale factors and shrinkage allowance scale-factors.js
    • ModelCraft
    • PartCraft
    64-bit
  • Meters per file unit

    The conversion factor for each unit system a 3DM file can name.

    meters = file value × factor

    Units and tolerance read from a 3DM file io/3dm/read.js
    • ModelCraft
    • PartCraft
    64-bit
  • Units and tolerance from the file settings

    Reads the unit system, custom meters-per-unit and the tolerance from a file's settings record.

    Units and tolerance read from a 3DM file io/3dm/read.js
    • ModelCraft
    • PartCraft
    64-bit
  • Density to tonnes per cubic millimeter

    Converts a density in kg/m³ to t/mm³ for the solver.

    ρ(t/mm³) = ρ(kg/m³) × 10⁻¹²

    Material units, gravity and custom material limits materials.js
    • PartCraft
    Exact
  • Gravity constant

    The default gravity used for self-weight, in millimeters per second squared.

    g = 9810 mm/s²

    Material units, gravity and custom material limits materials.js
    • PartCraft
    64-bit
  • Custom material check

    Checks a material from a file or a person and fills in a library material's thermal values.

    Material units, gravity and custom material limits materials.js
    • PartCraft
    64-bit
  • Four significant digits

    Prints a result with 4 significant digits.

    toPrecision(4); toExponential(3) when |v| ≥ 1e5 or 0 < |v| < 1e-3

    Simulation numbers shown as text sim-ui.js
    • PartCraft
    64-bit
  • Fixed decimals

    Prints a number with a set number of decimals, and fills number boxes with 6 decimals.

    toFixed(dp), trailing zeros removed

    Simulation numbers shown as text sim-ui.js
    • PartCraft
    64-bit
  • Normalized mode shapes

    Samples each mode at the plot vertices and scales it to a largest displacement of 1.

    uᵥ = sample(modeᵥ) ÷ max |u|

    Mode shapes returned by the simulation worker sim-worker.js
    • PartCraft
    32-bit in part
  • Temperature range of the plot

    The lowest and highest temperature used for the plot scale and its tick labels.

    lo = min T, hi = max T over all vertices (all frames when transient)

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    32-bit in part
  • Probed temperature and flux

    The temperature and flux text shown when a point is probed.

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    32-bit in part
  • Heat balance imbalance

    The unbalanced heat in watts and as a percent of the larger of inflow and outflow.

    percent = 100 × |imbalance| ÷ max(inflow, outflow, 1e-300)

    Thermal window temperature range and balance read-outs sim-thermal-ui.js
    • PartCraft
    64-bit
  • Scalar from a field

    One number per node or element from a vector or stress field.

    |u| = √(ux² + uy² + uz²); σvm as above

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    64-bit
  • Range of the plotted values

    The lowest and highest value that set the color scale.

    hi ≤ lo → hi = lo + max(|lo|, 1) × 1e-6

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    64-bit
  • Deformation scale

    A round scale that makes the largest displacement about 8 percent of the model size.

    raw = 0.08 × diagonal ÷ max |u|, rounded up to 1, 2, 5 or 10 × 10ᵉ

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    32-bit, display only
  • Outer surface of a mesh

    The outer surface of a solid or surface mesh as triangles for the view.

    Script result fields and meshes shown in the window cs-ui.js
    • PartCraft
    32-bit, display only
  • Mass from volume and density

    The mass of a part in grams.

    m = V × ρ ÷ 1000

    Part and assembly mass in the bill of materials, measure panel and assistant bom.js
    • PartCraft
    64-bit
  • Rounding of the exported bill

    The numbers written into the bill of materials CSV.

    value = round to 3 decimals

    Part and assembly mass in the bill of materials, measure panel and assistant bom.js
    • PartCraft
    64-bit
  • Mass properties reported to the assistant

    Volume, area, center, mass and inertia of the built solid.

    mass = V × ρ ÷ 1000; inertia = tensor × ρ ÷ 1000

    Part and assembly mass in the bill of materials, measure panel and assistant agents.js
    • PartCraft
    32-bit in part
  • Mass properties in the measure panel

    Where the measure panel gets a body's mass properties, exact or from the mesh.

    Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js
    • PartCraft
    32-bit in part
  • Number format in the measure panel

    Rounds a measure value to a number of decimals for the panel.

    toFixed(dp); |v| < 1e-12 shown as 0

    Part and assembly mass in the bill of materials, measure panel and assistant measure-ui.js
    • PartCraft
    64-bit
  • Default tangent modulus and its check

    Sets the slope after yield when none is given and flags one that is not below E.

    Et = E ÷ 100 when not given

    Nonlinear study fields and thermal stress history nlstudy.js
    • PartCraft
    64-bit
  • Contact penetration problem

    Flags a contact penetration over 1 percent of the element size, with the values it reports.

    problem when max penetration > 0.01 × h; pct = 100 × pen ÷ h

    Nonlinear study fields and thermal stress history nlstudy.js
    • PartCraft
    64-bit
  • Time steps solved for stress

    Chooses which time steps of the heat run get a stress solve.

    stepᵢ = round(i × steps ÷ (n − 1)), i = 0…n−1

    Nonlinear study fields and thermal stress history thermal-history.js
    • PartCraft
    Exact
  • Thermal load per step

    The load vector of each stress step and the temperature range of the worst step.

    ΔT = T − Tref; f = f_mech + ft(ΔT)

    Nonlinear study fields and thermal stress history thermal-history.js
    • PartCraft
    64-bit
  • Solid cubes from a distance grid

    Marks each cube solid or not from its corner values.

    solid when Σ₈ corner values < 0; origin = lo × h

    Voxel grid and lattice struts field/voxels.js
    • PartCraft
    64-bit
  • Lattice struts in a box

    The strut list of a lattice that fills a box.

    cells = ⌈(extent ÷ cell) − 1e-9⌉; end = corner + (i + a) × cell

    Voxel grid and lattice struts field/lattice.js
    • PartCraft
    64-bit
  • Sewing tolerance from model size

    The tolerance with which patch edges are joined.

    tol = max(1e-7, 1e-7 × max |coordinate|)

    Form cage to exact solid: sewing and volume form-brep.js
    • PartCraft
    64-bit
  • Sewn solid and its volume

    Sews the faces, makes a solid, and measures its volume.

    Form cage to exact solid: sewing and volume form-brep.js
    • PartCraft
    64-bit
  • Triangle normals, areas and boxes

    The unit normal, area and bounding box of every triangle, and the size of the whole mesh.

    n = (b − a) × (c − a); area = |n| ÷ 2; unit normal = n ÷ |n|

    Rays and distances on a printer mesh print-geom.js
    • ModelCraft
    • PartCraft
    64-bit
  • Nearest face along a ray

    The distance to the first triangle a ray meets between two limits, and whether it meets it from behind.

    det = e₁·(d × e₂); u = (s·(d × e₂)) ÷ det; v = (d·(s × e₁)) ÷ det; t = (e₂·(s × e₁)) ÷ det

    Rays and distances on a printer mesh print-geom.js
    • ModelCraft
    • PartCraft
    64-bit
  • Ray and box

    Whether a ray passes through a box within the current distance limits.

    t_near = (min − o) × (1 ÷ d); t_far = (max − o) × (1 ÷ d), per axis

    Rays and distances on a printer mesh print-geom.js
    • ModelCraft
    • PartCraft
    64-bit
  • Point to triangle distance

    The squared distance from a point to the closest point of one triangle.

    closest point q by the corner, edge and face regions; d² = |p − q|²

    Rays and distances on a printer mesh print-geom.js
    • ModelCraft
    • PartCraft
    64-bit
  • Distance to the nearest face

    The distance from a point to the nearest triangle within a search radius.

    d = √(min over triangles of d²), limited to r

    Rays and distances on a printer mesh print-geom.js
    • ModelCraft
    • PartCraft
    64-bit
  • Fewest cells that fit the bed

    How many equal cells along x, y and z make every piece fit the printer bed, allowing a piece to lie on its side.

    start: nₖ = ⌈sizeₖ ÷ largest bed side − 10⁻⁹⌉; cellₖ = sizeₖ ÷ nₖ (+ extra on a cut axis); fits if cellₖ ≤ bed_p(k) + 10⁻⁹

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    64-bit
  • Cut planes of the grid

    The planes that cut the model's box into the chosen number of cells.

    d = lo + (hi − lo) × i ÷ n

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    64-bit
  • Planes and triangles about the model's middle

    Normalizes the given planes and moves planes and triangles to coordinates measured from the middle of the model's box.

    n̂ = n ÷ |n|; d = d ÷ |n|; d_local = d − n̂·org; p_local = p − org

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    64-bit
  • Model into the boolean library

    Hands the model's corners to manifold-3d, measured from the middle of its box.

    q = p − org; corners welded where round(q × 10⁵) agree; stored as 32-bit

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    32-bit in part
  • Pieces back from the boolean library

    Reads a piece's corners from manifold-3d and returns them to world coordinates.

    world = org + 32-bit local corner

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    32-bit in part
  • Cutting by each plane

    Splits every cell by the next plane and keeps the parts that have volume.

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • PartCraft
    32-bit in part
  • Outline of a cut through the model

    The line segments where a plane crosses the model's triangles, in the plane's own two axes.

    sᵢ = n·pᵢ − d; k = sᵢ ÷ (sᵢ − sⱼ); point = pᵢ + (pⱼ − pᵢ) × k

    Splitting a model into printable pieces print-split.js
    • ModelCraft
    • 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.