{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CFD Problem's Physics & Theory\n", "\n", "**In developing CFD simulation for a fluid mechanics problem understanding the general physics and fundamental theory of the problem is extremely important. This knowledge would provide user the ability to make logical decision about the geometry of CFD domain, choice of proper boundary conditions and numerical models for the CFD simulation setup. Furthermore, user will have a general big picture of the expected results from simulation. These knowledges and abilities form the foundation for a successful and accurate implementation and possibly validation of the CFD simulation.**\n", "\n", "**In other words understanding physics and theory of problem before developing a CFD simulation can be thought of turning on a flash light prior to taking any step in a completely dark room. Hence, let's review the fundamental physics and theory behind the problem of 3D turbulent flow over a horizontal axis Wind or Tidal turbine. As the first step for development and validation of CFD simulation for this problem.**\n", "\n", "As the demand for investigations and developments of renewable energy technologies increases in both academia and industrial fields, the attempts to develop and use of computationally inexpensive CFD models to simulate the performance of these technologies increase respectively. Horizontal axis wind and tidal turbines are two example of the renewable technologies that have been experiencing this trend. From a purely fluid mechanics point of view for analysis of flow over a turbine; the free stream flow with a known available momentum approaches the turbine blades. The flow rotates the blades via it's momentum (i.e. turbine act as a sink of momentum), creating a pressure and velocity drop within the flow and a wake just behind the turbine as shown with a sketch in Fig. 1. However, due to the complexity in the aerodynamic shape of the turbine and physics of the flow at various point along the blade span simulating the details of the flow in this problem is way more complicated.\n", "\n", "\n", "Fig. 1 - The schematic of the flow and turbine interaction. The flow rotates the turbine blade by loosing momentum and turbine covert the momentum in mechanical and then electrical energy and creates a wake.\n", "\n", "A tremendous amount of research and development was done to develop new and accurate CFD models and/or evaluate the currently existing models to simulate the flow field around horizontal axis wind and tidal turbines. Among all these models the Virtual Blade Model (VBM), which is an implementation of the Blade Element Method (BEM) within ANSYS FLUENT, based on a paper by Zori and Rajagopalan [1], has gained lots of attention and popularity due to it's robustness and compatibility to be integrated with other models in ANSYS FLUENT (i.e. RANS solver). The VBM simulates the effect of the rotating blades on the fluid through a body force in the x, y and z direction, which acts inside a disk of fluid with an area equal to the swept area of the turbine's rotating blades. The value of the body force is time-averaged over a cycle from the forces calculated by the Blade Element Theory (BET). In BET, the blade is divided into small elements (sections) from root to tip as shown in Fig. 2: \n", "\n", "\n", "Fig. 2 - The schematic of how BET models the effect of turbine's rotating blades. \n", "\n", "The lift and drag forces on each element are computed from 2D aerodynamics based on the angle of attack, chord length, airfoil type, and lift and drag coefficient (provided as an input for the model) of each element. The free stream velocity at the inlet boundary is used as an initial value to calculate the local angle of attack (AOA), Mach (Ma) and Reynolds (Re) number for each segment along the blade. Then, based on the calculated values of AOA, lift and drag coefficients are interpolated from a look-up table, which contains values of these variables as a function of AOA, Re and Ma. With this information, lift and drag force of each blade segment can be calculated by\n", "\n", "$$ f_{L,D} = c_{L,D}(AOA,Ma,Re) ~*~ c(r/R) ~*~ \\frac{1}{2} \\rho V_{tot}^2 ~, $$\n", "\n", "where $c_{L,D}$ is lift or drag coefficient, $c(r/R)$ is the chord length of the segment, $\\rho$ is the fluid density and $V_{tot}$ is the total velocity of the fluid, vector summation of incoming and angular velocity, relative to the blade element. In this equation, $c_{L,D}$ and $c(r/R)$ are two required inputs for the VBM, that are provided by the modeler. $c_{L,D}$ is either obtained by means of experiment or simulating a 2D segment of the airfoil or 3D modeling of the blade span under the same operating conditions using high fidelity numerical models. $c(r/R)$ is the physical variable that depends on shape and design of the blade and will be provided by the manufacturer. The lift and drag forces are averaged over a full turbine revolution to calculate the source term at each cell in the numerical discretization by\n", "\n", "$$F_{L,D~cell} = N_b ~*~ \\frac{dr~*~d\\theta}{2\\pi} ~*~ f_{L,D}~,$$ \n", "\n", "$$\\vec{S}_{cell} = -\\frac{\\vec{F}_{cell}}{V_{cell}}.$$\n", "\n", "In the above equations $N_b$ is the number of turbine blades, $dr$ is the radial position of the blade element from the center of the turbine, $d\\theta$ is the finite azimuthal coordinate of the blade section and $V_{cell}$ is the volume of the grid cell. These calculated forces will be put into the conservation of momentum equations, solved via RANS solver, as shown below:\n", "\n", "$$\n", "\\frac{\\partial}{\\partial t} \\int \\rho \\mathbf{V} dV +\n", "\\int (\\mathbf{n}~.~\\rho \\mathbf{V}) \\mathbf{V} dA =\n", "\\mathbf{F_v} -\n", "\\int \\mathbf{n}~p~dA +\n", "\\int \\rho \\mathbf{g}~dV \n", "-\\mathbf{\\vec{S}_{cell}}.\n", "$$\n", "\n", "The pressure and velocity in the entire flow field gets updated taking into account the presence of the turbine effect. This iterative process is repeated until a converged solution is attained. It should be highlighted that the imposed simplification of the turbine's rotating blade effect is proved to decrease the computational time and costs significantly at no cost on the accuracy of the model [2]. The only limitation that the VBM simplification would lead to is incapability of the model to capture the physics of the flow field in the near wake region of the turbine [2]. Javaherchi et. al discuss the strenght and limitations of the VBM extensively in their paper \n", "[here](http://wie.sagepub.com/content/38/2/181.short) \n", "\n", "Although the general physics behind the VBM model to simulate the turbine's effect is simple, the implementation of the CFD simulations, including the CFD domain and simulation setup, has been shown to be complex at multiple stages. In the next section the detail of engineering challenges and their solution are presented and discussed in great details.\n", "\n", "\n", "## Cite Source(s)\n", "\n", "> [1] Laith Z. and Rajagopalan R., Navier-stokes calculations of rotor-airframe interaction in forward flight. Journal of the American Helicopter Society, 40(2):57, 1995. \n", "[Download Paper Here!](https://www.researchgate.net/publication/23580183_Navier-Stokes_Calculations_of_Rotor-Airframe_Interaction_in_Forward_Flight)\n", "\n", "> [2] Hierarchical methodology for the numerical simulation of the flow field around and in the wake of horizontal axis wind turbines: Rotating reference frame, blade element method and actuator disk model, T. Javaherchi, S. Antheaume, A. Aliseda, Wind Engineering, 38(2):181-201, 2014. \n", "[Download Paper Here!](http://wie.sagepub.com/content/38/2/181.short)\n", "\n", "> For more details on the conservation of momentum equation see \"A Physical Introduction to Fluid Mechanics by Alexander J. Smits\" 2nd edition. [Download Book Here!](http://www.efluids.com/efluids/books/efluids_books.htm)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 0 }