equation_iteration

<< Click to Display Table of Contents >>

Navigation:  Sample Problems > Usage > Sequenced_Equations >

equation_iteration

Previous pageReturn to chapter overviewNext page

{  EQUATION_ITERATION.PDE

 

 This example is a modification of the LOWVISC.PDE problem to show the use

 of the START_ITERATION - END_ITERATION construct. The X and Y velocities

 (U and V) are calculated independently, but iterated until mutual convergence.

 

 This is not a better way to solve this particular problem, but simply an exanple

 of the usage for the START_ITERATATION - END_ITERATION construct.

 

}

 

title 'Viscous flow in 2D channel, Re > 40'

 

variables

  u(0.1)

  v(0.01)

  p(1)

  psi

 

select

 ngrid=40

 

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)))*(Ly^2-y^2) { open-channel x-velocity }

 

  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)

 

  w = zcomp(curl(u,v)) ! vorticity is the source for streamline equation

 

initial values

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

 

equations

  ! Iterate U and V until mutual convergence

  start_iteration

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

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

  then

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

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

end_iteration

 

then

   psi:  div(grad(psi)) + w = 0 ! solve streamline equation separately from velocities

 

boundaries

  region 1

    start(-Lx,0)

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

      line to (Lx/2-rball,0)

 

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

    mesh_spacing=rball/10 ! dense mesh to resolve obstruction

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

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

            to (Lx/2+rball,0)

 

    mesh_spacing=10*rball ! cancel dense mesh requirement

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

      line to (Lx,0)

 

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

      line to (Lx,Ly)

 

    value(u) = 0 value(v) = 0 load(p) = 0 natural(psi)=normal(-v,u)

      line to (-Lx,Ly)

 

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

      line to close

 

monitors

  contour(speed) report(Re)

  contour(psi) as "Streamlines"

  contour(max(psi,-0.003)) zoom(Lx/2-3*rball,0, 3*rball,3*rball) as "Vortex Streamlines"

  vector(u,v) as "flow"   zoom(Lx/2-3*rball,0, 3*rball,3*rball) norm

 

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)

  contour(psi) as "Streamlines"

  contour(max(psi,-0.003)) zoom(Lx/2-3*rball,0, 3*rball,3*rball) as "Vortex Streamlines"

  vector(u,v) as "flow"   zoom(Lx/2-3*rball,0, 3*rball,3*rball) norm

 

  Transfer(u,v,p)   ! write flow solution as initial values for Coupled_contaminant.pde

 

end