﻿ Sample Problems > Usage > Sequenced_Equations > equation_iteration

# equation_iteration

Navigation:  Sample Problems > Usage > Sequenced_Equations >

# equation_iteration

{  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))

then

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

end_iteration

then

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

boundaries

region 1

start(-Lx,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

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