An atomistic description of solids and liquids based on the principles of quantum mechanics cannot be done by ``paper-and-pencil'' physics. If you want to obtain quantitative information about the properties of a material starting from Schrödinger's equation you will have to do massive numerical calculations. In addition, while simple models often give important insights into the underlying physics of a system, it is not always clear, which model is the correct one. A case in point is the search for an accurate model that describes high-TC superconductors. In these situations, we can use simulations as ``numerical experiments:'' We can vary parameters in our computation over a wide range and turn, for instance, coupling parameters on and off in a well defined way. The wide parameter range and control that a simulation offers compared to experiments can help identify the important physics of a system and help in model building.
Clearly, complex simulations will force you to think about how to write a program such that it is flexible, easily maintainable, and efficient. One way to achieve your goals, is to use object-oriented code design and parallel computing. These are aspects of software engineering that we have explored to some extent here at OSU. The experience that I gained in the context of computational many-body theory is summarized in that section. In addition, a list of supercomputers that we use at OSU can be found in the ``Platforms'' section.
To cite this page:
Computational Many-Body Theory
<http://www.physics.ohio-state.edu/~aulbur/computing/computing.html>
Edited by: aulbur@campbell.mps.ohio-state.edu