|
[Sponsors] |
April 23, 2012, 18:13 |
How to output other properties?
|
#1 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
Hi,
I am using the OpenFOAM-210 and I Know that with foamCalc utility I can get the components of velocity and I also know how to get mach number and vorticity, but does anybody know how to output other variables such as viscosity, Reynolds number and etc? thanks, Wagner |
|
April 24, 2012, 02:42 |
|
#2 |
Senior Member
Anton Kidess
Join Date: May 2009
Location: Germany
Posts: 1,377
Rep Power: 30 |
Viscosity will be written to the time directories if it's not constant, and you can plot it with paraview. You can also use paraview to calculate the Reynolds number. If you want a command line utility, you'll have to get your hands dirty.
__________________
*On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. |
|
April 26, 2012, 23:51 |
|
#3 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
Thank you for your reply. I'm ready to get my hands dirty. Even though my viscosity is constant, I would still like to know how to output it at each time-step. I would like to verify that I am getting the correct value for my viscosity. I'm using the rhoCentralFoam solver. This is the output of the "createFields.H" file:
13--> const volScalarField& mu = thermo.mu(); So what I did was change this file to something like this: 13--> volScalarField mu 14--> ( 15--> IOobject 16--> ( 17--> "mu", 18--> runTime.timeName(), 19--> mesh, 20--> IOobject::MUST_READ, 21--> IOobject::AUTO_WRITE 22--> ), 23--> mesh 24--> ); Then I recompiled and created a "mu" file at my "/0/" directory. But after I running, the other time directories do not have the mu property. It's not autowriting as ordered. For the Reynolds number I'm still having problems. Do you know of any documentation about the command line utility for this? thanks, Wagner |
|
May 1, 2012, 14:42 |
sutherland viscosity
|
#4 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
Hi Akidess,
I followed your suggestion and set the viscosity to sutherland. Now that the viscosity is not constant, I would have expected it to write to the time directories like you suggested. Unfortunately, viscosity does not appear in any of the time directories. Have I missed something? Here is the output of my thermophysical properties Code:
FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object thermophysicalProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // thermoType ePsiThermo<pureMixture<sutherlandTransport<specieThermo<eConstThermo<perfectGas>>>>>; mixture { // normalised gas specie { nMoles 1; molWeight 50; } thermodynamics { Cv 1007.8039105; Hf 2.544e+06; } transport { As 1.67212e-06; Ts 170.672; } } |
|
May 1, 2012, 14:48 |
createfields.H
|
#5 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
This is what I've specified in the createfields.H file
Code:
const volScalarField& psi = thermo.psi(); volScalarField mu ( IOobject ( "mu", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ); |
|
May 2, 2012, 03:39 |
|
#6 |
Senior Member
Anton Kidess
Join Date: May 2009
Location: Germany
Posts: 1,377
Rep Power: 30 |
Which solver are you using? I'll try it out and see if I can get it to work.
__________________
*On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. |
|
May 2, 2012, 12:36 |
|
#7 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
I'm using the rhoCentralFoam.
Thanks, Wagner |
|
May 16, 2012, 15:28 |
|
#8 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
I figure it out.
Thank you, Wagner Galuppo |
|
May 19, 2012, 05:09 |
|
#9 |
Senior Member
Anton Kidess
Join Date: May 2009
Location: Germany
Posts: 1,377
Rep Power: 30 |
Sorry I couldn't help much, I got busy with other things. Can you add a post on how you solved the problem? It might help others in the future.
__________________
*On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. |
|
May 24, 2012, 12:29 |
|
#10 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
Actually I partly figured it out. I found the file "basicThermo.C" in (/opt/openfoam210/src/thermophysicalModels/basic/basicThermo/)
If you have look from the 201st until 213th line you will find this: Code:
mu_ ( IOobject ( "mu", mesh.time().timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionSet(1, -1, -1, 0, 0) ), in terminal: Code:
$ cd /opt/openfoam210 $ cp -r --parents src/thermophysicalModels/basic/ /home/cfd02/OpenFOAM/USER-2.1.0/ $ cd ~/OpenFOAM/USER-2.1.0/src/thermophysicalModels/ $ mv basic myBasic Code:
IOobject::NO_WRITE Code:
IOobject::AUTO_WRITE Then I changed the 27th line in the file myBasic/Make/files from: Code:
LIB = $(FOAM_LIBBIN)/libbasicThermophysicalModels Code:
LIB = $(FOAM_USER_LIBBIN)/libbasicThermophysicalModels Next I compiled the code: Code:
$ cd ~/OpenFOAM/USER-2.1.0/src/thermophysicalModels/myBasic/ $ wmake libso The Problem is that I'm overwriting the main library basicThermophysicalModels instead of creating a new one. |
|
May 24, 2012, 19:20 |
|
#11 |
New Member
Wagner C. Galuppo
Join Date: Feb 2012
Location: Portugal
Posts: 12
Rep Power: 14 |
I changed the last modifications for mu on line 209 (in myBasic/basicThermo/basicThermo.C) back to
Code:
IOobject::NO_WRITE Now OpenFoam is using the original configuration, and so I try to make a new basic thermoPhysical model. First, I reset mu to AUTO_WRITE (since I want to output mu). Next, I changed line 27 in the file myBasic/Make/files from Code:
LIB = $(FOAM_USER_LIBBIN)/libbasicThermophysicalModels Code:
LIB = $(FOAM_USER_LIBBIN)/libmubasicThermophysicalModels Then I copied rhoCentralFoam solver to my workplace and renamed the directory from /rhoCentralFoam/ to /muRhoCentralFoam/, and after that in the new /muRhoCentralFoam/ directory I changed the file from rhoCentralFoam.C to muRhoCentralFoam.C. Code:
$ cd /opt/opefoam210/ $ cp -r --parents applications/solvers/compressible/rhoCentralFoam/ $WM_PROJECT_USER_DIR $ cd $WM_PROJECT_USER_DIR/applications/solvers/compressible/ $ mv rhoCentralFoam muRhoCentralFoam $ cd muRhoCentralFoam $ mv rhoCentralFoam.C muRhoCentralFoam.C Code:
rhoCentralFoam.C EXE = $(FOAM_APPBIN)/rhoCentralFoam Code:
muRhoCentralFoam.C EXE = $(FOAM_USER_APPBIN)/muRhoCentralFoam Code:
EXE_INC = \ -IBCs/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lfiniteVolume \ -lbasicThermophysicalModels \ -lspecie \ -lrhoCentralFoam \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ -lmeshTools Code:
EXE_INC = \ -IBCs/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(WM_PROJECT_USER_DIR)/src/thermophysicalModels/myBasic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/turbulenceModels/compressible/turbulenceModel \ -I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ -lfiniteVolume \ -lmubasicThermophysicalModels \ -lspecie \ -lrhoCentralFoam \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lcompressibleLESModels \ -lmeshTools Copilation error message: Code:
Making dependency list for source file muRhoCentralFoam.C SOURCE=muRhoCentralFoam.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -IBCs/lnInclude -I/opt/openfoam210/src/finiteVolume/lnInclude -I/home/USER/OpenFOAM/USER-2.1.0/src/thermophysicalModels/myBasic/lnInclude -I/opt/openfoam210/src/thermophysicalModels/specie/lnInclude -I/opt/openfoam210/src/turbulenceModels/compressible/turbulenceModel -I/opt/openfoam210/src/dynamicMesh/lnInclude -I/opt/openfoam210/src/meshTools/lnInclude -IlnInclude -I. -I/opt/openfoam210/src/OpenFOAM/lnInclude -I/opt/openfoam210/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/muRhoCentralFoam.o /opt/openfoam210/src/finiteVolume/lnInclude/readTimeControls.H: In function ‘int main(int, char**)’: /opt/openfoam210/src/finiteVolume/lnInclude/readTimeControls.H:32: warning: unused variable ‘adjustTimeStep’ /opt/openfoam210/src/finiteVolume/lnInclude/readTimeControls.H:35: warning: unused variable ‘maxCo’ /opt/openfoam210/src/finiteVolume/lnInclude/readTimeControls.H:38: warning: unused variable ‘maxDeltaT’ g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -IBCs/lnInclude -I/opt/openfoam210/src/finiteVolume/lnInclude -I/home/USER/OpenFOAM/USER-2.1.0/src/thermophysicalModels/myBasic/lnInclude -I/opt/openfoam210/src/thermophysicalModels/specie/lnInclude -I/opt/openfoam210/src/turbulenceModels/compressible/turbulenceModel -I/opt/openfoam210/src/dynamicMesh/lnInclude -I/opt/openfoam210/src/meshTools/lnInclude -IlnInclude -I. -I/opt/openfoam210/src/OpenFOAM/lnInclude -I/opt/openfoam210/src/OSspecific/POSIX/lnInclude -fPIC -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPOpt/muRhoCentralFoam.o -L/opt/openfoam210/platforms/linux64GccDPOpt/lib \ -lfiniteVolume -lmubasicThermophysicalModels -lspecie -lrhoCentralFoam -lcompressibleTurbulenceModel -lcompressibleRASModels -lcompressibleLESModels -lmeshTools -lOpenFOAM -ldl -lm -o /home/USER/OpenFOAM/USER-2.1.0/platforms/linux64GccDPOpt/bin/muRhoCentralFoam /usr/bin/ld: cannot find -lmubasicThermophysicalModels collect2: ld returned 1 exit status make: *** [/home/USER/OpenFOAM/USER-2.1.0/platforms/linux64GccDPOpt/bin/muRhoCentralFoam] Error 1 Code:
-lmubasicThermophysicalModels \ Code:
-lbasicThermophysicalModels \ Do you have any suggestions or ideas about how can I create this new basic thermophysicalModel and load it in my new solver, or what I am doing wrong? Thanks, Wagner Galuppo |
|
September 1, 2015, 08:49 |
Figured out?
|
#12 | |
Member
Lisandro Maders
Join Date: Feb 2013
Posts: 98
Rep Power: 13 |
Quote:
did you figure out your issue? It would be good if you write what you have done then other people could make use of this knowledge as well. I am trying to make a very similar implementation and I am getting similar errors.. Regards, Lisandro |
||
September 1, 2015, 10:04 |
|
#13 |
Senior Member
Olivier
Join Date: Jun 2009
Location: France, grenoble
Posts: 272
Rep Power: 17 |
Hello,
You don't need to do this to output viscosity, just use the functions objects "writeRegisteredObject". ex: Code:
{ type writeRegisteredObject; functionObjectLibs ("libIOFunctionObjects.so"); objectNames ("bananas"); outputControl outputTime; outputInterval 1; } regards, olivier |
|
September 1, 2015, 10:42 |
|
#14 |
Member
Lisandro Maders
Join Date: Feb 2013
Posts: 98
Rep Power: 13 |
Thanks for your tip Olivier, it seems much more straightforward and ease to get this value.
However, I am not able to find it working. I put transportProperties instead of bananas but it does not write the nu field in any step.. (by the way,I think I am doing the basic things right. I put the "functions" subdict in the controlDict file, etc..) Lisandro |
|
September 1, 2015, 10:49 |
|
#15 |
Senior Member
Olivier
Join Date: Jun 2009
Location: France, grenoble
Posts: 272
Rep Power: 17 |
hello,
Yes, function object should be in controlDict. First, run your solver with bananas => you will get an error message with the full list of possible object, and there is no bananas. Then, pick up the good one (name here can be something::nu instead of nu) regards, olivier |
|
September 3, 2015, 09:10 |
|
#16 |
Member
Lisandro Maders
Join Date: Feb 2013
Posts: 98
Rep Power: 13 |
Hi Olivier,
Does it work even if my viscosity has a constant value in all points? Because it seems not to be working.. The maximum I got was having a nu file in the time directories when I created it as a volScalarField in the createFields.H file in the solver directory.. Regards, Lisandro |
|
September 11, 2015, 09:24 |
|
#17 |
Member
Lisandro Maders
Join Date: Feb 2013
Posts: 98
Rep Power: 13 |
I solved it a couple of days ago, here is what I have done in order to make it:
I wanted to write the viscosity and Cp values any written time in the case folder. 1. In the createFields.H file: Code:
volScalarField mu_output ( IOobject ( "mu_output", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), turbulence->mu() ); Code:
volScalarField cp_output ( IOobject ( "cp_output", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), thermo.Cp() ); Code:
while (runTime.run()) { .... .... runTime.write(); mu_output = turbulence->mu(); cp_output = thermo.Cp(); } Regards, Lisandro |
|
December 14, 2015, 17:24 |
and Reynold's number
|
#18 |
Senior Member
|
I want to plot Reynold's number. Not, Reynold's number is dependent on velocity. So, all I should do is provide a formula to calculate Re in the code. Also, I am going to calculate Re with mag(U). Please suggest how to incorporate these features in the code. I will appreciate if replies are relevant to icoFoam solver.
|
|
January 5, 2016, 03:12 |
|
#19 |
Member
Join Date: May 2015
Posts: 68
Rep Power: 10 |
Hi olivier,
your approach using function objects seems quite comfortable and I can reproduce some results for the thermo:... properties. But when I put thermophysicalProperties for function object names, there is no result at all. It says writing thermophysicalProperties object in the log-file but there is no output. Ok there seems to be a bug in this function since it manipulates the header of the thermophysicalProperties-Dict adding the thermoType{...} entries into the FoamFile-header. Could you help me to figure this one out? |
|
January 5, 2016, 03:40 |
|
#20 |
Senior Member
Olivier
Join Date: Jun 2009
Location: France, grenoble
Posts: 272
Rep Power: 17 |
hello,
function object work only with registered object. So there is 2 solution: 1) the properties you want is an object => just use the fuctionObject 2) you need some coding, and create a custom solver the part 2) is easy, so don"t be scare. regards, olivier |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
mass flow in is not equal to mass flow out | saii | CFX | 12 | March 19, 2018 05:21 |
error message | cuteapathy | CFX | 14 | March 20, 2012 06:45 |
Constant velocity of the material | Sas | CFX | 15 | July 13, 2010 08:56 |
lift and drag on ship superstructures | vaina74 | OpenFOAM Running, Solving & CFD | 3 | June 8, 2010 12:30 |
Two-Phase Buoyant Flow Issue | Miguel Baritto | CFX | 4 | August 31, 2006 12:02 |