interFoam - validation for bubble/droplet flows in microfluidics
Dear all,
It is a bit ashamed but I would like to share one of our work on the validations of interFoam, titled "Benchmark numerical simulations of segmented two-phase flows in microchannels using the Volume of Fluid method". In this work, we presented three benchmark cases - the steady motion of bubbles in a straight two-dimensional channel, the formation of bubbles in two- and three-dimensional T-junctions, and the breakup of droplets in three-dimensional T-junctions - and provided guidelines to set appropriate numerical settings for a simulation of microbubble/microdroplet flows. Please find here the link to the paper: http://dx.doi.org/10.1016/j.compfluid.2013.06.024 If you can not download the paper, I am more than happy to send you a copy of it. With best regards, Duong |
Quote:
-Kent |
Hi Dear Duong
Thanks for your good paper. I am new in interFoam. I have two simple questions. 1) how can we apply the smoother function (Eq.9 in your paper) in our problem? I think it can be set: system/fvSolution dictionary, PISO loop subsection was set with m corrections (nCorrectors) is it true? 2) where should be determined the value of adjustable coefficient "Cγ in Eq.7"? Thanks Ali |
Could you please share the case setup for openfoam? Best regards
|
4 Attachment(s)
Dear all,
I just got a bit of free time lately to reorganize my data. Here you can find the code and the test cases I have run for my validation. Please be aware that all these validations have been performed with OF-1.6-ext. Best regards, Duong |
Hi,
I'm not sure but I think that the function fvc::average already exists and do the same operation as your "smooth function". In the OpenFOAM C++ doc, you can read: volField = fvc::average(SurfaceField) Area-weighted average a surfaceField creating a volField. So you can do your smoothing by : Code:
alpha_smoothed = fvc::average(fvc::interpolate(alpha)); Pierre |
Quote:
At the time I implemented that, I would like to have controls on the level of smoothing (averaging) and also to be able to implement different smoothers (which I did not find superior to that simple Laplacian). So that's why you have such a piece of code. Best, Duong |
Hi Duong,
I just downloded your file (bubble_generation). I am able to blockMesh. Check topology Basic statistics Number of internal faces : 44 Number of boundary faces : 56 Number of defined boundary faces : 56 Number of undefined boundary faces : 0 Checking patch -> block consistency Creating block offsets Creating merge list Further when I run "interFoam" solver I get this error. paramesh@HP-WS3:~/OpenFOAM/paramesh-2.4.0/run/tutorials/incompressible/pimpleFoam/bubble_generation$ interFoam /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.4.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.4.0-f0842aea0e77 Exec : interFoam Date : Sep 30 2015 Time : 12:12:41 Host : "HP-WS3" PID : 10778 Case : /home/paramesh/OpenFOAM/paramesh-2.4.0/run/tutorials/incompressible/pimpleFoam/bubble_generation nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Allowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 --> FOAM FATAL IO ERROR: keyword PIMPLE is undefined in dictionary "/home/paramesh/OpenFOAM/paramesh-2.4.0/run/tutorials/incompressible/pimpleFoam/bubble_generation/system/fvSolution" file: /home/paramesh/OpenFOAM/paramesh-2.4.0/run/tutorials/incompressible/pimpleFoam/bubble_generation/system/fvSolution from line 55 to line 132. From function dictionary::subDict(const word& keyword) const in file db/dictionary/dictionary.C at line 648. FOAM exiting What is the problem? -Sripad |
Quote:
|
Akidess. I notice the next error
PIMPLE: Operating solver in PISO mode Reading field p_rgh --> FOAM FATAL IO ERROR: cannot find file file: /home/paramesh/OpenFOAM/paramesh-3.0.0/run/tutorials/multiphase/interFoam/bubble_generation_trial/0/p_rgh at line 0. From function regIOobject::readStream() in file db/regIOobject/regIOobjectRead.C at line 73. FOAM exiting |
You are missing the file p_rgh. Please have a look at the interFoam tutorials.
|
hey.. do you still have these files?
I wanted to download them and i am unable to get the files from this link Problem solved, able to download now. |
Could you please share the copy of your paper? Best regards
|
Quote:
I tried to update your solver to run on OpenFOAM 4.1. Unfortunately, I have obtained so much errors... Did you adapt your code to this version of OpenFOAM ? How can I achieve that ? Best Regards, Peter. |
Hi,
I think that it should be quite straightforward to adapt/implement the Laplacian solver in interFOAM version. However, I did not work on this topic for a while, so I do not know any details to tell you. The only thing I could think about is the difference in library name and the change of alpha field. Duong |
Thank you for the reply. I will try to update the solver, if someone is interested by this update, please contact me, I will share.
Best regards, Peter |
Quote:
OF-4.x implementation of 'vofsmooth': I have implemented Duong's "vofsmooth" in OF-4.x. It was implemented using OF's run-time selection mechanism and a dynamic library trick, such that it should work with any solver (that uses OF's libinterfaceProperties.so: inter(DyM)Foam, compressibleInter(DyM)Foam, multiphaseInter(DyM)Foam, interPhaseChange(DyM)Foam and very likely some more.) [Disclaimer: I have only tried inter(DyM)Foam in my work.] See the README.md on GitHub: https://github.com/floquation/OF-kva...faceProperties |
Thanks a lot for sharing your code :-)
Best regards, Peter |
Quote:
Selecting incompressible transport model Newtonian Selecting incompressible transport model Newtonian Selecting curvatureModel vofsmooth kva: curvatureModel::read(vofsmooth); kva: curvatureModels::vofsmooth::read(); kva: curvatureModel::read(vofsmooth); #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigSegv::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" Erreur de segmentation (core dumped) Any idea ?? |
That had certainly puzzled me for some time as well, because the code is correct... However, since I am a self-educated fool (which I bet most of us are) whose messing with dynamic libraries, I was only thinking in terms of code. But although there is nothing wrong with the code, I did mess up the binary-compatibility, as I didn't know that any such thing (ABI) existed.
I am working on a proper "fix", which I should have soon. (That is, I should regain the binary-compatibility.) For the time being, you can easily work around this, as I described right here: https://github.com/floquation/OF-kva...rties/issues/2 That solution boils down to recompiling your solver; or rather compiling a clone of your solver that is linked against my library. |
Yeah ! It works. Thank you, and I hope this version will be implemented in the next release of OpenFOAM, it's really a great work !
Best regards, Peter |
Quote:
I could not maintain binary compatibility, hence it is mandatory to recompile your solver. Luckily, this can be done without making any changes to the solver. I have written a script that can automatically recompile any solver for you, which is located in the "recompileSolvers" directory. See the updated README for instructions. |
Is there an OF-5.0 version available?
Quote:
|
Quote:
I have just adapted the code to work with OF-5.0 for you (and others) and pushed it to the same GitHub page. Make sure to checkout the branch "of50", as is now also mentioned in the updated README file. |
This is awesome! Thanks Kevin.
Quote:
|
Hi Kevin,
May I get your advice on how to adapt old version Openfoam codes to newest version? I know it's not easy. But any general instructions are very helpful. Quote:
|
Quote:
For example, if you have a custom solver based on interFoam in 2.1.x, then I'd open the real interFoam of 2.1.x and the interFoam of the new version. Then by first comparing Make/options and then each individual source file of those two interFoams, I can figure out how to adapt my code to the new version. |
Thanks Kevin for these wonderful advices! I will try out. :)
Quote:
|
Quote:
|
Quote:
If OF is asking you to set "curvatureModel", the library is not removed. You should remove the .so file from the directory $FOAM_USER_LIBBIN. |
Quote:
|
Hey Kevin
i saw your discussions on VOF smoothing and i see you 've been working on boiling flows. i am also working on boiling and i am using intercondensatingevaporatingfoam solver from OPENFOAM-V1612+ from ESI I hve added dynamic meshing to it it's however plagued with spurious currents. can you please add vof smoothing for openfoam-v1612+ ?? add support for OPENFOAM ESI my intercondensatinngevaporatingfoam is attached in this forum... i'll send you the link if you want to try... |
Dear all,
I m also validating two phase slug flow in T junction microreactor using interFoam with constantContactAngle of 140 and so on.......till now results matches nicely till slug breaking mechanism....but after that as slug move in main channel it start accelerating and its size increases till outlet comes......what is the issue,I am stuck now (by observation as one phase block other phase at junction and then it break slug, the slug in main channel accelerates) I think someone can understand my issue.... |
Quote:
for some reason I cannot run ./Allget. At first there was an error saying wrong directory. I have figured that my sh was in bin/sh rather than usr/bin/sh. Now when I run it I get error from line 33 that "(" is unexpected and pretty much all the other brackets in line 33 and 34. I am pretty sure they should be there and even after removing them I get a syntax error that line 42 "(" is unexpected (expecting "done"). This is seriously doing my head in... |
Quote:
First try executing the script by explicitly specifying the running environment (from the directory that contains the script): Code:
sh ./Allget Code:
sh --version Code:
bash ./Allget In fact, all that Allget does is use your "list_of_solvers" file to repetitively call the getSolverMake.sh script for all solvers you wish to recompile. You can do that by hand as well (see the README on GitHub). Then, getSolverMake.sh (I hope that one works for you) modifies some files of the solver like Make/files and Make/options to automagically link it against my library, and set its compilation location to $FOAM_USER_APPBIN: the place where custom solvers should go. Hope that helps you. |
Hey Kevin and Michal,
first of thanks a lot for the port and your detailed description on github Kevin! I ran into the same problem that Michal had and managed to fix it, simply by replacing the first line: #! /usr/bin/sh with: #!/bin/bash in the Allget, Allwmake and the getSolverMake.sh script. I hope this is helpful for other foamers out there. Best regards, Leon |
Quote:
In the meantime I'd run into the same problem with a student of mine who wanted to use his own laptop as well, for which we used that same solution. I just wonder what the "proper" Linux way of writing the shebang is... Perhaps using env? Code:
/usr/bin/env bash |
Hi Kevin,
Quote:
Also the compressibleInterFoam compiles without error. Then it gives an error: keyword water in not defined in the dictionary thermophysicalProperties. Solution: Phases and propreties need to be added there, since the code calls for rho1_ and rho2_ in order to use densityWeighted model. Am I assuming correct that if the model is turned off these values could be arbitrary and will not affect the calculations? I might be getting something wrong in how your code is implemented though. Any thoughts? Thanks |
Dear Kevin,
Thank you very much for sharing your code. It was really useful for my project. However, now I met a problem when compiling it to the compressibleInterFoam: compressibleInterFoam.C:46:35: fatal error: twoPhaseMixtureThermo.H: No such file or directory Do you have any clue to solve this? Thanks a lot.P.S.: I have successfully compiled the interFoam solver with your code without any error.P.S.2: I have both OF40 and OF50 on my computer, both have the same problem. best Guang |
Quote:
I had the same issue with this compilation. For some reason linking in Make/options file to this twoPhaseMixtureThermo folder fails. What solved my problem (probably not smoothest solution) is adding an additional line in options -I/.....path to twoPhaseMixtureThermo folder.... \ Hope it helps. |
All times are GMT -4. The time now is 16:36. |