When a pressure wave hits the edge of the playing field it reflects as if striking a solid object. You need to make TPT automatically null out any wave that strikes the edge of the field, or you get this:
And even more you should realize that a pump will suck out all the air until the pressure is a vaccume, NOT just remove any wave that happens to touch it. Also pump requires power.
Also I tried your sim and there is STILL some reflection!
You see I'm running a mod that I made that SIGNIFICANTLY boosts the sensitivity of the "pressure display" as I try to figure out WHY the waves keep reflecting from the edge of the playing field. With this sensitivity I can check to make sure NOTHING is reflecting, and if it is, I'll see it.
A PUMP, as it's description indicates (also see wiki), sets the pressure to its temperature. If its temperature is 0C, the default, it will set the pressure to 0. If it's temperature is +100C, it will set the pressure to 100 (acting similar to VENT). If it's temperature is -100C, it will set pressure to -100 (acting similar to VACU but not voiding elements).
Secondly, it does not require power. It is "powered", meaning that you can turn it on with PSCN and turn it off with NSCN. It's default state is on. You don't have to do anything but create PUMP. If you want to turn it off after creating it, create a temporary NSCN next to it and spark it. If you want to change it from the default pressure of 0, use the PROP tool to set its temperature.
Thirdly, there is something that happens at the edge of the map, although I don't know what it is. Try moving it 8 pixels from the edge instead of 4.
Fourthly, and probably most importantly, you may wish to rethink your design. The edge of the field is undefined nothingness, if you are creating something that relies on precise pressures being known, maybe you can build it in a contained space (with walls) and build appropriate pressure control as needed.
Also, voiding pressure at the edges would be exactly like surrounding it with a 0C PUMP.
I don't see any issues with this. If it's been happening since the beginning then we're fine, since we've lived with it and hasn't caused too much of an issue. Also I tested it and no issue seen. Are you sure you weren't seeing the vacuum invert to high pressure?
The air pressure and velocity is automatically reduced each frame at the edges of the playing area, up to 12 pixels away from the edges. Pressure is multiplied by 0.8, and velocity is copied to cells closer to the edge and multiplied by 0.9.
Reducing the air velocity at the edges causes pressure to increase there (air flows as normal into the area near the edges because that velocity is unchanged, but flows out of the playing area slowly because that velocity has been reduced). As the pressure increases, the air starts to flow back the other way (reflects).
There's no perfect solution to this. Ideally, the edges should behave like they aren't there, like empty space - no impedance to velocity, and pressure flows as it does in the rest of the playing area. However, there has to be an edge somewhere, beyond which pressure and velocity are not stored or calculated.
I can't see any way of dealing with the edge that doesn't affect airflow in some way. Setting velocity to zero causes reflections. Setting pressure to zero changes the forces acting as a result of the spatial variation in pressure, changing the acceleration and hence velocity of the air - setting pressure to approximately zero using pump seems to result in less reflection, but it still has an effect on the airflow.
If you want to experiment with air sim, the source code is in air.c starting around line 120. The loops reducing pressure/velocity at the edges are near the start of the update_air function.
Try setting the outer most edge to BOTH velocity=0 and pressure=0. FORCE those fixed values at the edge. Since there is no air effect at the edge the waves will not bounce off, but instead be absorbed by the edge. I just tried this myself modding the source code and I still get reflections in the form of inversions (high-p turns to low-p and visa versa).
A better alternative (though I don't know how to implement this), would be to have the pressure grid be calculated WELL past the edge of the screen where you can't place any particles or anything (an invisible area at least 3 times as tall and 3 times as wide as the normal playing area). Have this just be "air calculating space". Then SLOWLY decrease the air pressures and velocities, starting at least 10 pressure-calculation blocks away from the edge of this extended region. The shallower slope of the decrease in pressure and velocities of the air in this extended region (ultimately becoming zero at the edge) will absorb the pressure wave entirely, and because this decrease is happening past the edge of the playing field it will not appear in any way on the main playing field (as it currently does as a pressure gradient in the 4 pressure blocks nearest the edge of the field). The main playing field in my proposed design will have no visible edge pressure effects at all, and appear to be a portion of an infinite space.
This indeed has been a problem since early versions. When is it gonna be fixed?
I just pray that there isn't some obscure save file someone has from way back when that may depend on this edge effect, as devs hate to change things that break saves.
If you extend the calculation space you will still get reflections, just at a much lower magnitude. That is the best you can do.
Creating an "infinite" air space is conceptually not a correct solution; the pressure in the infinite air space has to be *something*. No matter how much you increase the size of the air space, and no matter what tricks you use to fake pressure values beyond the edge, it will always have some effect on the pressure in the field - if it's not noticeable reflections, it will at least show itself as the pressure ultimately returning to 0.
As an example, look at the current playing field. Divide it into a 3x3 grid of 9 blocks. Pretend the center block is the field and the 8 around the edges are your extended air space. Do you still see reflections in the center block? Increasing the scale won't remove the effect.
Extending the playing space simply places the magnitude of reflections lower than the current sensitivity of your mod. I suppose you could extend the playing space so far out that the magnitude is lower than the floating-point precision on the machine you're running on... but that's a bad "solution" for a lot of reasons (and non-negligible changes would still eventually propagate to the field in some form or another).
I am not sure it is on the list of things to be "fixed", because it has never been a major complaint.
I would be surprised if any saves relied on edge reflections; as a well-designed pressure-sensitive system should be contained in walls and regulate its own pressure as necessary.
If you explain what you are trying to do and why it is a problem for you, you might get some good alternative suggestions.