Face masks are made of meshes of entangled long thing fibres. Each fibre is around tens of micrometres thick, but much longer than this. So when you breathe through a mask the air flows between these long cylindrical fibres. Above is the result of a simple computer simulation* of flow through a cross section of a few nearby parallel cylindrical fibres. The fibres are the brown discs and the lines with arrows are what are called streamlines. Streamlines are the lines a (light**) particle carried along by the air would follow. The arrows indicate the direction of travel, in the image above the air is flowing from bottom to top.
The streamlines are not just pretty. Because they show the trajectories of particles carried by the air, they help us understand filtering of these particles. Streamlines that never pass near the surface of any of the cylinders carry particles through the mask. The particles on those streamlines are not filtered out. But streamlines that skim the surfaces of the cylinders carry particles into contact with these surfaces where the particles can stick and be filtered out. As the air cannot penetrate into the cylinders the streamlines cannot hit the cylinders directly, they can only skim their surface.
In the image above you can see some streamlines do skim the surfaces, it is particles on these streamlines that are filtered out. This is why understanding how masks work, or don’t work, is a fluid flow problem. To make a mask that is efficient as possible you want to make as many streamlines skim the fibre surfaces as possible.
* The code is just a hack of a Python code I got from a group at the Université de Genéve. Thanks to them for that.
** Strictly speaking a particle with a Stokes number much less than one, and that that does not diffuse much. in practice this means that the picture above only works for particles in a range of sizes, outside of that range, it is more complex. See my last blog post for more on Stokes numbers.