CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (http://www.cfd-online.com/Forums/openfoam-solving/)
-   -   LES-Content of a Detached Eddy Simulation for OpenFOAM (http://www.cfd-online.com/Forums/openfoam-solving/104123-les-content-detached-eddy-simulation-openfoam.html)

Anne Lincke July 3, 2012 11:36

LES-Content of a Detached Eddy Simulation for OpenFOAM
 
Hey Foamers,

I started with OpenFOAMŪ+DES, SpalartAllmarasIDDES.
I would like to determine the LES-Content of my computation.
Does someone know an indicator or a way to determine the content?

It would be desirable to see the averaged LES content...

Thanks
Anne

vkrastev July 4, 2012 11:07

Quote:

Originally Posted by Anne Lincke (Post 369550)
Hey Foamers,

I started with OpenFOAMŪ+DES, SpalartAllmarasIDDES.
I would like to determine the LES-Content of my computation.
Does someone know an indicator or a way to determine the content?

It would be desirable to see the averaged LES content...

Thanks
Anne

Hi,
you can obtain the averaged resolved Reynolds stresses by just activating the averaging function for the velocity field at the end of your controlDict:

functions
{
fieldAverage
{
type fieldAverage;
functionObjectLibs ("libfieldFunctionObjects.so");
enabled true;
outputControl outputTime;
fields
(
U
{
mean on;
prime2Mean on;
base time;
}
);
}
}

The above addition will produce and write both the time-averaged velocity field as well as the six time averaged components of the resolved Reynolds stresses tensor (this is the meaning of prime2Mean: fluctuating components squared and averaged against time). Of course, to obtain reliable results, you have to start averaging when the flow has developed its transient content and then average for a sufficiently long period, in order to get the mean (and thus the fluctuating) values stabilized.

Hope this helps

V.

Anne Lincke July 5, 2012 03:11

Hey Vesselin,

thanks for your answer. I already activated fieldAverage and plottet those values.

But this was not my question, maybe I expressed in a bad way.
What I meant: I would like to plot a "sensor" which is for example "1" in regions where LES-mode is activated and "0" in regions where RANS-mode is activated.
When outputting the averaged sensor, one could see the regions where mainly LES-, and regions where mainly RANS-mode was activated.

It is desirable for a DES to switch on RANS-mode in near-wall regions and LES-mode inside the fluid volume.

Dou you or someone else have an idea how to solve this in OpenFOAM?
I heard that it is common for solvers to have such a sensor implemented....

Thanks
Anne

vkrastev July 5, 2012 04:10

1 Attachment(s)
Quote:

Originally Posted by Anne Lincke (Post 369870)
Hey Vesselin,

thanks for your answer. I already activated fieldAverage and plottet those values.

But this was not my question, maybe I expressed in a bad way.
What I meant: I would like to plot a "sensor" which is for example "1" in regions where LES-mode is activated and "0" in regions where RANS-mode is activated.
When outputting the averaged sensor, one could see the regions where mainly LES-, and regions where mainly RANS-mode was activated.

It is desirable for a DES to switch on RANS-mode in near-wall regions and LES-mode inside the fluid volume.

Dou you or someone else have an idea how to solve this in OpenFOAM?
I heard that it is common for solvers to have such a sensor implemented....

Thanks
Anne

Ok, so I haven't understood your question properly...Well, if you are interested in a post-processing of this RANS/LES parameter than the easiest way should be to write your own post-proc utility which calculates and writes the parameter using already calculated flow variables. For the DES and DDES models actually all you have to do is to calculate the ratio between the RANS and LES lenght scales which are used to discriminate where to apply the RANS or DES formulation (where the RANS scale is smaller then the LES one the model works in RANS mode, the opposite applies for the LES mode). I'm not sure if things are that easy with the IDDES model, which as far as I know has a much more complex formulation. Just as an example, I can send you an utility which calculates and writes the delaying function fd included in the DDES model.

Good luck for your work

V.

Anne Lincke July 17, 2012 04:24

Hey Vesselin,

sorry for the late reply.
Thanks a lot for this tool. I wrote a similar one for IDDES.

Kind Regards
Anne

vkrastev July 17, 2012 04:35

Hi Anne,
no problem, happy to see that you have solved your issue!

Regards

V.

luhawk August 8, 2012 05:35

Hello everybody,
hello Anne,

I am currently trying to work my way into DES in OpenFOAM. Such a tool as you said would really be neat to have. Unfortunately, when it comes to coding in OpenFOAM, I am pretty much a novice, so I have a question:
Did you implement the evaluation of the length scales as a post processing or routine did you modify the turbulence model to write a field?

Any help is appreciated.

Best regards,

Lukas

Anne Lincke August 8, 2012 05:52

Hey Lukas,

I implemented a postprocessing tool which writes \tilde{fd}*(1+fe) and 1-\tilde{fd} which are the coefficients of l_RANS and l_LES, respectively (according to the paper of Shur et. al).

It would be desirable to insert such a tool inside a simulation such that these coefficients are computed at each time step and could be averaged.

But I only succeeded in doing this inside a postprocessing routine, which computes these values for the written time steps. So one can see the LES content of each time step which was output.

Kind Regards
Anne

JulytoNovember August 9, 2012 00:15

Hi Anne,
Could you please post your LESProperties file, with SpalartAllmarasIDDES implemented?

timo_IHS August 9, 2012 02:55

Hi Anne,

have a look in the extend project.
You have to define an IOobject.

Anne Lincke August 9, 2012 03:09

Hey,

Quote:

Originally Posted by JulytoNovember (Post 376122)
Hi Anne,
Could you please post your LESProperties file, with SpalartAllmarasIDDES implemented?

here it is:

HTML Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.7.0                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.com                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "constant";
    object      LESProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

LESModel      SpalartAllmarasIDDES;

printCoeffs    on;

delta IDDESDelta; // maxDeltaxyz;//


maxDeltaxyzCoeffs
{
    deltaCoeff 2;
}



SpalartAllmarasIDDESCoeffs
{
    fieldMaps
    {
        nuTilda        nuTilda;
        nuSgs          nuSgs;
    }
    alphaNut        1.5;
    Cb1            0.1355;
    Cb2            0.622;
    Cw2            0.3;
    Cw3            2;
    Cv1            7.1;
    Cv2            5;
    CDES            0.65;
    ck              0.07;
    fwStar          0.424;
    cl              3.55;
    ct              1.63;
}

IDDESDeltaCoeffs
{
    cw 0.15;
    deltaCoeff      2;//1; 2 for hexMesh

}

SpalartAllmarasCoeffs
{
    alphaNut        1.5;
    Cb1              0.1355;
    Cb2              0.622;
    Cw2              0.3;
    Cw3              2;
    Cv1              7.1;
    Cv2              5.0;
    CDES            0.65;
    ck              0.07;
}

SpalartAllmarasDDESCoeffs
{
    alphaNut        1.5;
    Cb1              0.1355;
    Cb2              0.622;
    Cw2              0.3;
    Cw3              2.0;
    Cv1              7.1;
    Cv2              5.0;
    CDES            0.65;
    ck              0.07;
}

SpalartAllmarasIDDESCoeffs
{
    alphaNut        1.5;
    kappa            0.4187;
    Cb1              0.1355;
    Cb2              0.622;
    Cw2              0.3;
    Cw3              2.0;
    Cv1              7.1;
    Cv2              5.0;
    CDES            0.65;
    ck              0.07;
}



PrandtlCoeffs
{
    delta          cubeRootVol;
    cubeRootVolCoeffs
    {
        deltaCoeff      1;
    }

    smoothCoeffs
    {
        delta          cubeRootVol;
        cubeRootVolCoeffs
        {
            deltaCoeff      1;
        }

        maxDeltaRatio  1.1;
    }

    Cdelta          0.158;
}




vanDriestCoeffs
{
    delta          cubeRootVol;
    cubeRootVolCoeffs
    {
        deltaCoeff      1;
    }

    smoothCoeffs
    {
        delta          cubeRootVol;
        cubeRootVolCoeffs
        {
            deltaCoeff      1;
        }

        maxDeltaRatio  1.1;
    }

    Aplus          26;
    Cdelta          0.158;
}


smoothCoeffs
{
    delta          cubeRootVol;
    cubeRootVolCoeffs
    {
        deltaCoeff      1;
    }

    maxDeltaRatio  1.1;
}


// ************************************************************************* //

Kind Regards,
Anne

Jane L August 14, 2012 09:21

Hi,
just in case you're still interested. You can define the IOobject Timo_IHS mentioned in your own copy of the SpalartAllmaras.C (DES) model which could look like this:
Code:

  RANSregion_
    (
        IOobject
        (
            "RANSregion",
            runTime_.timeName(),
            mesh_,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE
        ),
        mesh_
    ),

"RANSregion_" has to be initialized in the *.H file and you need a RANSregion_ file in the 0 folder with the correct dimensions depending on your equation to calculate "RANSregion_". The equation itself may be placed where nuSgs is calculated. Example for SpalartAllmaras:
Code:

void mySpalartAllmaras::updateSubGridScaleFields()
{
    nuSgs_.internalField() = fv1()*nuTilda_.internalField();
    nuSgs_.correctBoundaryConditions();

    RANSregion_ = CDES_*delta() - y_;
}

This gives you a positive result in the area where RANS is used and a negative where LES is used.

kind regards

owayz August 14, 2012 12:56

Hi Jane L,
Can we do something similar for other Turbulence models as well. And what is "fv1()" in the above equation. It would be very helpful if you could explain shortly what this code snippet is actually doing.
Regards,
Awais

Jane L August 15, 2012 02:22

Hi!
Quote:

Originally Posted by owayz (Post 377081)
Can we do something similar for other Turbulence models as well.

The example above is a possible solution for the issue Anne described:

Quote:

I would like to plot a "sensor" which is for example "1" in regions where LES-mode is activated and "0" in regions where RANS-mode is activated.
While this makes only sence in a DES method, you can of course apply something similar to any turbulence model if you wish to have some more outputdata. This data will be written in the folder of each timestep and can be used by paraview.

Quote:

Originally Posted by owayz (Post 377081)
And what is "fv1()" in the above equation. It would be very helpful if you could explain shortly what this code snippet is actually doing.

This code snipped is a variation of the SpalartAllmaras turbulence model, which is located in your OpenFOAM installation folder under:
/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C
So actually the function "fv1()" comes from this model. In order to alter existing turbulence models you should make your own copy of that turbulence model. Follow the instructions of Hakan Nilsson (you find the "implementTurbulenceModel.pdf" via google)

I hope this helps!
regards

Anne Lincke August 15, 2012 10:17

Hey Jane,

thank you very much for this information. I am still interested in implementing such a sensor and will try to do it in this way.
Starting with Spalart-Allmaras and DES seems to be a good way, as the model gets more and more complex for DDES and IDDES.

Kind Regards
Anne

owayz August 15, 2012 11:11

Hi Jane,
Thanks for your reply. I will try to look into that pdf. Also I might try to do something similar for LES as well.

Regards,
Awais

Tarak August 17, 2012 00:29

Hii,

Have you tried plotting the energy spectrum to get an estimate of the LES content?

MaryBau March 1, 2013 16:22

Hi;

I have been trying to run a simulation in OFv2.1.0 with SpalartAllmarasIDDES using exactly the same LESProperties file that Anne L. posted in this forum. However, I am getting this error:

Code:

Selecting incompressible transport model Newtonian
Selecting turbulence model type LESModel
Selecting LES turbulence model SpalartAllmarasIDDES


--> FOAM FATAL IO ERROR:
keyword delta is undefined in dictionary ""

file:

    From function dictionary::lookupEntry(const word&, bool, bool) const
    in file db/dictionary/dictionary.C at line 400.

FOAM exiting

The IDDESDelta is recognized, because if I spell it wrong it appears on the LESdelta types.

Code:


--> FOAM FATAL ERROR:
Unknown LESdelta type XXIDDESDelta

Valid LESdelta types are :

6
(
IDDESDelta
Prandtl
cubeRootVol
maxDeltaxyz
smooth
vanDriest
)


    From function LESdelta::New(const fvMesh&, const dictionary&)
    in file LESdelta/LESdelta.C at line 78.

FOAM exiting

Any ideas or suggestions?

Thanks!

Anne Lincke March 4, 2013 04:27

Hey,

I installed OpenFOAM-2.1.1. and since then I get exactly the same error message. I would be really interested in how to solve this, too.

ingcorra March 6, 2013 09:16

This should be the correct LESProperties file for 2.1.x

Code:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                |                                                |
| \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox          |
|  \\    /  O peration    | Version:  1.7.1                                |
|  \\  /    A nd          | Web:      www.OpenFOAM.com                      |
|    \\/    M anipulation  |                                                |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version    2.0;
    format      ascii;
    class      dictionary;
    location    "constant";
    object      LESProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

LESModel      SpalartAllmarasIDDES;

printCoeffs    on;

delta cubeRootVol;

printCoeffs on;

cubeRootVolCoeffs
{
    deltaCoeff      1;
}

SpalartAllmarasIDDESCoeffs
{
    delta IDDESDelta;
    IDDESDeltaCoeffs
    {
        deltaCoeff 1;
        cw 0.15;
    }
}


//*************************************************************************//



All times are GMT -4. The time now is 22:24.