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

New solver for temporal boundary-layer development with LES

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   April 26, 2017, 07:37
Post New solver for temporal boundary-layer development with LES
  #1
New Member
 
David Kinast
Join Date: Nov 2016
Posts: 15
Rep Power: 10
david112 is on a distinguished road
Dear Foamers,

for my masterthesis I tried to change the pimpleFoam solver to make the temporal boudary-layer development comperable to the spartial.

As base I used the ideas which MAEDER, ADAMS and KLEISER used for their DNS computation called ETDNS and appled them in LES. They compute seperated blocks of the boundary layer (principleOfETDNS). With the help of forcing terms the solution in a block reaches a steady-state. The forcing terms are defined by the downstream history of the flow with the help of the previous computed blocks (principleOfETDNS.png).

I added the forcing terms to the momentun equation (equations.png). To start simple I chose only the incomplessible and laminar part of the forcing terms without a pressure gradient in the boundary layer (forcingTerm.png).
By choosing equidistant block spacing xi_(n+1) - xi_n = xi_n - xi_(n-1) the second oder backward differnce formula (A8 in forcingTerm.png) becomes => 2ndOrdeBackward.png.

Now the UEqn.H file in the clone of pimpleFoam looks like:
Code:
// Solve the Momentum equation

MRF.correctBoundaryVelocity(U);



tmp<fvVectorMatrix> tUEqn
(
    fvm::ddt(U) + fvm::div(phi, U)
  + MRF.DDt(U)
  + turbulence->divDevReff(U)
// first additional term for the laminar flow stabilisation
  + (3*U.component(vector::X) * U - 4*Ul1.component(vector::X) * Ul1 + Ul2.component(vector::X) * Ul2) / (2*dxi)  
// end of the first additinal term
 ==
    fvOptions(U)
);
fvVectorMatrix& UEqn = tUEqn.ref();

UEqn.relax();

fvOptions.constrain(UEqn);

if (pimple.momentumPredictor())
{
    solve(UEqn == -fvc::grad(p));

    fvOptions.correct(U);
}
In the createFields.H file I added the Fields for dxi (the blockdistance in the streamswise coordinate xi), Ul1 and Ul2 which were the velocityfields of the 2 previous Blocks.

I am sorry that I am not able to upload the whole paper about the ETDNS because auf the file size limit. If you are interested and think the whole paper will help you to understand what I am working on just write me an email: david.kinast@gmx.de

The case setup and the results I present in the next post.
Attached Images
File Type: png equations.png (94.1 KB, 10 views)
File Type: png 2ndOrderBackward.png (2.6 KB, 9 views)
File Type: png principleOfETDNS.png (22.5 KB, 9 views)
File Type: jpg forcingTerm.jpg (71.7 KB, 9 views)
david112 is offline   Reply With Quote

Old   April 26, 2017, 08:32
Default case setup
  #2
New Member
 
David Kinast
Join Date: Nov 2016
Posts: 15
Rep Power: 10
david112 is on a distinguished road
Hello agian,

for the laminar case a simple rectangular 2D-domain is simulated with cyclic inlet and outlet conditions. A noSlip condition is used at the wall and on the top boundary it is zeroGradient for the velocity and fixedValue=0 for pressure.

The initial conditions for the first block the upstream history velocities Ul1 and Ul2 were taken from a RANS solution. Ul1 is also used for the initial condition of U.
The Freestream velocity is 1m/s. And I computed 10 blocks between x=0.2m and x=1.2m.

If someone wants to check out the case I appended the case of epsilon=4 (epsilon4.tar.gz). With OpenFoam4.1 on Ubuntu 16.04 the temporalTransitionScript file shoud run the case. I used the ppcfTemporal.m file in GNUOctave 4.0.0 for postprocessing.

But now the cool part: the results! I tried different blockdistances and different values for epsilon (the scaling between x and the slow streamwise coordinate xi). Surprisingly I got good results with an epsilon=4 (dx0.1.png and dx0.05.png). But the paper says 0<epsilon<<1 (previous post forcingTerm.png line 1).

And now finally my question: Has anyone an idea what I am doing wrong? Or any experience with related cases?

I noticed that in the paper they use the normalized version of the Navier-Stokes-Equations and OpenFoam deals with dimensions. But can that cause a problem when my freestream velocity is 1m/s and the resolved area is 1m? The normalization wouln't change anything, would it?

Hoping for any help, ideas or comments I whish you a nice day and good convergence in any simulations !
Attached Images
File Type: png dx0.1.png (43.8 KB, 10 views)
File Type: png dx0.05.png (47.3 KB, 7 views)
Attached Files
File Type: gz epsilon4.tar.gz (10.9 KB, 0 views)
david112 is offline   Reply With Quote

Reply

Tags
boundary layer, boundary layer flow, les, pimplefoam


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
y+ = 1 boundary layer mesh with snappyHexMesh Arzed23 OpenFOAM Running, Solving & CFD 6 November 23, 2022 16:15
My radial inflow turbine Abo Anas CFX 27 May 11, 2018 02:44
Star cd es-ice solver error ernarasimman STAR-CD 2 September 12, 2014 01:01
Radiation interface hinca CFX 15 January 26, 2014 18:11
[snappyHexMesh] Boundary layer generation problems ivan_cozza OpenFOAM Meshing & Mesh Conversion 0 October 6, 2010 14:47


All times are GMT -4. The time now is 03:57.