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.2) |
| (2.3) |
| (2.4) |
| (2.5) |
| (2.6) |
Beater [1, ch. 5]
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. is the valve opening fraction, which is how open the valve is. is fully closed and is fully open. The specific equation BlasterSim uses is
| (2.7) |
for . For , . is the initial (time zero) valve opening fraction (useful when a valve isn’t used like in a springer). is the initial valve opening rate. is the valve opening time, the time it takes for the valve to fully open (reach ).
This equation may seem overly complicated, but is the simplest polynomial equation that satisfies a few constraints:
| (2.8) | ||||
| (2.9) | ||||
| (2.10) | ||||
| (2.11) |
When the valve is fully open, no longer changes with time, so its derivative is zero. Consequently, the last constraint listed is needed to match the derivative at , 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 () from being used.
Note that to ensure monotonicity of (in other words, avoid oscillations of the valve opening fraction), must satisfy the inequality .
The pneumatic and springer cases will now be discussed, with the subscript dropped for simplicity as there is only one flow restriction in both cases.
For pneumatics, and . The second condition approximates a simple linear model. In the future 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, and . 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.12) | ||||
| (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
| (2.14) |
where as suggested by Ruby [8] for a stiff spring.
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.