channel

<< Click to Display Table of Contents >>

Navigation:  Sample Problems > Applications > Fluids >

channel

Previous pageReturn to chapter overviewNext page

{  CHANNEL.PDE

 

 This example is a modification of the LOWVISC.PDE problem, in which the

 no-slip boundary has been placed at the bottom of the domain, with free flow

 at the top.

 

 The declared parameters in this problem are chosen for demonstration purposes,

 and are not intended to represent any real conditions.  The fluid is far more

 viscous than water.

}

 

title 'Flow in 2D channel'

 

select errlim = 0.005

 

variables

  u(0.1)

  v(0.01)

  p(1)

 

definitions

  Lx = 5       Ly = 1.5

  p0 = 1       { input pressure }

  speed2 = u^2+v^2

  speed = sqrt(speed2)

  dens = 1

  visc = 0.04              

  vxx = -(p0/(2*visc*(2*Lx)))*y^2   { open-channel x-velocity with drag at the bottom }

 

  rball=0.4

  cut = 0.1   { value for bevel at the corners of the obstruction }

 

  penalty = 100*visc/rball^2

  Re = globalmax(speed)*(Ly/2)/(visc/dens)

 

initial values

{ In nonlinear problems, Newton's method requires a good initial guess at the solution,

   or convergence may not be achieved.  You can use SELECT CHANGELIM=0.1 to

   force the solver to creep toward a solution from a bad guess.  

   In our problem, the open channel velocity is a good place to start. }

  u = vxx  v = 0  p = p0*x/(2*Lx)

 

equations

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

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

  p:  div(grad(p)) = penalty*(dx(u)+dy(v))

 

boundaries

  region 1

    start(-Lx,0)

    value(u) = 0   value(v) = 0   load(p) = 0

      line to (Lx/2-rball,0)

            to (Lx/2-rball,rball) bevel(cut)

            to (Lx/2+rball,rball) bevel(cut)

            to (Lx/2+rball,0)

            to (Lx,0)

 

    load(u) = 0 value(v) = 0 value(p) = p0

    mesh_spacing=Ly/20

      line to (Lx,Ly)

 

    mesh_spacing=100

    load(p) = 0

      line to (-Lx,Ly)

 

    value(p) = 0

      line to close

 

monitors

  contour(speed) report(Re)

 

plots

  contour(u) report(Re)

  contour(v) report(Re)

  contour(speed) painted report(Re)

  vector(u,v) as "flow"   report(Re)

  contour(p) as "Pressure" painted

  contour(dx(u)+dy(v)) as "Continuity Error"

  elevation(u) from (-Lx,0) to (-Lx,Ly)

  elevation(u) from (0,0)   to (0,Ly)

  elevation(u) from (Lx/2,0)to (Lx/2,Ly)

  elevation(u) from (Lx,0) to (Lx,Ly)

end