반응형

     정보

    • 업무명     : 2016년 1학기 전선 고급 대기오염 모델링 이론/실습 및 과제물

    • 작성자     : 이상호

    • 작성일     : 2020-03-17

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

    • 안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.

    • 오늘은 대학원 석사 2학기에 배운 고급 대기오염 모델링에 대한 내용을 다루고자 합니다.

    • 특히 배운 지식을 활용하여 각 주차별 발표 및 토의는 학술 논문 또는 보고서 작성 시 많은 도움이 되었습니다.

    • 그에 따른 대기오염 모델링의 "이론, 실습, 과제물" 순으로 소개해 드리고자 합니다.

     

    [특징]

    • 고급 대기오염 모델링 수업에 대한 이해를 돕기위해 작성

     

    [기능]

    • 이론

    • 실습

    • 과제물

     

    [활용 자료]

    • AERMOD 모델링 예제

    SampleRun.zip
    1.25MB

     

     

    • AERMOD 설명서

    aermod_userguide.zip
    2.34MB

     

    [사용 OS]

    • Windows 10

     

    [사용 언어]

    • Power Point v2018

    • IDL v8.5

    • Surfer v13.0

     

     이론

    [대기오염 모델링]

    • 대기오염의 특성

      • 대기 중으로 배출되는 오염 물질의 종류가 매우 다양하고 오염원 (배출원)의 시/공간 분포가 넓습니다.

      • 이로 인해 관심 대상 지역에 대한 실측 및 오염원에 의한 직접적인 영향을 판단하기 어렵습니다.

     

    • 대기오염 확산모델

      • 대기오염 물질이 대기 중에서 확산 및 이동되는 현상을 수학/물리/전산학적으로 해석합니다. 즉 오염물질의 농도 변화를 물리/화학 이론을 바탕으로 시/공간 (3차원)의 함수로 나타낸 수학 방정식으로 정의합니다.

     

    •  

     

     실습

    [AERMOD 모델링]

    • 행성 경계층 난류 구조 및 스케일링 개념 (지표면, 단순 및 복합 지형 모두 포함)을 기반으로하는 대기오염 모델입니다.

    • 상기 활용 자료에서 AERMOD 예제에서 aermet2.pfl (고층 자료) aermet2.sfc (지상 자료)는 모델링의 기상 자료입니다. 이 모델에서는 상층보다 지상 자료에서 큰 영향을 받습니다.

      • 고층 및 지상 자료의 경우 서로 시간이 동일해야 하며 다를 경우 에러 발생합니다. 특히 가장 중요한 풍향, 풍속, 기온을 입력할 경우 예제 형식과 동일하게 맞춰줍니다.

     

     

    • 그리고 aermod.inp aermod.out은 각각 입력 자료 및 모델링 결과 파일입니다.

    • aermod.inp의 경우 실행하기 위해서 필수 자료입니다.

    • CO, SO, RE (지형 높낮이), ME (기상자료, 외부 파일명만 나열), EV (거의 없음), OU (출력 파일의 형식: 01/24 시간 등)으로 구성되어 있습니다 (캡쳐본 참조).

    • 그에 따른 자세한 정보는 다음과 같습니다.

     

     

    • CO

    # 지형자료 있으며 FLAT 대신 다른것을 이용. 입력자료의 기간을 정해주어야 함
    CO STARTING                                                                                                                         
       TITLEONE A Simple Example Problem for the AERMOD Model with PRIME (제목을 정해줌)
       MODELOPT  CONC (농도값을 계산)   FLAT (지형의 높낮이를 구분하지않고 매끈함)
       AVERTIME  1  3  8  24  PERIOD (avertime  1, 3, 8, 24시간 평균값을 output에 저장)                                                                                                           
       POLLUTID  SO2  (해당 오염물질들을 이용, 여기서는 SO2 이용, 하나만 써야함)                                                                                                                 
       RUNORNOT  RUN (실행)
       EVENTFIL  aertest_evt.inp (결과를 저장)
       ERRORFIL  ERRORS.OUT (모델이 Error가 발생하면 찾을 수 있음)
    CO FINISHED                                                                                                                         

     

    • SO

    SO STARTING
       ELEVUNIT  METERS
       LOCATION  STACK1 (굴뚝)  POINT (점)  0.0 (X)  0.0 (Y)  0.0 (Z)
    
    ** Point Source       QS (배출량)      HS (상승고도)    TS (상승온도)    VS (굴뚝에서 나오는 표출속도)    DS (굴뚝의 직경)
    ** Parameters:       ----    ----   ----  ----   ---
       SRCPARAM  STACK1  500.0 [g/s/m2]  65.00  425.  15.0   5. [m]
    SO FINISHED

     

    • RE (지형 높낮이)

    RE STARTING
    RE STARTING
    RE GRIDPOLR POL1 (극좌표로 표현) STA
                     ORIG STACK1 (대상)
                     DIST 175. 350. 500. 1000. (수용체에서 떨어진 지역에 대해서 계산)
                     GDIR 36 10 10 (각도의 개수 36개, 10도에 시작, 10 간격)
    RE GRIDPOLR POL1 END
    RE FINISHED

     

    • OU (출력 파일의 형식)

    OU STARTING                                                                                                                         
       RECTABLE  ALLAVE  FIRST (제일 높은 농도값만 이용)
       MAXTABLE  ALLAVE  50
       SUMMFILE  AERTEST.SUM                                                                                         
    OU FINISHED

     

    • aermod.out은 모델링 결과로서 지점에 대한 면 오염원를 가시화할 수 있습니다.

    ** CONC OF PM10     IN MICROGRAMS/M**3                          **
    
       DIRECTION |                                                DISTANCE (METERS)
       (DEGREES) |         50.00       100.00       200.00       400.00       800.00      1500.00      3000.00
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
           10.00 |       0.12004      0.19809      0.23569      0.64842      1.25598      1.74767      1.91965
           
           
    # 24시간 중에서 가장 높은 값. 대기환경영향 기준에서 벗어날 수 있으므로
    
    ** CONC OF PM10     IN MICROGRAMS/M**3                          **
    
     DIRECTION |                                                  DISTANCE (METERS)
     (DEGREES) |           50.00                  100.00                  200.00                  400.00                  800.00
     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    
          10.0 |      0.25308 (88030324)      0.41102 (88030224)      0.42671 (88030224)      1.18161 (88030224)      3.13483 (88030224)
    

     

    • 격자화된 대기오염을 모델링하기 위해서 RE (지형 높낮이)를 변경해야 합니다.

    # 기존
    RE GRIDPOLR POL1 STA
                     ORIG STACK1
                     DIST 175. 350. 500. 1000.
                     GDIR 36 10 10
    RE GRIDPOLR POL1 END
    
    # 변경
    RE STARTING
    	RE GRIDCART CAR1(격자망 ID) STA(시작)
    	RE GRIDCART CAR1 XYINC (x, y의 증가방향) 0 31 100 (x 방향에 해당) 0 31 	100 (y 방향에 해당).   x 방향은 32개이며 100m 단위로 있음.  또한 y 방향도 유	사함.  
    
    	TM좌표값으로 이용(다음 지도 ==> 공유하기).
    	가장 중간의 값을 따서 쓰면 됨.
    	http://map.daum.net/?map_type=TYPE_MAP&urlX=915163&urlY=1194153	&urlLevel=3 
    	구글 지도가 가장 정확함(세계 공통 좌표계를 쓰므로 좋음). 
    	lat, lon을 이용하여 TM 좌표계로 변환하여 넣어주어야함.
    
    	
    	RE GRIDCART CAR1 ELEV(지표면에서의 고도) 1 31*10.(고도 10m 간격으로 	31개가 있음.)
    	RE GRIDCART CAR1 HILL(지표면에서의 고도가 100m 안에 다양하게 있어서 	고려함, 지표가 불균질할때 농도값이 달라지므로 고려함, 지금은 한 격자에 대해	서 균질하다고 가정함.) 1 31*10
    
    	RE GRIDCART CAR1 ELEV 2 31*10.
    	RE GRIDCART CAR1 HILL 2 31*10.
    	RE GRIDCART CAR1 ELEV 3 31*10.
    	RE GRIDCART CAR1 HILL 3 31*10.
    RE GRIDCART CAR1 ELEV 4 31*10.
    	RE GRIDCART CAR1 HILL 4 31*10.
    RE GRIDCART CAR1 ELEV 5 31*10.
    RE GRIDCART CAR1 HILL 5 31*10.
    RE GRIDCART CAR1 ELEV 6 31*10.
    RE GRIDCART CAR1 HILL 6 31*10.
    RE GRIDCART CAR1 HILL 7 31*10.
    RE GRIDCART CAR1 ELEV 7 31*10.
    RE GRIDCART CAR1 HILL 8 31*10.
    RE GRIDCART CAR1 ELEV 8 31*10.
    RE GRIDCART CAR1 HILL 9 31*10.
    RE GRIDCART CAR1 ELEV 9 31*10.
    RE GRIDCART CAR1 HILL 10 31*10.
    RE GRIDCART CAR1 ELEV 10 31*10.
    RE GRIDCART CAR1 HILL 11 31*10.
    RE GRIDCART CAR1 ELEV 11 31*10.
    RE GRIDCART CAR1 HILL 12 31*10.
    RE GRIDCART CAR1 ELEV 12 31*10.
    RE GRIDCART CAR1 HILL 13 31*10.
    RE GRIDCART CAR1 ELEV 13 31*10.
    RE GRIDCART CAR1 HILL 14 31*10.
    RE GRIDCART CAR1 ELEV 14 31*10.
    RE GRIDCART CAR1 HILL 15 31*10.
    RE GRIDCART CAR1 ELEV 15 31*10.
    RE GRIDCART CAR1 HILL 16 31*10.
    RE GRIDCART CAR1 ELEV 16 31*10.
    RE GRIDCART CAR1 HILL 17 31*10.
    RE GRIDCART CAR1 ELEV 17 31*10.
    RE GRIDCART CAR1 HILL 18 31*10.
    RE GRIDCART CAR1 ELEV 18 31*10.
    RE GRIDCART CAR1 HILL 19 31*10.
    RE GRIDCART CAR1 ELEV 19 31*10.
    RE GRIDCART CAR1 HILL 20 31*10.
    RE GRIDCART CAR1 ELEV 20 31*10.
    RE GRIDCART CAR1 HILL 21 31*10.
    RE GRIDCART CAR1 ELEV 21 31*10.
    RE GRIDCART CAR1 HILL 22 31*10.
    RE GRIDCART CAR1 ELEV 22 31*10.
    RE GRIDCART CAR1 HILL 23 31*10.
    RE GRIDCART CAR1 ELEV 23 31*10.
    RE GRIDCART CAR1 HILL 24 31*10.
    RE GRIDCART CAR1 ELEV 24 31*10.
    RE GRIDCART CAR1 HILL 25 31*10.
    RE GRIDCART CAR1 ELEV 25 31*10.
    RE GRIDCART CAR1 HILL 26 31*10.
    RE GRIDCART CAR1 ELEV 26 31*10.
    RE GRIDCART CAR1 HILL 27 31*10.
    RE GRIDCART CAR1 ELEV 27 31*10.
    RE GRIDCART CAR1 HILL 28 31*10.
    RE GRIDCART CAR1 ELEV 28 31*10.
    RE GRIDCART CAR1 HILL 29 31*10.
    RE GRIDCART CAR1 ELEV 29 31*10.
    RE GRIDCART CAR1 HILL 30 31*10.
    RE GRIDCART CAR1 ELEV 30 31*10.
    RE GRIDCART CAR1 HILL 31 31*10.
    RE GRIDCART CAR1 ELEV 31 31*10.
    	RE GRIDCART CAR1 END
    RE FINISHED

     

     소스 코드

    [명세]

    • AERMOD.inp에서 DEM 격자 생성

    pro readDEM
    
          file = 'dem_namwon.txt'
          lines = file_lines(file)
    
          x = fltarr(lines)
          y = fltarr(lines)
          z = fltarr(lines)
    
          PRINT, lines
          stop
    
          openr, lun, file, /get_lun
    
          for i = 0L, lines-1 do begin
             readf, lun, d1, d2, d3
             x(i) = d1  
             y(i) = d2
             z(i) = d3
          endfor
    
          free_lun, lun
    
          openw,lun, 'RE_DEM.txt', /get_lun
          
          for i = 0L, lines-1 do begin
          ;'RE DISCCART    240000.   316000.      237.      237.'
          printf, lun, 'RE DISCCART ', x(i), y(i), z(i), z(i), $
                format = '(a12,4f10.0)'
          endfor
    
          free_lun,lun
    end

     

     

    • AERMOD.out에 대한 격자 가시화

    pro Plot_AERMOD_OUT
    
          cd, 'C:\Users\admin\Desktop\대학원 수업\고급대기오염모델링\model\AERMOD\SampleRun\test4'
    
          file = 'aermod.out'
    
          x = fltarr(2009L * 40 * 2.)
          y = fltarr(2009L * 40 * 2.)
          conc = fltarr(2009L * 40 * 2.)
    
          openr, lun, file, /get_lun
    
          dum = ''
          ; page 1794-3803: total 2009 pages
    
          ix = 0l
          jy = 0
    
          for ipage = 0, 2008 do begin
             for i = 0, 13 do begin
                readf, lun, dum
             endfor
             
             if ipage eq 2009 then begin
                jend = 1
             endif else begin
                jend = 39
             endelse 
    
             for j = 0, jend do begin
                readf, lun, d1, d2, d3, d4, d5, d6
    
          
                x(ix) = d1
                x(ix+1) = d4
                y(ix) = d2
                y(ix+1) = d5
                conc(ix) = d3     
                conc(ix+1) = d6
          
                ix = ix+2
             endfor
    
          endfor ;ipage
    
          openw, lun, 'test3.txt', /get_lun
          
          for i = 0L, 443*40*2. + 36*2-1 do begin
             printf, lun, x(i), y(i), conc(i)
          endfor
          
          free_lun, lun
    
          minX = min(x)
          maxX = max(x)
          minY = min(y)
          maxY = max(y)
          nx = n_elements(x)
          ny = n_elements(y)
          xcoor = x
          ycoor = y
          z = conc
          png_file = 'test.png'
    
          print, minX, maxX, minY, maxY
          print, nx, ny
          print, min(Z), max(Z)
    
    
          makepng, png_file, z, minX, maxX, minY, maxY, nx, ny,  $
          xcoor, ycoor
    
    end

     

     

    • 가시화에 필요한 소스 코드

    pro makepng, png_file, z, minX, maxX, minY, maxY, nx, ny, xcoor, ycoor
    
          ;-----------------------------------------------
          ; plot data
          ;-----------------------------------------------
          xs = 15 & ys = 15
    
          ;===== Plot Start =====
          set_plot,'ps'
          ps_name = '.' + path_sep() + 'temp.ps'
          device, /times, /color, filename = ps_name, bits = 8, xsize = xs, ysize = ys, /inches
          !p.font = 0 & !p.charsize = 1.5 & !p.charthick = 1.2
    
          TVLCT, 255, 255, 255, 254 ; White color
          TVLCT, 0, 0, 0, 253       ; Black color
    
          !P.Color = 253
          !P.Background = 254
    
    
          ;===== Data Scaling =====
          zmin = 0.0 & zmax = 100. & n_color = 255. & interval = 1.
          val = scale_vector(z, 0, n_color, minvalue = zmin, maxvalue = zmax, /nan, /double)
    
          ; User Defined Symbol
          mydevice = !d.name
          usersym, [-0.5,0.5,0.5,-0.5], [-0.5,-0.5,0.5,0.5], /fill
          sz = 2
    
          plot, [minX, minY], [minX, minY], xrange = [minX, maxX], yrange = [minY, maxY], POSITION = [0., 0., 1., 1.]
          
          
          LOADCT, 39
    
          for ii = 0L, nx-1 do begin
          ;for jj = 0, ny-1 DO begin
          
             if (val(ii) gt 0 and val(ii) lt n_color) then   $
                plots, xcoor(ii), ycoor(ii), psym=8, symsize=sz, color = long(val(ii))
                
             if (val(ii) gt 0 and val(ii) eq n_color) then   $
                plots, xcoor(ii), ycoor(ii), psym=8, symsize=sz, color = long(n_color-1)
                
          endfor
    
          ;cgColorbar, Divisions=4, Minor=5, Format='(i3)', Ticklen=-0.25, $
          ;  charsize=1.5,Range=[zmin,zmax],POSITION=[0.88, 0.10, 0.92, 0.90], $
          ;  vertical=1,right=1
          
          device, /close
    
          ; using imagemagic, convert image format from PS --> PNG
          convert_command = 'convert ' + ps_name + ' ' + png_file
          spawn, convert_command
    
          ;file_delete, ps_name
    end

     

     과제물

    AERMOD 모델을 이용하여 지형효과에 따른 대기오염 확산 연구

     

    [연구 목적]

    • 대한민국은 급격한 산업화와 도시화로 인해 많은 지역들이 개발되어 발전하였습니다. 이로 인한 긍정적 영향이 많이 발생한 반면 대기질 악화 같은 부정적인 영향도 발생되었습니다.

    • 이와 같은 대기오염은 매우 국지적이고 시간에 따른 변화가 심하기 때문에 실측이 어렵습니다. 또한 대한민국은 70% 이상이 산지로 이루어져 있으며 복잡한 지질학적 특성을 이루고 있습니다.

    • 따라서 AERMOD 모델을 이용하면 배출원으로부터 주변지역 대기질에 미치는 영향을 계산하여 정량적으로 영향을 파악할 수 있습니다.

    • 이 연구에서는 강원도 강릉과 서울특별시 중구 지역을 대상으로 3가지 방법으로 대기오염 확산을 보고자 합니다.

      • 배출원에서의 상승온도, 상승속도, 굴뚝 높이에 따른 농도의 변화

      • 강릉과 중구에서의 지형 효과 O, X 에 따른  농도 변화

      • 계절별 연구(1, 4, 7, 10월) + 지형효과 고려 O, X 에 따른 농도 변화

     

    [활용 자료]

    • AERMOD inp 자료

     

    • DEM (Digital Elevation Model) 자료

      • 국토 정보 플랫폼에서 강릉/서울 중구 (1:25,000 축적지도)를 이용하여 img.aux를 사용

      • 아스키 격자화를 위해 QGIS를 통해 변환

     

    • 지상 자료

      • 기상자료개방포털에서 강릉/서울 중구에서 1분 기온, 풍향, 풍속을 1시간 평균 수행

    •  

     

    • 고층 자료

      • 기상자료개방포털에서 원드프로파일러 10분 풍향, 풍속을 1시간 평균 수행

      • 강릉의 경우 해당 지점 자료를 이용하나 서울 중구에서는 33 km 떨어진 파주 지점 자료를 사용

     

    • 배출량

      • 국립환경과학원의 국가대기오염물질 배출량 서비스에서 2013년 서울특별시 (중구), 강원도 (강릉시)에 대한 미세먼지 (PM10) 배출량 이용

     

    [결과]

    • AERMOD inp 자료

      • 상승 온도 (200, 425, 1000), 상승 속도 (1, 15, 100 m/s), 굴뚝 높이 (50, 100, 200 m)에 따른 01/24 시간 배출량

     

    • 배출원에서 상승 온도에 따른 농도의 변화

      • 1월 (2014년 01월 01-03일) + 지상/고층/배출량/지형효과

      • 배출량의 상승 온도가 증가함에 따라 농도가 낮음

      • 상승 온도가 높으면 부력을 통해 빠르게 오염물질 확산

     

    • 배출원에서 상승 속도에 따른 농도의 변화

      • 1월 (2014년 01월 01-03일) + 지상/고층/배출량/지형효과

      • 배출량의 상승 속도가 증가함에 따라 농도가 낮음

      • 상승 온도와 마찬가지로 상승 속도가 높으면 부력을 통해 빠르게 오염물질 확산

     

    • 배출원에서 굴뚝 높이에 따른 농도의 변화

      • 1월 (2014년 01월 01-03일) + 지상/고층/배출량/지형효과

      • 배출량의 굴뚝 높이가 증가함에 따라 농도가 낮음

      • 굴뚝 높이가 높으면 지면에서 부딪혀 올라가는 양 (Reflected Plume)이 적으므로 농도가 낮음

     

    • AERMOD inp 자료

      • 강릉 및 서울 중구에 따른 01/06/12/24 시간 배출량

     

    • 강릉 및 서울 중구에서 지형 효과에 따른 농도의 변화

    • 강릉

     

    • 서울 중구

     

    • AERMOD inp 자료

      • 강릉 및 서울 중구에서 계절별 (봄, 여름, 가을, 겨울)에 따른 배출량

     

    • 강릉에서 계절별에 따른 농도의 변화

      • 1월에는 시베리아 고기압 영향으로 서풍, 북서풍 영향 > 동쪽, 남동쪽으로 확산

      • 7월에는 북태평양 고기압 영향으로 동풍이나 남동풍 영향 > 서쪽, 북서쪽으로 확산

     

    • 서울 중구에서 계절별에 따른 농도의 변화

      • 1, 7월에 강릉과 달리 계절에 관계없이 서풍이나 남서풍이 붐
      • 서울 중구의 남부와 북부가 산으로 둘러싸여 있어 종관적 영향보다는 국지적 영향 받음

     

    • 강릉 및 서울 중구에 계절별에 따른 최대 농도의 변화

      • 각 계절별 지형효과를 고려 (o), 지형효과를 고려하지 않음 (x)

      • 시간에 따라 최대농도는 감소함 

      • 강릉의 경우 지형효과에 관계없이 최대 농도가 변화하지 않으나 서울 중구는 최대 농도가 급변함

      • 이는 서울 중구가 복잡한 산악지형이기 때문에

     

     관련 자료

      • AERMOD 모델을 이용한 강릉 및 서울 중구의 대기오염 확산 비교 연구

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기