Method

The solver, written out

The same five steps on every job, and the mathematics of the solve step, so you know exactly what produced a shape.

  1. 01

    Spec

    You give the envelope, hard points, keep-outs, material, process and load cases. This is the contract.

  2. 02

    Design space

    We mesh the free space and fix what must not move.

  3. 03

    Solve

    SIMP topology optimization with optimality-criteria updates and density filtering, minimizing the worst case across all load cases (p-norm min-max compliance) with a stress check.

  4. 04

    Verify

    Finite element analysis of the result per load case. Electrical rule checks and netlist match for electronics. Fit and keep-out checks.

  5. 05

    Prototype and test plan

    Print- or machine-ready geometry, boards and enclosures, plus the plan for the first physical test.

1 · The problem we solve

minx  maxk  ck(x) = FkT Uk subject to K(x) Uk = Fk for every load case k,  Σ xe ve ≤ f V,  0 ≤ xe ≤ 1, hard points fixed solid, keep-outs fixed empty

Compliance c is the work done by the loads; lower compliance is a stiffer part. The max over load cases is smoothed as a p-norm so it can be differentiated.

2 · Material model (SIMP)

Ee(xe) = Emin + xep (E0 − Emin),   p = 3 The penalty p makes intermediate densities structurally expensive, so the answer converges to solid or empty.

3 · Sensitivity

∂c/∂xe = −p xep−1 (E0 − Emin) ueT k0 ue One finite element solve per load case gives the gradient for every element at once (the problem is self-adjoint).

4 · Filter

x̃e = Σi Hei xi / Σi Hei,   Hei = max(0, rmin − ‖e − i‖) A density filter over radius rmin: the minimum member size, and the reason results are buildable.

5 · Update (optimality criteria)

xenew = clamp( xe · ( −∂c/∂xe / λ ∂V/∂xe )½,  xe ± m ) Bisection on λ holds the material fraction exactly; the move limit m keeps each step stable.

6 · Stress check

σPN = ( Σe σvM,eP )1/P,   margin = σendurance / max σvM von Mises stress per element, aggregated by a p-norm and checked against the material's endurance limit for every load case.

Solving K U = F

Plane-stress (2D) or 8-node hexahedral (3D) elements; the linear system is solved by a Jacobi-preconditioned conjugate gradient method, warm-started from the previous iteration. The demo on the home page runs this exact loop in your browser.

Our published study is 2D plane-stress. 3D hexahedral solves are in development.

Send us a spec.

Envelope, mounting points, keep-outs, material and the loads it has to survive. A sketch and a few numbers are enough to start. We reply with what we can solve, what we need, and a first scope.

Send a spec

Every job is scoped to the part.