Complexity in science arises in particular problems that may not be fruitfully studied as isolated systems acting independently of others. Often these problems are instead advantageously studied using computer simulation, but only if a method for correctly modeling the interactions of subsystems can be devised. This project involves computational approaches to a variety of problems that exhibit complexity in geophysics. Specific applications are in the general areas of fluid dynamics (two-phase flow and flow in porous media) and nonlinear seismic inversion. In each of these problems, the seemingly intractable interdependence of component parts may be surmounted by the design of elementary computer algorithms that produce complexity in macroscopic, aggregate behavior while maintaining simplicity at the microscopic, component level.