Update: June 1, 2017

$FOAM_TUTORIALS/incompressible/simpleFoam/turbineSiting

We calculates the flow around a wind turbine placed on 3D terrain data.

Model geometry (entire)

Model geometry (around the turbine)

The fluid flows in from the region "inlet" (X minimum plane) and out from the region "outlet" (X maximum plane) in a distribution defined by the ABL (Atm Boundary Layer) model. The ground is fixed at 0 m/s, and the sides and top surfaces are set to slip wall conditions.

In the ABL model, the flow velocity, turbulence energy, and turbulence dissipation rate are modeled as follows.

Flow velocity:

Turbulence energy:

Turbulence dissipation rate:

Where U^{*} is the friction velocity as follows.

Also, κ is the Kalman constant, C_{m}u is the turbulent viscosity coefficient, z is the vertical coordinate, z_{0} is the surface roughness height, z_{g} is the minimum z-coordinate value, Z_{ref} is the reference height, and U_{ref} is the reference flow velocity at Z_{ref}. These parameters are defined in the file 0.orig/include/ABLConditions as follows.

Uref 10.0; Zref 20; zDir (0 0 1); flowDir (1 0 0); z0 uniform 0.1; zGround uniform 935.0; value $internalField;

The standard k-ε model is used as the turbulence model.

The meshes are as follows, and the number of mesh is 252944.

Meshes

The calculation result is as follows.

Flow velocity at the height of the wind turbine (U) - entire

Flow velocity at the height of the wind turbine (U) - around the turbine

cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/turbineSiting turbineSiting

cd turbineSiting

# Make dummy 0 directory

mkdir 0

# Make meshes

blockMesh

cp system/decomposeParDict.hierarchical system/decomposeParDict

decomposePar

cp system/decomposeParDict.ptscotch system/decomposeParDict

mpirun -np 4 snappyHexMesh -parallel -overwrite

# Searches for files "*level*" in a case-insensitive manner and deletes the found files

find . -type f -iname "*level*" -exec rm {} \;

# Search for the directory "processor*" and copy 0.orig to the directory "0" in the found directory

ls -d processor* | xargs -I {} cp -r 0.orig ./{}/0

# Make cell zone

mpirun -np 4 topoSet -parallel

# Run the calculation

mpirun -np 4 simpleFoam -parallel

# Merge the splited meshes and results

reconstructParMesh -constant

reconstructPar

paraFoam

cd turbineSiting

# Make dummy 0 directory

mkdir 0

# Make meshes

blockMesh

cp system/decomposeParDict.hierarchical system/decomposeParDict

decomposePar

cp system/decomposeParDict.ptscotch system/decomposeParDict

mpirun -np 4 snappyHexMesh -parallel -overwrite

# Searches for files "*level*" in a case-insensitive manner and deletes the found files

find . -type f -iname "*level*" -exec rm {} \;

# Search for the directory "processor*" and copy 0.orig to the directory "0" in the found directory

ls -d processor* | xargs -I {} cp -r 0.orig ./{}/0

# Make cell zone

mpirun -np 4 topoSet -parallel

# Run the calculation

mpirun -np 4 simpleFoam -parallel

# Merge the splited meshes and results

reconstructParMesh -constant

reconstructPar

paraFoam

39.69 seconds *4 parallel, Inter(R) Core(TM) i7-2600 CPU @ 3.40GHz 3.40GHz

- D.M. Hargreaves and N.G. Wright, "On the use of the k-epsilon model in commercial CFD software to model the neutral atmospheric boundary layer", Journal of Wind Engineering and Industrial Aerodynamics 95(2007), pp 355-369.
- atmBoundaryLayerInletVelocity - CFD Online Discussion Forums