CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Boundary conditions in wind turbine case using MRF

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   January 17, 2018, 10:14
Default Boundary conditions in wind turbine case using MRF
  #1
Member
 
gereksiz
Join Date: Mar 2015
Posts: 42
Rep Power: 11
clktp is on a distinguished road
Hello,
I have been dealing with this case for a long time and I finally decided to ask you since I have checked most of the posts and couldn’t find any solutions till now. My post could be quite long as I explained most of the steps/errors that I have encounter so far.

My original case is to simulate a ducted wind turbine using simpleFoam with k-omega SST model where my domain is a 120 deg wedge and a MRF zone is defined for rotation. I have created an unstructured mesh in pointwise and exported to OpenFoam. When I check the mesh I got warnings about the skewness and the non-orthogonality such as:

Code:
Create time

Create polyMesh for time = 0

Time = 0

Mesh stats
    points:           4118422
    faces:            22928158
    internal faces:   22748138
    cells:            9557943
    faces per cell:   4.77888
    boundary patches: 11
    point zones:      0
    face zones:       0
    cell zones:       2

Overall number of cells of each type:
    hexahedra:     0
    prisms:        7351490
    wedges:        0
    pyramids:      93034
    tet wedges:    0
    tetrahedra:    2113419
    polyhedra:     0

Checking topology...
    Boundary definition OK.
    Cell to face addressing OK.
    Point usage OK.
    Upper triangular ordering OK.
    Face vertices OK.
    Number of regions: 1 (OK).

Checking patch topology for multiply connected surfaces...
    Patch               Faces    Points   Surface topology                  
    blade               40664    20390    ok (non-closed singly connected)  
    far_field           10500    5406     ok (non-closed singly connected)  
    hub                 6696     3518     ok (non-closed singly connected)  
    inlet               6501     3354     ok (non-closed singly connected)  
    inner_cyclic_a      20562    17777    ok (non-closed singly connected)  
    inner_cyclic_b      20576    17784    ok (non-closed singly connected)  
    inner_shroud        11468    5890     ok (non-closed singly connected)  
    outer_cyclic_a      20726    15646    ok (non-closed singly connected)  
    outer_cyclic_b      20786    15676    ok (non-closed singly connected)  
    outer_shroud        15040    7695     ok (non-closed singly connected)  
    outlet              6501     3354     ok (non-closed singly connected)  

Checking geometry...
    Overall domain bounding box (-5000 2.30605e-09 -10000) (5000 9999.88 5000)
    Mesh has 3 geometric (non-empty/wedge) directions (1 1 1)
    Mesh has 3 solution (non-empty) directions (1 1 1)
    Boundary openness (8.30327e-16 1.45532e-14 4.04133e-15) OK.
 ***High aspect ratio cells found, Max aspect ratio: 18987, number of cells 39
  <<Writing 39 cells with high aspect ratio to set highAspectRatioCells
    Minimum face area = 1.01359e-06. Maximum face area = 58404.2.  Face area magnitudes OK.
    Min volume = 1.83815e-08. Max volume = 4.38283e+06.  Total volume = 1.04695e+12.  Cell volumes OK.
    Mesh non-orthogonality Max: 89.983 average: 29.0296
   *Number of severely non-orthogonal (> 70 degrees) faces: 1030489.
    Non-orthogonality check OK.
  <<Writing 1030489 non-orthogonal faces to set nonOrthoFaces
    Face pyramids OK.
    Max skewness = 3.55448 OK.
    Coupled point location match (average 0) OK.

Failed 1 mesh checks.

E
and the simulation error was:
Code:
Create time

Create mesh for time = 0


SIMPLE: no convergence criteria found. Calculations will run for 20000 steps.

Reading field p

AMI: Creating addressing and weights between 20562 source faces and 20576 target faces
AMI: Patch source sum(weights) min/max/average = 0.981308, 1.00002, 0.999993
AMI: Patch target sum(weights) min/max/average = 0, 1.00002, 0.999035
AMI: Creating addressing and weights between 20726 source faces and 20786 target faces
AMI: Patch source sum(weights) min/max/average = 0.170281, 1, 0.997918
AMI: Patch target sum(weights) min/max/average = 0.0639366, 1, 0.997777
Reading field U

Reading/calculating face flux field phi

Selecting incompressible transport model Newtonian
Selecting turbulence model type RAS
Selecting RAS turbulence model kOmegaSST
Selecting patchDistMethod meshWave
bounding k, min: 0 max: 0.09375 average: 0.09375
bounding omega, min: 0 max: 111.803 average: 111.803
kOmegaSSTCoeffs
{
    alphaK1         0.85;
    alphaK2         1;
    alphaOmega1     0.5;
    alphaOmega2     0.856;
    gamma1          0.555556;
    gamma2          0.44;
    beta1           0.075;
    beta2           0.0828;
    betaStar        0.09;
    a1              0.31;
    b1              1;
    c1              10;
    F3              false;
}

Creating MRF zone list from MRFProperties
    creating MRF zone: MRF1
No finite volume options present


Starting time loop

Reading surface description:
    airfoil

Time = 1

DILUPBiCG:  Solving for Ux, Initial residual = 1, Final residual = 0.0466319, No Iterations 2
DILUPBiCG:  Solving for Uy, Initial residual = 1, Final residual = 0.0432774, No Iterations 2
DILUPBiCG:  Solving for Uz, Initial residual = 1, Final residual = 0.0431113, No Iterations 2
#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::sigFpe::sigHandler(int) at ??:?
#2  ? at sigaction.c:?
#3  Foam::divide(Foam::Field<double>&, double const&, Foam::UList<double> const&) at ??:?
#4  ? at ??:?
#5  Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::operator/<Foam::fvPatchField, Foam::volMesh>(Foam::dimensioned<double> const&, Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&) at ??:?
#6  ? at simpleFoam.C:?
#7  ? at ??:?
#8  __libc_start_main at ??:?
#9  ? at ??:?
Floating point exception (core dumped)
At that time I wasn't sure about my mesh and the boundary conditions so I thought that simplifying the case by only creating a wedge shape with the same dimension would help me to understand the problem (attached picture-inlet,outlet, far field, cyclic without duct,blade etc no MRF zone). I have created the mesh with two ways: from blockMesh and snappyHexMesh. When I checked the mesh, there are no problems. I have tried three different boundary condition(from literature) for the far-field patch which are freeSlip, symmetry and the same conditions as the inlet. However, what I found from blockMesh is that when the mesh is courser the simulation runs, when it is finer it crashes..I have repeated the same procedure for snappyHexMesh, it run but my residuals are so high around 0.1. I have also played with fvSolution, fvSchemes etc but I didn't observe any improvements.

Code:
Time = 11

DILUPBiCG:  Solving for Ux, Initial residual = 0.676208, Final residual = 1.79999e+10, No Iterations 1001
DILUPBiCG:  Solving for Uy, Initial residual = 0.620356, Final residual = 1.00309e+15, No Iterations 1001
DILUPBiCG:  Solving for Uz, Initial residual = 0.535686, Final residual = 3.75939e+10, No Iterations 1001
#0  Foam::error::printStack(Foam::Ostream&) at ??:?
#1  Foam::sigFpe::sigHandler(int) at ??:?
#2  ? at sigaction.c:?
#3  Foam::divide(Foam::Field<double>&, double const&, Foam::UList<double> const&) at ??:?
#4  ? at ??:?
#5  Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::operator/<Foam::fvPatchField, Foam::volMesh>(Foam::dimensioned<double> const&, Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&) at ??:?
#6  ? at simpleFoam.C:?
#7  ? at ??:?
#8  __libc_start_main at ??:?
#9  ? at ??:?
Floating point exception (core dumped)
so when I check both errors (main case vs simplified) they are the same... It feels like that I am making an error on a fundamental basis like BC conditions or my mesh is just not good in any case?

Here are the 0 folder for k, p , U, omega, nut that I have used for (note that far-field patch is changing to avoid re-post the same setup):

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#include        "include/initialConditions"

dimensions      [0 2 -2 0 0 0 0];

internalField   uniform $turbulentKE;

boundaryField
{
    inlet
    
	type            turbulentIntensityKineticEnergyInlet;
        intensity      0.05;
        U                U;
        phi              phi;
        value           $internalField;
    }
    outlet
    {
        type            inletOutlet;
        inletValue    $internalField;
        value           $internalField;
    }
    cyclic1
    {
        type            cyclicAMI;
    } 
    cyclic2
    {
        type            cyclicAMI;
    } 
    far_field
    {
// FreeSlip BC
        type            slip; 
// Inlet BC
//	type            turbulentIntensityKineticEnergyInlet;
//      intensity     0.05;
//      U               U;
//      phi             phi;
//      value          $internalField;
// Symmetric BC ( should change also constant/boundary from patch to symmetry)
//       type            symmetry;
	}
}
Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    location    "0";
    object      nut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dimensions      [0 2 -1 0 0 0 0];

internalField   uniform 0;

boundaryField
{
    inlet
    {
        type            calculated;
        value           uniform 0;
    }
    outlet
    {
        type            calculated;
        value           uniform 0;
    }
    cyclic1
    {
        type            cyclicAMI;
    } 
    cyclic2
    {
        type            cyclicAMI;
    } 
    far_field
    {
// FreeSlip BC
        type            slip; 
// Inlet BC
        type            calculated;
        value           uniform 0;
// Symmetric BC ( should change also constant/boundary from patch to symmetry)
//       type            symmetry;
    }
}
Code:
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      omega;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#include        "include/initialConditions"

dimensions      [0 0 -1 0 0 0 0];

internalField   uniform $turbulentOmega;

boundaryField
{
    inlet
    {
        type            turbulentMixingLengthFrequencyInlet;
        mixingLength    0.005;
        phi             phi;
        k               k;
        value           $internalField;
    }
    outlet
    {
        type            inletOutlet;
        inletValue      $internalField;
        value           $internalField;
    }
	cyclic1
	{
		type            cyclicAMI;
	} 
	cyclic2
	{
		type            cyclicAMI;
	} 
	far_field
	{
// FreeSlip BC
        type            slip; 
// Inlet BC
        type            turbulentMixingLengthFrequencyInlet;
        mixingLength    0.005;
        phi             phi;
        k               k;
        value           $internalField;
// Symmetric BC ( should change also constant/boundary from patch to symmetry)
//       type            symmetry;
	}
}

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       volScalarField;
    object      p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#include        "include/initialConditions"

dimensions      [0 2 -2 0 0 0 0];

internalField   uniform $pressure;

boundaryField
{
    inlet
    {
        type            zeroGradient;
    }
    outlet
    {
        type            fixedValue;
        value           $internalField;
    }
	cyclic1
	{
		type            cyclicAMI;
	} 
	cyclic2
	{
		type            cyclicAMI;
	} 
	far_field
	{
// FreeSlip BC
        type            slip; 
// Inlet BC
        type            zeroGradient;
// Symmetric BC ( should change also constant/boundary from patch to symmetry)
//       type            symmetry;
	}
}

Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       volVectorField;
    location    "0";
    object      U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

#include        "include/initialConditions"

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform $Uinlet;

boundaryField
{
    inlet
    {
        type            fixedValue;
        value           $internalField;
    }
    outlet
    {
        type            inletOutlet;
        inletValue      uniform (0 0 0);
        value           $internalField;
    }
	cyclic1
	{
		type            cyclicAMI;
	} 
	cyclic2
	{
		type            cyclicAMI;
	} 
	far_field
	{
// FreeSlip BC
        type            slip; 
// Inlet BC
        type            fixedValue;
        value           $internalField;
// Symmetric BC ( should change also constant/boundary from patch to symmetry)
//       type            symmetry;
	}
}
Finally the blockMeshDict:
Code:
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

convertToMeters 1.0;

x0		0;
y0		0;
z0		0;

angle 	120;
radius 	6; 
length 	12;


radAngle    #calc "degToRad($angle)";
x 			#calc "$radius*cos($radAngle/4)";
y 			#calc "$radius*sin($radAngle/4)";
z 			#calc "$z0";
x2 			#calc "-1*$radius*cos($radAngle/4)";
z2 			#calc "$z-$length";



vertices
(
	($x0 	$y0 $z0)
    ($x 	$y $z)
    ($x2 	$y $z)
    ($x0 	$y0 $z2)
    ($x 	$y $z2)
    ($x2 	$y $z2)
);

blocks
(
    hex (4 1 2 5 3 0 0 3 ) (300 50 80) simpleGrading (1 1 1)
//    hex (4 1 2 5 3 0 0 3 ) (100 10 20) simpleGrading (1 1 1) // works with this configuration
);


edges
(
arc 1 2 ($x0 $radius $z)
arc 4 5 ($x0 $radius $z2)
);

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 2 1 0)
        );
    }
    outlet
    {
        type patch;
        faces
        (
            (3 5 4 3)
        );
    }
    far_field
    {
        type patch;
        faces
        (
            (4 1 2 5)
        );
    }
    cyclic1
    {
        type cyclicAMI;
 		neighbourPatch cyclic2;
        faces
        (
            (1 4 3 0)
        );
    }
    cyclic2
    {
        type cyclicAMI;
 		neighbourPatch cyclic1;
        faces
        (
            (5 2 0 3)
        );
    }
);
I am also attaching the case for blockMesh if these information are not enough or someone would like to test and also snappy file (http://we.tl/Vxxzv7gBVq). To mention that I am using OpenFOAM 4.0.

I am hoping that someone could help with this.

Thank you!
Attached Images
File Type: jpg BL.jpg (48.8 KB, 45 views)
Attached Files
File Type: zip blockMes.zip (64.6 KB, 5 views)
clktp is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Centrifugal fan j0hnny CFX 13 October 1, 2019 14:55
Out File does not show Imbalance in % Mmaragann CFX 5 January 20, 2017 11:20
Problem in setting Boundary Condition Madhatter92 CFX 12 January 12, 2016 05:39
boundary conditions for a rotating wind turbine problem amoolraina FLUENT 0 December 22, 2010 11:40
RPM in Wind Turbine Pankaj CFX 9 November 23, 2009 05:05


All times are GMT -4. The time now is 00:20.