rhoCentralFoam Runge Kutta
2 Attachment(s)
Hi,
i have worked quite a lot with rhoCentralFoam and did some modification i wanted to share. i have implemented Runge Kutta in rhoCentralFoam. It is stable for the forwardStep case until a CFL No of 1.5 and about 30% faster than the normal solver. i also implemented local time stepping for the Runge Kutta Method (more Information about LTS can be found in the Forum) . This Solver is a lot faster than the Euler LTS. If tested with a CFL No of 1.2, which would be a speed up of more than 100% to the Euler Method. (But i havent looked at the results in detail but the first impression was good). the Runge Kutta Method should work with different values (but not tested) (now it is Runge Kutta 4 ). Just change the values in the createFields.H. If you find some mistakes, let me now! it is written in vers 2.1.1 Best Regards Henning |
rhoCentralFoam Runge Kutta 4
2 Attachment(s)
the solver for the version 2.2
|
I have a problem compiling the solver with v221, my relevant output is in the following: Any suggestions?
Quote:
|
you probably download the solver for the version 2.1.1.
the class basicPsithermo doesn't exist anymore. in 2.2.x there was a huge change in the thermodynamic libary. try the solver for version 2.2.2 |
Hi,
first of all, thanks for you code contribution. I have implemented something equivalent a while ago, whereas there is the following issue (which is still on my todo list): In order to be consistent, you would also need to perform the RK integration on the turbulence equations. You need to be able *write* the (let's say) k and omega of your turbulence model, because: You also need to perform the weighted RK summation of your turbulence fields that you solve for. This is basically only a programming issue, however, I am experiencing a strange bug related to that, see http://www.cfd-online.com/Forums/ope...sgs-model.html. Cheers, Konrad |
Hello Henning86,
I implemented a low-storage Runge-Kutta scheme in rhoCentralFoam as well some time ago. I rewrote a ddt-class to account for the coefficients. So, the code in the main file was much more compact. Maybe you could try something yourself. As a guideline, you could check out Oliver Borms density based solver, which also utilizes a low-storage Runge-Kutta scheme. Regards, maHein |
Hey Henning86,
Sounds really good and I will test both of them and will try to post some results as well; at some point. A quick comment though - I am not sure if it can be done but if possible please change the name of the thread in order to incorporate words like LTS and or faster rhoCentralFoam. I think it will bring in more people here. Thanks very much. |
Hey Henning86,
Quickly wanted to mention that the 2.2.2 versions that you uploaded are not working with 2.2.2 - I got this error while compiling - /opt/OpenFOAM-2.2.0/src/OpenFOAM/lnInclude/Field.C: In member function ‘void Foam::Field<Type>::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&)’: /opt/OpenFOAM-2.2.0/src/OpenFOAM/lnInclude/Field.C:680:42: warning: typedef ‘VSType’ locally defined but not used [-Wunused-local-typedefs] typedef VectorSpace<Form,Cmpt,nCmpt> VSType; ^ /usr/bin/ld: cannot find -lbasicThermophysicalModels collect2: error: ld returned 1 exit status make: *** [/opt/OpenFOAM-2.2.0/platforms/linux64GccDPOpt/lib/librhoCentralFoam.so] Error 1 We can see the basicThermoPhysicalModels issue here. Did you check your 2.2.2 versions - looks like it needs a couple of more changes to get going on 2.2.2 It's quite late here and I'll try to see if can get around this issue tomorrow or next week but any comments will be helpful. Thanks very much |
I'm pretty sure you compiled the solver with Allwmake.
i havent changed the rhoCentralDymFoam so you get this error. |
Hey Henning86,
Thanks for your quick response. Yes I saw rhoCentralDyMFoam in the Allwmake file but what I didn't pay attention to was the BCs which are also from OpenFOAM 2.1.0, I think. So, I simply copied both BCs and the rhoCentralDyMFoam folders from the OF-2.2.0 sources and used Allwmake. It seems to have worked. On the other hand - Did you ever use Michael Borm's densityBasedTurbo solver? If yes, then, any comments on how it performs when compared to rhoCentralFoam Thanks |
Hey Henning86,
I just attempted to start a run with the rhoLTS... solver and I got this error - Unknown ddt Scheme - Valid ddtschemes are - 9 (CoEuler, CrankNicolson, Euler, SLTS, backward, bounded, boundedBackward, localEuler, steadyState) I was thinking that I could just use [rk4 (or maybe RK4) rDeltaT] option for the ddtSchemes in the fvSchemes file and it will run with rk4 local time stepping. Am I missing something here? Please let me know. Thanks very much |
Hey Henning86,
Even if I use Euler it somehow works as RK4 but it diverges/stops/crashes pretty quickly in my case even with a MaxCo of 0.2. Maybe I am doing something wrong. As a side note - I was trying to get densityBasedTurbo going with OpenFOAM 2.2.0 but it gives me an error related to the thermophysical models, which is not at all surprising since it has been developed based on OF-1.6-ext (link below) http://www.extend-project.de/user-fo...dturbo-solvers The error looks like this - /opt/OpenFOAM-2.2.0/src/OpenFOAM/lnInclude/Field.C: In member function ‘void Foam::Field<Type>::operator=(const Foam::VectorSpace<Form, Cmpt, nCmpt>&)’: /opt/OpenFOAM-2.2.0/src/OpenFOAM/lnInclude/Field.C:680:42: warning: typedef ‘VSType’ locally defined but not used [-Wunused-local-typedefs] typedef VectorSpace<Form,Cmpt,nCmpt> VSType; ^ localTimeStep/localTimeStep.C: In member function ‘void Foam::localTimeStep::update(Foam::scalar, Foam::Switch)’: localTimeStep/localTimeStep.C:153:57: error: ‘const class Foam::basicThermo’ has no member named ‘psi’ (thermophysicalModel_.Cv()*thermophysicalModel_.ps i()); ^ make: *** [Make/linux64GccDPOpt/localTimeStep.o] Error 1 Since you seem to be be quite comfortable with OpenFOAM, can you give me a couple of pointers in order to handle this problem. I think you might also find the densityBasedTurbo as a useful alternative to rhoCentralFoam for steady state cases. Also another thing that I don't understand is that even if we use Local Time Stepping with OpenFOAM it is still not like e.g FLUENT which can give us a 2D steady state solution within minutes. What is the difference between the LTS in OpenFOAM and that in e.g FLUENT. Is it something entirely else. To me it seems that densityBasedTurbo will be something like FLUENT and will give real quick steady state 2D solutions. Thanks very much |
hi
the Runge kutta 4 loop is in the solver. You need to use Euler or localEuler rDeltaT (for local timestepping) i dont think it is possible to adapt turbfoam to v 2.2.x without great affort. most crashes of solvers in cfd are caused by the initialisation or the boundary conditions best regards henning |
Hi all,
I would like to know if anyone has tried to port the rhoCentralFoamRK4/LTS to 2.3.x. I have done some things; there are some changes to be made (e.g. at the Make file with fluidThermophysycalModels and basicThermophysicalModels) and the code compiles with OF2.3.x and runs for the tutorial case of shocktube. However, at other cases (mainly involving total pressure/temperature) the solver crashes with the following output: Code:
--> FOAM FATAL ERROR: Foam::fixedRhoFvPatchScalarField::updateCoeffs() in fixedRhoFvPatchScalarField, but I have not been able to poinpoint the exact reason.. Any ideas are welcome. Thanks in advance. Fivos |
Simply use "thermo:psi" in your boundary conditions instead of just "psi". This solves this problem.
Regards, Martin |
Hi maHein,
Thanks for your answer Have you done the rhoCentralFoamRK4 for OF2.3.x and it worked? Could you share it, because I may have done something wrong with mine..? I am asking because it seems that it is not related just with replacing psi with thermo:psi in the total boundary conditions... Actually, I have the same issue with the forwardStep case (OpenFOam tutorial) where, if I remember correctly, static values are prescribed. Thanks again. |
your are right the solver don't work with 2.3.x will upload an updated version.
|
Dear Henning,
Thanks a lot in advance. If you don't mind, could you also briefly describe what changes you made? Thanks again. |
2 Attachment(s)
Dear fivos,
In the folder BCs all the files where from the version 2.1, as it used the old thermodynamic library, it didn't work. Only update it. Hope the solver works, Best Regards Henning |
Hi Henning,
Thank you for your help, I can confirm that replacing the BCs of the old version with the new made it work. Thanks again |
Henning, thanks! I am new to OpenFOAM source code. Could you please explain why there are two sets of RK4values (RK4values and RK4values2)?
-------------------------- Plz ignore this question. I've found the classical 4th RK in Jameson's paper. |
Thank you for your code.
I have been working with rhoCentralFoam solver several years. And I have some problem. Does anyone has the follow problem: rhocentralFoam is good working in 3d cases, BUT only with UPWIND reconstruct scheme? If I change to vanleer scheme or other(gamma, superbee) the solver crashed. Also I tried different grad scheme but it has no result. This problem is present in all my tasks: external flow at M~2-4 or jet stream from nozzle. Thanks. |
Hallo,
i have/had the same problem. Does anybody know the discretization settings for a second order in time and space? with "backward" the solver crashes, and Euler is only first order and for my unsteady problem to diffusive. and for spatial dissertation is the same problem, only "upwind" works, any other higher order discretization with limiter function produces overshoots, when i compare the numerical with the analytical solution. |
Hi Henning,
I am quite interested in your rhoCentralFoamRK4 and how about the results compared to rhoCentralFoam? Have you ever calculated some cases and compared with other results obtained by FLUNET etc. Best Eric |
RK4 - rhoCentralFoam
Hello everyone,
I am trying to implement RK4 for rhoCentralFoam as well. I want to clarify a couple of issues pertaining to Henning86's implementation first.
On a separate note, I would like to know whether it is feasible to implement RK4 as a standalone ddtScheme like EulerDdtScheme because, so far, I don't think it is possible. It would be extremely helpful if anyone could enlighten me on these issues. Many thanks, USV |
All times are GMT -4. The time now is 19:36. |