adding temperature to simpleFoam
Hello,
Has any of you foamers added temperature to simpleFoam successfully? Regards, Carlos |
|
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 |
Hi,
Instead of implementing temperature yourself you could use rhoSimpleFoam. This solver has already the solution of the enthalpy equation included. rgds Bjorn |
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. |
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 |
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 |
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 |
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; Code:
T.write() Martin |
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? |
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()) Code:
. . . |
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 |
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 |
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 |
Quote:
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:
|
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.
|
Quote:
Quote:
|
Did you execute wclean before you tried to wmake again?
|
Quote:
Quote:
|
Does readSIMPLEcontrols.H exist in "/opt/openfoam200/src/finiteVolume/lnInclude/"?
|
readSIMPLEcontrols.H doesn´t exist !
|
Ah, of course not! You are trying to compile a solver made for OpenFoam 1.6! In version 2.0, readSIMPLEcontrols.H has been replaced by simpleControl.H. Try replacing the include in my_simpleFoam.C. I can't guarantee you it will work, but it's worth a try. If it doesn't work, take simpleFoam from version 2.0 and add the modifications from this thread to it.
|
I have change the line, re-compile but a new error appear.
I will try to rewrite the new "solver" from 0, because this is for an older version of foam. thanks for all! Quote:
|
I have copied the simpleFoam from /opt/openfoam200/applications/solvers/incompressible, to /home/usuarioubuntu/myfoam directory, then I rename the simpleFoam.C to mysimpleFoam.C, also I have changed the "files" in the Make subdirectory.
Quote:
Quote:
|
Try to replace FOAM_APPBIN in Make/files with FOAM_USER_APPBIN
The error message says that you don't have write permission in the default appbin. |
amazing!! I was able to compile and run a test case of the icofoam+temperature solver.
Thanks Anton!!! |
Quote:
--> FOAM FATAL IO ERROR: keyword div((nuEff*dev(T(grad(U))))) is undefined in dictionary "/home/.../incompressible/my_simpleFoam/case/system/fvSchemes::divSchemes" file: /home/.../incompressible/my_simpleFoam/case/system/fvSchemes::divSchemes from line 32 to line 40. From function dictionary::lookupEntry(const word&, bool, bool) const in file db/dictionary/dictionary.C at line 400. FOAM exiting Any suggestions? |
1 Attachment(s)
Hi Rob,
as the error message says you must add an entry for div((nuEff*dev(T(grad(U))))) in the fvSchemes file. Attached is a fvSchemes file for OpenFOAM 2.0.x. Good luck Martin |
Wow, that was quite simple. Sometimes you won't see the wood for trees.
The case is running now. Thank you very much. I have yet another question. Is it possible to add two internalField scalars for the temperature? I have 2 pipes connected to each other which swap heat directly. I need that kind of option, a nonuniform list of scalars did not work out. |
Still won't work.
1 Attachment(s)
Yeah, actually the solver was working ( I did not get an error message ).
But unfortunately the temperature was not solved with the p and U equation. It was not even read. When I performed the 'wmake' command in the console, I got this error message: Code:
SOURCE=my_simpleFoam.C ; g++ -m32 -Dlinux -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam201/src/turbulenceModels -I/opt/openfoam201/src/turbulenceModels/incompressible/RAS/RASModel -I/opt/openfoam201/src/transportModels -I/opt/openfoam201/src/transportModels/incompressible/singlePhaseTransportModel -I/opt/openfoam201/src/finiteVolume/lnInclude -IlnInclude -I. -I/opt/openfoam201/src/OpenFOAM/lnInclude -I/opt/openfoam201/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linuxGccDPOpt/my_simpleFoam.o I tried to figure it out myself with no outcome. |
2 Attachment(s)
Hi Rob,
here is the solver and a case for OpenFOAM 2.0.x. Please be aware, that the name of the solver is mySimpleFoam. Martin |
Thank you Martin for sharing!
|
1 Attachment(s)
Hi,
I have recently pegged away at simpleScalarFoam as well and came up with this: Code:
// --- Scalar Transport I use these schemes for the scalar transport: Code:
grad(T) Gauss linear; This is quite a basic implementation, so it would be nice to add some cool feature like residence time calculation, source terms, ... If I have any progress on this, I will post it as well. |
Viscous Dissipation
Hello everybody,
I m studying polymer rheology under different types of geometry. To do that I work in simpleFoam switching off the turbulent part as the flow is creeping laminar with Re<<1. In the past I sucessfully added the temperature equation on simpleFoam by the help of Martin. However, this equation lacks of the viscous dissipation part that contributes for the frictional loss which at the moment I need to study. In the created file TEqn.H I declared the heat equation as below but I dont know how to insert the viscosity (I use a Newtonian fluid so this is actually the laminar viscosity). The file is: fvScalarMatrix TEqn ( fvm::div(phi, T) - fvm::laplacian(alpha, T) == (1/rho*Cp)*(2*(VISCOSITY??)*symm(fvc::grad(U)) && fvc::grad(U)) ); TEqn.relax(); eqnResidual = TEqn.solve().initialResidual(); maxResidual = max(eqnResidual, maxResidual); Hoping that I ve written the equation correctly....can anybody help me out on how to insert the viscosity??I have tried to insert it as: nu(), nuEff() but it didnt work out (in each case it was reported that....'nu'or 'nuEff' is not declared in this scope). Thanks in advance! Nickolas |
2 Attachment(s)
Hi Nickolas,
you can try the attached solver (for OpenFOAM 2.0.x) and case. Comments are added to the code and the case. Increase of temperature is calculated via controlDict (4.585 K) and nearly matches to the appropriate formula for high viscous newtonian fluids (4.73 K). Ah, and you can access the viscosity for your formula with "laminarTransport.nu()". Martin |
hey,
thanks for sharing the solver .. it works really fine, the only problem I'm having is I'm not getting any T on the paraView .. when i try to view it but I'm getting the results in the folder, any suggestions... to what i could do to get the T in the paraView along with P and U which I'm getting :) regards, hasan. |
hey,
thanks for sharing the solver .. it works really fine, the only problem I'm having is I'm not getting any T on the paraView .. when i try to view it but I'm getting the results in the folder, any suggestions... to what i could do to get the T in the paraView along with P and U which I'm getting :) regards, hasan. |
1 Attachment(s)
Hi Hasan,
have you selected T in the "Volume Fields" list of the Object Inspector? See attached image... Martin |
Thank you .. I'm so sorry i found... it. another doubt abt boundry conditions, can i post it here..? coz there is no reply from the foundry condition forums..?
|
Hi All,
I started to use the solver buoyanSimpleFoam to simulate incompressible liquid water (or "incompressible" vapour water) with temperature field. For this I used the basicRhoThermo type in buoyanSimpleFoam where is possible to choose the incompressible thermo type. But I found some problems I posted here: http://www.cfd-online.com/Forums/ope...implefoam.html My model has also a porous medium. Surfing on the forum I found this post where TEqn is added for simpleFoam solver. I downloaded the last Martin's solvers (thanks to share it!). Hi have two question: 1) Is it correct to use this solver for my case (liquid water or vapour water), or is it better switch off the viscous dissipation? 2) I'd like to add a thermal prop. for the porous zones. I known in OF2.0.x there is a fixedTemperature thermo prop. that add a term in the hEqn. How can "fix" this for TEqn? Thanks for any help Andrea |
All times are GMT -4. The time now is 23:46. |