In this report the combination of an iterative technique, the conjugate gradient algorithm, with a fast direct method, cyclic reduction, is used to solve the linear algebraic equations resulting from discretization of a nonseparable elliptic partial differential equation. An expository discussion of the conjugate gradient and preconditioned conjugate gradient algorithms and of their use in the solution of partial differential equations is presented. New results extending the use of the preconditioned conjugate gradients technique to singular linear equations which arise from discretized elliptic equations with Neumann boundary conditions are also given. The algorithms are applied to solve a specific elliptic equation which arises in the study of buoyant convection produced by a room fire. A code was developed to implement the algorithms for this application. Numerical results obtained through testing and use of the code are discussed.