태풍 너구리를 사례로 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
파일 크기가 조금 있어서 시간이 약간 걸립니다만.
결과는 다음과 같습니다.
결론적으로 제주도 남쪽에서 급작스럽게 방향을 전환하여 일본을 통과하는 양상이 재현이 되고 있습니다..