include ("physics/common_short.php");
physics_header("","");
?>
General Information about 6810 Computational Physics
- Course title:
- Computational Physics
- Main References:
- There is no required text to buy but there will be readings for each
class session from handouts passed out in class and background notes posted online.
We'll supplement these with readings
from:
- The 2015 lecture notes
[pdf]
by Morten Hjorth-Jensen from the University
of Oslo. Prof. Hjorth-Jensen's philosophy of
teaching computational physics is similar to mine and he
covers similar topics.
(His course web pages:
FYS3150
and
FYS4411.)
Readings from these notes will be assigned on the course
webpage as we proceed.
-
You can download A
Survey of Computational Physics by Rubin Landau,
Manual Paez, and Cristian Bordeianu, which is an eTextBook using Python.
It is a useful guide to the material we cover and a good
source of projects.
A related source is
Computational
Physics: Problem Solving with Computers
by the same authors.
The first edition of this text was used in the past, and
many of the codes we'll explore originated
from this book.
- Other References:
- For more about C++ object-oriented programming, look
at A First Course in Computational Physics and
Object-Oriented Programming with C++ by David Yevick
[contents and
excerpts are available on Amazon.com]
and
C++ and
Object-oriented Numeric Computing for Scientists and
Engineers by Daoqi Yang.
- I've found Writing
Scientific Software: A Guide to Good Style by Oliveira and Stewart
to be a good reference.
- Numerical Recipes: The Art of
Scientific Computing
by Press et al. (3nd edition) is a good first guide to algorithms and
the old 2nd edition is available in
online editions.
[Local version of chapters now available with password.]
- Python Scripting for Computational Science
by Langtangen is a good reference for the basics of Python and what
you need to know to do computational physics with it. The link is to
the OSU E-book version, from which you can get PDF's of individual
chapters. A good (non-computational) introduction to Python
is Learning Python (Safari) by Lutz.
- There are many good C++ references to choose from if you want
to supplement the class.
This list
from stackoverflow.com is organized according to your experience level.
Here are a few that are available online for OSU people from
the Safari page
(the quoted descriptions are from the stackoverflow link):
- Programming:
Principles and Practice Using C++ (2nd Edition) by Bjarne Stroustrup
[Safari link].
"An introduction to programming using C++ by the creator of the language.
A good read, that assumes no previous programming experience, but is not only for beginners."
- C++ Primer
by Stanley Lippman, Josée Lajoie, and Barbara E. Moo
[Safari link].
"An introduction to programming using C++ by the creator of the language.
A good read, that assumes no previous programming experience, but is not only for beginners."
- A Tour of C++
by Bjarne Stroustrup
[Safari link].
"The 'tour' is a quick (about 180 pages and 14 chapters) tutorial overview of all of standard C++
(language and standard library, and using C++11) at a moderately high level for people who already
know C++ or at least are experienced programmers. This book is an extended version of the material
that constitutes Chapters 2-5 of The C++ Programming Language, 4th edition."
- Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition)
by Scott Meyers
[Safari link].
"This is basically the new version of Effective C++,
aimed at C++ programmers making the transition from C++03 to C++11 and C++14."
- Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
by Scott Meyers
[Safari link].
"This was written with the aim of being the best second book C++ programmers should read,
and it succeeded. Earlier editions were aimed at programmers coming from C,
the third edition changes this and targets programmers coming from languages like Java.
It presents ~50 easy-to-remember rules of thumb along with their rationale in a very accessible
(and enjoyable) style. For C++11 and C++14 the examples and a few issues are outdated
and Effective Modern C++ should be preferred."
- Another excellent resource for C++ programming is
http://www.cplusplus.com
(if you Google a C++ command, this is likely to be one of the first few
hits). They provide a compact C++ Language
Tutorial that is very accessible. Or try their
online tutorial.
- Prerequisites:
- The prerequisites are simply physics including some quantum
mechanics. It will be expected that you
have some experience with one or more
of Mathematica, MATLAB, Python,
C, fortran, or C++. The teaching strategy is to give you computer
programs and have you run and then modify (or debug) them as you
follow along through worksheets.
Email or visit Prof. Furnstahl
(PRB M2048)
if you're concerned about
your preparation (e.g., if you have very limited experience).
- Material:
- We'll start with an overview based on the first
part of the Hjorth-Jensen lecture notes and then cover
selections
from the rest of the notes plus topics based on the
instructors' latest prejudices
and class interest (the latter to be
determined!).
In most cases the discussion will be framed by a physics topic
such as nonlinear oscillations (e.g., chaos).
We'll be using programs written in C++ and Python and occasionally
Matlab or Mathematica
as we go along.
Some topics we will cover along the way:
- Errors and uncertainties in computations. E.g.,
one should understand how to analyze whether a calculation
is limited by the algorithm or round-off error.
We will come back to this topic repeatedly.
- Basic computational algorithms for: integration, differentiation,
differential equations, root finding. Less emphasis on
theory than on understanding how well an algorithm
should work (e.g., should the accuracy improve as 1/N2,
where N is
the number of points used and does it?) and what algorithm is appropriate for what
situation (e.g., oscillatory integrals or integrands with
singularities). In many (or most)
cases you should be using a packaged library
routine and not writing your own, so we'll learn how to use such a
library and check the results.
- What you should know about: random numbers, Monte Carlo integration
and simulation, matrix computing, calling Fortran libraries
from C++, plus additional topics as time
permits.
- A survey of some advanced computational algorithms as we go.
- Aspects of writing code: good programming practices;
how to test and debug a code (C++, fortran, MATLAB, or whatever);
how to tune a code to run faster.
- Aspects of a computational physics project: breaking down a
project into sub-problems; implementation issues (e.g., program design,
code conventions, makefiles, using a scripting language);
use of graphics for visualization;
validation/verification; using a version control system.
- Parallel processing: introduction to OpenMP and MPI.
- Object-oriented programming: What is it and when is it relevant for
computational problems?
- Using Mathematica or MATLAB for computational physics. This is a broad
topic, of course, and we will just touch upon aspects here.
- Computing Environment:
- The general idea is to use basic and portable tools.
The homepage will have details about setting these up on your
personal computer.
- The computers in Smith 1094 can be run with Linux or
Windows. You can choose which to use.
You can also use your own laptop (Linux, Windows, or Mac)
if set up like the course computers. The wireless signal
in the room is strong.
- For Linux users, the computer environment
include the GNU tools (also available in
Smith 1094). These include g++, make, indent, gdb, gprof,
and editors (e.g., emacs, nedit).
- For Windows users, the computing environment will be mainly
Cygwin, which simulates the GNU/Linux environment.
(You can also log into a public Linux
machine via an X-windows program, Xwin32.)
Sometimes we might use the Eclipse IDE.
- We'll have the INTEL compilers (for C++ and Fortran 90/95)
available on Linux.
- We'll use gnuplot for plotting, from the command line in
Cygwin or Linux and also as a standalone program on Windows.
(Also Python and xmgrace on Linux.)
- The GSL ("Gnu Scientific Library") is a free numerical library.
- Python is available at the command line in Cygwin or Linux,
and there are stand-alone versions on both.
- MATLAB and Mathematica are available on
all platforms for registered OSU students.
- Lead Instructor:
- Prof. Richard Furnstahl
office: M2048 PRB
email: furnstahl.1@osu.edu or furnstah@mps.ohio-state.edu
phone: 292-4830 (office) or 847-4026 (home)
- 1094 Instructor:
- Bryan Smith
office: PRB 3000
email: smith.10851@osu.edu
- Computer Consultant:
- Terry Bradley
office: 1199 PRB
email: bradleyt@mps.ohio-state.edu
phone: 292-8598 (PRB office) or 292-4269 (Stillman Hall)
- Schedule:
- Class meets WF from 12:40pm to 2:45pm in Smith 1094.
Each period will primarily be a hands-on lab
session (after a short lecture/question part).
- Office Hours:
- By appointment (asking in class is easiest)
[to be announced] (Furnstahl)
[to be announced] (TBA)
- Grading:
- In-class worksheets [30%]
- Assigned homework ("handed in" via TBA) [40%]
- Project [30%]
- Web Pages:
- This info:
http://www.physics.ohio-state.edu/~ntg/6810/compphys_info.php
- Course home page:
http://www.physics.ohio-state.edu/~ntg/6810/compphys.php
Your comments and
suggestions are appreciated.
[OSU Physics]
[Math and Physical Sciences]
[Ohio State University]
OSU Physics: Physics 6810 Computational Physics.
Last modified: .
furnstahl.1@osu.edu