CFD Online Discussion Forums

CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   adding temperature to simpleFoam (http://www.cfd-online.com/Forums/openfoam-programming-development/84480-adding-temperature-simplefoam.html)

waters January 31, 2011 10:27

adding temperature to simpleFoam
 
Hello,

Has any of you foamers added temperature to simpleFoam successfully?

Regards,

Carlos

elvis February 1, 2011 12:23

Hi,

maybe this link helps you http://openfoamwiki.net/index.php/How_to_add_temperature_to_icoFoam

waters February 5, 2011 10:07

Thanks Elvis, I'm building it. It is taking me a while to understand how to implement the Temperature equation for a "steady state" for simpleFoam. I am making analogies with the buoyantBoussinesqSimpleFoam solver in a first step, but I am not sure.

Anyway, up to the 12th iteration I get an error message. If I make a step forward implementing simpleTempFoam, i'll post it here.

Thanks again,

Carlos

bhh February 6, 2011 01:51

Hi,
Instead of implementing temperature yourself you could use rhoSimpleFoam. This solver has already the solution of the enthalpy equation included.
rgds
Bjorn

waters February 6, 2011 03:35

Hi Bjorn,

Is it possible to use water as heat transfer media in rhoSimpleFoam? I haven't been able to change perfectGas in the thermophysicalproperties file.

bhh February 6, 2011 04:28

Ok, I did not realize that your problem had water as medium. So, you probably need to implement the temperature equation after all.

Have you by the way checked the thermomodel:
icoPolynomial Incompressible polynomial equation of state, e.g. for liquids
as indicated in the User Manual?

rgds
Bjorn

NickolasPl June 1, 2011 10:19

Hello everyone,

I m a relatively new foamer and I mostly work with simpleFoam. I wanted as well to add temperature calculation for my flow as Carlos, so I followed as Bjorn suggested the rhosimpleFoam solver and the instructions from OpenFoam Wiki on how to add temperature to IcoFoam. A lot of erros appeared at the first place but I managed to overcome them, builded the new solver with the temperature and no errors appear. I use Paraview for postprocessing and the problem is that U,p, nu (I work with non - Newtonian flow) is printed normally but I cannot see anywhere the T variable to select to view the results. Did anybody had that problem?I would appreciate any comments.

Kindly,

Nickolas

NickolasPl June 1, 2011 10:21

Also, in the past I have succesfully carried out the addition of temperature to icoFoam and Paraview gave me the results as suggested from OpenFoam Wiki about that subject.

Thanx

MartinB June 1, 2011 10:43

Hi Nickolas,

just a guess, but have you defined the scalarField for T with option "IOobject::AUTO_WRITE"?
Code:

Info << "Reading field T\n" << endl;
    volScalarField T
    (
        IOobject
        (
            "T",
            runTime.timeName(),
            mesh,
            IOobject::MUST_READ,
            IOobject::AUTO_WRITE // <---- T should be written out
        ),
        mesh
    );

Beside of that you can force T to be written out with:
Code:

T.write()
near the end of your code.

Martin

NickolasPl June 1, 2011 10:48

Yes that is correct. Below I m sending the createFields.H file of my created solver:

Info << "Reading field p\n" << endl;
volScalarField p
(
IOobject
(
"p",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);

Info << "Reading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);

//adding from here
Info<< "Reading field T\n" <<endl;
volScalarField T
(
IOobject
(
"T",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
//to here

# include "createPhi.H"


label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("SIMPLE"), pRefCell, pRefValue);


singlePhaseTransportModel laminarTransport(U, phi);


dimensionedScalar DT
(
mesh.solutionDict().subDict("SIMPLE").lookup("DT")
);


autoPtr<incompressible::RASModel> turbulence
(
incompressible::RASModel::New(U, phi, laminarTransport)




So besides that I can add at the end the line you suggested and leave the option IOobject::AUTO_WRITE the same?

MartinB June 1, 2011 10:57

The AUTO_WRITE option is fine, don't know why it doesn't work.

You can add the T.write() additionally, for example in your runTime loop:
Code:

while (runTime.loop())
    {
        . . .
        . . .
        if (runTime.outputTime())
            T.write();
    }

or at the very end of your solver:
Code:

    . . .
    }
    T.write();
    Info<< "End\n" << endl;

Martin

NickolasPl June 1, 2011 13:35

4 Attachment(s)
Martin,

First of all thanks a lot for the useful information.
I tried the method you told me but the problem still remains the same. So I found a similar solver to see if things work out, the solver is the buoyantBoussinesqSimpleFoam. I modified my simpleFoam solver to match with the Boussinesq one. Actually at Boussinesq there is already the code on how to add the temperature but I think in my case I dont implement it correct.

I'm attaching some of the files of the solver to check if I have done anything wrong. Please, I m open to any thoughts, comments!

Kindly,

Nickolas

MartinB June 1, 2011 16:54

2 Attachment(s)
Hi Nickolas,

in the attachment you find the reviewed solver and a test case.

I made two minor changes to your solver in createFields.H and TEqn.H, have a look at comments with "@ Nickolas:".

To run the test case use:
blockMesh
my_simpleFoam

You can run it in parallel, too. It's configured for 4 cpu cores.

Have fun

Martin

NickolasPl June 2, 2011 13:13

Hi Martin,

With your suggestions I was able to perform the simulations and the temperature was calculated! Thank you very much. I am now able to understand the code better. Nontheless, I need to validate my results with the theory to check if everythhing works ok, but for the time being the temperature field is plotted.

I have another question concerning the "relaxation factors" that I see in the "fvsolution" file. How these factors affect the results of the simulation and I would like to know if there any standard values. Does it have to do with the flow field (meaning Newtonian approximation, non - Newtonian approximation) or the mesh? Or is it just a short of numerical technique? I found OpenFOAM very interesting and I would like to learn as much as possible although I m not very strong at c++. Do you happen to know any books or internet sites for me to study regarding these matter?

Again thanks a lot for your comments!

Kindly,

Nickolas

greel September 12, 2011 11:21

Quote:

Originally Posted by MartinB (Post 310195)
Hi Nickolas,

in the attachment you find the reviewed solver and a test case.

I made two minor changes to your solver in createFields.H and TEqn.H, have a look at comments with "@ Nickolas:".

To run the test case use:
blockMesh
my_simpleFoam

You can run it in parallel, too. It's configured for 4 cpu cores.

Have fun

Martin

Hi
I have taken this file to add Temperature to the simpleFoam solver, I have followed the the instructions in the openfom wiki, but I'm having an error.
Cheers.

Quote:

usuarioubuntu@SAN1496UBU:/opt/openfoam200/applications/solvers/incompressible/my_simpleFoam$ wmake
Making dependency list for source file my_simpleFoam.C
/opt/openfoam200/wmake/scripts/addCompile: 53: cannot create my_simpleFoam.dep: Permission denied
/opt/openfoam200/wmake/scripts/addCompile: 57: cannot create my_simpleFoam.dep: Permission denied
/opt/openfoam200/wmake/scripts/addCompile: 59: cannot create my_simpleFoam.dep: Permission denied
/opt/openfoam200/wmake/scripts/addCompile: 60: cannot create my_simpleFoam.dep: Permission denied
/opt/openfoam200/wmake/scripts/addCompile: 61: cannot create my_simpleFoam.dep: Permission denied
/opt/openfoam200/wmake/scripts/addCompile: 62: cannot create my_simpleFoam.dep: Permission denied
make: *** [my_simpleFoam.dep] Error 2

akidess September 13, 2011 02:22

Andres, /opt/ is a directory that can only be written to with administrator rights. If you compile the solver in your home directory all should be well.

greel September 13, 2011 10:44

Quote:

Originally Posted by akidess (Post 323867)
Andres, /opt/ is a directory that can only be written to with administrator rights. If you compile the solver in your home directory all should be well.

Hi Anton, thanks for your answer. I have tried to compile the solver in home directory, but I get a new error. Sorry but I donīt have to much experience working with linux, so some instructions are dificult to follow.
Quote:

usuarioubuntu@SAN1496UBU:~/myfoam$ wmake
SOURCE=my_simpleFoam.C ; g++ -m32 -Dlinux -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam200/src/turbulenceModels -I/opt/openfoam200/src/turbulenceModels/incompressible/RAS/RASModel -I/opt/openfoam200/src/transportModels -I/opt/openfoam200/src/transportModels/incompressible/singlePhaseTransportModel -I/opt/openfoam200/src/finiteVolume/lnInclude -IlnInclude -I. -I/opt/openfoam200/src/OpenFOAM/lnInclude -I/opt/openfoam200/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linuxGccDPOpt/my_simpleFoam.o
my_simpleFoam.C:54:40: fatal error: readSIMPLEControls.H: No such file or directory
compilation terminated.
make: *** [Make/linuxGccDPOpt/my_simpleFoam.o] Error 1

akidess September 13, 2011 11:15

Did you execute wclean before you tried to wmake again?

greel September 13, 2011 11:19

Quote:

Originally Posted by akidess (Post 323976)
Did you execute wclean before you tried to wmake again?

No, i havenīt executed wclean.

Quote:

usuarioubuntu@SAN1496UBU:~/myfoam$ wclean
usuarioubuntu@SAN1496UBU:~/myfoam$ wmake
Making dependency list for source file my_simpleFoam.C
could not open file readSIMPLEControls.H for source file my_simpleFoam.C
SOURCE=my_simpleFoam.C ; g++ -m32 -Dlinux -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam200/src/turbulenceModels -I/opt/openfoam200/src/turbulenceModels/incompressible/RAS/RASModel -I/opt/openfoam200/src/transportModels -I/opt/openfoam200/src/transportModels/incompressible/singlePhaseTransportModel -I/opt/openfoam200/src/finiteVolume/lnInclude -IlnInclude -I. -I/opt/openfoam200/src/OpenFOAM/lnInclude -I/opt/openfoam200/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linuxGccDPOpt/my_simpleFoam.o
my_simpleFoam.C:54:40: fatal error: readSIMPLEControls.H: No such file or directory
compilation terminated.
make: *** [Make/linuxGccDPOpt/my_simpleFoam.o] Error 1
thanks!

akidess September 13, 2011 11:24

Does readSIMPLEcontrols.H exist in "/opt/openfoam200/src/finiteVolume/lnInclude/"?


All times are GMT -4. The time now is 01:31.