CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM (https://www.cfd-online.com/Forums/openfoam/)
-   -   Simulation of a small element of a Hydrodynamic Journal Bearing in Wind Energy Appln (https://www.cfd-online.com/Forums/openfoam/234138-simulation-small-element-hydrodynamic-journal-bearing-wind-energy-appln.html)

Anuraag February 24, 2021 09:03

Simulation of a small element of a Hydrodynamic Journal Bearing in Wind Energy Appln
 
2 Attachment(s)
Hello,

would like to start with a typical starting line:p:
"I am quite new to OpenFOAM". I am trying to simulate an oil lubrication film in a Hydrodynamic Journal Bearing of a Wind Turbine as a part of my Master Thesis. It is massive in size. My current study is a transient, incompressible condition.

Kindly please refer to the attached picture (Bearing Test Case Attachment 82950). You can see a stationary pad, a shaft rotating around the X-axis and 2 oil tanks that will act as the lubricant reservoir.
Here are my constraints:
1) The inlet and the outlet are given a CYCLIC AMI boundary condition.
2) Shaft and Pad are treated as walls.
3) The front, back and the top of the tanks are exposed to the atmosphere.

I am using a PIMPLE algorithm for simulation (pimpleFoam with pitzDaily tutorial case as the base) because I further plan to consider cavitation models to simulate the phenomenon.

Here are my questions:

1) Are my considerations for boundary conditions correct? If not, I kindly request your expert suggestions.

2) Can anyone please tell me the correct combination of boundary conditions in blockMeshDict, p and U for faces that are simply exposed to the atmosphere? (In my case, the front, back faces and the top of the oil tanks)

3) I am finding it a little difficult to find good literature for my problem. Can you please suggest/direct me to some papers that can help me model my problem better?

4) Do you have any suggestions for my 'p' and 'U' files?

5) What, in your opinion, would be the best way to validate my problem? Of course, we have the experimental data of the bearing, but is there any other way?

PS: What do I mean by a 'pad'? Well, the stationary journal of my bearing is divided into 16 parts. A pad is just one of these Attachment 82952.

blockMeshDict file:

convertToMeters 0.001;

//Parameters in mm

r 232.5;
h_lub 0.5;
r_out #calc "$r + $h_lub";
oil_block_height 30;
angle 10;
padLength 40;
cellnosx 40;
cellnosypad 80;
cellnoszpad 6;
cellnosy 20;
cellnosztank 20;
back_contour_angle 7;
front_contour_angle 7;
contour_inlet_height 5;

//Calculations

//shaftSide
x0 #calc "0";
y0 #calc "(sin(degToRad($angle))) * $r * -1";
z0 #calc "(cos(degToRad($angle))) * $r";
x1 #calc "0";
y1 #calc "(sin(degToRad($angle))) * $r";
z1 #calc "(cos(degToRad($angle))) * $r";
x2 #calc "$padLength";
y2 #calc "$y1";
z2 #calc "$z1";
x3 #calc "$padLength";
y3 #calc "$y0";
z3 #calc "$z0";

//padSide
x4 #calc "0"; //for a curved entry
y4 #calc "(sin(degToRad($angle))) * $r_out * -1";
z4 #calc "(cos(degToRad($angle))) * $r_out";
x5 #calc "0";
y5 #calc "(sin(degToRad($angle))) * $r_out";
z5 #calc "(cos(degToRad($angle))) * $r_out";
x6 #calc "$padLength";
y6 #calc "$y5";
z6 #calc "$z5";
x7 #calc "$padLength";
y7 #calc "$y4";
z7 #calc "$z4";
/*
x4 #calc "0"; //for a parallel entry
y4 #calc "(sin(degToRad($angle))) * $r_out * -1";
z4 #calc "(cos(degToRad($angle))) * $r_out";
x5 #calc "0";
y5 #calc "(sin(degToRad($angle))) * $r_out";
z5 #calc "(cos(degToRad($angle))) * $r_out";
x6 #calc "$padLength";
y6 #calc "$y5";
z6 #calc "$z5";
x7 #calc "$padLength";
y7 #calc "$y4";
z7 #calc "$z4";
*/
//oilBlockInlet
x8 #calc "0";
y8 #calc "(sin(degToRad(1.5 * $angle))) * $r * -1"; //for a curved entry
z8 #calc "(cos(degToRad(1.5 * $angle))) * $r";
x9 #calc "0";
// y9 #calc "(sin(degToRad(1.5 * $angle))) * $r_out * -1";
y9 #calc "$y8";
z9 #calc "(cos(degToRad(1.5 * $angle))) * $r_out";
x10 #calc "0";
// y10 #calc "(sin(degToRad(1.5 * $angle))) * ($r + $oil_block_height) * -1";
y10 #calc "$y8";
z10 #calc "(cos(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";

x11 #calc "0";
y11 #calc "(sin(degToRad($angle))) * ($r + $oil_block_height) * -1";
z11 #calc "(cos(degToRad($angle))) * ($r + $oil_block_height)";
x12 #calc "$padLength";
y12 #calc "(sin(degToRad(1.5 * $angle))) * $r * -1";
z12 #calc "(cos(degToRad(1.5 * $angle))) * $r";
x13 #calc "$padLength";
// y13 #calc "(sin(degToRad(1.5 * $angle))) * $r_out * -1";
z13 #calc "(cos(degToRad(1.5 * $angle))) * $r_out";
y13 #calc "$y12";
x14 #calc "$padLength";
// y14 #calc "(sin(degToRad(1.5 * $angle))) * ($r + $oil_block_height) * -1";
y14 #calc "$y12";
z14 #calc "(cos(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";
x15 #calc "$padLength";
y15 #calc "(sin(degToRad($angle))) * ($r + $oil_block_height) * -1";
z15 #calc "(cos(degToRad($angle))) * ($r + $oil_block_height)";
/*
x11 #calc "0"; //for a parallel entry
y11 #calc "$y4";
z11 #calc "$z4 + $oil_block_height";
x15 #calc "$padLength";
y15 #calc "$y11";
z15 #calc "$z11";
x8 #calc "0";
y8 #calc "$y0 - 15";
z8 #calc "$z0";
x9 #calc "0";
y9 #calc "$y8";
z9 #calc "$z4";
x10 #calc "0";
y10 #calc "$y9";
z10 #calc "$z11";
x12 #calc "$padLength";
y12 #calc "$y3 - 15";
z12 #calc "$z3";
x13 #calc "$padLength";
y13 #calc "$y12";
z13 #calc "$z7";
x14 #calc "$padLength";
y14 #calc "$y13";
z14 #calc "$z15";
*/
//oilBlockOutlet

x16 #calc "0"; //for a curved entry
y16 #calc "(sin(degToRad(1.5 * $angle))) * $r";
z16 #calc "(cos(degToRad(1.5 * $angle))) * $r";
x17 #calc "0";
// y17 #calc "(sin(degToRad(1.5 * $angle))) * $r_out";
y17 #calc "$y16";
z17 #calc "(cos(degToRad(1.5 * $angle))) * $r_out";
x18 #calc "0";
// y18 #calc "(sin(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";
y18 #calc "$y16";
z18 #calc "(cos(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";
x19 #calc "0";
y19 #calc "(sin(degToRad($angle))) * ($r + $oil_block_height)";
z19 #calc "(cos(degToRad($angle))) * ($r + $oil_block_height)";
x20 #calc "$padLength";
y20 #calc "(sin(degToRad(1.5 * $angle))) * $r";
z20 #calc "(cos(degToRad(1.5 * $angle))) * $r";
x21 #calc "$padLength";
// y21 #calc "(sin(degToRad(1.5 * $angle))) * $r_out";
y21 #calc "$y20";
z21 #calc "(cos(degToRad(1.5 * $angle))) * $r_out";
x22 #calc "$padLength";
// y22 #calc "(sin(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";
y22 #calc "$y20";
z22 #calc "(cos(degToRad(1.5 * $angle))) * ($r + $oil_block_height)";
x23 #calc "$padLength";
y23 #calc "(sin(degToRad($angle))) * ($r + $oil_block_height)";
z23 #calc "(cos(degToRad($angle))) * ($r + $oil_block_height)";
/*

x19 #calc "0"; //for a parallel entry
y19 #calc "$y5";
z19 #calc "$z11";
x23 #calc "$padLength";
y23 #calc "$y6";
z23 #calc "$z11";
x16 #calc "0";
y16 #calc "$y1 + 15";
z16 #calc "$z1";
x17 #calc "0";
y17 #calc "$y16";
z17 #calc "$z5";
x18 #calc "0";
y18 #calc "$y17";
z18 #calc "$z19";
x20 #calc "$padLength";
y20 #calc "$y2 + 15";
z20 #calc "$z2";
x21 #calc "$padLength";
y21 #calc "$y20";
z21 #calc "$z6";
x22 #calc "$padLength";
y22 #calc "$y21";
z22 #calc "$z23";
*/
//curves
x_01 #calc "0";
y_01 #calc "0";
z_01 #calc "$r";
x_23 #calc "$padLength";
y_23 #calc "0";
z_23 #calc "$r";
x_45 #calc "0";
y_45 #calc "0";
z_45 #calc "$r_out";
x_67 #calc "$padLength";
y_67 #calc "0";
z_67 #calc "$r_out";
x_80 #calc "0";
y_80 #calc "sin(degToRad (12.5)) * $r * -1";
z_80 #calc "cos(degToRad (12.5)) * $r";
x_116 #calc "0";
y_116 #calc "sin(degToRad (12.5)) * $r";
z_116 #calc "cos(degToRad (12.5)) * $r";
x_123 #calc "$padLength";
y_123 #calc "sin(degToRad (12.5)) * $r * -1";
z_123 #calc "cos(degToRad (12.5)) * $r";
x_220 #calc "$padLength";
y_220 #calc "sin(degToRad (12.5)) * $r";
z_220 #calc "cos(degToRad (12.5)) * $r";
x_94 #calc "0";
y_94 #calc "sin(degToRad (12.5)) * $r_out * -1";
z_94 #calc "cos(degToRad (12.5)) * $r_out";
x_517 #calc "0";
y_517 #calc "sin(degToRad (12.5)) * $r_out";
z_517 #calc "cos(degToRad (12.5)) * $r_out";
x_137 #calc "$padLength";
y_137 #calc "sin(degToRad (12.5)) * $r_out * -1";
z_137 #calc "cos(degToRad (12.5)) * $r_out";
x_621 #calc "$padLength";
y_621 #calc "sin(degToRad (12.5)) * $r_out";
z_621 #calc "cos(degToRad (12.5)) * $r_out";
/* x_1011 #calc "0";
z_1011 #calc "cos(degtorad (12.5)) * ($r + $oil_block_height)";
y_1011 #calc "sin(degtorad (12.5)) * ($r + $oil_block_height) * -1";
x_1918 #calc "0";
y_1918 #calc "sin(degToRad (12.5)) * ($r + $oil_block_height)";
z_1918 #calc "cos(degToRad (12.5)) * ($r + $oil_block_height)";
x_1415 #calc "$padLength";
y_1415 #calc "sin(degToRad (12.5)) * ($r + $oil_block_height) * -1";
z_1415 #calc "cos(degToRad (12.5)) * ($r + $oil_block_height)";
x_2322 #calc "$padLength";
y_2322 #calc "sin(degToRad (12.5)) * ($r + $oil_block_height)";
z_2322 #calc "cos(degToRad (12.5)) * ($r + $oil_block_height)";
*/

vertices
(
($x0 $y0 $z0) //V0
($x1 $y1 $z1) //V1
($x2 $y2 $z2) //V2
($x3 $y3 $z3) //V3
($x4 $y4 $z4) //V4
($x5 $y5 $z5) //V5
($x6 $y6 $z6) //V6
($x7 $y7 $z7) //V7
($x8 $y8 $z8) //V8
($x9 $y9 $z9) //V9
($x10 $y10 $z10) //V10
($x11 $y11 $z11) //V11
($x12 $y12 $z12) //V12
($x13 $y13 $z13) //V13
($x14 $y14 $z14) //V14
($x15 $y15 $z15) //V15
($x16 $y16 $z16) //V16
($x17 $y17 $z17) //V17
($x18 $y18 $z18) //V18
($x19 $y19 $z19) //V19
($x20 $y20 $z20) //V20
($x21 $y21 $z21) //V21
($x22 $y22 $z22) //V22
($x23 $y23 $z23) //V23
/* ($x24 $y24 $z24) //V24
($x25 $y25 $z25) //V25
($x26 $y26 $z26) //V26
($x27 $y27 $z27) //V27
*/
);

blocks
(
hex (17 21 22 18 5 6 23 19) ($cellnosx $cellnosztank $cellnosy) simpleGrading (1 1 1) //oilBlockOutlet
hex (16 20 21 17 1 2 6 5) ($cellnosx $cellnoszpad $cellnosy) simpleGrading (1 1 1) //oilBlockOutlet
hex (1 2 6 5 0 3 7 4) ($cellnosx $cellnoszpad $cellnosypad) simpleGrading (1 1 1) //pad
hex (0 3 7 4 8 12 13 9) ($cellnosx $cellnoszpad $cellnosy) simpleGrading (1 1 1) //oilBlockInlet
hex (4 7 15 11 9 13 14 10) ($cellnosx $cellnosztank $cellnosy) simpleGrading (1 1 1) //oilBlockInlet
);

edges
(
arc 0 1 ($x_01 $y_01 $z_01)
arc 3 2 ($x_23 $y_23 $z_23)
arc 4 5 ($x_45 $y_45 $z_45)
arc 7 6 ($x_67 $y_67 $z_67)
arc 8 0 ($x_80 $y_80 $z_80)
arc 1 16 ($x_116 $y_116 $z_116)
arc 12 3 ($x_123 $y_123 $z_123)
arc 2 20 ($x_220 $y_220 $z_220)
arc 9 4 ($x_94 $y_94 $z_94)
arc 5 17 ($x_517 $y_517 $z_517)
arc 13 7 ($x_137 $y_137 $z_137)
arc 6 21 ($x_621 $y_621 $z_621)
/* arc 10 11 ($x_1011 $y_1011 $z_1011)
arc 19 18 ($x_1918 $y_1918 $z_1918)
arc 14 15 ($x_1415 $y_1415 $z_1415)
arc 23 22 ($x_2322 $y_2322 $z_2322)
*/
);

boundary
(
shaft
{
type wall;
faces
(
(0 1 2 3)
(1 16 20 2)
);
}
pad
{
type wall;
faces
(
(4 7 6 5)
(4 11 15 7)
(5 6 23 19)
);
}
inlet
{
type cyclicAMI;
neighbourPatch outlet;
transform rotational;
rotationAxis (-1 0 0);
rotationCentre (0 0 0);

faces
(
(8 12 13 9)
(9 13 14 10)
);
}

outlet
{

type cyclicAMI;
neighbourPatch inlet;
transform rotational;
rotationAxis (-1 0 0);
rotationCentre (0 0 0);

faces
(
(16 20 21 17)
(17 21 22 18)
);
}

frontAndBack
{
type wall;
faces
(

(3 2 6 7)
(0 1 5 4)
(0 4 9 8)
(1 16 17 5)
(4 9 10 11)
(5 19 18 17)
(3 7 13 12)
(2 20 21 6)
(7 15 14 13)
(6 21 22 23)

);
}
atmosphere
{
type patch;
faces
(
(11 10 14 15)
(19 23 22 18)
);
}

);

mergePatchPairs
(
);


p file:

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

internalField uniform 2;

boundaryField
{
shaft
{
type zeroGradient;
}

pad
{
type zeroGradient;
}

inlet
{
type cyclicAMI;
}

outlet
{
type cyclicAMI;
}

frontAndBack
{
type zeroGradient;
}

atmosphere
{
type totalPressure;
p0 uniform 2;
}

}

U file:

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

internalField uniform (0 0 0);

boundaryField
{
shaft
{
type rotatingWallVelocity;
origin (0 0 0);
axis (-1 0 0);
omega 2;
}

pad
{
type noSlip;
}

inlet
{
type cyclicAMI;
}

outlet
{
type cyclicAMI;
}

frontAndBack
{
type slip;
}

atmosphere
{
type pressureInletOutletVelocity;
value $internalField;
}


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