User:Alejandro Luis Garcia/sandbox

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 at the same position and velocity. This allows DSMC to rescale length and time for the modeling of macroscopic systems (e.g., satellite re-entry). Specifically, the system volume is $$V = (N F_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:


 * 1) 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.
 * 2) 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).
 * 3) If the pair is accepted, the collision is processed; the velocities of the particles are reset but positions are unchanged.
 * 4) 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 = \sin\theta$$, we have $$P_q(q) \, dq = ({\textstyle \frac12}) \, 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\over2}\mathbf{v}_\mathrm{r}^* \qquad \mathbf{v}_j^* = \mathbf{v}_\mathrm{cm}^* - {1\over2}\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\over2} (\mathbf{v}_i + \mathbf{v}_j) = {1\over2} (\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\over2} (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 {2 V_\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 {2 V_\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.