First collision or streaming?

I am solving channel flow problem with LBM. I implement collision first and streaming after. Please suggest me, is it correct or is streaming first and collision after?

Usually the order is not important. You just have to do both at each time step. For example in OpenLB the order is collide and then stream.

Indeed: this question amounts to wondering who is first, the hen or the egg. The answer is irrelevant: what really matters is that collision and streaming are executed one after another. There are however certain actions which you must be certain to execute at a well defined moment, either between collision and streaming, or between streaming and collision.

The algorithm for many boundary conditions, such as Zou/He or Inamuro (see description of boundary conditions), needs to be implemented after streaming, and before collision.

You also need to be careful when you measure physically relevant quantities in your simulation. As far as conserved quantities are concerned (density and momentum), you may perform your measurements whenever you like. These quantities yield the same value before and after collision. Things are different for non-conserved moments, which you should generally measure after streaming (before collision). That’s the point at which they yield the results from the Chapman-Enskog expansion, i.e. the stress tensor is proportional to the rate of strain etc.