MMES_Final_Report

advertisement
A Review of Point Source Air Dispersion
Modeling Techniques
Mathematical Modeling of Energy and Environmental Systems
MANE6960H01
Spring 2013
James P. Burke
Introduction
As part of the curriculum of MANE-6961HO1 a research project was to be performed. I began my
research of refrigeration cycles with the focus on geothermal systems for an upcoming build for my
house. Around the midpoint of the semester I found the topic of point source dispersion modeling to be
a much more interesting topic. This paper is to provide a summary of the work I was able to perform
throughout the semester.
The text book assigned for class, Energy and Environment by James A. Fay and Dan S. Golomb, provides
a simple Gaussian plume model equation on page 282 and 283. This model account for several factors:
wind, random dispersion, gravity, and bouncy. In this paper I have broken these phenomena down into
simple cases to demonstrate them.
Gaussian Plume Model
To start at a high level, a simple model was created and tested. Figure 1 is a plot of the smoke
dispersion of my personal property (504 Russellville Rd, Westfield, MA), which can be found on the
Westfield, MA GIS maps (http://gis.cityofwestfield.org/fl/westfieldmapublic/main.html). Equations 10.3,
10.4, and 10.5 from our textbook were inputs into ANSYS along with the key point of the property
boundaries. A simple two dimensional mesh was created based on the property key points. The
generated nodes were then processed thru a do loop to determine the parameters of equation 10.3.
Figure 1 shows a case of wind blowing at 45 degree to the north (x axis is north). The amount of smoke
produced by the stove is unknown, therefore the plots only provides a relative dispersion of smoke.
Figure 1: Smoke Dispersion Model
Random Dispersion Sub Model
Part of the Gaussian plume model discussed about is a random dispersion term. Wikipedia had a good
description of this phenomena http://en.wikipedia.org/wiki/Random_walk. The easiest way to visualize
this behavior is to imagine a single walker starting at a central point. In the 2-D case he has two chooses
each “time step”. The walker has to choose to go in the positive/negative x direction one unit and also
chose to go in the positive/negative y direction one unit. This process is repeated thousands of times
and the walker’s position is monitored. This is then repeated for many walkers to provide a statistical
distribution as a function of time.
To simulate this type of model a random number generator is needed. ANSYS, typically a finite element
code, was used for its ability to store large arrays of data and to be able to produce random numbers for
the walker’s “chooses”. In the appendix attached to this report I have provided my code that generates
this model. Below I have listed the basic steps to simulate random dispersion:






Assigned a data array to store walkers information
Do loop to provide each walker with all of their chooses (random number generator)
A second do loop to add each step up and keep track of the locations of each walker
Generate a inform square mesh to track walker positions
A third do loop to determine for each walker which of the uniform nodes is closest to it for a
given time point. Each uniform node keeps track of the number of walkers in its area
A temperature distribution is applied based on the number of walkers at each node (used for
visualizing things)
For this model 10,000 walkers were chosen for 2,000 steps. The figures below show the dispersion of
the walkers as you step thru time.
Figure 2: Two dimensional Model – Time 50
Figure 3: Two dimensional Model – Time 500
Figure 4: Two dimensional Model – Time 1,000
Figure 5: Two dimensional Model – Time 2,000
Random Dispersion With Wind Sub Model
The second sub model I created added an additional step to the process, constant wind. The original
random dispersion model was used as a starting point. To account for wind effects a bias was added to
the x direction random number generator. This constant adder accounts for wind push the walker in the
x direction. This model also used 10,000 walkers for only 1,775 steps. The figures below show the walker
distribution for various time steps. As you can see the walkers are not only dispersing in the x and y
directions, but the entire dispersion is shift in the positive X direction. The dispersion rate and wind
speed are selected based on testing purposes. This model does not represent any real physical case. The
inputs files for this model can be found the appendix in the back of this report.
Figure 6: Two dimensional Model – Time 50
Figure 7: Two dimensional Model – Time 500
Figure 8: Two dimensional Model – Time 1,000
Figure 9: Two dimensional Model – Time 1,775
Random Dispersion With Wind and Gravity Effects Sub Model
The last model created account for the third and final effect, gravity. The first two sub models were
simple two dimensional models. To account for gravity a third direction was added in the decision maker
portion of the code. The same input code was used as a starting point for this model. An extra column
was added for a z direction term. During the random number generation phase of the code a bias was
introduced to tended to cause the walkers to want to go into the –Z direction (i.e., falling towards the
ground). The same 10,000 walkers were selected, but were only run to 500 steps. Because of the
additional run time associated with the third dimension the number of steps was reduced significantly.
Instead of mapping walker positions on a uniform plot, the walkers themselves were plots as nodes on
the model for various time points. The figures below show the walker distribution as a function of time.
As you can see the walkers are not only uniformly dispersing in the X and Y direction, but also they are
shift in the X direction (wind) and Z direction (gravity). As mentioned above the wind, random, and
gravity rates were selected for testing purposes only. They do not represent any real physical model.
Figure 10: Three dimensional Model – Time 5
Figure 11: Three dimensional Model – Time 25
Figure 12: Three dimensional Model – Time 50
Figure 13: Three dimensional Model – Time 500
Conclusions
The three sub models presented above demonstrate the principals of a Gaussian Plume model. While
the random dispersion, wind, and gravity rates are not based on any real physical system, the plots do
provide a user an understanding of what is occurring. Attached in the project folder
(http://www.ewp.rpi.edu/hartford/~burkej8/MMEES/Project/ ) are all of the input files used to
generate these plots. Also, I have provided all the figures and generated movies that provide the various
models figures in a nice format for viewing. The appendices attached below are the input files used to
generated the figures above.
Input Model Files for ANSYS
Static Random Model Input File
finish
/clear,nostart
xstep=.05
ystep=.05
tcase=10000
steps=5000
*dim,rd,array,steps,3,tcase
*do,i,1,tcase,1
*do,j,1,steps,1
x=rand(-xstep/2,xstep/2)
y=rand(-ystep/2,ystep/2)
rd(j,1,i)=j
rd(j,2,i)=x
rd(j,3,i)=y
*enddo
*enddo
*do,i,1,tcase,1
*do,j,2,steps,1
rd(j,2,i)=rd(j,2,i)+rd(j-1,2,i)
rd(j,3,i)=rd(j,3,i)+rd(j-1,3,i)
*enddo
*enddo
/prep7
ET,1,182
RECTNG,-3,3,-3,3,
aesize,1,.025
amesh,all
bf,all,temp,0
modmsh,nocheck
/PBF,TEMP, ,1
*do,f,25,5000,25
/title, MANE-6961 MMES Random Model - %f% steps
/prep7
!Clear old data out for reruning
bf,all,temp,0
*do,i,1,tcase
nd=node(rd(f,2,i),rd(f,3,i),0)
*get,ndtemp,node,nd,ntemp
bf,nd,temp,ndtemp+.1
*enddo
eplot
finish
!Take Picture
!****************
! Switch output to PNG-files
/SHO,png,,,8
! Plot to PNG files
PNGR,comp,on,9
! Setting of PNG compression level - might be unnecessary
/GFI,640
pixels in frame
! The VERTICAL size of resulting picture in pixels - the final includes 10 more
! this changes the background to white for the picture
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
! your plot commands
eplot
! Switch output back to screen
/SHO,close
! Reset changed settings
/RGB,INDEX, 0, 0, 0, 0
/RGB,INDEX, 60, 60, 60,13
/RGB,INDEX, 80, 80, 80,14
/RGB,INDEX,100,100,100,15
/REPLOT
*enddo
save
Two Dimensional Random Models with Wind Input File
finish
/clear,nostart
xstep=.05
ystep=.05
tcase=10000
steps=5000
*dim,rd,array,steps,3,tcase
*do,i,1,tcase,1
*do,j,1,steps,1
x=rand(-xstep/2,xstep/2)+.001
y=rand(-ystep/2,ystep/2)
rd(j,1,i)=j
rd(j,2,i)=x
rd(j,3,i)=y
*enddo
*enddo
*do,i,1,tcase,1
*do,j,2,steps,1
rd(j,2,i)=rd(j,2,i)+rd(j-1,2,i)
rd(j,3,i)=rd(j,3,i)+rd(j-1,3,i)
*enddo
*enddo
/prep7
ET,1,182
RECTNG,-3,3,-3,3,
aesize,1,.025
amesh,all
bf,all,temp,0
modmsh,nocheck
/PBF,TEMP, ,1
*do,f,25,5000,25
/title, MANE-6961 MMES Random Model Wind +X Direction - %f% steps
/prep7
!Clear old data out for reruning
bf,all,temp,0
*do,i,1,tcase
nd=node(rd(f,2,i),rd(f,3,i),0)
*get,ndtemp,node,nd,ntemp
bf,nd,temp,ndtemp+.1
*enddo
eplot
finish
!Take Picture
!****************
! Switch output to PNG-files
/SHO,png,,,8
! Plot to PNG files
PNGR,comp,on,9
! Setting of PNG compression level - might be unnecessary
/GFI,640
pixels in frame
! The VERTICAL size of resulting picture in pixels - the final includes 10 more
! this changes the background to white for the picture
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
! your plot commands
eplot
! Switch output back to screen
/SHO,close
! Reset changed settings
/RGB,INDEX, 0, 0, 0, 0
/RGB,INDEX, 60, 60, 60,13
/RGB,INDEX, 80, 80, 80,14
/RGB,INDEX,100,100,100,15
/REPLOT
*enddo
save
Three Dimensional Model with Wind and Gravity Input File
finish
/clear,nostart
xstep=.05
ystep=.05
zstep=.05
tcase=10000
steps=5000
*dim,rd,array,steps,4,tcase
*do,i,1,tcase,1
*do,j,1,steps,1
x=rand(-xstep/2,xstep/2)+.001
y=rand(-ystep/2,ystep/2)-.001
z=rand(-zstep/2,zstep/2)
rd(j,1,i)=j
rd(j,2,i)=x
rd(j,3,i)=y
rd(j,4,i)=z
*enddo
*enddo
*do,i,1,tcase,1
*do,j,2,steps,1
rd(j,2,i)=rd(j,2,i)+rd(j-1,2,i)
rd(j,3,i)=rd(j,3,i)+rd(j-1,3,i)
rd(j,4,i)=rd(j,4,i)+rd(j-1,4,i)
*enddo
*enddo
/prep7
*do,f,5,500,5
/prep7
*do,i,1,tcase
n,i,rd(f,2,i),rd(f,3,i),rd(f,4,i)
*enddo
nplot
/VIEW,1,1,1,1
nplot
/title, MANE-6961 MMES Random Model - %f% steps
finish
!Take Picture
!****************
! Switch output to PNG-files
/SHO,png,,,8
! Plot to PNG files
PNGR,comp,on,9
! Setting of PNG compression level - might be unnecessary
/GFI,640
pixels in frame
! The VERTICAL size of resulting picture in pixels - the final includes 10 more
! this changes the background to white for the picture
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
! your plot commands
nplot
! Switch output back to screen
/SHO,close
! Reset changed settings
/RGB,INDEX, 0, 0, 0, 0
/RGB,INDEX, 60, 60, 60,13
/RGB,INDEX, 80, 80, 80,14
/RGB,INDEX,100,100,100,15
/REPLOT
*enddo
Dispersion Model Input File
finish
/clear,nostart
*AFUN,DEG
qp=200/24/60/60
coming out the stack lbs/s amount of wood i load per day diveded out into seconds
!stuff
u=1*17.6
speed miles/hours
!wind
tamb=50
!Ambient temp
tstack=200
Temp
!Stack
g=32
constant
!gravity
d_stack=8
diameter
!stack
vstack=1
h_stack=10*12
x_stack=803.08
y_stack=1004
!stack velocity in/s currently guess value
!stack height
!location of stack on map
!location of stack on map
stab_case=6
!which sigma case to grab 6 is the worst
theta=45
!Wind direction 0 is heading south
/prep7
!keypoints from GPS mapping from wetland project
k,1,0,0,0
k,2,1.11379212264292E-13,909.107886624231,0
k,3,361.592268694118,2678.51224057324,0
k,4,578.567497626089,4285.61651162794,0
k,5,795.470885488339,4983.62057945538,0
k,6,2217.47123102765,5518.94040363645,0
k,7,5453.04236275294,6005.73667338336,0
k,8,5538.33197524753,1975.16554545456,0
!makes area
a,1,2,3,4,5,6,7,8
!Extrudes Solid
VOFFST,1,-5, ,
et,1,285
type,1
esize,50
vmesh,all
!Calcualtes Bouncy Force
F=g*vstack*d_stack**2*(tstack-tamb)/(4*tstack)
*if,f,le,55,then
dh=21.4*f**.75/u
*endif
*if,f,gt,55,then
dh=38.7*f**(3/5)/u
*endif
!Bouncy force
h=dh+h_stack
!Total Smoke height
!Array for sigma values
*dim,stab,array,6,4,1
stab(1,1)=213
stab(1,2)=440.8
stab(1,3)=1.041
stab(1,4)=9.27
stab(2,1)=156
stab(2,2)=106.6
stab(2,3)=1.149
stab(2,4)=3.3
stab(3,1)=104
stab(3,2)=61.0
stab(3,3)=.911
stab(3,4)=0
stab(4,1)=68
stab(4,2)=33.2
stab(4,3)=.725
stab(4,4)=-1.7
stab(5,1)=50.5
stab(5,2)=22.8
stab(5,3)=.675
stab(5,4)=-1.3
stab(6,1)=34
stab(6,2)=14.35
stab(6,3)=.740
stab(6,4)=-.35
allsel,all
*get,num_count,node,0,count
*do,i,1,num_count,1
*get,num_node,node,0,num,min
*get,xc,node,num_node,loc,x
*get,yc,node,num_node,loc,y
*get,zc,node,num_node,loc,z
xc=(xc-x_stack)/39370
yc=(yc-y_stack)/39370
zc=zc
sz=stab(stab_case,1)*xc**stab(stab_case,3)+stab(stab_case,4)
sy=stab(stab_case,1)*xc**.894
sy=sy*39.370
sz=sz*39.370
xc=xc*39370
yc=yc*39370-tan(theta)*xc+yc
*if,xc,ge,0,then
c=qp/(2*3.14*sy*sz*u)*exp(-.5*(yc**2/sy**2+(zc-h)**2/sz**2))
*endif
*if,xc,lt,0,then
c=0
*endif
bf,num_node,temp,c/(c+.000004505)*100
nsel,u,,,num_node
*enddo
allsel,all
/EDGE,1,0,45
/GLINE,1,-1
/PBF,TEMP, ,1
finish
!Take Picture
!****************
! Switch output to PNG-files
/SHO,png,,,8
! Plot to PNG files
PNGR,comp,on,9
! Setting of PNG compression level - might be unnecessary
/GFI,640
pixels in frame
! The VERTICAL size of resulting picture in pixels - the final includes 10 more
! this changes the background to white for the picture
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
! your plot commands
eplot
! Switch output back to screen
/SHO,close
! Reset changed settings
/RGB,INDEX, 0, 0, 0, 0
/RGB,INDEX, 60, 60, 60,13
/RGB,INDEX, 80, 80, 80,14
/RGB,INDEX,100,100,100,15
/REPLOT
Download