I am trying to adjust dnsFoam
I am trying to adjust dnsFoam to calculate the decay of turbulence (in space). For that, in my domain (say 32, 16, 16 - with inlet bc) the turbulence forcing is active in the first half only (1:16,1:16,1:16), the other part should be calculated without the extra source term. How can I do that in a compact and elegant way? Some CFD codes allow to define different fluid zones, is that a case with OF? I've got no experience with OF and need some help
Regards, Mick |
A possible way to do this (far
A possible way to do this (far from clever, tough http://www.cfd-online.com/OpenFOAM_D...lipart/sad.gif ) is to create a new scalar field (say, alpha) to act like a switch:
it is 0 outside your forcing subdomain and 1 inside. Then you set the initial conditions accordingly and never change this variable (alpha). In the main code, you multiply alpha by the force, and that's it. Cheers, luiz |
Please post your message under
Please post your message under one topic only.
Mattijs |
Luiz,
That's indeed my questi
Luiz,
That's indeed my question. How to create such a scalar field to be 1 in the first half of the domain and 0 in the second. Could you give me an example? Regards, Mick |
Add your switch variable (alph
Add your switch variable (alpha) to createFields.H
volScalarField alpha ( IOobject ( "alpha", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ); Your "0" directory must now contain initial value for this variable all over the domain. Set it to 0 over all domain and boundary conditions. Then, create a auxiliar case, whose geometry is exactly that of your forcing subdomain. Construct such a case and set alpha = 1 in all this auxiliary geometry (case). Use mapFields utility to map fields from the auxiliary case to the real one: mapFields . auxiliar_case . real_case This way, your variable alph (dont forget to alter mapFieldsDict accordingly) will now be 1 in the region coincident with the auxiliar case geometry and 0 elsewhere. Then, run the case (real one) Good luck |
the setFields utility might be
the setFields utility might be helpful. Have a look at the dam break tutorial for the interFoam solver. You can also look at the guide. Hope this helps.
|
Luiz, Pierre,
Thanks a lot fo
Luiz, Pierre,
Thanks a lot for your prompt reactions and valuable remarks. I think that now I will be able to go further with my project. Cheerio, M |
Guys,
What is great about our
Guys,
What is great about our life is that solving one problem creates at least 2 new ;-). Anyway, I simply overlooked that Kmesh generates the forcing field based on the entire geometry. My idea is to generate non-zero forcing for the half of my domain only (e.g. 16 16 16) and solve the problem in a bigger domain (32 16 16). As mentioned in the first post I have got no experience with OF and rather little with C programming (especially using OF macros). Does anyone know how to fool Kmesh and consequently UOprocess to take only the half of my domain to generate forcing? Regards, Mick |
All times are GMT -4. The time now is 11:04. |