티스토리 뷰

수치모형/AGCMs

WRF ARW v3.4 설치기

김동훈 2012. 6. 12. 20:46

참고1 : WRF v4로 태풍 솔릭(Soulik) 모의해 보기 

참고2 : WRF v3.1 설치기는 http://dhkim.tistory.com/254 를 보세요.

[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 된다.]

  1. tar -xvzf WRFV3.4.TAR.gz; tar -xvzf WPS3.4_r675.TAR.gz
  2. cd WRFV3; ./configure            -> 1번 선택, 1번 선택
  3. ./compile em_real >& compile.log
  4. cd ../WPS; ./configure            -> 5번 선택
  5. ./compile >& compile.log
  6. ./geogrid.exe; ./ungrib.exe; ./metgrid.exe
  7. cp ./met_em* ../WRFV3/run/.; cd ../WRFV3/run; ./real.exe
  8. ./wrf.exe


--------------------------------------------------------------------------------------------
WRF에는 두가지 버전이 있다. ARW와 NMM...
ARW는 연구용이고 NMM은 현업용이라고 생각하면 구별하기 쉬우며,
NMM에서는 어려운, 즉 ARW만이 할 수 있는 것은 다음과 같다.

  • 지역 기후 또는 계절 단위의 현상 연구
  • 화학 모형과의 결합
  • 전지구 모의 (지역모형을 전지구 영역으로 확장하여 모의할 수 있음)
  • 다양한 규모의 이상적인 모의 (예: convection, baroclinic waves, large eddy simulations)
  • 자료동화 연구
  • 그래픽 및 분석 도구로써 NCL과 ARWPost를 사용 가능


WRF 시스템은 다음과 같이 구성된다.

  • WRF 전처리도구: WPS (WRF Pre-processing System)
  • WRF 모형 : ARW와 NMM 버전이 있다.
  • 과학가시화 도구
  • 변분자료동화 : WRF-Var
  • 화학 결합 모형 : WRF-Chem


지금부터 WRF ARW v3.4을 설치해 보자. (이상적인 경우가 아닌 실제 지형의 경우를 설치함)

  1. WRF 모형의 다운로드 : http://www.mmm.ucar.edu/wrf/users/download/get_source.html
    처음 사용자는 홈페이지 아래에 있는 "New Users"를 클릭하고 이메일 주소를 등록한 후 받으면 되며,
    기존 사용자는 "Returning Users"를 클릭하고 등록된 이메일 주소로 로그인하여 받으면 된다.
    소스코드는 ARW와 NMM 버전이 하나의 화일에 함께 포함되어 있으며,
    데이타는 각각 따로 받아야 한다.
     
  2. 다음과 같이 WRF의 홈디렉토리를 생성하고 WRF와 WPS의 압축파일을 풀어준다.
    % mkdir WRF; cd WRF
    % tar -xvzf ../WRFV3.4.TAR.gz                    -> "WRFV3" 디렉토리가 생성된다.
    % tar -xvzf ../WPSV3.4_r675.TAR.gz             -> "WPS" 디렉토리가 생성된다.
    컴파일 순서는 WPS가 WRFV3의 objects 화일들을 참조하기 때문에 WRFV3 부터 컴파일한다.
     
  3. 사용자 시스템에 맞는 환경으로 컴파일 하기 위하여 WRFV3.1의 환경설정을 한다.
    우선, 환경변수에 "NETCDF" 가 있는지 확인하고 없으면 다음과 같이 설정해 준다.
    % setenv NETCDF /usr/local/netcdf    또는  % setenv NETCDF \$NETCDFHOME
    WRF의 홈디렉토리로 이동하여 환경설정을 한다.
    % cd WRFV3; ./configure
    - 1~34 까지의 선택항목이 나오는데 다음을 참조하여 선택한다.
      (serial) : 1개 CPU를 사용할 경우. 처음 사용자는 이것으로 선택하여 나중에 병렬화를 하는 것이 좋음
      (smpar) : OpenMP를 사용할 경우 (단일보드나 단일노드 내에서의 병렬화로 생각하면 됨)
      (dmpar) : MPI를 사용할 경우 (다중보드나 다중노드간의 병렬화를 할 수 있음)
      (dm+sm) : OpenMP와 MPI를 동시에 사용할 경우. 노드 내에는 OpenMP로, 노드 간은 MPI로 사용
      
    여기에서는 최근 가장 많이 사용되고 있는 intel fortran compiler를 이용하는 13번을 선택하여 진행함. (13. Linux x86_64, i486 i586 i686, ifort compiler with icc (serial))
    - Compile for nesting? 항목은 1번(basic)을 선택한다.
      nesting 이란 하나의 격자체계 내에 또 다른 작은(고해상도) 격자체계를 구성하여 연결하는 것을 말함
     
  4. configure가 끝나면 configure.wrf 가 생성된다.
    vi 등의 에디터로 이 화일을 열어 수정할 곳을 수정하면 되는데
    처음 시작할 때 NETCDF 환경변수가 잘못되었거나 설정을 해주지 않은 경우는
    228줄에 있는 "NETCDFPATH"를 시스템에 설치되어 있는 위치로 알맞게 수정해 준다. 
     
  5. 이제 컴파일을 해야 하는데 다음과 같은 명령으로 소스를 컴파일한다.
    % ./compile TEST_NAME >& compile.log
    TEST_NAME 에는 다음의 경우 중 하나를 선택하면 되며 여기에서는 em_real을 사용한다.
    - em_b_wave     ; 3D baroclinic waves
    - em_esmf_exp  ;
    - em_fire            ;
    - em_grav2d_x    ; 2D gravity current
    - em_heldsuarez ; 3D global case
    - em_hill2d_x      ; 2D flow over a bell-shaped hill
    - em_les            ; 3D large-eddy simulation
    - em_quarter_ss ; 3D quarter-circle shear supercell simulation
    - em_real           ; Real Data Case
    - em_scm_xy     ; Single column model
    - em_seabreeze2d_x ; 2D full physics seabreeze
    - em_squall2d_x ; 2D(x,y) squall line example for Eulerian mass coordinate model
    - em_squall2d_y ; 2D(x,y) squall line example for Eulerian mass coordinate model
    - exp_real          ;
    - nmm_real        ;
    compile.log의 내용 중 "Error" 또는 "warnings" 등의 단어를 찾아보고 없으면 컴파일을 성공한 것이다.
    그렇지 않으면, 문제가 있는 곳을 모두 해결할 때까지 다음과 같이 반복하여 컴파일 해야 한다.
    % ./clean -a ; ./configure
    % ./compile TEST_NAME >& compile.log
    컴파일 시간은 시스템에 따라 다르지만, Intel Xeon X5450(3Ghz)에서는 약 10~20분 정도 걸린다.
     
  6. 컴파일이 성공하면 다음의 실행화일들이 생성된다.
    - main/ndown.exe ; 한방향 nesting에 사용
    - main/nup.exe     ; Upscaling - WRF-Var(자료동화)에 사용. 잘 사용되지 않음.
    - main/real.exe     ; 실제 자료를 사용한 초기장 생성에 사용.
                                 이상적인 실험일 경우는 ideal.exe임.
    - main/tc.exe       ;
    - main/wrf.exe   ; WRF 모형의 실행 화일이며 이것으로 시간 적분을 수행
    이 실행화일들은 각각 "run/"과 "test/em_real/" 아래에 링크되어 사용된다.
     
  7. WRF 모형을 모두 설치하였으므로,
    이제부터는 전처리 시스템인 WRF Preprocessing System(WPS)를 설치한다.
    % cd ../WPS; ./configure
    1~26 까지의 선택항목이 나오는데 GRIB2 가 설치되어 있으면 13번, 그렇지 않으면 14번을 선택한다.
    그러면, "configure.wps"가 생성되는데, 화일의 내용 중에 "NCARG_LIBS"나 "WRF_DIR" 등이 제대로 설정되어 있는지 확인한다.
     
  8. 다음과 같이 컴파일을 실행한다.
    % ./compile >& compile.log
    WPS에서는 X11 라이브러리를 사용하는데 시스템에 따라 기본 X11 라이브러리 디렉토리가 32비트로 설정되는 경우가 있다.
    이런 경우 compile.log 화일 내에 "Error"가 나타나는데, 이것은 컴파일 하기 전에 configure.wps의 19줄에 있는 "-L/usr/X11R6/lib"를 "-L/usr/X11R6/lib64"로 수정한 후 컴파일 하면 된다.
    컴파일을 성공하면 다음의 실행화일들이 생성된다.
    - geogrid.exe     ; namelist.wps에 설정되어 지역에 맞추어 terrestrial data 생성
    - ungrib.exe      ; GRIB 형식의 기상 자료를 읽어서 WRF에서 사용할 수 있는 중간 형식으로 변환
    - metgrid.exe ; ungrid 등으로 생성된 기상 입력자료의 중간변환 자료를 격자체계에 맞게 수평 내삽 (연직 내삽은 real.exe에서 수행됨)
     
  9. 자, 이제 WRF를 실행할 모든 준비를 마쳤다. 모형의 실행 순서는 다음과 같다.

  10. 먼저 "geogrid.exe"를 실행하여 모형 격자에 맞는 지형데이터를 만들어야 하는데, 이에 필요한 원본 지형데이터를 다음의 링크에서 가져 온다.
    http://www.mmm.ucar.edu/wrf/users/download/get_sources.html 의 중간 부분에 있는
    WRF Preporcessing System input data (full set, 15.2 GB when untared)의
    "geographical data in all available resolution (30", 2', 5',and 10')" 자료를 가져왔다.
    직접 다운 받으려면 다음 링크를 클릭하여 받으면 된다.
    http://www.mmm.ucar.edu/wrf/src/wps_files/geog.tar.gz (약 726MB)
    이것을 WRF 디렉토리 아래의 "data" 디렉토리에 압축을 풀어준다.
    geog.tar.gz에 포함되어 있는 static terrestrial data의 내용은 다음과 같다.
    - albedo_ncep : monthly surface albedo
    - greenfrac : monthly vegetation fraction
    - islope : slope index
    - landuse : land use category (30", 2', 5', and 10' res.)
    - maxsnowalb : maximum snow albedo (30", 2', 5', and 10' res.)
    - modis_landuse_20class_30s : MODIS landuse (Noah LSM only)
    - orogwd : data for gravity wave drag schemes
    - soiltemp : annual mean deep soil temperature (30", 2', 5', and 10' res.)
    - solitype_bot : bottom-layer soil type (30", 2', 5', and 10' res.)
    - soiltype_top : top-layer soil type (30", 2', 5', and 10' res.)
    - topo : topography height (30", 2', 5', and 10' res.)
     
  11. 모형의 격자 구조를 바꾸려면 WPS 디렉토리의 "namelist.wps" 화일의 내용 중 "&geogrid" 부분을 바꾸어야 한다. 자세한 사항은 WRF 홈페이지 또는 사용자 매뉴얼을 참고하기 바란다.
    이 실험에서는 &geogrid 부분의 "geog_data_path = " 부분을 바로 위에서 압축을 푼 디렉토리로 수정해 준다. (ex. geog_data_path = '/home/user/WRF/data/geog')
     
  12. 설정한 지역의 확인을 위하여 "./util/plotgrid.exe"를 실행해 본다.
    NCAR Graphics용 gmeta 화일이 생성된다. (%idt gmeta 로 확인해본다)
    만약, util/plotgrid.exe 실행화일이 없다면, 위 8번의 X11 관련 문제가 발생한 것이니 compile.log를 보고 문제를 해결한 후 처음부터 다시 컴파일을 해 본다.
    기본적으로 WRFV3와 WPS, NCARG 모두가 같은 컴파일러를 사용한 것이어야 한다.
     
  13. "./geogrid.exe"를 실행하면 "geo_em.dxx.nc" 화일이 생성된다.
    여기에서 'xx'는 지역별로 생성되는데 설정된 지역이 2개로 nesting되어 있다면 01과 02가 될 것이다.
    ncview 등으로 생성된 nc 화일에 문제가 없는지 확인해 본다.
     
  14. GRIB 자료를 가지고 있다면 ungrib.exe를 사용하여 WRF가 사용할 수 있는 중간형식으로 만들어 준다.
    자세한 사용법은 http://www.mmm.ucar.edu/wrf/OnLineTutorial/Basics/UNGRIB/index.html 를 참조하면 되고, 이 설명에서는 http://www.mmm.ucar.edu/wrf/src/data/avn_data.tar.gz 의 자료 또는
    http://www.mmm.ucar.edu/wrf_tmp/WRF_OnLineTutorial/SOURCE_DATA/JAN00.tar.gz 의 자료를 사용해 본다.
    이 자료를 WRF 홈디렉토리의 data 디렉토리에 풀어준다. (ex. /home/user/WRF/data/)
    ungrib.exe가 AVN 자료의 테이블 정보와 자료를 참조하기 위하여 다음과 같은 방법으로 링크시킨다.
    %ln -s ungrib/Variable_Tables/Vtable.AVN0P5WRF Vtable
    %./link_grib.csh ../data/avn/fnl*
    이렇게 하면 Vtable의 링크와 GRIBFILE.AAA, GRIBFILE.AAB, GRIBFILE.AAC 등의 링크가 생긴다.
    이제 namelist.wps의 start_date와 end_date를 AVN 자료의 날짜로 수정한 후 다음과 같이 ungrib.exe를 실행시키면, FILE:2000-01-24_12 와 FILE:2000-01-24_18 등의 화일이 생성된다.
    %./ungrib.exe >& ungrib.output
     
  15. metgrid.exe는 기상자료를 읽어 수평내삽을 하여 격자체계에 맞추는 역할을 한다. 다시 말해서, geogrid.exe에서 생성된 geo_em.dxx.nc과 ungrid.exe에서 생성된 FILE:YYYY-MM-DD_HH를 읽어서 WRF의 입력자료인 met_em.dxx.YYYY-MM-DD_HH:00:00.nc를 생성한다.
    %./metgrid.exe
     
  16. 이제 WRF모의를 완료하기까지 다음 2단계가 남았다.
    - real.exe : metgrid.exe에서 생성된 met_em* 화일의 수직 내삽을 하며,
                     경계치와 초기치 화일을 생성한다.
    - wrf.exe : 모형의 예측을 수행한다.
     
  17. WRF를 실행하기 위하여 WRF의 실험디렉토리인 WRFV3/test/em_real 또는 WRFV3/run 으로 이동한다. 이 두 디렉토리는 필요한 화일이 모두 같이 링크되어 있기 때문에 어느쪽으로 이동하여도 상관없다. 이동하기 전에 metgrid.exe에서 생성된 met_em* 화일을 복사 또는 링크하고 이동한다.
    %cp ./met_em* ../WRFV3/run/. ; cd ../WRFV3/run
    real.exe의 입력화일인 namelist.input를 열어서 시작 시간 등을 확인하여 수정해 준 후 real.exe를 실행하면, wrfinput_dxx 와 wrfdby_dxx 가 생성된다. 여기에서 dxx는 nesting한 domain의 숫자이며 nesting을 하지 않은 경우는 d01 만이 생성된다.
    이 설명에서는 namelist.input의 내용 중 start time을 2000년 1월 24일 12시로, end time을 2000년 1월 25일 00시로 수정하고 "num_metgrid_soil_levels = 0"
     
  18. 마지막으로, wrf.exe를 실행하면 "wrfout_dxx_[initial_date]" 의 결과화일을 얻을 수 있다.
    이 화일들은 WRF의 postprocessing 도구(NCL, RIP4, ARWpost, VAPOR 등)를 이용하여 분석하면 된다.
     
  19. Good luck !