# irfpy.util.collision¶

Handles collision.

Note

YF has old module handling ratherford scattering. I haven’t ported it, but can be done on request.

irfpy.util.collision.binary_collision(mass1, pos1, vel1, mass2, pos2, vel2, collision_length)[source]

Calculate the binary collision

Parameters:
• mass1 – Mass of the particle 1

• pos1 – Postion vector of the particle 1

• vel1 – Velocity vector of the particle 1

• mass2 – Mass of the particle 2

• pos2 – Postion vector of the particle 2

• vel2 – Velocity vector of the particle 2

irfpy.util.collision.binary_collision_stationary_vector1(mass1, pos1, vel1, mass2, collision_length)[source]

Slightly generalized version of binary_collision_stationary()

Calculate the final velocity after the binary collision.

This function accepts the position and velocity vectors of particle 1. Particle 2 should be origin, and stationary. If the negative relative velocity (particles 1 and 2 separates as time goes), a collision will not happen.

Other conditions are hold as binary_collision_stationary(). (e.g. Particle 2 should be at origin, and stationary.)

irfpy.util.collision.binary_collision_stationary(mass1, speed1, mass2, impact_parameter, collision_length)[source]

Cancluate a binary collision in one-particle stationary system.

Parameters:
• mass1 – Mass of moving particle, m1

• speed1 – Speed of the moving particle, v1. Positive.

• mass2 – Mass of stationary particle, m2

• impact_parameter – The impact parameter, d. Positive.

• collision_length – The radius of the cross section, or r1+r2 where r1 is the radius of the moving particke and r2 is the radius of the stationary particle.

Returns:

(V1, W1, V2, W2)

A binary collision is simulated here. Situation is that a flying (incoming) particle 1 has mass1 with speed 1 (positive y component) in the (negative x, positive y) quadrant. The stationary particle 2 at the origin will be collided. The returned is the final velocity (x, y components). If the impact paramter is more than the collision_length, the particle will not collide.

Theory

A binary collision is characterized by the two particles with masses, m1 and m2.

Let’s be in a system where the second particle with m2 is in rest at the origin. This system change be chosen without losing the generality.

First particle (with m1) flies from infinite -x, toward the origin, with a speed of v1 along x axis. Just by rotation, we can select a frame that the first particle is in the (-x, +y) quadrant, center in z=0 plane, with v1>0 with only vx component.

Then, after the collision, the motion of two particles should be confined in x-y plane since no force acting in the z direction. Assume the resulting velocity vector as (V1, W1) for particle m1, and (V2, W2) for particle m2.

Momentum conservation will give you

$m_1 v_1 = m_1 V_1 + m_2 V_2$

and

$0 = m_1 W_1 + m_2 W_2$

Energy conservation will give you

$m_1 v_1^2 = m_1 V_1^2 + m_1 W_1^2 + m_2 V_2^2 + m_2 W_2^2$

The force only act on the collision, so that the particle m2 should have the following geometric relation of velocity.

$W_2 = -\frac{d}{\sqrt{(r_1+r_2)^2 - d^2}} V_2$

Solving above four equations to derive the V1, W1, V2 and W2. For simplicity, we use the following notations.

$\begin{split}\mu &= \frac{m_2}{m_1} \\ \delta &= \frac{d}{\sqrt{(r_1+r_2)^2 - d^2}} \\ \alpha &= (\mu+1)(1+\delta^2)\end{split}$

The solutions are

$\begin{split}V_1 &= v_1 (1 - \frac{2\mu}{\alpha}) \\ W_1 &= \frac{2v_1\mu\delta}{\alpha} \\ V_2 &= \frac{2v_1}{\alpha} \\ W_2 &= -\frac{2v_1\delta}{\alpha} \\\end{split}$

Todo

To check the above formulation is correct. In particular the fourth equation should be checked. How to? Probably we may need another formulation using center of gravity system…