*2.2. Mesh Generation*

The 2D mesh described in the previous section is the same for all the cases simulated. To obtain the actual three-dimensional meshes, the baseline 2D mesh is extruded along the spanwise direction over a distance *Lz* = 3*D*, which is typically found to be sufficiently large according to the literature. Waviness is then incorporated in the 3D mesh through a simple mapping transformation, which shifts mesh coordinates on the original surface

of the cylinder to the desired case-dependent wavy surface. The mapping is such that the original trailing edge is left untouched, whereas the leading edge becomes wavy according to a sine function of a given wavelength and amplitude (Figure 2). This transformation also shifts vertical mesh coordinates, so that any cross-section (normal to the spanwise direction) slicing the wavy cylinder marks an actual circle in its new surface, albeit one of variable diameter size.

To avoid invalid elements, the mapping intensity is made to decrease linearly with the radial distance, from the cylinder's surface to the outer circle in the intermediate mesh region, where the mapping intensity becomes zero. Hence, only the region within the cylinder's outer circle (recall Figure 3) is affected by the mapping. The mesh coordinates in GMSH's original file are then updated and Nektar++ is able to load it just as a normal GMSH file. A view of a mesh with 11% amplitude waviness is shown in Figure 5.

**Figure 5.** Cross-sectional view of a mesh showing the mapping pattern for *λ* = 0.375*Dm*, and waviness amplitude 11% (the line of contact between the green and dark blue regions is the cylinder's trailing edge).
