I'm working on a high-precision collision simulation with very small parts rotating. A colleague of mine previously asked some questions here concerning the units used on the code (you can find on https://groups.google.com/g/projectchrono/c/uIHk9qCrdbw/m/GwcbqfVWAAAJ)
I’ve moved the system to mm-kg-s (mass in kilograms, length in mm) to stay consistent with my CAD. The parts are quite small and light, ranging from 0.008g to 0.5g. Most of the movement is constrained by revolute joints using ChLinkLockRevolute and ChLinkMotorRotationTorque.
I am currently using ChSystemNSC, but I'm running into major stability issues when I apply to one of the bodys the real-world torque (~1 N.mm) and to another the spring rotational stiffness (~20 N.mm/rad). In my code, I have scaled these to mN.mm and mN.mm/rad to match the kg-mm-s consistency, but even at a 1e-5s timestep, the joints basically "detach" or drift apart and the parts fly off. It only runs correctly if I artificially lower the forces being applied.
Since the units and values are consistent, I'm wondering if the ChSystemNSC is the right choice for this kind of high stiffness-to-mass ratio. With mass values this small and applied torque this high, is there a high risk of numerical precision issues in the solver?
I appreciate any help or advice on what may be causing that instability problem!
- Mariah