Buoyant

Top  Previous  Next

buoyant09buoyant10

{  BUOYANT.PDE  }

{  *****************

 

This example addresses the problem of thermally driven buoyant flow

of a viscous liquid in a vessel in two dimensions.

 

In the Boussinesq approximation, we assume that the fluid is incompressible,

except for thermal expansion effects which generate a buoyant force.

 

The incompressible form of the Navier-Stokes equations for the flow of a fluid

can be written

       dt(U) + U.grad(U) + grad(p) = nu*div(grad(U)) + F

       div(U) = 0

where U represents the velocity vector,

       p is the pressure,

       nu is the kinematic viscosity

and   F is the vector of body forces.

 

The first equation expresses the conservation of momentum, while the second,

or Continuity Equation, expresses the conservation of mass.

If the flow is steady, we may drop the time derivative.

 

If we take the curl of the (steady-state) momentum equation, we get

       curl(U.grad(U)) + curl(grad(p)) = nu*curl(div(grad(U)) + curl(F)

 

Using div(U)=0 and div(curl(U))=0, and defining the vorticity W = curl(U),

we get

       U.grad(W) = W.grad(U) + nu*div(grad(W)) + curl(F)

 

W.grad(U) represents the effect of vortex stretching, and is zero in

two-dimensional systems. Furthermore, in two dimensions the velocity has

only two components, say u and v, and the vorticity has only one,

which we shall write as w.

 

Consider now the continuity equation.  If we define a scalar function psi

such that

       u = dy(psi)    v = -dx(psi)

then div(U) = dx(dy(psi))-dy(dx(psi)) = 0, and the continuity equation is

satisfied exactly.  We may write

       div(grad(psi)) = -dx(v)+dy(u) = -w

 

Using psi and w, we may write the final version of the Navier-Stokes

equations as

       dy(psi)*dx(w) -dx(psi)*dy(w) = nu*div(grad(w)) + curl(F)

       div(grad(psi)) + w = 0

 

If F is a gravitational force, then

       F = (0,-g*rho) and

       curl(F) = -g*dx(rho)

where rho is the fluid density and g is the acceleration of gravity.

 

The temperature of the system may be found from the heat equation

       rho*cp*[dt(T)+U.grad(T)] = div(k*grad(T)) + S

 

Dropping the time derivative, approximating rho by rho0,

and expanding U in terms of psi, we get

       div(k*grad(T)) + S = rho0*cp*[dy(psi)*dx(temp) - dx(psi)*dy(temp)]

 

If we assume linear expansion of the fluid with temperature, then

       rho = rho0*(1+alpha*(T-T0)) and

       curl(F) = -g*rho0*alpha*dx(T)

 

--------------------------

 

In this problem, we define a trough filled with liquid, heated along a center

strip by  an applied heat flux, and watch the convection pattern and the heat

distribution.  We compute only half the trough, with a symmetry plane

in the center.

 

Along the symmetry plane, we assert w=0, since on this plane

dx(v) = 0 and u=0, so dy(u) = 0.

 

Applying the boundary condition psi=0 forces the stream lines to be parallel

to the boundary, enforcing no flow through the boundary.

 

On the surface of the bowl, we apply a penalty function to enforce a "no-slip"

boundary condition.  We do this by using a natural BC to introduce a surface

source of vorticity to counteract the tangential velocity. The penalty weight

was arrived at by trial and error.  Larger weights can force the surface

velocity closer to zero, but this has no perceptible effect on the temperature

distribution.

 

On the free surface, the proper boundary condition for the vorticity is

problematic. We choose to apply NATURAL(w)=0, because this implies no vorticity

transport across the free surface.        (11/16/99)

 

**************** }

 

TITLE 'Buoyant Flow by Stream Function and Vorticity - No Slip'

 

VARIABLES

  temp psi w

 

DEFINITIONS

  Lx = 1   Ly = 0.5

  Rad = 0.5*(Lx^2+Ly^2)/Ly

  Gy = 980

 

  sigma_top = 0.01       { surface heat loss coefficient }

  sigma_bowl = 1          { bowl heat loss coefficient }

  k = 0.0004             { thermal conductivity }

 

  alpha = 0.001                        { thermal expansion coefficient }

  visc = 1                { 11/17/99 }

  rho0 = 1

 

  heatin = 10

  t0 = 50

 

  dens = rho0*(1 - alpha*temp)

  cp = 1

 

  penalty = 5000

 

  u = dy(psi)

  v = -dx(psi)

 

EQUATIONS

  temp:        div(k*grad(temp)) = rho0*cp*[u*dx(temp) + v*dy(temp)]

  psi:        div(grad(psi)) + w = 0

  w:        u*dx(w) + v*dy(w) = visc*div(grad(w)) - Gy*dx(dens)                

 

BOUNDARIES

  region 1

 

     { on the arc of the bowl, set Psi=0, and apply a conductive loss to T.

       Apply a penalty function to w to force the tangential velocity to zero }

     start "outer" (0,0)

     natural(temp) = -sigma_bowl*temp

     value(psi) = 0

     natural(w)= penalty*tangential(curl(psi))

     arc (center=0,Rad) to (Lx,Ly)

 

     { on the top, continue the Psi=0 BC, but add the heat in put term to T,

       and apply a natural=0 BC for w }

     natural(w)=0                { 11/16/99 }

     load(temp) = heatin*exp(-(10*x/Lx)**2) - sigma_top*temp

     line to (0,Ly)

 

     { in the symmetry plane assert w=0, with a reflective BC for T }

     value(w)=0

     load(temp) = 0

     line to close

 

MONITORS

  contour(temp) as "Temperature"

  contour(psi) as "Stream Function"

  contour(w) as "Vorticity"

  vector(u,v) as "Flow Velocity" norm

 

PLOTS

  grid(x,y)

  contour(temp) as "Temperature"  painted

  contour(psi) as "Stream Function"

  contour(w) as "Vorticity"  painted

  vector(u,v) as "Flow Velocity" norm

  contour(dens) as "Density"  painted

  contour(magnitude(u,v)) as "Speed"  painted

  elevation(magnitude(u,v)) on "outer"

  elevation(temp) on "outer"

 

END