New Member
Valentin Mélot
Join Date: Feb 2025
Posts: 1
Rep Power: 0
|
Hey people. I have a case I'm trying to model, and I'm not sure I'm doing it right. I'll first explain the case, then how I implement it in Fluent. If anybody could help me out with this, I'd be really grateful.
The case (= what I want): Cubic geometry, filled with liquid water and a FIXED number of bubbles (water vapour). The bottom plane is at T_hot > T_cold, the top plate temperature. This is thus a case of classic Rayleigh-Bénard convection. The fixed number of bubbles is introduced at random positions at the bottom surface, each with the same radius, null velocity, and temperature (this T°, which is the bubble T°, remains constant throughout the simulation, as all the other bubble properties, except their radius). Bubbles should rise (or go down, depending of the convection pattern they're in), and if they reach the top boundary, be reinjected at a random position at the bottom surface, with null velocity (but same radius as before reaching the top boundary). This would allow the number of bubbles to remain constant throughout the simulation. Bubbles should also reflect off the other walls of the domain. There are custom forces on the bubbles, as well as a custom heat-exchange between the bubbles and the fluid, but the problem here is mainly injection/reinjection. An Eulerian(fluid)-Lagrangian(bubbles) model has to be used for the bubbles tracking.*
Fluent implementation (= what I did so far): The whole geometry and fluid (eulerian phase) works (I tested everything without bubbles). The simulation is transient, and I checked "Unsteady Particle Tracking" (in the model described in the following sentence). For the bubbles model, I used Fluent's DPM, using a multicomponent particle type (which is water vapour with liquid water acting as the dummy componant, whose mass fraction is put to 0 in the injection properties). I have a custom heat/mass law, so I needed that particle type specifically. I use a surface injection (selecting the bottom surface), with "Randomize Starting Points" checked. Bubbles T° is fixed, as is their initial radius, and their velocities (x,y,z) are each set to 0. Let's say I want 1 bubble constantly in my domain. I'd put "Number of Streams" to 1. My bubble time step is 0.001s, so I put injection start time at 0s, and end time at 0.001s (so hopefully the bubble is in the domain after one bubble time step). To find the mass flow rate required, I multiply the number of bubbles (=1), the bubble volume, and its density (fixed, =1kg/m^3), then divide all of that by t_start - t_end = 0.001s. I DON'T check the "Reinjection Only" box, as I don't find its purpose that clear in the documentation. Also, checking that box removes the choice of custom drag law, the choice of particle type, etc.*
I started doubting the model once I introduced a custom bubble radius variation law. I coded a DEFINE_DPM_LAW function, which calls the standard law 7 (MulticomponentEvapLaw() function in the code, which I think calls my custom DEFINE_DPM_HEAT_MASS() function). After calling the standard law 7, I compute the new bubble radius and update the current one using P_DIAM() = new_radius. I noticed however that the radius was being resetted to its initial value (the one in the injection properties) at each bubble time step. I tried storing the radius in the P_USER_REAL() storage array for each particle, but I'm not sure it's a very rigourous way to do what I want. I read the documentation already (UDF-, user-, and theory-guides). I'm afraid Fluent is injecting the particle every 0.001s or something.*
What am I doing wrong here? I hope I was clear enough, and thanks a lot to anybody who's willing to help.*(I can't post on the Ansys Fluid forum for some reason)
(Other simulation details: energy equation is ON, simulation using a k-kl-w model, species transport is enabled (so the particle is actually a "particle-mixture" type, while the eulerian fluid is a regular "mixture" type), no mass exchange, no volume displacement)
|