October 13, 2026

Engineering-grade physics simulation without compromises

Introducing Anvil, our state-of-the-art physics solver for robotics simulation and industrial digital twins.

Introducing Anvil

Anvil is our state-of-the-art physics solver for robotics and industrial digital twins. When compared to other physics engines, Anvil achieves best-in-class stability, reliability and accuracy without compromising on real-time performance. It delivers the advantages of a direct solver without the associated performance costs. Across many tests, Anvil approaches or even exceeds the performance of highly optimized iterative Projected Gauss-Seidel (PGS) solvers.

Engineering Grade

Most legacy industrial simulation software uses physics engines that were originally designed for games. These physics engines make many approximations to achieve real-time performance. Such approximations result in what the industry terms “plausible physics”. In other words, the physics behavior appears reasonable to the untrained eye, provided that everything is configured within a fairly narrow range. In practice, this means:

  • No large mass ratios
  • No small moments of inertia
  • No small or thin collision geometry
  • No long chains of joints
  • No stiff springs

Whilst all of the above are quite severe limitations, the first is particularly problematic. Large mass ratios are extremely common, even in situations where you wouldn’t expect them. For example, a stack of boxes can become unstable because the box at the bottom of the stack experiences the weight of all the boxes stacked on top of it. This means that even if all the boxes in the stack have identical masses, increasing the number of boxes in the stack will quickly cause the stack to collapse.

There are a few commercial physics engines that resolve these issues by using direct solvers. Unlike iterative methods, such as Projected Gauss-Seidel, direct methods solve all the constraint equations simultaneously. This often allows them to resolve the system of equations to near floating point precision. The downside is that you pay for the improved stability and accuracy with an extremely heavy computational cost. Direct solvers can run thousands of times slower than iterative methods, which solve each constraint one at a time. The time complexity for direct solvers is O(n3), meaning that the time taken to solve the system of constraints is proportional to the number of constraints cubed. Worse still, the constant of proportionality is usually very high.

Direct solvers are only capable of achieving real-time performance for scenes consisting of small numbers of interdependent constraints. Anvil has a lower time complexity, much lower constant of proportionality and normally converges using very few iterations. This makes it usable for real-time simulation of contact-rich environments, which can consist of tens of thousands of contact points. Scenes containing pallets of densely stacked boxes, or thousands of totes on conveyors, can be solved both accurately and efficiently by Anvil.

Why this Matters

One of the most common uses for industrial digital twins is testing machine behavior and control logic. Without adequate physics stability, reliability and accuracy, users end up testing the physics engine rather than the virtual prototype of the machine. You detect failures that wouldn’t happen in reality, or even worse, fail to detect failures that would happen in reality. As a result, in just about every digital twin we’ve seen created with the traditional and extremely expensive software options available, you will find many hacks to work around physics issues. This all dramatically slows down the creation of the digital twin, and erodes trust in the data that you collect.

Whenever users begin working with such software, their instinct is to import the CAD unchanged and start adding physics, specifying accurate masses. When running the simulation, they are immediately met with a mess of jittering parts, separating joints and a whole host of other issues. They’re quickly told that they need to “just set all the masses to 1kg and scale up the inertia tensor”. Want to grip things with friction? Sorry, can’t be done. Just reparent the entity. Need to stack boxes? You’ll need to “stick them together and disable physics”. Have small or thin parts with complex collision geometry? You’ll need to “increase the size of the part in the CAD and figure out how to manually decompose the geometry”.

Whilst all of these workarounds may leave you with a barely functioning simulation at the end, you’ll end up asking yourself what you’re really testing. You were sold software that could simulate your machine, but it’s not really your machine anymore. It’s a fuzzy approximation. And can you really trust the results that you’re seeing? Anvil addresses all of this, delivering robust, reliable and analytically validated physics with real-time performance characteristics. All without the need to tweak countless complex settings. In other words, Anvil gets out of your way and just works.

Comparison

Below, we compare Anvil to the most popular alternative physics solvers, including:

  • NVIDIA PhysX (PGS)
  • MuJoCo (Newton Solver)
  • Commercial Sparse Direct Solver

NVIDIA PhysX is used widely across traditional industrial simulation software, including:

  • Siemens NX MCD
  • Visual Components
  • Emulate3D
  • ISG-virtuos
  • NVIDIA Omniverse (Isaac Sim)
  • Unity3D

Both Rockwell Automation’s Emulate3D and ISG-virtuos also support Algoryx AGX Dynamics, a commercial physics engine that includes a sparse direct solver. Others, such as Simumatik and Machineering iPhysics, use the Bullet physics engine, which uses an iterative solver and typically performs and behaves significantly worse than PhysX’s PGS solver. PhysX also includes a Temporal Gauss-Seidel (TGS) solver, but through extensive testing we found that it was much less stable than PGS for all but the most simple tests. It is therefore excluded from this comparison.

These tests were specifically selected to compare behavior and performance across a range of cases where iterative methods struggle, and a few where they excel. They’re not only academic, but rather include representations of common configurations we’ve seen in the wild. Most physics engines have some solver settings. We selected reasonable settings to make the comparisons as fair as possible. It should be noted that no comparison can be completely fair, but we tried our best in all cases.

All Engines: 10ms timestep
NVIDIA PhysX (PGS): 98 position iterations, 2 velocity iterations
MuJoCo (Newton): solref = (0.02, 1), solimp = (0.9999, 0.9999, 0.001, 0.5, 2), 100 maximum iterations
Commercial Sparse Direct Solver: 1E-4 contact regularization
Anvil: 1E-4 contact regularization, 100 maximum iterations

All tests were run on a desktop computer with an Intel i9 13900KS with 32GB of memory and NVIDIA RTX3090 GPU. The number of threads was limited to 8. The latest versions of all physics engines were used at the date of the tests. Specifically, we used MuJoCo 3.14.0 and PhysX 5.11.0.

High Mass Ratio

This scene tests the ability for the physics engine to solve contacts involving high mass ratios. A heavy 10,000kg box is created resting on a 1kg box.

High Mass Ratio Physics Comparison

We measure how much the boxes intersect each other, and how much the lower box intersects the floor.

Engine Overlap Between Boxes Floor Overlap
Anvil 0.123mm 0.123mm
MuJoCo (Newton) 0.153mm 0.153mm
SDS 0.123mm 0.123mm
PhysX (PGS) Failed Failed

PGS fails the test as expected. Iterative impulse solvers like PGS are not able to converge such systems within practical iteration counts for a 10ms fixed timestep. Both Anvil and SDS match the expected value of 0.123mm for the 1E-4 regularization, which was calculated analytically. MuJoCo behaves marginally worse, likely because its stopping criteria allow the solver to exit earlier.

Stiff Cable

We model a stiff cable using 20 links connected by spherical joints with damped springs. The cable is fixed at one end and should deflect downwards slightly due to gravity.

Stiff Cable Physics Comparison

We measure how much the cable deflects from horizontal, comparing to the analytic solution.

Engine Tip Deflection
Anvil 29.823mm
MuJoCo (Newton) 29.822mm
SDS 29.823mm
PhysX (PGS) Failed

Anvil and SDS match the expected value of 29.823mm. Again, MuJoCo is marginally worse, likely due to its convergence criteria. PGS fails since the stiff springs cause the system of constraint equations to be poorly conditioned, resulting in slow convergence.

Fixed Joints

A rectangular rigid bar is formed of 20 individual cubes connected by fixed joints. The bar is fixed at one end. Each cube has mass equal to double the previous cube, where the lightest cube is fixed kinematically to the world. The first cube has a mass of 0.1kg and the final cube has a mass of over 52,000kg.

Fixed Joint Physics Comparison

We measure how much the bar deflects from horizontal, comparing to the analytic solution.

Engine Tip Deflection
Anvil 1.356mm
MuJoCo (Newton) Failed
SDS 1.376mm
PhysX (PGS) Failed

Anvil matches the expected value of 1.356mm. SDS is marginally worse, whilst MuJoCo quickly diverges and PGS fails to converge.

Inclined Ramps

To validate static and dynamic friction, we create a series of differently inclined ramps with boxes resting on them.

Friction Physics Comparison

We measure the velocity of the boxes and compare to the analytically calculated solution.

Engine RMS Velocity Error
Anvil 0.034mm/s
MuJoCo (Newton) 231.639mm/s
SDS 7.143mm/s
PhysX (PGS) 0.006mm/s

PGS behaves best in this test because it uses hard contact constraints, which it can solve quickly. Anvil also comes very close to the analytic solution. SDS behaves significantly worse for reasons unknown. MuJoCo effectively fails the test. This is due to MuJoCo’s contact formulation, which couples sliding to motion in the normal direction. As a result, the boxes jump upwards as they slide down the ramp.

Gripping with Friction

We model a simple mechanical gripper using two prismatic joints with positional drives. A line of 4 boxes is gripped by fingers pushing inwards with a force of 150N at each end.

Mechanical Gripper Physics Comparison

The distance and speed at which the boxes slip relative to the mechanical gripper are measured.

Engine Maximum Slip Final Slip Speed
Anvil 0.008mm 0.00073mm/s
MuJoCo (Newton) Failed Failed
SDS 0.050mm 0.01962mm/s
PhysX (PGS) 0.315mm 0.03662mm/s

Anvil behaves markedly better than the other engines, with just 8µm of slip over the 4.5s simulation. SDS slips over 6X more than Anvil, whilst PGS slips around 40X more. MuJoCo fails the test, likely due to its contact/friction formulation. Both SDS and MuJoCo also result in noticeable intersections as the gripper closes. This is because both engines lack Continuous Collision Detection (CCD), whilst this is supported by both Anvil and PhysX (PGS).

Pallets on Conveyors

Europallets are simulated travelling at 0.2m/s along straight belt conveyors. Each pallet consists of 5 layers of 4x3 boxes, where each box weighs 1kg and each layer is separated by a 1mm thick slipsheet with a mass of 100g.

Pallet Conveyor Physics Comparison

We measure the performance over the duration of the 50s simulation.

Pallet Conveyor Physics Performance Comparison

Anvil significantly outperforms all other engines, including PGS. It’s worth noting that PGS fails to prevent the boxes from penetrating completely through the slipsheets due to the relatively high mass ratios. All other engines resolve the overlap to a few microns.

Engine Mean Maximum P99
Anvil 0.95ms 2.90ms 1.65ms
MuJoCo (Newton) 5.23ms 189.74ms 28.40ms
SDS 13.61ms 1,604.62ms 239.41ms
PhysX (PGS) 3.19ms 4.43ms 3.90ms

Anvil performs over 14X faster than the commercial sparse direct solver on average during this test. However, this gap widens to over 550X for the peak frame time, with SDS taking over 1.6 seconds for the maximum frame. Anvil is also over 65X faster than MuJoCo when comparing the maximum frame times. This is despite Anvil behaving favorably when compared to MuJoCo, due to its friction formulation.

Totes on Conveyors

We simulate 2000 thin-walled totes on conveyors. The totes weigh just 200g and contain 4 small boxes weighing 10kg each. The wall thickness of each tote is just 4mm. In total, the scene consists of 10,000 dynamic rigid bodies.

Tote Conveyor Physics Comparison

We measure the performance over the 20s simulation.

Tote Conveyor Physics Performance Comparison

Anvil once again significantly outperforms all other engines. Just like the pallet conveyor, PGS fails to prevent the boxes from sinking through the bottom of the tote, whilst all other engines resolve the overlap to a few microns.

Engine Mean Maximum P99
Anvil 3.896ms 9.173ms 4.922ms
MuJoCo (Newton) 28.620ms 51.722ms 37.527ms
SDS 30.992ms 68.759ms 42.961ms
PhysX (PGS) 22.050ms 33.047ms 28.061ms

Anvil outperforms MuJoCo by over 7X. No other engine can meet the 10ms frame budget, whilst Anvil averages less than 4ms per frame. The commercial sparse direct solver is comparable in performance to MuJoCo in this scene, since each constraint island is quite small.

Dense Box Grid

This benchmark simulates dense grids of boxes. Each box has a uniform mass of 1kg. We test the ability of the solvers to handle up to tens of thousands of interdependent contact points. Unlike the tote conveyor test, each island can consist of tens of thousands of constraint rows.

Dense Box Pile (125 Boxes) Physics Comparison

We measure the mean step time for each engine for 125, 500 and 1000 box piles.

Dense Box Pile Physics Performance Comparison

This is exactly the kind of scene where PGS should excel. The stack height is reasonably small and there are no large mass ratios. However, with a grid of just 125 boxes, Anvil actually outperforms PGS. At 500 boxes, Anvil and PGS perform identically. However, at 1000 boxes PGS pulls ahead of Anvil, although the boxes move around much more in PGS than in Anvil.

Dense Box Pile Residual Motion Physics Comparison

The algorithmic time complexity of the SDS solver blows up here, making the engine practically unusable for scenes with medium to large islands. At just 125 boxes, SDS took over 15 seconds per frame, quickly hitting the timeout duration for the test. At 500 boxes, SDS was not able to complete a single frame within an extended 2 hour timeout.

MuJoCo performed significantly worse than Anvil, taking over 22ms per frame for the 125 box scene, over 2 seconds for the 500 box scene and over 7 seconds for the 1,000 box scene. However, the behavior was comparable to both Anvil and the SDS engines.

House of Cards

This test is an adaptation of the card house test from a recent paper, A Splitting Architecture for Exact Reduced Coulomb Friction. We scaled the playing cards such that they are accurately dimensioned and weighted, with a thickness of just 0.3mm and a mass of 1.8g each. This test is particularly difficult, because it requires simulating small paper-thin objects with accurate friction, where even very small errors will cause the structure to collapse.

Card House Physics Stability Comparison

We measure the average speed at which the cards drift over time after settling.

Engine Mean Drift Speed
Anvil 0.0025mm/s
MuJoCo (Newton) 0.0450mm/s
SDS Failed
PhysX (PGS) 1.1749mm/s

Surprisingly, PGS keeps the house of cards stable, at least for several seconds. It later collapses due to the high drift speed. The cards immediately collapse with the SDS solver, although this is likely due to the absence of Continuous Collision Detection (CCD). Reducing the timestep to 1ms does allow the structure to remain stable. MuJoCo performs reasonably well in this test, although it has a drift speed of approximately 18X higher than Anvil.

Masonry Arch

Another adaptation from the above-mentioned paper, with the size scaled down by a factor of 100. Each block uses a single convex collider. The blocks are initialized with a small spacing between them, and they subsequently fall into place.

Masonry Arch Physics Stability Comparison

Only Anvil and PGS keep the arch standing, although the arch noticeably sways and drifts when using PGS. It’s not clear why MuJoCo fails this test, although it may be due to either the absence of CCD or its convex-convex contact generation. SDS also fails, likely for similar reasons.

Engine Mean Drift Speed
Anvil 0.0010mm/s
MuJoCo (Newton) Failed
SDS Failed
PhysX (PGS) 0.8792mm/s

Differential Conveyor

Two conveyors are positioned side-by-side, with a case that straddles both conveyors equally. The surface speeds of the conveyors are set differently, which should cause the case to rotate as it travels along the conveyors.

Differential Conveyor Physics Comparison

The observed rotation speed is compared to the analytic result.

Engine RMS Angular Speed Error Mean Sideways Drift Speed
Anvil 0.218°/s 0.274mm/s
MuJoCo (Newton) 8.626°/s 20.521mm/s
SDS Failed Failed
PhysX (PGS) Failed Failed

Both PGS and SDS failed this test, with the case apparently transferring its weight onto only one of the conveyors. This is understandable for the PGS solver, since it models contacts using hard constraints. It’s unclear why SDS fails in this case. The case does rotate when using MuJoCo, but there is a high error in the angular speed and the case quickly drifts sideways. Anvil is the only engine that can simulate this scene to high accuracy.

Paper Stack

100 A4 paper sheets are dropped one at a time every 250ms from a height of 10cm. The sheets are accurately dimensioned, with a thickness of just 100 microns and a mass of 5g.

Paper Sheet Stack Physics Comparison

We compare the number of out of order sheets, the maximum sheet overlap, the maximum sheet tilt angle and the mean step time.

Engine Order Violations Maximum Overlap Maximum Sheet Tilt Mean Step Time
Anvil 0 12.02µm 0.000° 0.507ms
MuJoCo (Newton) 30 99.48µm 0.025° 21.649ms
SDS 43 100.00µm 0.943° 63.573ms
PhysX (PGS) 33 100.00µm 0.094° 4.870 ms

Anvil is the only engine that has no sheet order violations. PGS fails due to slow convergence for large stacks. MuJoCo likely fails due to its lack of support for CCD. SDS hits a timeout after around 80 sheets, although many sheets were still incorrectly ordered and there was significant overlap observed. Anvil is significantly faster than all other engines, beating MuJoCo by approximately 43X.

Two Axis Arm

This test simulates a simple 2-axis robotic arm, where each revolute joint is powered using direct drives. The drive for the first arm is set to rotate at 2rad/s using velocity control whilst the drive for the second arm is set to hold its relative angle of 60° using positional control.

Joint Torque Physics Comparison

The PD drives are configured with the following stiffness and damping parameters:

Joint Stiffness (Kp) Damping (Kd)
1 0N·m/rad 56.8N·m·s/rad
2 1,000,000N·m/rad 923.76N·m·s/rad

The torque is measured and compared to the analytic result. The separation of the anchor point of the first axis is also measured.

Engine J1 Torque Error J2 Torque Error Maximum Anchor Separation
Anvil 0.01% 0.01% 156.52µm
MuJoCo (Newton) Failed Failed Failed
SDS 0.00% 0.12% 703.54µm
PhysX (PGS) 3.19% 1.01% 157.08µm

MuJoCo becomes unstable in this test at high drive stiffness. This is likely because its default Euler integrator calculates torque from the joint’s angle at the start of each step, whereas the other engines’ joint drives account for how that torque changes as the joint moves during the step. All other engines are reasonably accurate, although the commercial sparse direct solver results in a high anchor separation, which could be problematic when simulating robots that require high precision and accuracy.

We subsequently repeated the test with the second joint set to use a damping coefficient (Kd) of 0.

Engine J1 Torque Error J2 Torque Error J2 RMS Torque Error Maximum Anchor Separation
Anvil 0.01% 0.01% 0.08% 156.56µm
MuJoCo Failed Failed Failed Failed
SDS 0.24% 0.67% 55.76% 704.62µm
PGS 3.19% 1.01% 1.01% 157.05µm

SDS developed sustained oscillations, resulting in a very high RMS error for J2’s torque. Anvil remained extremely stable and accurate.

Summary

Anvil sets a new standard for real-time physics simulation, delivering engineering-grade accuracy, exceptional stability and uncompromising performance. Across a comprehensive range of demanding benchmarks, Anvil not only outperforms traditional iterative solvers but also surpasses expensive commercial direct solvers in accuracy, robustness and computational efficiency.

By eliminating the traditional trade-off between physics fidelity and simulation speed, Anvil makes it possible to simulate complex industrial machines and systems with confidence. From precision robotics and friction-based gripping to densely packed conveyors and thousands of interacting bodies, Anvil delivers reliable, physically accurate results at real-time speeds, even in scenarios where competing physics engines fail completely.

For engineers, this means fewer approximations, fewer workarounds and more trustworthy dynamic digital twins. No artificially adjusted masses, oversimplified collision geometry or complex tricks to maintain stability. Just accurate physics that allows engineers to focus on designing, testing and validating real systems rather than fighting the physics engine.

No other industrial digital twin software offers this combination of physics accuracy, stability and real-time performance. Powered by Anvil, ProtoTwin is uniquely positioned to deliver engineering-grade digital twins without compromise.