Hi Jason,
The pertubation size had a bit of an effect but not much, then I compiled in double precision and that helped a lot, though I still had to give a non-zero number.
For another purpose I changed the source code as you advised to Vicki in this post:
so that I could specify any point to linearise around, and interestingly it solved this problem. So now if I specify the operating point as zero for all states for each degree of freedom, the linearisation works and I get meaningful mass, stiffness and damping matrices.
So I imagine the issue might be in how the user specified initial conditions from the input files are converted into the operating point.
Thanks
Emily