# Direct simulation Monte Carlo

Direct simulation Monte Carlo (DSMC) method uses probabilistic Monte Carlo simulation to solve the Boltzmann equation for finite Knudsen number fluid flows.
The DSMC method was proposed by Graeme Bird, emeritus professor of aeronautics, University of Sydney. DSMC is a numerical method for modeling rarefied gas flows, in which the mean free path of a molecule is of the same order (or greater) than a representative physical length scale (i.e. the Knudsen number Kn is greater than 1). In supersonic and hypersonic flows rarefaction is characterized by Tsien's parameter, which is equivalent to the product of Knudsen number and Mach number (KnM) or M$^{2}$/Re, where Re is the Reynolds number. In these rarefied flows, the Navier-Stokes equations can be inaccurate. The DSMC method has been extended to model continuum flows (Kn < 1) and the results can be compared with Navier Stokes solutions.
The DSMC method models fluid flows using probabilistic simulation molecules to solve the Boltzmann equation. Molecules are moved through a simulation of physical space in a realistic manner that is directly coupled to physical time such that unsteady flow characteristics can be modeled. Intermolecular collisions and molecule-surface collisions are calculated using probabilistic, phenomenological models. Common molecular models include the hard sphere model, the variable hard sphere (VHS) model, and the variable soft sphere (VSS) model. Various collision models are presented in.
Currently, the DSMC method has been applied to the solution of flows ranging from estimation of the Space Shuttle re-entry aerodynamics to the modeling of microelectromechanical systems (MEMS).

## DSMC Algorithm

The direct simulation Monte Carlo algorithm is like molecular dynamics in that the state of the system is given by the positions and velocities of the particles, $\{\mathbf {r} _{i},{\textbf {v}}_{i}\}$, for $i=1,\ldots ,N$. Unlike molecular dynamics, each particle in a DSMC simulation represents $F_{N}$ molecules in the physical system that have roughly the same position and velocity. This allows DSMC to rescale length and time for the modeling of macroscopic systems (e.g., atmospheric entry). Specifically, the system volume is $V=(NF_{N})/n$, where $n$ is the number density and each collision between simulation particles represents $F_{N}$ collisions among molecules in the physical system. As a rule of thumb there should be 20 or more particles per cubic mean free path for accurate results.
The evolution of the system is integrated in time steps, $\tau$, which are typically on the order of the mean collision time for a particle. At each time step all the particles are moved and then a random set of pairs collide. In the absence of external fields (e.g., gravity) the particles move ballistically as $\mathbf {r} _{i}(t+\tau )=\mathbf {r} _{i}(t)+\mathbf {v} _{i}(t)\tau$. Any particle that reaches a boundary or a surface has its position and velocity reset accordingly (e.g., periodic boundary conditions). After all the particles have moved, they are sorted into cells and some are randomly selected to collide. based on probabilities and collision rates obtained from the kinetic theory of gases. After the velocities of all colliding particles have been reset, statistical sampling is performed and then the process is repeated for the next time step.

### Collisions

On each timestep the particles are sorted into spatial cells and only particles in the same cell are allowed to collide. Typically the dimension of a cell is no larger than a mean free path. All pairs of particles in a cell are candidate collision partners, regardless of their actual trajectories.
The details of how collisions are calculated in DSMC depend on the molecular interaction model; here we take the hard spheres model, which is the simplest. In the hard spheres model, the collision probability for the pair of particles, $i$ and $j$, is proportional to their relative speed, $P_{\mathrm {coll} }[i,j]={{|\mathbf {v} _{i}-\mathbf {v} _{j}|} \over {\sum _{m=1}^{N_{\mathrm {c} }}\sum _{n=1}^{m-1}|\mathbf {v} _{m}-\mathbf {v} _{n}|}}$ where $N_{\mathrm {c} }$ is the number of particles in the cell and the summations are over particles within the cell. Because of the double sum in the denominator it can be computationally expensive to use this collision probability directly. Instead, the following rejection sampling scheme can be used to select collision pairs:
* A pair of candidate particles, $i$ and $j$, is chosen at random and their relative speed, $v_{\mathrm {r} }=|\mathbf {v} _{i}-\mathbf {v} _{j}|$, is computed.
* The pair is accepted as collision partners if $v_{\mathrm {r} }>v_{\mathrm {r} }^{\mathrm {max} }\Re$, where $v_{\mathrm {r} }^{\mathrm {max} }$ is the maximum relative speed in the cell and $\Re$ is a uniform deviate in [0, 1).
* If the pair is accepted, the collision is processed; the velocities of the particles are reset but positions are unchanged.
* After the collision is processed or if the pair is rejected, return to step 1.
This procedure is correct even if the value of $v_{\mathrm {r} }^{\mathrm {max} }$ is overestimated, although it is less efficient in the sense that more candidates are rejected.
After the collision pair is chosen, their post-collision velocities, $\mathbf {v} _{i}^{*}$ and $\mathbf {v} _{j}^{*}$, are evaluated. Writing the relative velocity in terms of spherical angles, $\theta$ and $\phi$ $\mathbf {v} _{\mathrm {r} }^{*}=v_{\mathrm {r} }[(\sin \theta \cos \phi ){\hat {\mathbf {x} }}+(\sin \theta \sin \phi ){\hat {\mathbf {y} }}+\cos \theta \,{\hat {\mathbf {z} }}]$ these angles are selected by a Monte Carlo process with distributions given by the collision model. For the hard spheres model these angles are uniformly distributed over the unit sphere. The azimuthal angle is uniformly distributed between 0 and $2\pi$, so it is selected as $\phi =2\pi \Re _{1}$ where $\Re _{1}$ is a uniform deviate in [0, 1). The polar angle is distributed according to the probability density, $P_{\theta }(\theta )\,d\theta ={\textstyle {\frac {1}{2}}}\sin \theta \,d\theta$ Using the change of variable $q=-\cos \theta$, we have $P_{q}(q)\,dq=({\textstyle {\frac {1}{2}}})\,dq$ so $-\cos \theta =q~\mathrm {and} ~\sin \theta ={\sqrt {1-q^{2}}}~\mathrm {where} ~q=2\Re _{2}-1$ The post-collision velocities are set as $\mathbf {v} _{i}^{*}=\mathbf {v} _{\mathrm {cm} }^{*}+{1 \over 2}\mathbf {v} _{\mathrm {r} }^{*}\qquad \mathbf {v} _{j}^{*}=\mathbf {v} _{\mathrm {cm} }^{*}-{1 \over 2}\mathbf {v} _{\mathrm {r} }^{*}$ Note that by conservation of linear momentum and energy the center of mass velocity and the relative speed are unchanged in a collision. That is, $\mathbf {v} _{\mathrm {cm} }={1 \over 2}(\mathbf {v} _{i}+\mathbf {v} _{j})={1 \over 2}(\mathbf {v} _{i}^{*}+\mathbf {v} _{j}^{*})=\mathbf {v} _{\mathrm {cm} }^{*}$ and $v_{\mathrm {r} }=|\mathbf {v} _{i}-\mathbf {v} _{j}|=|\mathbf {v} _{i}^{*}-\mathbf {v} _{j}^{*}|=v_{\mathrm {r} }^{*}$ This process is repeated for every pair of colliding particles.
From the collision frequency, $f_{\mathrm {coll} }$, given by kinetic theory the total number of hard sphere collisions in a cell during a time $\tau$ is $M_{\mathrm {coll} }={1 \over 2}(N_{\mathrm {c} }-1)F_{N}f_{\mathrm {coll} }\tau ={{N_{\mathrm {c} }(N_{\mathrm {c} }-1)F_{N}\pi d^{2}\langle v_{\mathrm {r} }\rangle \tau } \over {2V_{\mathrm {c} }}}$ where $d$ is the particle diameter and $V_{\mathrm {c} }$ is the volume of the cell. Since collision candidates go through a rejection sampling procedure the ratio of total accepted to total candidates for hard sphere particles is ${{M_{\mathrm {coll} }} \over {M_{\mathrm {cand} }}}={{\langle v_{\mathrm {r} }\rangle } \over {v_{\mathrm {r} }^{\max }}}$ The number of collision candidates selected in a cell over a time step $\tau$ is $M_{\mathrm {cand} }={{N_{\mathrm {c} }(N_{\mathrm {c} }-1)F_{N}\pi d^{2}v_{\mathrm {r} }^{\max }\tau } \over {2V_{\mathrm {c} }}}$ This approach for determining the number of collisions is known as the No-Time-Counter (NTC) method. If $v_{\mathrm {r} }^{\max }$ is set excessively high then the algorithm processes the same number of collisions (on average) but the simulation is inefficient because many candidates are rejected.
An alternative, more accurate and time-efficient algorithm is Majorant Frequency (MF) method, proposed by Mikhail Ivanov and Sergey Rogasinsky in 1988.