This is the companion website for *Plasma Simulations by Example* by L. Brieda, CRC Press, 2019.
If you have already purchased a copy, thank you! If not, links to several online book sellers can
be found below.

My aim with this book is to introduce engineering students and researchers to the world of numerical plasma simulations through the use of example codes. I have been developing plasma and rarefied gas simulation codes for over a decade. Through out this time, I have come across a plethora of textbooks and journal articles related to this field. However, very few of them contain practical examples that would be benefitial to a new learner. The few examples that tend to exist are available either as a pseudocode or are written in legacy languages (such as Fortran 77) that do not reflect modern programming paradigms. This book attempts to address these shortcomings by illustrating how to develop plasma simulation codes through example applications. The book begins by comparing particle and fluid-based approaches. Particle methods are then introduced by developing a simulation of an electron oscillating around a potentiall hill. This example is expanded in Chapter 2 to develop a fully-kinetic (particle electrons) simulation of a grounded box. This code is modified in Chapter 3 to simulate flow of ions past a charged sphere with electrons represented using a simple fluid approximation. Surface neutralization and collisions are covered in Chapter 4. Chapter 5 then illustrates how to reduce the run time of a 3D simulation through the use of symmetry or reduced dimensionality. Chapter 6 covers the use of unstructured meshes and the finite element method. Chapter 7 introduces electromagnetics. Fluid, mesh-based solution methods are discussed in Chapter 8. Finally Chapter 9 covers parallelization approaches using multithreading, MPI domain decomposition, and GPU programming.

The examples found in this book are written mainly in C++ with language constructs and standard library features from the C++11 revision. Python is utilized in few spots for prototyping and some plotting. These two languages are commonly encountered in the numerical modeling community. Python comes in handy for rapid algorithm prototyping, but the final code is developed in C++ for improved performance. C++ also forms the basis of the CUDA language used for GPU-based parallell processing. A crash course on C++ is found in Chapter 2. Simulation results are visualized using Paraview.

I hope you find the text useful and do not hesitate to reach out with questions.

Dr. Lubos Brieda

President, Particle in Cell Consulting, LLC