Avoids allocations by passing pre-allocated output object to thermodynamic functions and collisions
Avoids allocations by moving multi-dimensional getitem to hand-crafted one-dimensional format in fluid-streaming. Probably only worthwhile because fluid-streaming is called all the time