2.1 Interior ballistics

2.1.1 Control volume variables

Internally, BlasterSim simulate blasters using control volumes with arbitrary flow connections between control volumes. This allows BlasterSim to simulates spring and pneumatic blasters with the same core simulation code. This also allows simulating more atypical blasters without major code changes.

This section describes the internal model in an abstract way.

2.1.2 Notation

2.1.3 Conservation laws

dm˙k,idt=j(yk,jm˙jiyk,im˙ij) (2.1)
dEidt=piAix˙i+j(m˙jihjm˙ijhi) (2.2)
Ei=miui (2.3)

2.1.4 Equations of state

pi=miRiTiAixi (2.4)

2.1.5 Thermodynamic properties

uk,i(T)=u0,k+cv,k(TiT0,k) (2.5)
hk,i(T)=h0,k+cp,k(TiT0,k) (2.6)

2.1.6 Connection flow model

Beater [1, ch. 5]

2.1.7 Valve opening model

Valves do not open instantaneously, and sometimes slow opening has a significant impact on performance. BlasterSim models how far a valve is open with a prescribed valve opening model. αij is the valve opening fraction, which is how open the valve is. αij=0 is fully closed m˙ij=0 and αij=1 is fully open. The specific equation BlasterSim uses is

αij=α0,ij +α˙0,ij(ttopening,ij)
+(33α0,ij2α˙0,ij)(ttopening,ij)2
(22α0,ijα˙0,ij)(ttopening,ij)3, (2.7)

for t<topening,ij. For ttopening,ij, αij=1. α0,ij is the initial (time zero) valve opening fraction (useful when a valve isn’t used like in a springer). α˙0,ij is the initial valve opening rate. topening,ij is the valve opening time, the time it takes for the valve to fully open (reach αij=1).

This equation may seem overly complicated, but is the simplest polynomial equation that satisfies a few constraints:

αij(0) =α0,ij(set initial valve opening fraction) (2.8)
dαijdt(0) =α˙0,ij(set initial valve opening rate) (2.9)
αij(topening,ij) =1(valve is fully open attopening,ij) (2.10)
dαijdt(topening,ij) =0(needed for automatic differentiation) (2.11)

When the valve is fully open, αij no longer changes with time, so its derivative is zero. Consequently, the last constraint listed is needed to match the derivative at t=topening,ij, which is necessary for automatic differentiation. See § 2.3.2 for more about automatic differentiation in BlasterSim. The last constraint prevents a simple linear model (αij=α0,ij+(1α0,ij)t/topening,ij) from being used.

Note that to ensure monotonicity of αij (in other words, avoid oscillations of the valve opening fraction), α˙0,ij must satisfy the inequality 0α˙0,ij3(1α0,ij).

The pneumatic and springer cases will now be discussed, with the ij subscript dropped for simplicity as there is only one flow restriction in both cases.

For pneumatics, α0=0 and α˙0=1. The second condition approximates a simple linear model. In the future α˙0 may become an input parameter if deemed necessary to improve accuracy. The SpudFiles Wiki [9] gives some estimated opening times:

  • Burst disks: likely under 1 ms

  • Pilot-operated valves (like QEVs, “back-pressure tanks”, “cores”): 3–5 ms

  • Ball valves: about 100 ms if hand activated

These values are recommended as starting points only. For modeling any particular blaster, it is better to try to independently determine the valve opening time through something like high speed video.

For springers, α0=1 and α˙0=0. As there is no valve in a springer, this simply sets the flow restriction to always be open.

This simple valve opening model is most accurate for manually operated valves. More detailed modeling of pilot-operated valves could make determining the valve opening time unnecessary, but this alternative valve opening model has not yet been added to BlasterSim.

2.1.8 Projectile and plunger equations of motion

dxidt =x˙i (2.12)
dx˙idt =Aimeff,i(pipmirror,ipf,i)kimeff,i(xi+Δpre,i) (2.13)

The effective mass of the projectile/plunger factors in the spring mass. The spring is not moving at a uniform velocity as one end is stationary, so it would be incorrect to add all the spring mass to the effective mass. The effective mass equation used is

meff,i=mp,i+Cmsms,i (2.14)

where Cms=13 as suggested by Ruby [8] for a stiff spring.

2.1.9 Projectile and plunger friction model

2.1.10 Plunger impact

At the moment, BlasterSim does not handle plunger impact with the end of the plunger tube, and will crash if that occurs. Plunger impact will be handled in a future version of BlasterSim. Plunger impact does not appear to be necessary in the springers simulated so far, but certainly it is a factor in some springers.