PREFACE

In the decade since two of us wrote the book Computational Physics (CP), we have seen a good number of computational physics texts and courses come into existence. This is good. Multiple texts help define a still-developing field and provide a choice of viewpoints and focus. After perusing the existing texts, we decided that the most worthwhile contribution we could make was to extend our CP text so that it surveys many of the topics we hear about at computational science conferences. Doing that, while still keeping the level of presentation appropriate for upper-division undergraduates or beginning graduate students, was a challenge.

As we look at what we have assembled here, we see more than enough material for a full year’s course (details in Chapter 1, “Computational Science Basics”). When overlapped with our new lower-division text, A First Course in Scientific Computing, and when combined with studies in applied mathematics and computer science, we hope to have created a path for undergraduate computational physics/science education to follow.

The ensuing decade has also strengthened our view that the physics community is well served by having CP as a prominent member of the broader computational science and engineering (CSE) community. This view affects our book in two ways. First, we present CP as a multidisciplinary field of study that contains elements from applied mathematics and computer science, as well as physics. Accordingly, we do not view the pages we spend on these subjects as space wasted not studying physics but rather as essential components of a multidisciplinary education. Second, we try to organize and present our materials according to the steps in the scientific problem-solving paradigm that lie at the core of CSE:

Problem theory model method implementation assessment.

This format places the subject matter in its broader context and indicates how the steps are applicable to a wider class of problems. Most importantly, educational assessments and surveys have indicated that some students learn science, mathematics, and technology better when they are presented together in context rather than as separate subjects. (To some extent, the loss of “physics time” learning math and CS is made up for by this more efficient learning approach.) Likewise, some students who may not profess interest in math or CS are motivated to learn these subjects by experiencing their practical value in physics problem solving.

Though often elegant, we view some of the new CP texts as providing more of the theory behind CP than its full and practical multidisciplinary scope. While this may be appropriate for graduate study, when we teach from our texts we advocate a learn-by-doing approach that requires students to undertake a large number of projects in which they are encouraged to make discoveries on their own. We attempt to convey that it is the students’ job to solve each problem professionally, which includes understanding the computed results. We believe that this “blue-collar” approach engages and motivates the students, encompasses the fun and excitement of CP, and stimulates the students to take pride in their work.

As computers have become more powerful, it has become easier to use complete problem-solving environments like Mathematica, Maple, Matlab, and Femlab to solve scientific problems. Although these environments are often used for serious work, the algorithms and numerics are kept hidden from the user, as if in a black box. Although this may be a good environment for an experienced computational scientist, we think that if you are trying to learn scientific computation, then you need to look inside the black box and get your hands dirty. This is probably best done through the use of a compiled language that forces you to deal directly with the algorithm and requires you to understand the computer’s storage of numbers and inner workings.

Notwithstanding our viewpoint that being able to write your own codes is important for CP, we also know how time-consuming and frustrating debugging programs can be, especially for beginners. Accordingly, rather than make the reader write all their codes from scratch, we include basic programs to modify and extend. This not only leaves time for exploration and analysis but also more realistically resembles a working environment in which one must incorporate new developments with preexisting developments of others.

The choice of Java as our prime programming language may surprise some readers who know it mainly for its prowess in Web computing (we do provide Fortran77, Fortran95, and C versions of the programs on the CD: http://press.princeton.edu/landau_survey/). Actually, Java is quite good for CP education since it demands proper syntax, produces useful error messages, and is consistent and intelligent in its handling of precision (which C is not). And when used as we use it, without a strong emphasis on object orientation, the syntax is not overly heavy. Furthermore, Java now runs on essentially all computer systems in an identical manner, is the most used of all programming languages, and has a universal program development environment available free from Sun [SunJ], where the square brackets refer to references in the bibliography. (Although we recommend using shells and jEdit [jEdit] for developing Java programs, many serious programmers prefer a development platform such as Eclipse [Eclipse].) This means that practitioners can work just as well at home or in the developing world. Finally, Java’s speed does not appear to be an issue for educational projects with present-day fast computers. If more speed is needed, then conversion to C is straightforward, as is using the C and Fortran programs on the CD: http://press.princeton.edu/landau_survey/).

In addition to multilanguage codes, the CD also contains animations, visualizations, color figures, interactive Java applets, MPI and PVM codes and tutorials, and OpenDX codes. More complete versions of the programs, as well as programs left for exercises, are available to instructors from RHL.There is also a digital library version of the text containing streaming video lectures and interactive equations under development.

Specific additions to this book, not found in our earlier CP text, include chapters and appendices on visualization tools, wavelet analysis, molecular dynamics, computational fluid dynamics, MPI, and PVM. Specific subjects added to this text include shock waves, solitons, IEEE floating-point arithmetic, trial-and-error searching, matrix computing with libraries, object-oriented programming, chaotic scattering, Lyapunov coefficients, Shannon entropy, coupled predator–prey systems,advanced PDE techniques (successive overrelaxation,finite elements, Crank– Nicholson and Lax–Wendroff methods), adaptive-step size integrators, projectile motion with drag, short-time Fourier transforms, FFT, Fourier filtering, Wang– Landau simulations of thermal systems, Perlin noise, cellular automata, and waves on catenaries.

Acknowledgments

This book and the courses it is based upon could not have been created without financial support from the National Science Foundation’s CCLI, EPIC, and NPACI programs, as well as from the Oregon State University Physics Department and the College of Science. Thank you all and we hope you are proud.

Immature poets imitate;
mature poets steal
.

— T. S. Elliot

Our CP developments have followed the pioneering path paved with the books of Thompson, Koonin, Gould and Tobochnik, and Press et al.; indubitably, we have borrowed material from them and made it our own. We wish to acknowledge the many contributions provided by Hans Kowallik, who started as a student in our CP course, continued as a researcher in early Web tutorials, and has continued as an international computer journeyman. Other people have contributed in various places: Henri Jansen (early class notes), Juan Vanegas (OpenDX), Connelly Barnes (OOP and PtPlot), Phil Carter and Donna Hertel (MPI), Zlatko Dimcovic (improved codes and I/O), Joel Wetzel (improved figures and visualizations),Oscar A. Restrepo (QMCbouncer), and Justin Elser (system and software support).

It is our pleasure to acknowledge the invaluable friendship, encouragement, helpful discussions, and experiences we have had with our colleagues and students over the years. Weare particularly indebted to Guillermo Avendaño-Franco, Saturo S. Kano, Bob Panoff, Guenter Schneider, Paul Fink, Melanie Johnson, Al Stetz, Jon Maestri, David McIntyre, Shashikant Phatak, Viktor Podolskiy, and Cherri Pancake. Our gratitude also goes to the reviewers Ali Eskanarian, Franz J. Vesely, and John Mintmire for their thoughtful and valuable suggestions, and to Ellen Foos of Princeton University Press for her excellent and understanding production work. Heartfelt thanks goes to Vickie Kearn, our editor at Princeton University Press, for her encouragement, insight, and efforts to keep this project alive in various ways.

In spite of everyone’s best efforts, there are still errors and confusing statements for which we are responsible.

Finally, we extend our gratitude to the wives, Jan and Lucia, whose reliable support and encouragement are lovingly accepted, as always.

Image

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset