CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Post-Processing

Calculation of mass flow across a boundary

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

Like Tree5Likes

Reply
 
LinkBack Thread Tools Display Modes
Old   March 6, 2008, 09:37
Default Hi, I want to calculate mass
  #1
jdk
New Member
 
Jens Dahl Kunoy
Join Date: Mar 2009
Location: Denmark
Posts: 12
Rep Power: 8
jdk is on a distinguished road
Hi,
I want to calculate mass flow across a BC, which should be a general problem for most people who work with CFD. But I cannot find any standard utility in the 1.4.1 release that can help me. Is it just me ... ?
I have found a utility "calcmassflow" on the openfoam wiki. But that was apperantly created for version 1.2 and after som fiddling with correcting library paths to get wmake to work, I gave up.

Can anyone help?

Regards
Jens
jdk is offline   Reply With Quote

Old   March 7, 2008, 05:32
Default Hi Jens OpenFOAM calculates t
  #2
New Member
 
Maximilian Graser
Join Date: Mar 2009
Location: Stuttgart, Germany
Posts: 18
Rep Power: 8
graser is on a distinguished road
Hi Jens
OpenFOAM calculates the massflow at every surface in every timeStep. To create a file which contains the flux-data (filename = phi) for every writeInterval you have to tell it OF.
Therefore look at the fvSchemes dictionary in <root>/<case>/system
For more Infomation on fvSchemes read the UserGuide
page: U-104 + U-109 (chapter 4.4.7)

Now you have the flux and need to postprzess it. Therefore you need to integrate phi at your boundary. There is a OF-utility named patchIntegrate.
The Problem is that phi is defined as "surfaceScalarField" and patchIntegrate only integrates "volScalarField". To integrate phi you have to modify the patchIntegrate Tool to read and integrate surfaceScalarFields.

Hf
Max
graser is offline   Reply With Quote

Old   March 7, 2008, 08:05
Default Hello Jens, A Good day to y
  #3
Senior Member
 
Philippose Rajan
Join Date: Mar 2009
Location: Germany
Posts: 530
Rep Power: 16
philippose will become famous soon enough
Hello Jens,

A Good day to you!

I have been using a modified version of the calcMassFlow utility that you found on the OpenFOAMWiki.

This version of the utility has the following features:
1. Ability to process a decomposed case (detected by the presence of multiple "processor<x>" folders)

2. A dictionary based selection of the patches across which to calculate the Massflow.

3. If a Density value in the dictionary greater than unity is found, it is used to directly calculate the flow in [kg/s], if the density line is commented out in the dictionary, the output is printed in [m^3/s] and [l/min].

4. Works on OpenFOAM 1.4, 1.4.1, 1.4.1-dev, etc..etc...

If you are only going to be working with single processor simulations, I can give you a slightly different version of the code, which is significantly faster (since the code overhead for multiprocessor supoort is not there).

calcMassFlow.zip

Have a nice day!

Philippose
philippose is offline   Reply With Quote

Old   March 12, 2008, 10:54
Default Hello! As Jens I need to ca
  #4
New Member
 
Gabriela Bracho
Join Date: Mar 2009
Location: Valencia, Valencia, Spain
Posts: 14
Rep Power: 8
gaby is on a distinguished road
Hello!

As Jens I need to calculate the massFlow through a BC. I've found phi files and the patchIntegrate tool, but I'm not able to modify it :S

Then, I am really interested in the calcMassFlow utility. But I am new in C++ and OpenFoam wmake.

So, it would be great if you could explain me how to use the calcMassFlow utility developed by Philippose. In which folder should I download it?? (applications/bin/linuxGcc4DPOpt ??) Or what tutorial should I read to compile it?? Any help will be appreciated.

Have a nice day !!

Gaby
gaby is offline   Reply With Quote

Old   March 12, 2008, 14:38
Default Hello Gabriela, Good evenin
  #5
Senior Member
 
Philippose Rajan
Join Date: Mar 2009
Location: Germany
Posts: 530
Rep Power: 16
philippose will become famous soon enough
Hello Gabriela,

Good evening to you!

Sooo.... here are the steps you need to follow to compile and use calcMassFlow...

I am assuming that you have a working OpenFOAM installation, and that you are able to compile things using wmake....

1. Unzip the file "calcMassFlow.zip" to the folder: [home]/OpenFOAM/[username]-[OFVersion]/applications

2. Go into the created folder "calcMassFlow"

3. type "wmake"

4. The utility compiles, and installs the executable file in the folder:
[home]/OpenFOAM/[username]-[OFVersion]/applications/bin/linuxGCC4DOpt

The above four steps basically complete the compilation / installation of the utility.

To use it... you need to do the following:

1. In the folder "calcMassFlow" mentioned earlier, there is a sample "calcMassFlowDict" file.... copy this file into the "system" folder of your case.

2. Modify the entries under "patchNames" to the names of the patches through which you want to calculate the massflow.

3. Optionally, you can uncomment the "rho" line, and specify the density of the medium you simulated, in case you want the massflow in units "kg/s" instead of "m^3/s"

4. Go to the root folder of your case, and as usual, type:
calcMassFlow <root> <case> [-time t]

or

calcMassFlow <root> <case> [-latestTime]

or

calcMassFlow <root> <case>


That should be it....

Hope everything works as expected :-)!

Enjoy!

Philippose
Alhasan, houss, nicou and 1 others like this.
philippose is offline   Reply With Quote

Old   March 13, 2008, 14:57
Default Hello Philippose ! Good Eve
  #6
New Member
 
Gabriela Bracho
Join Date: Mar 2009
Location: Valencia, Valencia, Spain
Posts: 14
Rep Power: 8
gaby is on a distinguished road
Hello Philippose !

Good Evening!!

I've followed all your steps and finally it worked very good !!!

Thank you so much! and I hope this would be useful to other Foamers !!! :-)

Gabriela
houss likes this.
gaby is offline   Reply With Quote

Old   July 20, 2009, 05:45
Default
  #7
Member
 
Rachel Vogl
Join Date: Jun 2009
Posts: 48
Rep Power: 8
Rachel is on a distinguished road
Hello Philippose,

Does this utility work with OF-1.5.x?
I have a compressible case so I cannot give a rho value. Do you have suggestion?

I would like to calculate mass flow rate at inlet in kg/s.

I guess I will try it anyways.

Thanks for your time,
Rachel
Rachel is offline   Reply With Quote

Old   August 5, 2009, 12:45
Default Mass flow in a plane into the field
  #8
Member
 
Hamed Aghajani
Join Date: Mar 2009
Location: London, UK
Posts: 77
Rep Power: 8
haghajani is on a distinguished road
Hi all,

Thanks for the posted utility in this thread.

I am interested to calculated mass flow rate in a plane in the field, not patches as inlet/outlet,

do you have any idea, what should i do?

Thanks,
Hamed
haghajani is offline   Reply With Quote

Old   January 15, 2010, 05:58
Question
  #9
Member
 
Cedric Van Holsbeke
Join Date: Dec 2009
Location: Belgium
Posts: 81
Rep Power: 7
CedricVH is on a distinguished road
Hello Philippose,

Thank you for your great utility!

Do you know how I can run it in parallel? When I have a parallel case and run
Code:
calcMassFlow -latestTime
the utility detects all the processor directories and calculates the mass flow rate correctly. However, for big cases, this goes very slow as the program itself only uses 1 CPU.

When I run
Code:
mpirun --hostfile $hosts -np $cpus calcMassFlow -latestTime -parallel
the program does not detect the processor directories anymore, causing it to do nothing.

How can I solve this?
CedricVH is offline   Reply With Quote

Old   February 4, 2010, 08:51
Default steady BC, time dependent flux, density species
  #10
Senior Member
 
Join Date: Dec 2009
Posts: 112
Rep Power: 7
heavy_user is on a distinguished road
Hi All,

i have checked out calcMassFLow, nice tool!
But i have encountered some difficutlies...

First I dont understand this (perhaps someone could give me a hand)

Code:
           if(fluxOK)
           {
              if(rho.value() > 1.0)
              {
                 Info << "Massflow at "<< bcNames[bcI]
                      << " = " << fluxOut << "kg/s"
                      << endl;
              }
              else
              {              
                 Info << "Flux at "<< bcNames[bcI] 
                      << " = " << fluxOut << "m^3/s [" 
                      << fluxOut*60000 << " l/min]" 
                      << endl;
              }
           }
so we have Volume/Time = Area* velocity
mass/Time = Volume/Time * density

so I asume if rho =1 we come out with Volume/Time.
If rho !=1 , we have to multiply with rho and end up with mass/time...ok byt why is the code then
Code:
 if(rho.value() > 1.0)
and not if(rho.value() != 1.0) ?????

Second question:

I have two species coming out my inlet.
C3H8 and "air", how can I specify the different densities for each? There is only one entry for density in the dict.

Third question ( migth be slightly off-topic, i apologize for that) :
If I dont specify the density, using an compressible solver, phi needs to be calculated with density.
we have p=rho R T;
My BC are:

Code:
pressure:

    inlet           
    {
        type            fixedValue;
        value           uniform 100000;
    }

T:
    inlet           
    {
        type            fixedValue;
     value         uniform 296;
    }
U:

 inlet
    {
        type            fixedValue;
        value           nonuniform List<vector> 
100
(
(0 0 67.552)
(0 0 67.77)
(0 0 67.035)
(0 0 65.8686)
(0 0 64.7974)
(0 0 63.5496)
(0 0 61.7962)
(0 0 59.7163)
(0 0 57.5885)
(0 0 54.9667)
(0 0 50.2231)
(0 0 36.2949)
(0 0 0.315833)
(0 0 6.57834)
(0 0 7.44999)
(0 0 7.96628)
(0 0 8.26225)
(0 0 8.49278)
(0 0 8.65498)
(0 0 8.76455)
(0 0 8.83736)
(0 0 8.88867)
(0 0 8.932)
(0 0 8.97775)
(0 0 9.03216)
(0 0 9.0771)
(0 0 9.2)
(0 0 9.2)
.
.
.
)
;
    }

Species:
C3H8 for r/R<1.
"AIR" for r/R>1.
so NOT time dependent BC.

I am using reactingFOAM and my velocity Field shows eddys from resulting from unsteady BC...
This goes along with the time depending flow I have:

Code:
uild  : 1.6                                                                                                          
Exec   : calcMassFlow                                                                                                 
Date   : Feb 04 2010                                                                                                  
Time   : 13:39:38                                                                                                     
Host   : prandtl                                                                                                      
PID    : 10155                                                                                                        
Case   : /home/itvns/OpenFOAM/OpenFOAM-1.6/OWN/sandia/V6/diffusionflame_propane          
nProcs : 1                                                                                                            
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).                                                    

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time                                                                    

Create mesh for time = 0

// using new solver syntax:
rho                        
{                          
    solver          PCG;   
    preconditioner  DIC;   
    tolerance       1e-06; 
    relTol          0;     
}                          

// using new solver syntax:
U                          
{                          
    solver          PBiCG; 
    preconditioner  DILU;  
    tolerance       1e-06; 
    relTol          0;     
}                          

// using new solver syntax:
p                          
{                          
    solver          PCG;   
    preconditioner  DIC;   
    tolerance       1e-09; 
    relTol          0;     
}                          

// using new solver syntax:
Yi                         
{                          
    solver          PBiCG; 
    preconditioner  DILU;  
    tolerance       1e-06; 
    relTol          0;     
}                          

// using new solver syntax:
h                          
{                          
    solver          PBiCG; 
    preconditioner  DILU;  
    tolerance       1e-06; 
    relTol          0;     
}                          

// using new solver syntax:
k                          
{                          
    solver          PBiCG; 
    preconditioner  DILU;  
    tolerance       1e-06; 
    relTol          0;     
}                          

// using new solver syntax:
epsilon                    
{                          
    solver          PBiCG; 
    preconditioner  DILU;  
    tolerance       1e-06; 
    relTol          0;     
}                          

Checking for multiple processor directories....
No processor directories found                 

Time = 0

.....                   

No phi for Time = 0 -> Skipping

Error....Patch: inlet not found!

Time = 0.00025

......                      

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00187994m^3/s [-112.796 l/min]

Time = 0.0005

.....                    

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00190881m^3/s [-114.528 l/min]

Time = 0.00075

.....                  

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00194239m^3/s [-116.544 l/min]

Time = 0.001

.....                        

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00198381m^3/s [-119.028 l/min]

Time = 0.00125

....

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00201004m^3/s [-120.602 l/min]

Time = 0.0015
.....                     

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00205286m^3/s [-123.171 l/min]

Time = 0.00175

....                      

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00209103m^3/s [-125.462 l/min]

Time = 0.002

....                        

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00209209m^3/s [-125.525 l/min]

Time = 0.00225

....

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00196443m^3/s [-117.866 l/min]

Time = 0.0025

...                      

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00174933m^3/s [-104.96 l/min]

Time = 0.00275

...                      

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.0015123m^3/s [-90.7381 l/min]

Time = 0.003


.....

                         

Patch: inlet found on 1/1 processor(s)
Flux at inlet = -0.00129365m^3/s [-77.6187 l/min]
The flux is oszillating....WHY ???????
I have no clue why this is happening and it messes up everything...

PLZ help!

regards!
heavy_user is offline   Reply With Quote

Old   February 27, 2010, 08:52
Default
  #11
Member
 
Jérémy Bulle
Join Date: Nov 2009
Posts: 93
Rep Power: 7
Gearb0x is on a distinguished road
Hello

I would like to compare the massflow produced by this utility to the one I get un fluent.

In fluent, when you have a 2D case, it extrudes a third dimension of 1 meter to calculate the massflow.

I would like to know how it works here with this code? What's the value of the third dimension? Where is it created? How to change it?

Thanks for the help
Gearb0x is offline   Reply With Quote

Old   June 17, 2010, 03:02
Default
  #12
New Member
 
subash
Join Date: Feb 2010
Posts: 10
Rep Power: 7
subash is on a distinguished road
[QUOTE=philippose;185787]Hello Gabriela,

Good evening to you!

Sooo.... here are the steps you need to follow to compile and use calcMassFlow...

I am assuming that you have a working OpenFOAM installation, and that you are able to compile things using wmake....

1. Unzip the file "calcMassFlow.zip" to the folder: [home]/OpenFOAM/[username]-[OFVersion]/applications

2. Go into the created folder "calcMassFlow"

3. type "wmake"

4. The utility compiles, and installs the executable file in the folder:
[home]/OpenFOAM/[username]-[OFVersion]/applications/bin/linuxGCC4DOpt

The above four steps basically complete the compilation / installation of the utility.

To use it... you need to do the following:

1. In the folder "calcMassFlow" mentioned earlier, there is a sample "calcMassFlowDict" file.... copy this file into the "system" folder of your case.

2. Modify the entries under "patchNames" to the names of the patches through which you want to calculate the massflow.

3. Optionally, you can uncomment the "rho" line, and specify the density of the medium you simulated, in case you want the massflow in units "kg/s" instead of "m^3/s"

4. Go to the root folder of your case, and as usual, type:
calcMassFlow <root> <case> [-time t]

or

calcMassFlow <root> <case> [-latestTime]

or

calcMassFlow <root> <case>


Hi philippose

I tried to compile(wmake) the file that you had attached but it throws me the following error, can you help me with this


SOURCE=calcMassFlow.C ; g++ -m32 -Dlinux -DWM_DP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude -I/home/research/OpenFOAM/OpenFOAM-1.6/src/meshTools/lnInclude -IlnInclude -I. -I/home/research/OpenFOAM/OpenFOAM-1.6/src/OpenFOAM/lnInclude -I/home/research/OpenFOAM/OpenFOAM-1.6/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linuxGccDPOpt/calcMassFlow.o
In file included from calcMassFlow.C:198:
/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude/createPhi.H: In function ‘int main(int, char**)’:
/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude/createPhi.H:50: error: ‘U’ was not declared in this scope
make: *** [Make/linuxGccDPOpt/calcMassFlow.o] Error 1


Thanks in advance.
subash is offline   Reply With Quote

Old   November 7, 2010, 09:30
Default
  #13
Senior Member
 
maysmech's Avatar
 
Join Date: Jan 2010
Posts: 347
Blog Entries: 2
Rep Power: 8
maysmech is on a distinguished road
Hi,

I have OF 1.7.0 and Paraview 3.8.0. How can i calculate flow rate of patches?
maysmech is offline   Reply With Quote

Old   December 1, 2011, 09:59
Default
  #14
Senior Member
 
Anne Gerdes
Join Date: Aug 2010
Location: Hamburg
Posts: 152
Rep Power: 7
Anne Lincke is on a distinguished road
[QUOTE=subash;263350]
Quote:
Originally Posted by philippose View Post




Hi philippose

I tried to compile(wmake) the file that you had attached but it throws me the following error, can you help me with this


SOURCE=calcMassFlow.C ; g++ -m32 -Dlinux -DWM_DP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude -I/home/research/OpenFOAM/OpenFOAM-1.6/src/meshTools/lnInclude -IlnInclude -I. -I/home/research/OpenFOAM/OpenFOAM-1.6/src/OpenFOAM/lnInclude -I/home/research/OpenFOAM/OpenFOAM-1.6/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linuxGccDPOpt/calcMassFlow.o
In file included from calcMassFlow.C:198:
/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude/createPhi.H: In function ‘int main(int, char**)’:
/home/research/OpenFOAM/OpenFOAM-1.6/src/finiteVolume/lnInclude/createPhi.H:50: error: ‘U’ was not declared in this scope
make: *** [Make/linuxGccDPOpt/calcMassFlow.o] Error 1


Thanks in advance.
I had the same issue and simply inserted

HTML Code:
        IOobject Uheader
        (
            "U",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ
        );
 Info<< "    Reading U" << endl;
            volVectorField U(Uheader, mesh);
            mesh.readUpdate();
This makes the code to read the velocity field from the solution.
Now I have no compiler errors any more.
Anne Lincke is offline   Reply With Quote

Old   February 16, 2012, 00:39
Default mass flow calculation in OF 1.6
  #15
New Member
 
Gopal Shinde
Join Date: Sep 2009
Location: Pune, India
Posts: 20
Rep Power: 7
shinde.gopal is on a distinguished road
Hi Foamers,

I need your help in calculating the mass flow rate in OF 1.6 at the boundary patches.
Plz help.

with rgds,
-Gopal.
shinde.gopal is offline   Reply With Quote

Old   February 16, 2012, 04:21
Default
  #16
Senior Member
 
Anne Gerdes
Join Date: Aug 2010
Location: Hamburg
Posts: 152
Rep Power: 7
Anne Lincke is on a distinguished road
Hey Gopal,
have you tried the utility 'calcMassFlow' yet?
Anne Lincke is offline   Reply With Quote

Old   February 17, 2012, 08:10
Default
  #17
New Member
 
Gopal Shinde
Join Date: Sep 2009
Location: Pune, India
Posts: 20
Rep Power: 7
shinde.gopal is on a distinguished road
I have tried the CalcMassFlow utility. It requires compilation of the utility. I am finding it difficult to compile as it is written for the older versions (1.2 or 1.3) I guess. I am using v1.6 for my calculations.

It will help me a lot if somebody can guide me thru.

thanks.

-Gopal.
shinde.gopal is offline   Reply With Quote

Old   February 20, 2012, 04:14
Default
  #18
Senior Member
 
Anne Gerdes
Join Date: Aug 2010
Location: Hamburg
Posts: 152
Rep Power: 7
Anne Lincke is on a distinguished road
Try these instructions

Quote:
1. Unzip the file "calcMassFlow.zip" to the folder: [home]/OpenFOAM/[username]-[OFVersion]/applications

2. Go into the created folder "calcMassFlow"

3. type "wmake"

4. The utility compiles, and installs the executable file in the folder:
[home]/OpenFOAM/[username]-[OFVersion]/applications/bin/linuxGCC4DOpt

The above four steps basically complete the compilation / installation of the utility.

To use it... you need to do the following:

1. In the folder "calcMassFlow" mentioned earlier, there is a sample "calcMassFlowDict" file.... copy this file into the "system" folder of your case.

2. Modify the entries under "patchNames" to the names of the patches through which you want to calculate the massflow.

3. Optionally, you can uncomment the "rho" line, and specify the density of the medium you simulated, in case you want the massflow in units "kg/s" instead of "m^3/s"

4. Go to the root folder of your case, and as usual, type:
calcMassFlow <root> <case> [-time t]
And if you occur any problems, then post the output error.
Be more specific about your problems, otherwise we cannot help you.
Anne Lincke is offline   Reply With Quote

Old   February 20, 2012, 08:29
Default
  #19
New Member
 
Gopal Shinde
Join Date: Sep 2009
Location: Pune, India
Posts: 20
Rep Power: 7
shinde.gopal is on a distinguished road
Hi Anne,

Thanks for the reply.
I have followed the steps. But still there are lot of errors. Plz see the attached log file.

with rgds,
-Gopal.
Attached Files
File Type: txt error.txt (13.6 KB, 35 views)
shinde.gopal is offline   Reply With Quote

Old   February 20, 2012, 08:47
Default
  #20
Senior Member
 
Anne Gerdes
Join Date: Aug 2010
Location: Hamburg
Posts: 152
Rep Power: 7
Anne Lincke is on a distinguished road
Okay. Basically the first error is the most important.
The compiler does not find the file fvCFD.H
Which version are you using exactly?

Please check if there is the file fvCFD.H in OpenFOAM-1.6/src/finiteVolume/lnInclude.
Anne Lincke is offline   Reply With Quote

Reply

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


Similar Threads
Thread Thread Starter Forum Replies Last Post
Calculate Mass Flow in a faceSet during calculation torvic OpenFOAM Running, Solving & CFD 1 August 11, 2008 19:05
mass flow rate calculation Ahmed CFX 7 June 20, 2008 05:55
Calculation of mass flow rate msrinath80 OpenFOAM Running, Solving & CFD 0 April 18, 2007 14:05
Calculation of added mass in viscous flow kharati Main CFD Forum 2 February 1, 2006 01:28
Mass Flow Rate Calculation Paul FLUENT 9 March 23, 2002 09:37


All times are GMT -4. The time now is 19:48.