The physics of plasma is rich area of physical science. The simplest models combine fluid dynamics, electromagnetism and statistical mechanics. However, the wealths of plasma resides in the interaction of complex systems, strongly coupled and responding quite rapidly to changes and instabilities. The physics of plasma goes beyond the simple science of electrons and ions interacting via Coulomb collisions. It also grapples with nuclear synthesis and quantum mechanics.
This course explores the fundamental physics of plasmas and how it can be applied to astrophysics, fusion energy, propulsion, manufacturing and medicine. The course uses python as a numerical gateway to explore how the properties of plasmas in different regimes, from black hole accretion disks to particle accelerators. Besides homeworks and a mid-term exam, the course requires the completion of a project using Jupyter notebooks. There is no final exam.
Prerequisites: PHY121; PHY122; PHY 123 or PHY 143.
All we see in the sky, from stars to galaxies, is plasma. Yet plasmas are poorly understood. Further, we are now facing a new era of plasma physics where the physics of highly dense material is driven by quantum mechanical affects. This new science offers new directions to study in high energy density plasmas.
The physics of plasma is a difficult topic because it couples different areas of physics, across many different geometrical and temporal scales. At the largest scale, It combines fluid mechanics electromagnetism and radiation. As scales become smaller, temporal behaviors are also compressed. At this level kinetic effects become important and anisotropic. When this happens, the fluid approximation breaks down and kinetic theory has to be used.
The goal of this class is to develop an intuition in plasma physics using numerical codes. In this class, we will use the Jupyter interactive front end to develop simple numerical plasma models in the Python language. While this language is not the best medium to run fast, optimized numerical simulations, like C++ or Fortran, the language is interactive and easy to learn. It can also call C++ or Fortran code using Numba , which improves python numerics. Each lecture will highlight different plasma physics models and develop your dexterity at using python.
The course will have homeworks and mid-term exams during the semester, like any other course. However, the final exam will be replaced by a project. The project will be in the form of a report, using a Jupyter notebook. Each student will pick one of the topic presented in class and develop this topic further, using material from publications and numerical code development to demonstrate mastery in plasma physics.
The best way to get Python running on your computer or laptop is using Anaconda. While it might be conceived as a bazooka to kill a fly, Anaconda will help you installing on your computer all you need for this course, including Python and its most important packages (e.g. Scipy, Spyder, Numba, and of course Jupyter).
Once Anaconda is installed, you can use Jupyter to read the lectures, change the lectures, add your own comments and your own code. The lectures notes, posted as a notebook, will be used to present the material and the codes necessary to work on the class. However, Spyder might be a better alternative for homework and class projects.
The best way to look at notebooks is to use the notebook viewer. The notebook uses Markdown to write text, code(surrounded by ticks) and formulas (surrounded by dollar signs). Markdown is a simpler cousin of Latex. The formulas are using Latex mathematical syntax and advanced mathematical synthax. You can also look at more advanced synthax. Word processors, like Microsoft Word, are typically easier to use. What you see is what you get! Latex or Markdown have to be recompiled and there is a bit of a learning curve. However, typing text has several advantages including:
However, the biggest advantages of word processors are:
Regardless, we have no choice for notebooks. It's Markdown !
Highlighting code inside the notebook itself uses the backtick marks ` this is a piece of code
. This does not do anything. It just highlight the code. Three backticks ``` can be used for a block of code.
s = "Python syntax highlighting"
print (s)
However, special cells have to be created to run code in the notebook. What you have read up to now is in a Markdown cell. Below there is python code inside a code cell.
s = "This is a real piece of code"
print (s)
This is a real piece of code
The type of the cell can be changed using the menu at the top. Create a new cell and chose it as Markdown for text or code for python. Note that the notebooks are static. You need to run the notebook on your computer if you change a piece of code.
The skills you will acquire in this course will go beyond plasma physics. Learning how to use Python notebooks can be extremely helpful in other areas of physics, engineering and life sciences.
If you are interested in taking this course, do not hesitate to contact me by email.