PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502,...
Transcript of PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502,...
![Page 1: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/1.jpg)
Homework: ≈7 assignments- Pranay Patil ([email protected]) is the grader (office SCI 351)
Grade: 100% homeworks
PY502, Computational PhysicsInstructor: Prof. Anders Sandvik
Office: SCI 450A , phone: 353-3843, e-mail: [email protected]
Lectures: Tuesday/Thursday 11-12:15 in PRB 146• Tutorials/discussions, some Fridays 2:30 – 3:30 PM• Occasional make-up classes Fridays 2:30 – 3:45 PM
![Page 2: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/2.jpg)
Submitting homeworkUse e-mail to submit programs: [email protected] Include the program(s) as attachment(s)!- Name your programs: hwx_lastname.f90 Turn in write-up (hardcopy) report to instructor or grader
Course web sitehttp://physics.bu.edu/py502
- Lecture notes- Lecture presentations- Example program- Homework assignments and solutions- Messages (“Course News”)
Some discussion/collaboration on homework problems is allowed, but each student has to turn in her/his independently written programs and reports.
![Page 3: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/3.jpg)
§ Bring your own laptop to class if possible- operating system: linux/unix (similar under OSX)- install emulator software if you use Windows- computer help from Guoan Hu (office PRB 453)
§ Fortran 90 will be used in lectures, homework, exam§ Introduction to Fortran 90 will be given (~3 lectures)§ Extensive background in programming not needed§ Some Unix/Linux knowledge assumed (e.g., text editing)§ Come to office hours if you need help!§ First programming/Linux tutorials Fri 9/8, 9/15
Computers and programming language
![Page 4: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/4.jpg)
Recommended reading• Computational Physics, by J. M. Thijssen• Computational Physics, by N. J. Giordano and H. Nakanishi• Fortran 90/95 Explained, by M. Metcalf and J. Reid• Fortran 90/95 For Scientists and Engineers, by S. Chapman• Numerical Recipes, by W. H. Press et al.
(free on-line with codes in many languages: http://www.nr.com/)
Lecture notes• Will be posted on the web site ahead of the lectures• No additional required text
![Page 5: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/5.jpg)
What is computational physics?• “Scientific computing” in physics• Studies of models of physical systems using computers
- Numerical solutions of equations that cannot be done analytically- Direct studies of models to “simulate” a system
• Most subfields of physics use some computations, e.g.,- Dynamics of solar systems, galaxies, etc- Studies of mechanical models of earthquakes- Fluid dynamics; turbulence- Molecular dynamics of gases, fluids- Electrostatics and dynamics (Maxwell’s equations)- Electronic structure of materials- Statistical mechanics of polymers, magnetic systems, etc.- Lattice gauge theory (numerical QCD)
• Some times considered third “branch” of physics- Experimental, theoretical, computational
• Most physicists need to do some computational work
![Page 6: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/6.jpg)
Topics covered in PY502• The Fortran 90/95 programming language• Numerical integration• Numerical solution of differential equations
- classical and quantum mechanics problems• Monte Carlo simulations (statistical mechanics)• Basic methods for quantum many-body (lattice) systems
Goals• Learn the basics of the above techniques• Gain proficiency in scientific computing in general
![Page 7: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/7.jpg)
Teaser: The last topic of the course will combine severalof the previous methods we have learned to study:Quantum Annealing (a paradigm for quantum computing)You will learn what is going on (supposedly…) in machines
made by D-wave, Google,….
![Page 8: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/8.jpg)
Download material from course web site
• Open web browser• Go to http://physics.bu.edu/py502• Download Fortran 90 lecture notes (pdf file)• Open Linux terminal (“console”)• Create a directory (mkdir f90examples) for programs• Click the “programs” link next to the lecture title• Download the tar-archive; save it to f90examples• Go to f90examples, do “tar -xvf f90examples.tar”
![Page 9: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/9.jpg)
The Fortran 90 programming languageØ Fortran has evolved since the early days of computingØ Fortran 90/95 is a modern programming language Ø Many useful features for scientific (numerical) computingØ Widely used language in computational science
- also widely used in finance, engineering, etc.Ø Many “canned” subroutines available (often Fortran 77)Ø Relatively easy to learn
Fortran 90 compilersØ Many commercial compilers available; often expensive
- f90 available on buphy (Physics Dept. server)Ø gfortran; free open source Fortran 90/95/2003/2008 compiler
- part of gcc (gnu compiler collection)- installed on Physics Dept server buphy (and buphy0)
Ø g95; other open source product
![Page 10: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/10.jpg)
Fortran 90 language tutorialØ Introduction to basic elements needed to get started
Ø Simple examples used to illustrate concepts
Ø Example programs also available on the web site
Ø For more complete language description, see, e.g.,- Fortran 90/95 explained, by M. Metcalf and J. Reid- Fortran 90/95 for Scientists and Engineers, by S. Chapman- Links on course web site (On-line Fortran resources)
Discussion and practice at Friday tutorials
![Page 11: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/11.jpg)
To create a Fortran 90 program:
Ø Write program text to a file, using, e.g., Emacs
[program program-name]program statements
…end [program program-name]
Ø Compile & link using Fortran 90 compiler- creates “object” (.o) files- object files linked to form executable (.out or .x) file
![Page 12: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/12.jpg)
Compilation/linking (using gfortran)> gfortran program.f90
(gives executable program a.out)
> gfortran program.f90 -o program.x(gives executable named program.x)
> gfortran -O program.f90(turns on code optimization)
> gfortran -O program1.f90 program2.f90(program written in more than one file)
> gfortran -O program1.f90 program2.o(unit program2 previously compiled)
![Page 13: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/13.jpg)
Variables and declarationsIntrinsic variable types
- integer- real (floating-point)- complex- logical (boolean)- character, character string (“text”)- arrays of all of these (up to 7-dimensional)
ØA declaration is used to state the type of a variableØ Without declaration, real assumed, except for variables
with names starting with i,…,n, which are integerØ Declarations forced with implicit none statement
- always use this; eliminates 99% of programming errors!Ø Fortran 90 is case-insensitive
![Page 14: PY502, Computational Physicsphysics.bu.edu/~py502/slides/l01.pdf · · 2017-09-05PY502, Computational Physics Instructor: Prof. Anders Sandvik Office: SCI 450A , ... by S. Chapman](https://reader031.fdocuments.us/reader031/viewer/2022021501/5ad052d47f8b9a8b1e8dc689/html5/thumbnails/14.jpg)
Integers
A standard integer uses 4 bytes, holds numbers -231 to 231-1
Output:integer :: i
i=-(2**30-1)*2-2print*,Ii=i-1print*,i
-21474836482147483647
A “long” integer, integer(8), is 8 bytes, holds -263 to 263-1
“Short” integers: integer(2), integer(1)Integer division: 3/2=1, but 3./2=1.5
Note how -231 has been written to stay within range!i=(-2)**31 also worksi=-2**31 should not work
We discussed the bit representation of numbers (on the board)