Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Computational Phy. Methods and Sim. (question)

  1. Oct 16, 2009 #1
    I'm trying to find a good starting point in comp. phy. ; emphasizing particles,chemical,physical problems,solid state,q.m,nanotech... simulations into a (2D or 3D) virtual environment(for research and engineering), (analogy: just like game engines or robotics animations), in an quantitative and graphical approach;

    so I ask for a visualization and advice about programming languages, programs, books or anything that can help me and fit in this area that I`ve presented.(Any resources would be of great help)

    Numerical calculations and mathematical models. ( for this i´ve already started to learn mathematica, matlab, and C++; is it a good start?)
    Last edited: Oct 16, 2009
  2. jcsd
  3. Oct 16, 2009 #2


    User Avatar
    Science Advisor

    Well, your question's a bit vague on what you want to learn - the approach is quite different between fields, and in general, the emphasis is far more on the physical science end of things than on the computer science end. Add to that, that practically all physicists (and most chemists) know at least some programming - it's generally easier to train a physicist or chemist in programming than to bring a programmer up to speed on all the necessary science.

    I know some people with a Comp Sci background working in bioinformatics, but I don't think I've ever run across one in e.g. quantum chemistry. So if you want to do actual scientific programming, I think your best bet would to study physics or chemistry and take extra courses in comp sci. (having a programming hobby is of course a very good idea as well!)

    The introductory course our dept. gives uses Frank Jensen's book, "Introduction to computational chemistry".
  4. Oct 17, 2009 #3
  5. Oct 23, 2009 #4
    Every simulation is based on physics (classical and quantum mechanics, and statistical physics in the most part of cases), therefore, you have to study physics. Actually physics here is the most important thing.

    Programming is also required of course. The favorite programming language of computer science is FORTRAN without doubt, but C is also used sometimes. C++ is quite rare. Some utilities are frequently written on Octave, MATLAB. The operating system of choice for a computer scientist is Linux (sometimes UNIX). For visualization VMD or some other programs are used.

    There are a lot of various types of simulations. Among those different kinds of molecular dynamics are the most prominent ones. To start with that subject you need the book by Allen and Tildesley or by Frenkel and Smith.

    You can easily start with classical molecular dynamics (for this you need classical mechanics, elementary statistical physics and FORTRAN) and continue your studies with a so called ab-inito molecular dynamics (same prerequisites + quantum mechanics). Then you may want to continue your research along the way of path-integrals molecular dynamics which is the most difficult to master.
  6. Oct 24, 2009 #5

    There's no way that the favorite programming language among computer scientists is fortran. It's definitely C or C++. Fortran has only one kind of data structure --- arrays. Computer scientist need many kinds of data structures --- lists, vectors, arrays, hashmaps, red-black trees, etc. Fortran doesn't provide these things.

    However, among physicists, fortran is still very popular. If you're first learning a programming language, then fortran might be the way to go, as it doesn't have to deal with the complexities of pointers. Also, arrays are infinitely more intuitive in fortran than in C.
  7. Oct 24, 2009 #6
    First of all, in my reply I primarily was talking about the simulations including some kind of physics. The question was about "comp. phy. ; emphasizing particles,chemical,physical problems,solid state,q.m,nanotech..." after all. I agree completely that in some fields C++ may be much better than FORTRAN.

    However, if we are talking about computational physics (especially solid state), chemistry or biology, these fields almost always use MC, MD, different types of DE's or some diagonalizing techniques. All these approaches have the following features:
    • They need a lot of time to complete the simulation;
    • They use matrices intensively;
    • They need some supporting numerical routines.

    Among the C, C++ and FORTRAN, the latter is:
    • The fastest;
    • Is very matrix-friendly;
    • Has the best numerical routines.
    That is why FORTRAN is used very frequently. Some of the best packages -- VASP, CPMD, DL_POLY -- are in FORTRAN. Even in mathematics FORTRAN is frequently used due to its high level of optimization and high computational efficiency for numerical operations.

    Of course, FORTRAN has many drawbacks almost all of which are the consequences of its ancient age. These include the lack of ready-to-use code for high level structures, inconvenient syntax etc. But FORTRAN is still the best for number crunching.
  8. Oct 25, 2009 #7
    I was replying to your statement that fortran is the most popular language among "computer scientist"; that is simply not true.

    However, it probably is the most popular among computational scientists for the reasons that you mentioned above.

    C is on par with fortran as far as speed goes, but you're correct for numerical calculation that use arrays as their primary data structure, fortran is king.

    I'm sorry. I didn't mean to start a "holy war". My apologies.
  9. Nov 2, 2009 #8
    I'm a graduate student in physics doing computational physics. The codes I work with have all been in C++, but I also use a lot of Matlab and I feel that Python will be used increasingly in the future. I don't know Fortran, but I have had to read Fortran a few times and had no problem from my C/C++ background. It sounds to me like you have a good start from the things that you were mentioning. If you want to do visualization, then you should learn some OpenGL. I have been learning it recently and I feel that it is a good skill to have. If you have a solid physics background it isn't too hard to understand 3D graphics because the math involved will be well within your understanding.
  10. Nov 3, 2009 #9


    User Avatar
    Science Advisor

    Fortran remains the favorite in the physics (and more math-problem-oriented) crowd. It's nobody's favorite language from a programming-language perspective.

    But neither are C/C++ the favorite programming languages of any Comp Sci professors I know. C is weakly-typed and has loose syntax and simply put, a lot of flaws from a language-design perspective. C++ in turn is a pragmatic attempt to make C object-oriented. It's nobody's favorite from a design perspective either (it's by design a compromise to ensure some backwards-compatibility with C).

    Comp. Sci folks tend to like more obscure languages like LISP, Smalltalk, Haskell, etc.
  11. Nov 6, 2009 #10
    A book I've found useful is by Paul Harrison, "Computational Methods in Physics, Chemistry and Biology: An Introduction".

    I liked it for the following reasons:
    the level was reasonable, the style of the text and besides the code (C language) being available the author presented the psuedo code so that the reader could convert to the language of their choice
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook