태풍 너구리를 사례로 WRF 구동하기 (3) WRF

발췌 : http://eroth.egloos.com/4174500

이번포스팅에서는 WRF 모델 실험을 수행하고, 850hPa면의 지위고도를 NCL로 그린 후에 gif 파일로 만들도록 하겠습니다.

먼저 WRF/WRFV3/test/em_real 디렉토리로 이동하여 과거 실험의 결과와 namelist.input 파일을 old 디렉토리에 저장하고 기존에 사용한 met_em.d01* 파일은 삭제하도록 하겠습니다.

cd $HOME/WRF/WRFV3/test/em_real
mkdir old
mv wrfout_d01* old
cp namelist.input old
rm met_em.d01*

다음으로는 새로 생성한 met_em.d01 파일을 현재 디렉토리로 링크시키고 파일을 확인하도록 하겠습니다..

ln -sf $HOME/WRF/WPS/met_em.d01* .
ls -ltrh met_em.d01*

아래와 같이 파일이 링크됩니다.

다음으로는 namelist.input 파일을 열고, 정보를 수정합니다.

gedit namelist.input

먼저  &time_control 에서는 run_hours, start_year, start_month, start_day, start_hour, end_year, end_month, end_day, end_hour를 수정합니다.

(3행) : run_days를 3으로 바꾸고, run_hours를 0으로 두어도 무방합니다.
 run_hours                           = 72,

(6-9행)
 start_year                          = 2014, 2000, 2000,
start_month                         = 07,   01,   01,
start_day                           = 08,   24,   24,
start_hour                          = 00,   12,   12,

(12-15행)
end_year                            = 2014, 2000, 2000,
end_month                           = 07,   01,   01,
end_day                             = 11,   25,   25,
end_hour                            = 00,   12,   12,

다음으로는 &domains에서 e_we와 e_sn을 namelist.wps와 같게 수정합니다. (36-37행)

 e_we                                = 134,    112,   94,
e_sn                                = 111,    97,    91,

수정이 완료되면 파일을 저장한 후 닫은 다음,

./real.exe

을 입력합니다(아마 기본 케이스에 비해 시간이 아주 조금 더 걸릴 겁니다. )

작업 완료 후에는

gedit rsl.error.0000

을 입력한 후 파일의 마지막을 살펴서 제대로 수행되었는지 확인합니다.

 

제대로 수행되었다면,

mpirun -np 2 wrf.exe

을 입력하여 모델 적분을 수행합니다. 조금 여유를 갖고 기다리세요.

저의 경우, 약 1시간 이내에 적분이 완료되었습니다. 싱글 CPU 사용인 경우 3시간 넘게 걸릴 듯 합니다.

ls -ltrh wrfout*

을 입력하여 생성된 파일의 용량을 확인합니다. 저의 경우 672m 정도 되는군요. 그리고

gedit rsl.error.0000

을 입력하고 파일의 마지막을 살펴서 적분이 제대로 되었는지 확인합니다.

작업이 잘 처리가 되었네요.

그러면 이제 NCL을 활용하여 850hPa 등압면 지위고도를 그리도록 하겠습니다.
먼저 gedit를 이용하여 test.ncl이라는 코드를 생성합니다.

gedit test.ncl

이후에 아래 내용을 복사해서 붙여넣기 한 후 저장합니다.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; this code was modified from source: http://www2.mmm.ucar.edu/wrf/OnLineTutorial/Graphics/NCL/Examples/LEVELS_INTERP/wrf_PressureLevel1.ncl
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   Example script to produce plots for a WRF real-data run,
;   with the ARW coordinate dynamics option.
;   Interpolating to specified pressure levels

load “$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl”
load “$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl”

begin
;
; The WRF ARW input file.
; This needs to have a “.nc” appended, so just do it.
a = addfile(“wrfout_d01_2014-07-08_00:00:00.nc”,”f”)

; We generate plots, but what kind do we prefer?
; type = “ps”
type = “png”
wks = gsn_open_wks(type,”Neoguri”)

; Set some Basic Plot options
res = True
res@MainTitle                   = “Neoguri”
res@Footer = False

pltres = True
mpres = True
mpres@mpGeophysicalLineColor      = “Black”
mpres@mpNationalLineColor         = “Black”
mpres@mpUSStateLineColor          = “Black”
mpres@mpGridLineColor             = “Black”
mpres@mpLimbLineColor             = “Black”
mpres@mpPerimLineColor            = “Black”
mpres@mpGeophysicalLineThicknessF = 2.0
mpres@mpGridLineThicknessF        = 2.0
mpres@mpLimbLineThicknessF        = 2.0
mpres@mpNationalLineThicknessF    = 2.0
mpres@mpUSStateLineThicknessF     = 2.0

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; What times and how many time steps are in the data set?
times = wrf_user_getvar(a,”times”,-1)  ; get all times in the file
ntimes = dimsizes(times)         ; number of times in the file

; The specific pressure levels that we want the data interpolated to.
pressure_levels = (/ 850./)   ; pressure levels to plot
nlevels         = dimsizes(pressure_levels)     ; number of pressure levels

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

do it = 0,ntimes-1             ; TIME LOOP

print(“Working on time: ” + times(it) )
res@TimeLabel = times(it)   ; Set Valid time to use on plots

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; First get the variables we will need

p  = wrf_user_getvar(a, “pressure”,it) ; pressure is our vertical coordinate
z  = wrf_user_getvar(a, “z”,it)        ; grid point height

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

do level = 0,nlevels-1                 ; LOOP OVER LEVELS

pressure = pressure_levels(level)

z_plane  = wrf_user_intrp3d( z,p,”h”,pressure,0.,False)

; Plotting options for Geopotential Heigh
opts_z = res
opts_z@cnLineColor = “Blue”
opts_z@gsnContourLineThicknessesScale = 3.0

; MAKE PLOTS

if ( pressure .eq. 850 ) then   ; plot temp, rh, height, wind barbs
opts_z@ContourParameters = (/ 20.0 /)
contour_height = wrf_contour(a,wks,z_plane,opts_z)
plot = wrf_map_overlays(a,wks,(/contour_height/),pltres,mpres)
end if

delete(opts_z)

end do      ; END OF LEVEL LOOP

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

end do        ; END OF TIME LOOP

end

기존에 활용한 WRF-ARW 홈페이지의 예제 스크립트를 수정한 파일입니다.

다음으로는

ncl test.ncl

을 입력하여 850hPa 지위고도 장을 생성합니다.

이후

ls -ltrh *.png

를 입력하면, 3시간 간격으로 850hPa 지위고도를 나타내는 png 파일의 목록이 뜹니다.

아래 명령어를 입력하여 gif 파일을 만들어봅시다.

convert -delay 20 -loop 0 *.png neoguri.gif

파일 크기가 조금 있어서 시간이 약간 걸립니다만.

결과는 다음과 같습니다.

결론적으로 제주도 남쪽에서 급작스럽게 방향을 전환하여 일본을 통과하는 양상이 재현이 되고 있습니다..

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...