Lattice Boltzmann method (LBM) is used to solve fluid problems traditionally. Rarely is LBM adopted to simulate electromagnetic problems. On the other hand, there are several kinds of methods for simulating electromagnetic problems, such as the finite-difference time-domain method. However, a whole new algorithm developed by Mendoza in 2008 combines lattice Boltzmann equation and Maxwell equation to simulate electrodynamics. When correct initial and boundary conditions are specified, the 4-current and six independent elements of electromagnetic field can be evolved at any time under this algorithm. I explored various non-trivial boundary conditions in the calculations, such as conducting walls of a waveguide and non-reflecting boundary. Since LBM can also handle nonlinear dielectric materials, I also explore the steepening of wave packets in such a nonlinear material. I implemented this computation algorithm using GPU. Through the CUDATMarchitecture, the calculation can be substantially speeded up.