Scientific Computing and Plasma Physics Blog
The goal of this blog is to provide you with useful, handy, and easy to understand tutorials on a broad range of topics related to scientific computing and plasma simulations. Although we concentrate on plasma modeling and electric propulsion thrusters, we hope the information presented here will be useful to people from many different disciplines. Our goal is to present the articles with a sufficient detail so that you can implement your own version of the algorithm being described. Where practical, we also include a short sample code in one of the popular programming languages (such as C/C++, Java, or Matlab).
Are you interested in publishing your article here? See the submission guidelines (pdf) to get started.
Implementation of VTK-based 3D visualization capability in a solver GUI
Over the past few weeks, we at PIC-C have been busy integrating VTK (The Visualization Toolkit) into a client’s graphical user interface. The client for this project is a company specializing in CFD software for turbomachinery aerodynamic analysis. The client’s solvers are integrated with a Java-based GUI which allows the user to specify input parameters [...]
Nonlinear Poisson Solver
Nonlinear Poisson's equation arises in typical plasma simulations which use a fluid approximation to model electron density. This article describes how to solve the non-linear Poisson's equation using the Newton's method and demonstrates the algorithm with a simple Matlab code.
Code Optimization: Speed up your code by rearranging data access
Often, a significant code speed up can be accomplished by simply rearranging the way data is stored or accessed in memory. This article compares data access with arrays vs. linked lists, and compares loop ordering for 3D data sets. It also looks at a flat 1D array representation of 3D data via a mapping function.
Orthogonal Curvilinear Coordinates
Cylindrical and spherical coordinates are just two examples of general orthogonal curvilinear coordinates. In this article we derive the vector operators such as gradient, divergence, Laplacian, and curl for a general orthogonal curvilinear coordinate system.
Data Visualization with Java and VTK
VTK is a powerful library for analyzing and visualizing scientific data. This example shows how to develop a simple Java application that uses VTK to render surface geometry, isosurfaces, and cutting planes.
Example Particle In Cell Code
This article includes the source code for a simple particle in cell code. The code simulates flow of plasma over a charged plate and is written in Matlab.
Monte Carlo Collisions (MCC) Example
Monte Carlo Collisions (MCC) is a simple algorithm for modeling particle collisions in situations where the target species is much denser than the source. In this example we use this method to model the charge-exchange (CEX) process in the plume of an ion thruster. We include an animation and the example Java source code.
Charge Exchange Collisions (CEX)
Charge exchange is an important reaction occurring in the plumes of electric propulsion devices. In this reaction, an ion and neutral come into a close contact and exchange an electron without any corresponding change in the momentum of the two particles. In the EP plumes this results in the formation of slow moving ions near the thruster exit. These ions are then accelerated radially out of the plume into areas with no line of sight to the thruster.
HTML5 for Scientific Computing
HTML5 is the new standard for writing webpages. It introduces several new powerful capabilities, such as embedded video and drag and drop. It also introduces a new tag called canvas that allows us to do real time graphing and visualization using Javascript. In this example we show you how to plot XY graphs using Javascript and HTML5.