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

LEMOS InflowGenerator

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree9Likes

Reply
 
LinkBack Thread Tools Display Modes
Old   August 23, 2013, 09:58
Default LEMOS InflowGenerator
  #1
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
I am currently investigating the use of OpenFoam LES for urban dispersion modelling and would like to use the LEMOS decayingTurbulanceInflowGenerator for the Inlet profile. I have downloaded and compiled the LEMOS library with no issues but am struggling to find any literature on what properties I should use withing the 0/U file. The pdf example file provided with LEMOS gives the following:

inlet
{
type decayingTurbulenceInflowGenerator;
direction 1;
LField nonuniform List<scalar> ...
refField nonuniform List<vector> ...
RField nonuniform List<symmTensor> ...
value nonuniform List<vector> ...
}


However, I am not sure what values / data needs to be entered in the 'List<...> fields and wondered if anyone could provide any help with this or an example they would be willing to provide that demonstrates how to use the InflowGenerator?

Thanks
Rob

Last edited by r_gordon; August 23, 2013 at 10:00. Reason: Should have previewed before posting
r_gordon is offline   Reply With Quote

Old   August 26, 2013, 10:58
Default LEMOS example
  #2
Member
 
Michael Roth
Join Date: Mar 2009
Location: Guelph, Ontario, Canada
Posts: 46
Rep Power: 8
roth is on a distinguished road
A neat little BC. I believe it is based on Lund's work.

Attached is one based on a quick scan of the source code. All the values are probably nonsense but it runs and gives some eddies. Note that it is based on the motorbike tutorial (without the motorbike) so has a bottom wall moving at 20 m/s.

The important bit is the definition of U:

Code:
    inlet
    {
        type            decayingTurbulenceInflowGenerator;
        direction       1;
        LField          uniform 1;
        RField          uniform (0.1 0 0 0.1 0 0.1);
        refField        uniform ( 20 0 0 );
        value           uniform ( 20 0 0 );
    }
Note that I just put uniform values in for the fields. For your case you will likely want a non-uniform values to represent an atmospheric boundary layer. Perhaps generated by funky.
Attached Files
File Type: gz LEMOS.tar.gz (8.0 KB, 109 views)
roth is offline   Reply With Quote

Old   August 29, 2013, 06:54
Default
  #3
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
roth, thanks for the help. I have just come back from holiday and will give this a go later today. I have been using the atmBoundaryLayerInletVelocity boundary condition and will need to figure out how to combine this with the LeMoS BC. Do you know of any good tutorials on how to use the non-uniform BC? Im new to OpenFoam.

Thanks

Rob
r_gordon is offline   Reply With Quote

Old   August 29, 2013, 12:15
Default
  #4
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
Michael,

I have had a go an managed to et your example running with no problems at all however I struggle to get paraview to visuaise the U and U_0 fields as i get a vtk error:

ERROR: In /home/punk/Downloads/vtkPOFFReader/vtkOFFDevReader.cxx, line 7807
vtkOFFReaderPrivate (0x3450a20): Error reading line 4667 of /home/OpenFoamUser/OpenFOAM/Simulations/LEMOS/0.1/U: Expected '(', found 1

Im currently using paraview 3.10.0, do I need an upgrade?

Thanks

Rob
r_gordon is offline   Reply With Quote

Old   September 11, 2013, 03:07
Default
  #5
New Member
 
Marc
Join Date: Sep 2012
Posts: 12
Rep Power: 4
marc.immer is on a distinguished road
Hi Rob,

there is a "bug" in the code. It writes additional variables into the U files (the vortons) and that's why paraview can't read it.
As far as I remember, paraFoam could read the U files.

Cheers
Marc
marc.immer is offline   Reply With Quote

Old   October 3, 2013, 06:56
Default
  #6
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
Quote:
Originally Posted by marc.immer View Post
Hi Rob,

there is a "bug" in the code. It writes additional variables into the U files (the vortons) and that's why paraview can't read it.
As far as I remember, paraFoam could read the U files.

Cheers
Marc
Thanks for that. I was pulling my hair out for days on that one. I have now downgraded to OF2.1.1 and the surface sampling works.
r_gordon is offline   Reply With Quote

Old   October 7, 2013, 08:28
Default
  #7
Senior Member
 
cfdonline2mohsen's Avatar
 
Mohsen KiaMansouri
Join Date: Jan 2010
Location: CFD Lab
Posts: 117
Rep Power: 7
cfdonline2mohsen is on a distinguished road
Would you please tell me where can I download the LEMOS library?
__________________
“If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.”
cfdonline2mohsen is offline   Reply With Quote

Old   October 7, 2013, 08:44
Default
  #8
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
Quote:
Originally Posted by cfdonline2mohsen View Post
Would you please tell me where can I download the LEMOS library?
You can download the library from here: http://www.lemos.uni-rostock.de/en/d.../cfd-software/
cfdonline2mohsen likes this.
r_gordon is offline   Reply With Quote

Old   October 7, 2013, 09:07
Default
  #9
Senior Member
 
cfdonline2mohsen's Avatar
 
Mohsen KiaMansouri
Join Date: Jan 2010
Location: CFD Lab
Posts: 117
Rep Power: 7
cfdonline2mohsen is on a distinguished road
Thank you so much Dear Rob
It is really so kind of you.
__________________
“If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.”
cfdonline2mohsen is offline   Reply With Quote

Old   October 28, 2013, 03:29
Default
  #10
New Member
 
Marc
Join Date: Sep 2012
Posts: 12
Rep Power: 4
marc.immer is on a distinguished road
I wrote a small bash script to remove the vortons from the U file. It also creates a backup copy of U:

Code:
cp $1 $1.bak
rm $1
sed '/vortons/,/;/d' $1.bak > $1
start like this:
./removeVortons "pathToUFile", e.g. "10/U"

Regards
Marc
marc.immer is offline   Reply With Quote

Old   October 28, 2013, 05:01
Default
  #11
New Member
 
Rob Gordon
Join Date: Aug 2013
Posts: 8
Rep Power: 3
r_gordon is on a distinguished road
Quote:
Originally Posted by marc.immer View Post
I wrote a small bash script to remove the vortons from the U file. It also creates a backup copy of U:

Code:
cp $1 $1.bak
rm $1
sed '/vortons/,/;/d' $1.bak > $1
start like this:
./removeVortons "pathToUFile", e.g. "10/U"

Regards
Marc
Marc,

That great. Thanks very much for that. I gave up on LEMOS but will be having another look at in the coming weeks. I don't suppose you have a simple example you could send through that will give me a better idea of how to utilise the unsteady fields? There is so little documentation on the inflow generator that it almost renders it useless.

Thanks
Rob
r_gordon is offline   Reply With Quote

Old   October 30, 2013, 10:17
Default
  #12
Member
 
Matthias Walter
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 61
Rep Power: 8
matthias is on a distinguished road
Dear Rob,

we will provide a little test case or tutorial where you can see the settings and some explanations of the inflow generator. Furthermore the OF reader of paraview is not designed to read the vortons which are used to create the fluctuations. So that's not a bug in the code but a missing feature in OF paraview plugin.

We will have a look at it and publish a workaround as fast as possible.


Best regards

Matthias
matthias is offline   Reply With Quote

Old   November 4, 2013, 07:55
Default
  #13
New Member
 
Marc
Join Date: Sep 2012
Posts: 12
Rep Power: 4
marc.immer is on a distinguished road
Dear Matthias,

you are indeed right, apologies. The bug is in the paraview nativ OF reader, which can't read the SLList field.
I use the "remove vortons" script now to postProcess with paraview, works fine.

Regards,
Marc
marc.immer is offline   Reply With Quote

Old   January 22, 2014, 07:23
Question
  #14
Senior Member
 
Join Date: Jan 2013
Posts: 196
Rep Power: 4
openfoammaofnepo is on a distinguished road
Hello there,

I tried to find the paper from which this boundary condition is developed but did not find the right one. Does anybody know something about that? Give me some hints ? Thank you so much.

I have found the corresponding paper in the following webpage, thanks.

http://www.lemos.uni-rostock.de/publikationen/

The title is
Code:
 Kornev, N. & Hassel, E. (2007). Method of random spots for generation of synthetic inhomogeneous turbulent fields with prescribed autocorrelation functions. Communications in Numerical Methods Engineering, Vol. 23, Issue 1, pp. 35-43.

Kornev, N., Kröger, H., Turnow, J. & Hassel, E. (2007). Synthesis of artificial turbulent fields with prescribed second-order statistics using the random-spot method. Proceedings in Applied Mathematics and Mechanics. Vol. 7, Issue 1, pp. 2100047-2100048.
Quote:
Originally Posted by roth View Post
A neat little BC. I believe it is based on Lund's work.

Attached is one based on a quick scan of the source code. All the values are probably nonsense but it runs and gives some eddies. Note that it is based on the motorbike tutorial (without the motorbike) so has a bottom wall moving at 20 m/s.

The important bit is the definition of U:
Code:
    inlet
    {
        type            decayingTurbulenceInflowGenerator;
        direction       1;
        LField          uniform 1;
        RField          uniform (0.1 0 0 0.1 0 0.1);
        refField        uniform ( 20 0 0 );
        value           uniform ( 20 0 0 );
    }
Note that I just put uniform values in for the fields. For your case you will likely want a non-uniform values to represent an atmospheric boundary layer. Perhaps generated by funky.

Last edited by openfoammaofnepo; January 22, 2014 at 11:01.
openfoammaofnepo is offline   Reply With Quote

Old   January 22, 2014, 12:12
Default
  #15
Senior Member
 
Join Date: Jan 2013
Posts: 196
Rep Power: 4
openfoammaofnepo is on a distinguished road
Hello everyone,

I read both the code and the paper I mentioned in the last thread,

I am a little confused about the calculation of C_ in the following. What is the purpose of these lines? Thank you very much.

Code:
Field<tensor> C_(R_.size(), pTraits<tensor>::zero);
        forAll(C_, I)
        {
            C_[I].xx() = 1.0;
            C_[I].yy() = 1.0;
            C_[I].zz() = 1.0;
        }

        forAll(R_, I)
        {
            scalar D1 = R_[I].xx();
            if (D1 > 0)
                C_[I].xx() = 1.0/sqrt(D1);
    
            scalar D2 = R_[I].xx()*R_[I].yy() - R_[I].xy()*R_[I].xy();
            if (D1 > 0 && D2 > 0)
            {
                C_[I].yx() = -R_[I].xy()/sqrt(D1*D2);
                C_[I].yy() = sqrt(D1/D2);
            }

            scalar D3 = det(R_[I]);
            if (D2 > 0 && D3 > 0)
            {
                C_[I].zx() = (R_[I].xy()*R_[I].yz()-R_[I].yy()*R_[I].xz())/sqrt(D2*D3);
                C_[I].zy() = -(R_[I].xx()*R_[I].yz()-R_[I].xz()*R_[I].xy())/sqrt(D2*D3);
                C_[I].zz() = sqrt(D2/D3);
            }
        }
From the following code,
Code:
 fixedValueFvPatchField<vector>::operator==(refField_+ turbulent);
,
we can deduce: refField_ is the mean fields and turbulent is the fluctuation field.

From
Code:
turbulent = Lund_&turbulent;
Lund_ is the coefficient tensor by Lund et al , and turbulent in RHS is u_tilde in Eq. (10) in Kornel and Hassel 2007.

But I got stuck in the following:
Code:
turbulent = C_&turbulent;
What is C_ and turbulent (the LHS one)? The turbulence in the RHS is mean fields I think.

Anybody gives some comments?
openfoammaofnepo is offline   Reply With Quote

Old   January 23, 2014, 10:38
Default
  #16
Member
 
Matthias Walter
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 61
Rep Power: 8
matthias is on a distinguished road
The constant C_ represents some kind of scaling factor in tensor notation. It is chosen during the rms (=standard deviation) calculation from the condition that rms has a prescribed value.

For instance, let us generate a random signal with the rms value of 0.9:

First we generate randomly numbers -0.1, 0.2, 0.5, -0.3. The mean value is of this sample is 0.075. The standard deviation is 0.3031.

Let us introduce the constant C=(0.9/0.3031). Multiply all numbers above with C. The signal sample -0.1*C, 0.2*C, 0.5*C, -0.3*C has the rms 0.9 or variance of 0.81.

The same is made in Lund transformation and referred to as the conditioning
matthias is offline   Reply With Quote

Old   January 23, 2014, 15:57
Default
  #17
Senior Member
 
Join Date: Jan 2013
Posts: 196
Rep Power: 4
openfoammaofnepo is on a distinguished road
Dear Matthias,

Thank you so much for your help. I understand this is a kind of normalization (but in your reply it should be C=sqrt(0.9/0.3031)?). I found that this scaling approach is different from what is used in Kornev and Hassel , Commun. Numer. Meth. Engng. 2007. I also checked the paper by Lund from JCP and it seems that they did not explicitly mentioned this scaling method. Could you please give me some references about this scaling approach?

Besides I found that there is an variable "ind_" is used in the code. What does this variable mean? it is used in the following equation:

Code:
R_=((ind_-1)/ind_)*R_+(1/ind_)*sqr(turbulent)
Thank you in advance.
openfoammaofnepo is offline   Reply With Quote

Old   January 23, 2014, 20:35
Default
  #18
Member
 
Matthias Walter
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 61
Rep Power: 8
matthias is on a distinguished road
On our homepage you can find another paper from 2008

Kornev, N., Kröger, H. & Hassel, E. (2008). Synthesis of homogeneous anisotropic turbulent fields with prescribed second-order statistics by the random spots method. Communications in Numerical Methods in Engineering, Vol. 24, Issue 10, pp. 875-877.

for information regarding the scaling operations. For Lund transformation I have to look for the correct paper.

Exactly if using the square root it should be C=sqrt(0.9/0.091869). That's depending on the definition (or point of view) what the rms value is.

The line of code you mentioned is used for time averaging of Reynolds stresses. The ind_ label is increased everytime the bc is activated, so the accuracy of Reynolds stresses will be improved the longer the case is running.
matthias is offline   Reply With Quote

Old   January 23, 2014, 20:47
Default
  #19
Senior Member
 
Join Date: Jan 2013
Posts: 196
Rep Power: 4
openfoammaofnepo is on a distinguished road
Thanks, Matthias.

I read the paper you mentioned. It is very helpful for me to understand the algorithms of the BC. However, I did not find the information about the scaling and for my understanding it was emphasized that how to obtain the function f, the inner velocity of the random spots. Did I dismiss something?

Thank you for your help and sorry for my frequent questions. I would like to know something about the principle before I use your method. Thank you again.
openfoammaofnepo is offline   Reply With Quote

Old   January 24, 2014, 04:55
Default
  #20
Member
 
Matthias Walter
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 61
Rep Power: 8
matthias is on a distinguished road
Please, have a look at the last part of the paper where the constant C is determined. In principle that is the same scaling operation as done in the inflow generator.

The Lund transformation isn't considered in this paper.
matthias is offline   Reply With Quote

Reply

Tags
inflow conditions, lemos

Thread Tools
Display Modes

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 On
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 08:36.