Recording of our case presented by Lincoln Haynie and myself
Objective
Verify a 3D CFD model's ability to predict horseshoe vortex flow by comparing an experimental test case involving airflow over a Rankine half-body in a duct; understanding boundary layer development is critical to turbomachinery design.
Outcome
Unfortunately, validation was not achieved, but in the process many important lessons were learned and skills developed. The key impediment to obtaining good validation is enhanced mesh stretching along with more cells, which was too computationally expensive for our circumstances.
Experimental Case
This case was modeled after "Horseshoe Vortex in a Duct" by J. Moore and T.J. Forlini at Virginia Tech in 1984. All dimensions and coordinates in CFD were the exact same as the experimental case, except only half of the experimental fixture was modeled and given symmetry about the x-z plane. The Rankine half-body was defined using OpenFOAM's polyLine function follow the streamline equation provided in the experimental case's report.
Experimental data was collected on plane 1 and 2, shown in the image below; the specific data on these planes will be explained further in this overview.
Mesh and Conditions
The final mesh contains 35,000 cells and is composed of 3 blocks. Although it may appear very skewed in some locations, running checkMesh returned no issues with non-orthogonality. A no-slip boundary condition was given to the Rankine half-body, and slip conditions were given to all duct walls except for the aforementioned symmetry x-z plane. Slip conditions were utilized for more computational efficiency, since the vortices about the no-slip wall were of the most interest. The velocity was set to be 24.1 meters per second at the inlet.
The pimpleFOAM solver was utilized, and all initial solution schemes were run using the linear scheme, which is second-order accurate. The Courant number was kept below 2, which is acceptable for pimpleFOAM, and the time step was run at 1e-5 seconds.
The first run of the simulation was run for 0.5 seconds, and produced very inaccurate results. Velocities in the x and y direction, as well as pressure, appeared to converge quite rapidly as shown below (this particular plot was run at a further time as noted in the abscissa, but the convergence starting at time t=0 was the same).
Validation Metrics
The experimental case measured all three dimensional velocities at planes 1 and 2, and created these plots:
These plots are the show a vector field of the y and z velocities at their given locations on the planes, except the "median" y-velocity is subtracted from the y-velocity at each point (the median y-velocity is the y-velocity measured at the duct height of 0.5%). This helps us see the vortex form in the bottom-left corner on plane one, and then see the vortex travel away from the Rankine half-body in plane 2.
In our CFD case, we used sampleLines at each plane to collect the velocity values at each point of interest, and then fed the data into python to generate quiver plots.
Initial Solution and Resultant Modifications
Unfortunately, the output of the first solution yielded very non-physical results, as can be seen from a side-by-side comparison of the CFD output and the experimental output. We expect to see a vortex form in the bottom left corner adjacent to the Rankine half-body, but no patterns or order is apparent at all. Additionally, the magnitudes of the velocities were off by nearly an order of magnitude.
We learned in our CFD course that even though the velocities converge, it doesn't necessarily mean that the other properties have converged. Accordingly, we assumed that convergence could have been part of the problem, and ran the case out to 5 seconds. Each subsequent half-step yielded similar random results, with no emerging pattern apparent.
The next modification was refining the mesh stretching at the base of the Rankine half-body, since we likely didn't have enough resolution to capture the vortices.
Initial stretching
Final stretching
Perhaps the biggest culprit of the non-physicality was the stability of our schemes; the linear scheme is second-order and very accurate, but is often unstable. We accordingly changed the velocity magnitude scheme to be limitedLinear 0, which is inherently less accurate but much more stable.
Final Results
Applying the previously mentioned modifications resulted in much better results; they are far from accurate, but we begin to see more order and physical effects. The vector magnitudes are still far off, and many vector directions are still not agreeing with the experimental case.
We do begin to see some of the vortex emerge in the bottom-left corner, although it appears the resolution still may not be fine enough to capture the full effect of the vortex. The results were similar on the second plane.
Again, we expect to see the vortex travel away from the Rankine half-body as it travels downstream, but we aren't quite seeing those details in our CFD case.
Conclusion
In order to achieve more accurate results, there are a few different modifications that could be employed. First, a proper verification method, such as Richardson extrapolation, would give important feedback on our numerics and on our grid. The reason that Richardson extrapolation was not utilized was because it requires modifying the refinement ratio, and in our case, we would need to double the resolution of our grid. This would become much too computationally expensive for our purposes with both hardware and temporal limits; running pimpleFOAM proves to be great at modeling basic compressible flow but is more costly than running a solver such as simpleFOAM. We did attempt to run simpleFOAM, but we were not able to achieve any kind of output without it crashing.
Second, after receiving valuable information from verification, it is very likely that mesh stretching and finer grid resolution would be necessary. Again, we were limited with these capabilities, but believe that they are vital for more accurate results. Lastly, stability did not appear to be an issue after running our final case, but running the velocity with higher-stability schemes could reveal more missing details and cut down the solution run time.
In short, this experimental validation case proved to be very educational for us. Despite the fact that accurate results were not attained, it was extremely valuable to see what effects like solution schemes, grid stretching, grid refinement, convergence, solvers, and many other functions had on output. Perhaps the most important lesson here is that computational fluid dynamics is certainly no magic calculator; a strong knowledge of fluid mechanics and good experimental data are vital to obtaining trustworthy results.