Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes