﻿ Sample Problems > Applications > Fluids > coupled_contaminant

coupled_contaminant

Navigation:  Sample Problems > Applications > Fluids >

coupled_contaminant   {  COUPLED_CONTAMINANT.PDE

This example shows the use of FlexPDE in a contaminant transport

calculation in which the fluid viscosity is strongly dependent on the contaminant concentration.

The example LOWVISC.PDE  must first be solved to establish flow velocities.

This time-dependent modification of that example then reads the initial values and

computes the flow of a contaminant in the channel.

Fluid equations are solved fully implicitly with the contaminant concentration.

}

title 'Contaminant transport in 2D channel, Re > 40'

variables

u(0.1)

v(0.01)

p(1)

c(0.01)

definitions

Lx = 5       Ly = 1.5

p0 = 2

speed = sqrt(u^2+v^2)

dens = 1

visc0 = 0.04

visc = visc0*(1+c)

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)/(visc0/dens)

{ define a contaminant pulse function in space and time

use SWAGE to eliminate discontinuous changes }

swagepulse(f,a,b,rise) = swage(f-a,0,1,rise)*swage(f-b,1,0,rise)

C0=2

cinput = C0*swage(y-0.4,1,0,0.08 )*swagepulse(t,0.4,1,0.08)

Kc = 0.002       { contaminant diffusivity }

{ read the initial velocity field from Lowvisc.pde }

transfermesh("lowvisc_output/lowvisc_01.xfr", uin, vin, pin)

Initial Values

u=uin

v=vin

p=pin

equations

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

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

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

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

{ Introduce a lump of contaminant: }

value(c) = cinput

mesh_spacing=Ly/20

line to (Lx,Ly)

mesh_spacing=100

line to(-Lx,Ly)

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

line to close

time 0 to 10

monitors

for cycle = 1

contour(speed) report(Re)

contour(c) range(0,1) report(Re)

elevation(cinput) from (Lx,-Ly) to (Lx,Ly) range=(0,C0)

plots

for t=0 by 0.05 to endtime

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"

history(integral(c))

history(u) at (0,0.8) (2,0.8) (3,0.8) (4,0.8) (Lx,0)

history(v) at (0,0.8) (2,0.8) (3,0.8) (4,0.8)

end