Looking at Figure 1 of Park et al. (2017), or even opening the mesh file from the supplemental material of the same paper with GMSH, it is evident that the mesh is built starting with a particular spacing near the wall (which, following the reference, is chosen in order to obtain a y+ close to 1) which grows with a given factor up to a certain height from the airfoil. However, from this length forward, there seem to be some other layers growing with other factors, greater than the previously mentioned. Farther away from the airfoil (e.g. at the boundaries), the length of the sides of the elements in the stream- and crosswise seems to be very big (definitely more than one chord - I suppose that the growth of elements far away from the boundary should have big growth factor).
My question is: what is the best practice for defining what the distances between the different layers should be when building meshes for PyFR? From what I understood, the direction of the refinement behind the airfoil should depend on the angle of attack with respect to the incoming flow (this is also one intuitive concept). Moreover, it is clear that the actual grid length should be defined in accordance with the polynomial order to be used in the code (in fact each element should accommodate possibly more than one node). However, I am more interested in understanding how much space one should care about in the refinement. I imagine that the number of layers and their “heights” from the airfoil should be defined by the physics of the problem (Ma and rho at free-stream, viscosity, desired y+, and the Re) but I need to understand how to build a good mesh and its refinement. Are there any empirical relations that I should care about or it only depends on trial-and-error?