contaminant_transport

<< Click to Display Table of Contents >>

Navigation:  Sample Problems > Applications > Fluids >

contaminant_transport

Previous pageReturn to chapter overviewNext page

{ CONTAMINANT_TRANSPORT.PDE

 

 This example shows the use of sequenced equations in the calculation of steady-state

 contaminant transport  in which the fluid properties are independent of the contaminant

 concentration.

 

 Fluid equations are solved first on each grid refinement, then the contaminant

 concentration is updated.

 

 The problem is a modification of the example CHANNEL.PDE.

 

}  

 

title 'Contaminant transport in 2D channel'  

 

select

  errlim = 0.005  

  ngrid = 40

 

variables  

  u(0.1)  

  v(0.01)  

  p(1)  

  c(0.01)  

 

definitions  

  Lx = 5       Ly = 1.5  

  p0 = 2  

  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)  

 

  Kc = 0.01   { contaminant diffusivity }  

 

initial values  

  u =  vxx   v=0  p = p0*x/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))  

then  

  c:  u*dx(c) + v*dy(c) = div(Kc*grad(c))  

 

boundaries  

  region 1  

    start(-Lx,0)  

    value(u) = 0   value(v) = 0   load(p) = 0 natural(c)=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)  

 

    mesh_spacing=Ly/20  

    load(u) = 0 value(v) = 0 value(p) = p0 value(c) = Upulse(y,y-Ly/3)  

      line to (Lx,Ly)  

 

    mesh_spacing = 100  

    load(p) = 0 natural(c)=0  

      line to (-Lx,Ly)  

 

    value(p) = 0  

      line to close  

 

monitors  

    contour(speed)  

    contour(c)  

 

plots  

  contour(c) report(Re)  

  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