I'm trying to implement a new
I'm trying to implement a new turbulence model. I've read through many of the other posts about implementing the k-omega model from the wiki into 1.3:
In 1.4, this model comes built-in, so I'd like to jump straight to implementing my own model. I've created a directory user/src/turbulenceModels/incompressible into which I copied the following directories from the OF/src/turbulenceModels/incompressible folder: laminar, lnInclude, Make, turbulenceModel, and wallFunctions. I then added my own directory called myKEpsilon which is basically a copy of the original kEpsilon src files renamed (just to learn how to link this turbulence model into the code).
I then changed the Make/files file to:
LIB = $(FOAM_USER_LIBBIN)/libincompressibleTurbulenceModels
Then I tried to compile by using the ./Allwmake in the user/src/turbulenceModels directory and got the following error:
Making dependency list for source file myKEpsilon/myKEpsilon.C
SOURCE=myKEpsilon/myKEpsilon.C ; g++ -m32 -Dlinux -DDP -Wall -Wno-strict-aliasing -Wextra -Wno-unused-parameter -Wold-style-cast -O3 -DNoRepository -ftemplate-depth-40 -I/home/doug/OpenFOAM/OpenFOAM-1.4/src/finiteVolume/lnInclude -I/home/doug/OpenFOAM/OpenFOAM-1.4/src/meshTools/lnInclude -I/home/doug/OpenFOAM/OpenFOAM-1.4/src/transportModels -IlnInclude -I. -I/home/doug/OpenFOAM/OpenFOAM-1.4/src/OpenFOAM/lnInclude -fPIC -pthread -c $SOURCE -o Make/linuxGcc4DPOpt/myKEpsilon.o
myKEpsilon/myKEpsilon.C: In constructor 'Foam::turbulenceModels::myKEpsilon::myKEpsilon(co nst Foam::volVectorField&, const Foam::surfaceScalarField&, Foam::transportModel&)':
myKEpsilon/myKEpsilon.C:52: error: 'Foam::IOobject' is an ambiguous base of 'Foam::fvMesh'
myKEpsilon/myKEpsilon.C: In member function 'virtual bool Foam::turbulenceModels::myKEpsilon::read()':
myKEpsilon/myKEpsilon.C:97: error: 'turublenceModel' has not been declared
myKEpsilon/myKEpsilon.C: In member function 'virtual void Foam::turbulenceModels::myKEpsilon::correct()':
myKEpsilon/myKEpsilon.C:135: error: 'sp' is not a member of 'Foam::fvm'
myKEpsilon/myKEpsilon.C:153: error: 'class Foam::volScalarField' has no member named 'k_'
make: *** [Make/linuxGcc4DPOpt/myKEpsilon.o] Error 1
Any ideas? It seems to me that implementing a new turbulence model should be quite common, and therefore well documented somewhere. However, I haven't found much help on the wiki or the discussion board. Any guidance to better documentation would also be appreciated.
Hello Doug, you don't need to
you don't need to change all those files to implement a new turbulence model in OpenFOAM. You just need to:
- Look for the model closest to the one you want to add. For example, for an incompressible k-eps model, consider the files in incompressible/kEpsilon.
- Copy the kEpsilon directory and rename it.
- Modify the class name (files, code).
- Modify the code according to the two-equation model you want.
- Create make rules (look at the content of the Make directory).
This is everything for the equations part.
For the wall-functions, the procedure is the same, but take the content of the wallFunctions directory.
With kind regards,
Alberto- Thanks a ton! It w
Thanks a ton! It worked perfectly.
ALBERTO I need more dtails
I need more dtails about the steps
(I mean)HOW to add a new model in details
Problem with Wmake Libso
I am trying to implement the myKepsilon turbulence model to run the pitzDaily tutorial in OF 2.1.1
1) I followed all the step by step instruction given in the Wiki SIG without any changes. Wmake libso gave me following output:
http@http-OptiPlex-990:~/OpenFOAM/http-2.1.1/mykEpsilon$ wmake libso
wmakeLnInclude: linking include files to ./lnInclude
Making dependency list for source file mykEpsilon.C
could not open file RASModel.H for source file mykEpsilon.C
could not open file backwardsCompatibilityWallFunctions.H for source file mykEpsilon.C
SOURCE=mykEpsilon.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam211/src/finiteVolume/lnInclude -I/opt/openfoam211/src/meshTools/lnInclude -I/opt/openfoam211/src/turbulenceModels -I/opt/openfoam211/src/transportModels -I/opt/openfoam211/src/turbulenceModels/incompressible/lnInclude -IlnInclude -I. -I/opt/openfoam211/src/OpenFOAM/lnInclude -I/opt/openfoam211/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/mykEpsilon.o
In file included from mykEpsilon.C:26:0:
mykEpsilon.H:49:22: fatal error: RASModel.H: No such file or directory
make: *** [Make/linux64GccDPOpt/mykEpsilon.o] Error 1
Please give me a solution...!
2)Also in the next step we need to add libs ("libmyTurbulenceModels.so"); to the controldict file of system folder. Can i add it anywhere or specifically inside any loop?
anyone here ready to help me... please... im stuck with my project..!! :(
The error message reads RASModel.H cannot be found. This is probably due to the fact that the reference in Make/options is not correct. Probably you should as this line -I$(LIB_SRC)/turbulenceModels/incompressible/RAS/lnInclude
2) It doesn't really matter where you put it.
Thank you Bernhard..! :-)
mykEpsilon.C:46:1: error: ‘Info’ does not name a type
Now i got this error by trying to add an "info" statement into mykEpsilon.C file as explained in this tutorial.
i am using OF 2.1.1. Can you help me to resolve this problem?
What is the code that gives you this error?
Plz find the attached folder for mykEpsilon solver.
You're using this info statement on an unusual location, which is probably the reason that it doesn't work. I assume that it gives no difficulties if you put it inside the constructor.
|All times are GMT -4. The time now is 18:26.|