Lattice Boltzmann Modeling: An Introduction for Geoscientists and Engineers