[{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Anaconda/","section":"태그","summary":"","title":"Anaconda","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Jupyter/","section":"태그","summary":"","title":"Jupyter","type":"tags"},{"content":" 0. Jupyter 환경의 PyTorch 개발 환경 갖추기 순서 # Jupyter 환경의 PyTorch 개발 환경을 갖추기 위해서는 다음과 같은 순서로 관련 프로그램과 패키지를 설치하여야 합니다.\nAnaconda 설치 PyTorch 설치 Jupyter 실행 1. Anaconda 설치 # Anaconda 는 수학과 과학 분야에서 사용되는 여러 패키지들을 묶어 놓은 파이썬 배포판으로써, 유명한 Numpy, SciPy, Pandas, Matplotlib 등을 비롯한 많은 패키지들을 기본적으로 포함하고 있습니다. Anaconda는 특히 최근에 데이타 사이언스와 머신 러닝 분야에서 파이썬을 사용하기 위해 기본적으로 설치하는 배포판이 되었습니다.\nAnaconda는 수백가지의 패키지를 기본적으로 제공하고 있으므로 용량이 크기 때문에 사용자 컴퓨터의 자원이 많지 않거나 꼭 필요한 패키지만을 원하는 사용자는 Miniconda 를 설치하면 됩니다. Miniconda는 기본적으로 제공되는 패키지가 적은 만큼 사용자가 필요한 패키지를 수동으로 설치해주어야 하는 경우가 많지만, 필요한 패키지만을 깔끔하게 관리하고자 하는 사용자들이 많이 사용하고 있습니다.\n1-1. Anaconda 다운로드 # Anaconda를 설치하기 위해서는 https://www.anaconda.com/ 웹사이트에서 자신의 OS에 맞는 프로그램을 다운받아서 설치하면 됩니다. 여기에서는 Windows 10을 기준으로 설명하지만, 처음 설치과정 외에는 리눅스나 맥킨토시 환경에서도 동일하게 적용할 수 있습니다.\nAnaconda 다운로드 페이지(https://www.anaconda.com/distribution/) 에서 OS에 맞는 설치 파일을 내려받습니다. 현재 시점(2019년 12월)에서 anaconda의 최신 버전은 2019.10 입니다.\n파이썬은 2.x 버전과 3.x 버전으로 두 가지가 있는데, 파이썬 2.x 버전의 개발이 이미 중단됐으므로 3.x 버전을 추천합니다.\n1-2. Anaconda 설치 # 내려받은 설치 파일(Anaconda3-2019.10-Windows-x86_64.exe)을 실행합니다. 첫 설치화면에서 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭하면 [License Agreement] 화면이 나오는데 \u0026ldquo;I Agree\u0026quot;를 클릭합니다.\n[Select Installation Type] 화면은 설치 유형을 선택하는 화면입니다. Anaconda 측에서는 현재 사용자 영역에만 설치하는 옵션을 추천한다. 모든 사용자 옵션은 관리자 권한을 가진 사용자의 경우에 선택하면 됩니다. 여기에서는 [Just Me (recommended)]를 선택하고 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭합니다. [Choose Install Location] 화면은 설치할 경로를 지정하는 화면입니다. \u0026ldquo;Destination Folder\u0026quot;에 설치할 디렉토리 위치를 지정하고 \u0026ldquo;Next \u0026gt;\u0026ldquo;를 클릭합니다.\n[Advanced Installation Options] 화면은 추가 설치 옵션을 선택하는 화면입니다. Anaconda의 설치 위치를 환경변수에 추가하고, 기본 파이썬 인터프리터로 현재 설치한 환경을 사용하게 설정해줍니다. 다른 버전의 Anaconda 가 설치되어 있지 않다면 \u0026ldquo;Add Anaconda to my PATH environment variable\u0026quot;와 \u0026ldquo;Register Anaconda as my default Python 3.7\u0026quot;를 모두 체크하고 \u0026ldquo;Install\u0026quot;을 클릭합니다.\n[Installing] 화면에서 진행과정을 보여 주면서 Anaconda의 전체 패키지가 설치됩니다.\n1-3. Python 가상 환경 (Vitural Environment) 설치 # Anaconda 설치가 끝나면 바탕화면의 윈도우 아이콘을 눌러 프로그램 목록에서 [Anaconda Prompt]를 클릭합니다. 지금부터는 윈도우나 맥킨토시, 리눅스에서도 동일한 과정으로 수행할 수 있습니다.\n여기에서는 Python 가상 환경 설치, 각종 라이브러리 설치, 스크립트 실행 등의 작업을 진행할 것입니다. Python의 가상 환경이란, 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. Python은 버전에 따라서 사용되는 패키지들의 호환성이 다르고, 패키지 간에 충돌할 가능성이 있으므로 Anaconda에서는 사용자 환경마다 독립적인 가상 환경을 만들어서 독립성을 보장하는 도구를 제공합니다. 또한 가상환경 상에서는 사용자가 필요한 패키지만을 설치하여 불필요한 패키지가 설치되는 것을 막을 수 있습니다. 이러한 이유들로 프로젝트 별로 각각의 가상환경을 만들고 이 환경에서 개발하는 것이 바람직합니다.\n여기에서는 \u0026ldquo;pytorch\u0026quot;라는 이름으로 가상환경을 만들도록 하겠습니다.\nconda create -n pytorch python=3.7 \u0026ldquo;-n\u0026rdquo; 옵션의 다음에 적는 이름은 만들어줄 가상환경의 이름이고, \u0026ldquo;python=3.7\u0026rdquo; 은 python의 버전을 3.7로 사용하겠다는 의미 입니다. 현재는 python이 v3.8 까지 제공되고 있지만, PyTorch가 python v3.7 까지 지원하고 있으므로 이에 맞게 설치해 줍니다. 이를 실행 시키면 \u0026ldquo;Proceed ([y]/n)?\u0026rdquo; 이라는 메세지가 나오는데 \u0026ldquo;y\u0026quot;를 입력하고 엔터를 칩니다.\n필요한 패키지가 자동으로 설치되고 나면, 다음의 명령으로 새로 만든 가상환경을 활성화 또는 비활성화 할 수 있습니다.\n(base) path\u0026gt; conda activate pytorch # 가상환경 활성화 (pytorch) path\u0026gt; conda deactivate # 가상환경 비활성화 (base) path\u0026gt; \u0026ldquo;conda activate pytorch\u0026rdquo; 는 만들어준 \u0026ldquo;pytorch\u0026rdquo; 라는 이름의 가상환경을 활성화 하는 명령이고,\u0026ldquo;conda deactivate\u0026rdquo; 는 활성화된 가상환경을 나와서 원래대로 돌아가는 명령입니다. 명령을 수행할 때마다 프롬프트의 맨 앞의 내용이 바뀌는 것을 알 수 있습니다.\n2. PyTorch 및 관련 라이브러리들 설치 # Anaconda 에서는 각 종 패키지와 라이브더리들을 손 쉽게 설치할 수 있는 도구를 제공합니다. PyTorch도 다음의 명령으로 간단하게 설치할 수 있습니다. 사용자의 시스템에 장착되어 있는 NVIDIA의 그래픽 카드 사용 유무에 따라서 알맞은 명령을 실행하여 설치합니다.\n(base) path\u0026gt; conda activate pytorch # NVIDIA의 그래픽 카드가 장착된 시스템에서 GPU를 사용하고자 할 경우: (pytorch) path\u0026gt; conda install pytorch torchvision cudatoolkit=10.1 -c pytorch # CPU 만을 사용하고자 할 경우: (pytorch) path\u0026gt; conda install pytorch torchvision cpuonly -c pytorch 이 외에 python에서 자주 사용되는 jupyter와 pandas, matplotlib 등의 라이브러리를 다음과 같이 설치합니다.\n(pytorch) path\u0026gt; conda install jupyter pandas matplotlib 이제 모든 필요한 패키지와 라이브러리들을 설치하였습니다. 시스템에 현재 구성되어 있는 가상환경의 종류와 가상환경 내에서 설치된 패키지의 종류와 버전들의 정보는 다음과 같은 명령으로 알아 볼 수 있습니다.\n(pytorch) path\u0026gt; conda info --envs # 설치된 가상환경에 대한 정보 # conda environments: # base D:\\Users\\user\\Anaconda3 pytorch * D:\\Users\\user\\Anaconda3/envs/pytorch (pytorch) path\u0026gt; conda list # 현재 가상환경에서 설치된 패키지들의 이름과 버전 정보 # packages in environment at D:\\Users\\user\\Anaconda3: # # Name Version Build Channel _ipyw_jlab_nb_ext_conf 0.1.0 py37_0 alabaster 0.7.12 py37_0 anaconda 2019.10 py37_0 3. Jupyter (IPython) Notebook 또는 Lab 실행 # Jupyter Notebook 또는 Lab 은 오픈소스 웹 애플리케이션으로 라이브 코드, 등식, 시각화와 설명을 위한 텍스트 등을 포함한 문서를 만들고 공유하도록 할 수 있습니다. 주로 데이터 클리닝과 변형, 수치 시뮬레이션, 통계 모델링, 머신 러닝 등에 사용할 수 있습니다.\nPython, R, Julia, Scala 등 데이터 과학 분야에서 인기있는 40종의 다양한 프로그래밍 언어를 지원합니다. 또한, 이메일과 드롭박스, 깃허브 등으로 공유할 수 있습니다. 가장 큰 장점은 실시간으로 인터렉티브하게 데이터를 조작하고 시각화 할 수 있도록 해 준다는 것입니다.\n\u0026ldquo;ipython notebook\u0026quot;의 영감을 얻어 개발된 \u0026ldquo;jupyter notebook\u0026quot;은 어디에서나 웹 브라우저만 있으면 개발을 할 수 있다는 매력적인 기능 때문에 개발자들에게 선풍적인 인기를 얻었습니다. 그러나 하나의 창에 하나의 프로그램만을 편집해야 하는 불편함이 있어서 차세대 웹기반 사용자 인터페이스를 사용한 \u0026ldquo;jupyter lab\u0026quot;이 추가적으로 개발되었습니다. 현재는 두 가지 버전이 모두 사용가능하며 사용자의 취향에 따라서 선택하여 사용하면 됩니다.\n3-1. Jupyter Nobetbook 또는 Lab 시작 # Anaconda Prompt 터미널에서 다음과 같이 실행하면 서버가 실행되면서 자동적으로 explorer가 실행됩니다.\n(base) path\u0026gt; conda activate pytorch (pytorch) path\u0026gt; jupyter notebook # jupyter notebook 으로 실행할 경우 (pytorch) path\u0026gt; jupyter lab # jupyter lab 으로 실행할 경우 3-2. Web browser based Python IDE # Jupyter notebook 또는 lab 의 web browser 화면에서 사용자가 편집할 수 있는 각각의 박스를 \u0026ldquo;cell\u0026rdquo; 이라고 합니다. \u0026ldquo;cell\u0026quot;은 세 가지 종류로 바꾸어 편집할 수 있습니다. \u0026ldquo;Code\u0026quot;와 \u0026ldquo;Markdown\u0026rdquo;, \u0026ldquo;Raw\u0026quot;가 그것 입니다.\n[Cell: Code] # 파이썬의 코드를 각 셀에 원하는 만큼을 작성하여 실행하면 메모리 상에 반영된다. 위, 아래 위치가 달라도 실행한 스텝 번호(In [번호])가 높을 수록 최근에 수행된 영역이다. [Cell: Markdown] # Markdown language 기반으로 Document 작성 (Wikipedia 처럼 작성 방식) 코드에 대한 설명이 가능하다 수학수식 표현도 가능(Mathjax) [Cell: Raw] # 형식이 없는 Plain text 형식으로 보이는 셀 입니다. 실행하지 않는 코드나 메모 용도로 사용합니다.\n3-3. 운영체제와 함께 사용하기 # Jupyter에서 운영체제의 자체 명령어를 실행하기 위해서는 !(명령어) 로 수행합니다. - END - ------ ","date":"2019년 12월 6일","externalUrl":null,"permalink":"/2019/12/AJP/","section":"글","summary":"Windows 10 기준으로 Anaconda를 설치하고 conda 가상환경에 PyTorch를 올린 뒤 Jupyter Notebook/Lab에서 쓰기까지, 설치 화면을 하나씩 따라가며 정리했습니다.","title":"Jupyter 환경의 PyTorch 개발 환경 갖추기","type":"posts"},{"content":"Numerical Weather Prediction \u0026amp; Nature Neural Network\n대기와 해양을 수치로 푸는 일, 그리고 그 자료를 신경망에 먹이는 일에 관한 기록입니다. WRF·ROMS·FVCOM 같은 모델을 실제로 설치하고 돌려 본 과정과, 순환신경망으로 엘니뇨와 풍속을 예측해 본 연구를 정리해 두었습니다.\n","date":"2019년 12월 6일","externalUrl":null,"permalink":"/","section":"NWP \u0026 NNN","summary":"Numerical Weather Prediction \u0026 Nature Neural Network\n대기와 해양을 수치로 푸는 일, 그리고 그 자료를 신경망에 먹이는 일에 관한 기록입니다. WRF·ROMS·FVCOM 같은 모델을 실제로 설치하고 돌려 본 과정과, 순환신경망으로 엘니뇨와 풍속을 예측해 본 연구를 정리해 두었습니다.\n","title":"NWP \u0026 NNN","type":"page"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/Python/","section":"태그","summary":"","title":"Python","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/PyTorch/","section":"태그","summary":"","title":"PyTorch","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD/","section":"태그","summary":"","title":"개발환경","type":"tags"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/posts/","section":"글","summary":"","title":"글","type":"posts"},{"content":"","date":"2019년 12월 6일","externalUrl":null,"permalink":"/tags/","section":"태그","summary":"","title":"태그","type":"tags"},{"content":"","date":"2019년 7월 25일","externalUrl":null,"permalink":"/tags/ROMS/","section":"태그","summary":"","title":"ROMS","type":"tags"},{"content":"작성 : 김동훈 (http://www.dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 7월 25일\n소 개 # ROMS (Regional Ocean Modeling System) 모델(모형)의 설치 및 실험에 관한 상세한 내용은 \u0026ldquo;Installing and Running ROMS for First Time Users\u0026ldquo;에 잘 설명되어 있으므로 영어에 친숙하신 분이라면 here를 참고하세요.\n여기에서는 태풍 솔릭(Soulik) 시기의 해양순환 모의를 설명하며, 최근 버전인 ROMS-3.6 r964 (2019년 5월 1일 배포)을 사용합니다. 절의 제목 앞에 숫자가 붙어 있는 부분은 사용자가 직접 실행해야 하는 부분을 의미합니다.\n소프트웨어 요구사항 # Intel Fortran Compiler MPI library (openmpi 또는 mpich, mvapich 등) python 관련 : pyroms 모듈, jupyter notebook 또는 lab 0. 환경 설정 # /usr/bin/env bash # Bash Shell 사용 export ROMS=${HOME}/models/ROMS export ROMSsrc=${ROMS}/Sources/ROMS export PROJ=${ROMS}/Projects/Soulik 1. 모델 및 자료 가져오기 # ROMS를 사용하려면 ROMS 포털에 등록되어 있어야 합니다. 등록은 여기 또는 여기에서 하면 됩니다. 등록한 아이디와 암호는 모델을 svn으로 가져올때 사용됩니다.\nmkdir -p $ROMSsrc; cd $ROMSsrc # 모델 소스코드만 받는 경우 svn checkout --username ??? https://www.myroms.org/svn/src/trunk trunk # Test cases와 plot 관련 자료 svn checkout --username ??? https://www.myroms.org/svn/src/test test svn checkout --username ??? https://www.myroms.org/svn/src/matlab matlab svn checkout --username ??? https://www.myroms.org/svn/src/plot plot # ROMS 관련 모든 자료를 한번에 받을 경우 (약 2.3G): # 참고) ROMS/tags 디렉토리에 이전 버전(v2.0 ~ v3.6)들이 포함되어 있음 svn checkout --username ??? https://www.myroms.org/svn/src . # revision number 확인 svn info 2. 프로젝트 디렉토리 만들고 컴파일 하기 # mkdir -p $PROJ; cd $PROJ # build 스크립트는 bash와 sh의 두가지를 지원하고 있으며 여기에서는 bash 기준으로 설명합니다. cp ${ROMSsrc}/trunk/ROMS/Bin/build_roms.bash . # build_roms.bash의 사용자 정의 vi ./build_roms.bash \u0026gt; export ROMS_APPLICATION=SOULIK # 모두 대문자로 쓰며, 컴파일 시 소문자인 soulik.h 를 참조하게 됨 \u0026gt; export MY_ROOT_DIR=${ROMSsrc} \u0026gt; export USE_NETCDF4=on # netcdf의 버전에 따라 선택하세요. Note) USE_NETCDF4 를 on 하였을 경우는 컴파일 시에 NETCDF 라이브러리의 위치를 묻는 \u0026ldquo;nf-config\u0026rdquo; 명령을 사용하게 되는데, 이 명령이 없거나 실행 시에 문제가 있다면 ${ROMSsrc}/trunk/Compilers/Linux-ifort.mk (시스템에 따라 파일이 다를 수 있음) 을 편집하여 \u0026ldquo;nf-config\u0026rdquo; 를 \u0026ldquo;nc-config\u0026rdquo; 로 바꾸어 줍니다. 또한, nc-config 의 명령이 제대로 실행되는지도 확인해야 합니다.참고로, nf-config 는 Fortran 용 실행화일이며, nc-config 는 C 용 실행화일입니다. 보통은 Fortran과 C 용 라이브러리가 동일 디렉토리에 설치되므로 아무거나 써도 상관이 없습니다.\n2-1. Header 파일 만들기 # ROMS의 컴파일 시 사용할 header 파일을 다음과 같이 작성합니다. 파일 이름은 $PROJ 디렉토리에 사용한 이름과 같은 soulik.h 로 저장합니다. 파일 이름은 모두 소문자이어야 합니다.각 옵션들에 대한 자세한 설명은 ROMS의 Wiki 페이지에 있는 여기 를 참고하세요.\ncd $PROJ cat \u0026gt; soulik.h \u0026lt;\u0026lt; END /* ** Options for NWP Test. ** Application flag: NWP */ /* Physics + numerics */ #define UV_ADV /* 이류항 계산 */ #define UV_QDRAG /* Quadratic bottom friction */ #define UV_COR /* 코리올리 힘 계산 */ #define UV_VIS2 /* Harmonic horizontal mixing */ #define TS_U3HADVECTION /* 3rd-order upstream horiz. advection */ #define TS_DIF2 /* Harmonic horizontal mixing for tracers */ #define SALINITY /* 염분 계산 */ #define DJ_GRADPS /* Splines density Jacobian (Shchepetkin, 2000) */ #define MIX_S_UV /* mixing along constant S-surfaces */ #define MIX_GEO_TS /* mixing along geopotential (constant Z) surfaces */ #define SOLVE3D /* 3D 원시방정식 계산 */ #define CURVGRID /* Curvilinear coordinates grid */ #define SPLINES_VDIFF #define SPLINES_VVISC #define NONLIN_EOS /* 비선형 상태방정식 사용 */ /*#define WET_DRY*/ /* Wetting and Drying 옵션 */ /* Grid and Initial */ #define MASKING /* land/sea masking */ /* Forcing */ /*#define BULK_FLUXES*/ /* Bulk fluxes 계산 */ #define ATM_PRESS /* 해수면 위에 대기압 적용 */ #define ANA_BTFLUX /* analytical bottom temperature flux 사용 */ #define ANA_BSFLUX /* analytical bottom salinity flux 사용 */ #define ANA_BPFLUX /* analytical bottom passive tracers fluxes 사용 */ #define LONGWAVE_OUT /* outgoing longwave radiation */ #define EMINUSP /* E-P 계산 */ #define SOLAR_SOURCE /*solar radiation source term*/ #undef QCORRECTION /*net heat flux correction */ #undef SCORRECTION /*freshwater flux correction*/ #undef SRELAXATION /*salinity relaxation as a freshwater flux*/ #undef DIURNAL_SRFLUX /*mdulate input shortwave with diurnal cycle*/ /* Turbulence closure */ #define GLS_MIXING /* Generic Length-Scale mixing */ #undef MY25_MIXING /* Mellor/Yamada Level-2.5 closure */ #undef LMD_MIXING /* Large et al. (1994) K-profile vertical parameterization */ /*#define LIMIT_VDIFF*/ /*#define LIMIT_VVISC*/ #if defined GLS_MIXING || defined MY25_MIXING # define KANTHA_CLAYSON /* Kantha and Clayson stability function */ # define N2S2_HORAVG /* Horizontal smoothing of buoyancy/shear */ # define RI_SPLINES # define CRAIG_BANNER /* Craig and Banner wave breaking surface flux */ # define CHARNOK /* Charnok surface roughness from wind stress */ #endif #ifdef LMD_MIXING # define LMD_RIMIX /* Add diffusivity due to shear instability */ # define LMD_CONVEC /* Add convective mixing due to shear instability */ # undef LMD_DDMIX /* Add double-diffusive mixing */ # define LMD_SKPP /* Surface boundary layer KPP mixing */ # undef LMD_BKPP /* Bottom boundary layer KPP mixing */ # define LMD_NONLOCAL /* Nonlocal transport */ #endif #undef SSH_TIDES /* Imposing tidal elevation */ #undef UV_TIDES /* Imposing tidal currents */ #undef RAMP_TIDES /* Ramping (over one day) tidal forcing */ /* Output */ #define AVERAGES /* 시간 평균된 결과로 저장 */ #define AVERAGES_FLUXES /* 시간 평균된 flux로 저장 */ #undef DIAGNOSTICS_UV /* Writing out momentum diagnostics */ #undef DIAGNOSTICS_TS /* Writing out tracer diagnostics */ END 2-2. 컴파일 하기 # 프로젝트의 header 파일을 만들었으면, ROMS 모델을 컴파일 합니다. 다음과 같이 컴파일하고 표출되는 메세지에 error 가 없는지 유심히 살펴 봅니다. 최종적으로 \u0026ldquo;romsM\u0026rdquo; 이 제대로 생성되었는지 확인합니다.\ncd $PROJ \\rm -f Build_roms romsM ./build_roms.bash # 1개의 processor를 사용하여 컴파일 ./build_roms.bash -j 8 # 시스템이 멀티코아를 가지고 있을 경우 최대 8개의 코아를 사용하여 컴파일 ls -l romsM 3. 격자 및 입력자료 만들기 # 사용자의 연구 상황에 따라서 격자 및 입력자료를 만드는 방법이 다를 수 있으며, 여기에서는 pyroms를 이용하는 방법을 설명하도록 하겠습니다.\n여기에서는 제시된 스크립트들은 pyroms의 예제들을 참조하여 저자가 직접 만든 것입니다.\n3-1. pyroms 및 jupyter 설치하기 # pyroms는 설치하기가 쉽지않은 모듈이지만, 성공적으로 설치할 경우 편리성이 매우 높은 도구입니다.설치과정 대한 자세한 설명은 지면이 길어지므로 pyroms 설치하기 를 참고하여 설치하시기 바랍니다.\npyroms을 사용하여 격자 및 입력자료를 만드는 과정은 복잡하고 이해하기 힘들기 때문에 설명을 쉽게 하기 위하여 jupyter notebook 또는 jupyter lab을 사용하도록 하였습니다. Jupyter와 관련된 설치 및 사용법은 여기의 설명 범위에서 벗어나므로 인터넷 검색을 통하면 설치 및 사용법 익히시기 바랍니다. 또한, anaconda를 설치하였다면 jupyter가 이미 설치되어 있어서 바로 사용할 수 있습니다.\njupyter 가 아닌 python 으로 직접 실행하실 경우는 다음의 명령으로 *.ipynb 화일을 *.py 로 변환하여 사용하시기 바랍니다.\nconda install jupyter # jupyter가 설치되어 있지 않은 경우 jupyter jupyter nbconvert --to script myFile.ipynb # myFile.py 가 생성됨. 3-2. Grid 만들기 # ROMS의 영역 격자를 만드는 방법은 모델의 역사 만큼이나 다양하게 존재합니다. 대표적으로 다음과 같은 것들이 있으니 참고하세요.\nGridgen: http:code.google.com/p/gridgen-c, or https://github.com/sakov/gridgen-c pyroms, pygridgen, octant Easygrid: https://www.myroms.org/wiki/easygrid Gridbuilder: http://austides.com/downloads COAWST Tools: wrf2roms_mw.m, create_roms_xygrid.m … \u0026hellip; Jupyter notebook의 형식으로 작성된 다음의 링크를 따라서 격자를 만듭니다. makeGrid4Soulik 생성된 \u0026ldquo;Soulik_grd_v2.nc\u0026rdquo; 를 $PROJ 디렉토리에 복사합니다. 3-3. 초기장(I.C.) 만들기 # HYCOM 자료 중에서 격자 크기에 맞는 영역의 해당 시작 날짜의 자료를 가져 옵니다. getHYCOM4SoulikIC HYCOM 자료를 ROMS의 초기장으로 만듭니다. makeIC4Soulik 생성된 \u0026ldquo;ROMS4Soulik_ic_2018-08-21T00:00:00Z.nc4\u0026quot;를 $PROJ 디렉토리에 복사합니다. 3-4. 측면경계장(L.B.C.) 만들기 # HYCOM 자료 중에서 격자의 측면에 맞는 영역에 대해 모델의 전체 계산 시간에 해당하는 시계열 자료를 가져 옵니다. getHYCOM4SoulikLBCs HYCOM 격자와 ROMS 격자의 내삽 가중치 비율을 계산합니다. makeRemapWeights HYCOM 자료를 ROMS의 측면경계장으로 만듭니다. makeLBC4Soulik 생성된 \u0026ldquo;ROMS4Soulik_bc.nc\u0026quot;를 $PROJ 디렉토리에 복사합니다. 3-5. 대기경계장(S.B.C, 표층외력) 만들기 # GFS 로 부터 모델의 전체 계산 시간에 해당하는 전지구 시계열 자료를 가져 옵니다. getGFS4SoulikSBC\nGFS 자료를 ROMS의 대기경계장으로 만듭니다. makeSBC4Soulik\n생성된 \u0026ldquo;roms_gfs_0p25_sbc_Soulik.nc\u0026quot;를 $PROJ 디렉토리에 복사합니다.\n4. ROMS 모의하기 # 4-1. input file 만들기 # ocean.in 파일은 ${ROMSsrc}/test 디렉토리에 있는 각 종 예제 자료들을 참조하여 만든 후 다음 내용을 수정합니다.예제 자료들에 있는 ocean.in 파일의 후반 부에는 각 변수들에 대한 자세한 사항이 있으니 참고하세요.\ncd $PROJ cat ocean.in \u0026lt;\u0026lt; END ... ... TITLE = Typhoon Soulik MyAppCPP = SOULIK VARNAME = ${ROMSsrc}/trunk/ROMS/External/varinfo.dat Lm == 430 ! Number of I-direction INTERIOR RHO-points Mm == 320 ! Number of J-direction INTERIOR RHO-points N == 30 ! Number of vertical levels NtileI == 6 ! I-direction 병렬 분할 갯수 NtileJ == 6 ! J-direction 병렬 분할 갯수 NTIMES == 1440 ! 총 모의 계산 스텝. ex) NTIMES * DT = 총 모의 시간 DT == 240.0d0 ! BaroClinic(3D) 계산 시간 간격 (단위: seconds) NDTFAST == 20 ! BaroClinic/BaroTropic time steps GRDNAME == ./Soulik_grd_v2.nc ! 격자 파일 ININAME == ./ROMS4Soulik_ic_2018-08-21T00:00:00Z.nc4 ! 초기장 파일 BRYNAME == ./ROMS4Soulik_bc.nc ! 측면 경계장 파일 NFFILES == 1 ! 표층 경계장 파일의 갯수 FRCNAME == ./roms_gfs_0p25_sbc_Soulik.nc ! 표층 경계장 파일 ... ... END 4-2. 모의하기 # 모델의 실행은 사용자의 시스템에 따라 다를 수 있으므로, 여기에서는 1개 노드에 36개 이상의 코어를 가지고 있는 시스템을 가정하여 다음과 같이 실행합니다.\nmpirun -np 36 ./romsM ocean.in \u0026gt;\u0026amp; out.log 결과 파일로 ocean_avg.nc, ocean_his_????.nc, ocean_rst.nc 등이 제대로 생성되었는지 확인합니다.\n5. ROMS 결과 분석하기 # ROMS의 결과 분석은 다양한 방법이 있으며 과학적 지식이 필요한 부분이므로 추후에 다른 지면을 사용하여 설명하도록 하겠습니다.\n=== END ===\n","date":"2019년 7월 25일","externalUrl":null,"permalink":"/2019/07/ROMS_Tutor/","section":"글","summary":"ROMS 3.6으로 태풍 솔릭 시기의 해양순환을 모의합니다. 환경 설정과 컴파일부터 실행까지 그대로 따라 할 수 있게 정리했습니다.","title":"ROMS 로 태풍 솔릭(Soulik) 시기의 해양순환 모의해 보기","type":"posts"},{"content":"","date":"2019년 7월 25일","externalUrl":null,"permalink":"/tags/Soulik/","section":"태그","summary":"","title":"Soulik","type":"tags"},{"content":"","date":"2019년 7월 25일","externalUrl":null,"permalink":"/tags/%EC%88%98%EC%B9%98%EB%AA%A8%EB%8D%B8/","section":"태그","summary":"","title":"수치모델","type":"tags"},{"content":"","date":"2019년 7월 24일","externalUrl":null,"permalink":"/tags/pyroms/","section":"태그","summary":"","title":"pyroms","type":"tags"},{"content":"작성 : 김동훈 (http://www.dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 7월 24일\nROMS의 영역 격자를 만드는 방법은 모델의 역사 만큼이나 다양하게 존재합니다.대표적으로 다음과 같은 것들이 있으니 참고하세요.\nGridgen: http:code.google.com/p/gridgen-c, or https://github.com/sakov/gridgen-c pyroms, pygridgen, octant Easygrid: https://www.myroms.org/wiki/easygrid Gridbuilder: http://austides.com/downloads COAWST Tools: wrf2roms_mw.m, create_roms_xygrid.m … \u0026hellip; pyroms는 ROMS 지역해양순환모델의 격자를 생성 할 뿐만 아니라 각종 초기치(I.C.)와 경계치(B.C.) 등의 자료를 만드는데 유용하게 사용할 수 있는 도구이며, 성공적으로 설치할 경우는 편리성이 매우 높은 도구입니다. 그러나 설치 시에 따르는 여러가지 문제점으로 인하여 일반 사용자가 쉽게 접근하지 못하는 경우가 많았습니다.여기에서는 그동안의 노하우를 토대로 가장 쉽게 설치하는 방법을 설명하고자 합니다.\npyroms 설치하기 # pyroms는 Python의 설치 프로그램(pip) 또는 Anaconda의 conda에서 지원하지 않는 모듈이므로 직접 설치해야 합니다. 사용자 환경에 따라서 설치 시에 여러가지 문제점이 발생할 수 있으므로 여기에서는 Anaconda의 축소버전인 Miniconda를 사용하여 설치하도록 하겠습니다.\n1. Miniconda 설치 및 ROMS 환경 구축 # # https://docs.conda.io/en/latest/miniconda.html 에서 사용자 환경에 맞는 최신 버전을 가져 오세요. # 저자는 \u0026#34;64-bit(bash installer) for Linux\u0026#34; 버전을 사용하였습니다. # 다음의 명령으로 설치를 시작합니다. bash ./Miniconda3-latest-Linux-x86_64.sh # 설치과정 중 물어보는 \u0026#34;설치할 디렉토리\u0026#34;는 사용자의 적절한 디렉토리를 지정합니다. # 여기에서는 ${HOME}/Local/miniconda3 에 설치하였습니다. # 설치의 마지막 단계에서 묻는 \u0026#34;conda 환경을 구성하겠냐\u0026#34;는 질문에는 \u0026#34;yes\u0026#34;를 선택하여 # ~/.bashrc 에 환경설정이 자동으로 추가되도록 하세요. # 사용자가 사용하는 Shell이 bash가 아닌 경우에는 ~/.bashrc의 내용을 참조하여 적절하게 반영하여야 합니다. # 제대로 설치되었다면 \u0026#34;conda\u0026#34; 명령이 실행 가능해야 합니다. # conda에 가장 많이 사용되는 다운로드 채널을 추가합니다. conda config --add channels conda-forge # ROMS를 위한 독립 환경을 생성합니다. \u0026#34;-n\u0026#34; 옵션 다음에 붙는 이름은 사용자가 임의로 정하세요. conda create -n pyroms python=3 ipython numpy scipy netCDF4 conda activate pyroms conda install matplotlib=2.2.4 basemap basemap-data-hires esmf nco pygrib # Note) pyroms 내부에서 \u0026#34;from matplotlib.mlab import dist_point_to_segment\u0026#34;을 사용하는데, # matplotlib 의 최신 버전인 v3.x에서는 지원하지 않기때문에 v2.x의 최신 버전을 설치한다. conda install pyproj=1.9.6 # Note) pyroms 내부에서 pyproj의 espg 자료를 사용하는데, pyproj의 최신 버전인 2.x 에는 espg 자료가 없으므로 # pyrpoj=1.9.6 버전을 설치한다. # \u0026#34;conda activate pyroms\u0026#34;를 수행하여 사용자 프롬프트 맨 앞에 \u0026#34;(pyroms)\u0026#34;가 추가되었다면 성공적으로 설치한 것입니다. 2. 삭제: natgrid 설치 (필요하지 않음) # pyroms 는 NCAR의 natgrid (a natural neighbor gridding package) 라이브러리를 사용한다고 합니다. conda의 ROMS 환경 내에서 다음과 같이 설치합니다.\n(pyroms) cd ~/Local # git으로 최신 버전의 소스코드를 받아 옵니다. (pyroms) git clone https://github.com/matplotlib/natgrid.git (pyroms) cd natgrid (pyroms) CC=gcc python3 setup.py build # warning 메세지가 많이 나올 수 있으나 error 메세지가 나오지 않으면 됨 (pyroms) python3 setup.py install # 라이브러리를 python3의 site-packages에 설치 # (pyroms) python3 test.py # 라이브러리 테스트 3. pyroms 설치 # (pyroms) export DESTDIR=${HOME}/Local/miniconda3/envs/pyroms (pyroms) cd ~/Local # git으로 최신 버전의 소스코드를 받아 옵니다. # 상세한 설명은 https://github.com/ESMG/pyroms 를 방문하세요. (pyroms) git clone https://github.com/ESMG/pyroms.git # pyroms의 설치를 시작합니다. ---------------------------------------------------- # pyroms는 여러가지 패키지를 함께 사용하기 때문에 설치를 성공하는데 많은 어려움이 있을 수 있습니다. # 저자도 수십번의 과정을 거쳐서 성공한 결과를 요약하여 공유하는 것이니 하나 하나 잘 따라하셔야 합니다. (pyroms) cd pyroms/pyroms_toolbox (pyroms) python ../pyinstall.py ${DESTDIR} (pyroms) cd ../bathy_smoother (pyroms) python ../pyinstall.py ${DESTDIR} (pyroms) cd ../pyroms (pyroms) vi install_pyroms.sh \u0026gt; DESTDIR=${DESTDIR} \u0026gt; PYROMS_PATH=$DESTDIR/lib/python3.7/site-packages/pyroms #Note) python 버전 확인 \u0026gt; #python setup.py build --fcompiler=gnu95; #주석 처리 \u0026gt; #python setup.py install --prefix=$DESTDIR #주석 처리 \u0026gt; python ../pyinstall.py $DESTDIR #위에 주석 처리한 곳 바로 아래에 추가 (pyroms) vi external/scrip/source/makefile \u0026gt; NC_CONFIG = nc-config #nf-config 를 nc-config 로 수정 \u0026gt; LIB = $(shell $(NC_CONFIG) --libs) #--flibs 를 --libs 로 수정 (pyroms) ./install_pyroms.sh (pyroms) export PYROMS_GRIDID_FILE=${HOME}/Local/pyroms/pyroms/pyroms/gridid.txt (pyroms) cd $DESTDIR/lib/python3.7/site-packages #Note) python 버전에 따라 path가 다름 (pyroms) cp pyroms_toolbox/*.so . ; cp bathy_smoother/*.so . ; cp pyroms/*.so . 4. pyroms 확인 # # pyproj 라이브러리를 설치하고 conda 환경을 재설정해 주어야 # $PROJ_LIB 가 자동으로 설정되므로 다음 명령을 실행한다. (pyroms) conda deactivate (base) conda activate pyroms (pyroms) echo $PROJ_LIB # 환경 설정이 제대로 되었으면, 다음과 같이 pyroms 모듈을 import 하여 문제가 없는지 확인한다. (pyroms) ipython In [1]: import pyroms In [2]: import pyroms_toolbox In [3]: from bathy_smoother import * ","date":"2019년 7월 24일","externalUrl":null,"permalink":"/2019/07/pyroms/","section":"글","summary":"ROMS의 격자와 초기치·경계치를 만드는 pyroms는 설치가 까다롭기로 유명합니다. Miniconda를 이용해 가장 덜 막히는 설치 경로를 정리했습니다.","title":"pyroms 설치하기 (ROMS 해양순환모델의 자료 준비 도구)","type":"posts"},{"content":"","date":"2019년 6월 12일","externalUrl":null,"permalink":"/tags/TensorFlow/","section":"태그","summary":"","title":"TensorFlow","type":"tags"},{"content":"","date":"2019년 6월 12일","externalUrl":null,"permalink":"/tags/%EB%94%A5%EB%9F%AC%EB%8B%9D/","section":"태그","summary":"","title":"딥러닝","type":"tags"},{"content":"","date":"2019년 6월 12일","externalUrl":null,"permalink":"/tags/%EC%97%98%EB%8B%88%EB%87%A8/","section":"태그","summary":"","title":"엘니뇨","type":"tags"},{"content":"작성 : 김동훈 (http://blog.dhkim.info, 인하대학교)2019년 6월 12일\n소 개 # \u0026ldquo;인공신경망 딥러닝(Deep Learning)을 이용한 엘니뇨 예측성 연구\u0026ldquo;를 2017년에 한국해양학회와 한국기상학회에 발표하면서 개발한 N3nino 모델의 사용법을 설명합니다.\n연구 결과의 자세한 내용은 제 홈페이지의 여기 를 참고하시기 바랍니다. 이 모델이 개발된 후 2018년에 좀 더 완성된 모델의 결과를 학회에 발표하였으나 홈페이지에는 아직 게재하지 못하였으므로 한국해양학회와 한국기상학회의 학술발표 홈페이지에서 찾아보시면 됩니다.\nN3nino 의 간단한 사용법은 다음 명령으로 알 수 있습니다.\ncd n3nino.3ar/model ./rnnN3N.py --help 모델의 실제 사용 방법은 \u0026ldquo;N3nino/run.sh\u0026quot;를 참조하면 되며, 각 인자들에 대한 자세한 설명은 다음과 같습니다.\ncd model for lead in 1 2 3 4 5 6 7 8 # 1개월 후 부터 8개월 후까지 학습한 후 예측합니다. do ./rnnN3N.py --verbose --plot --efcast=\u0026#34;201706\u0026#34; --source=\u0026#34;sst,t20m\u0026#34; --leads=\u0026#34;[${lead},]\u0026#34; --cell=\u0026#34;GRU\u0026#34; --num_steps=12 --num_layers=2 --num_hidden=100 --num_loop=900 done #----------- 인자에 대한 설명 ----------------------------------------------------------------- (생략) --model ; RNN과 CNN을 선택할 수 있습니다. default=RNN (생략) --code ; 모델의 종류. default=nino34 --leads= (생략) --sfcast ; 예측 시작 년월. default=201401 --efcast=\u0026#34;201706\u0026#34; ; 예측 끝 년월. default=today (생략) --strain ; 학습 시작 년월. default=198001 (생략) --etrain ; 학습 끝 년월. default=201312 --num_loop=900 ; 학습 epochs의 수. default=900 --source=\u0026#34;sst,t20m\u0026#34; ; 학습자료 변수들 (all, best, sst, msl, t20m). default=best --cell=\u0026#34;GRU\u0026#34; ; deep learning cell (BasicRNN,BasicLSTM,LSTM,phLSTM,GRU). default=GRU (생략) --optimizer ; 최적화 함수. default=Adam --num_hidden=504 ; hidden cell의 갯수. default=100 --num_layers=2 ; hidden layer의 갯수. default=2 --num_steps=12 ; 단위 학습 자료의 길이 (단위: 월). default=12 (생략) --learning_rate ; 학습 learning rate. default=0.001 (생략) --keep_prob ; overfitting을 방지하기 위한 dropout. default=1.0 (no dropout) (생략) --forget_bias ; the forget bias. default=0.0 (생략) --init ; 학습 초기화. 이전 학습 자료를 사용하지 않음. default=False --train ; 모델의 학습 실행 및 학습 내용 저장. 인자로 주어지면 True 임. default=False --save ; save 디렉토리에 결과 저장. 인자로 주어지면 True 임. default=False (생략) --restore_date ; 기존 학습 내용을 읽어와서 심화 학습할 경우의 날짜 (생략) --savedir ; 결과 저장 폴더. default=\u0026#39;../save\u0026#39; (생략) --workdir ; 작업 폴더. default=\u0026#39;../work\u0026#39; (생략) --datadir ; 학습자료 폴더. default=\u0026#39;./data\u0026#39; --plot ; 결과를 바로 그려 볼 때 (생략) --disploy_step ; 결과 표시 간격. default=50 (생략) --verbose ; 출력 메세지를 상세하게 표시할때 학습과 예측 과정 중에 나오는 메세지의 한 예는 다음과 같습니다.\n학습 후에 예측된 결과들은 \u0026ldquo;N3nino/work\u0026rdquo; 를 보시면 됩니다.다음은 예측된 결과들 중의 일부를 보여 줍니다.\nnino3.4 지역의 1개월 후 예측 (검정실선: 관측, 파란실선: 예측)\nlearning cost value\n","date":"2019년 6월 12일","externalUrl":null,"permalink":"/2019/06/N3nino/","section":"글","summary":"2017년 학회에 발표한 GRU 기반 엘니뇨 예측 모델 N3nino를 직접 돌려 보는 방법. 명령행 인자와 run.sh 사용법을 설명합니다.","title":"인공지능 딥러닝을 이용한 엘니뇨 예측 시스템 \"N3nino\" 의 사용법","type":"posts"},{"content":"","date":"2019년 4월 29일","externalUrl":null,"permalink":"/tags/WRF/","section":"태그","summary":"","title":"WRF","type":"tags"},{"content":"작성 : 김동훈 (http://blog.dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 4월 29일\nWRF (Weather Research and Forecasting) 모델(모형)의 설치 및 실험에 관한 상세한 내용은 온라인 튜포리얼에 잘 설명되어 있으므로 영어에 친숙하신 분이라면 here를 참고하세요.\n여기에서는 태풍 솔릭(Soulik)을 대상으로 설명하며, 최신 버전인 WRF V4.1 (2019년 4월 12일 배포)을 사용합니다. 절의 제목 앞에 숫자가 붙어 있는 부분은 사용자가 직접 실행해야 하는 부분을 의미합니다.\n소 개 # WRF 모델(모형)은 주요 역학 구현에 따라 두 가지로 모델이 나뉘어 집니다. NCEP에서 개발한 Non-hydrostatic Mesoscale Model (NMM)과 NCAR에서 개발한 Advanced Research WRF (ARW)가 있습니다. 여기에서는 일반적으로 연구에 많이 사용하고 있는 WRF-ARW를 대상으로 설명합니다.\nWRF-ARW 모델은 압축성이며 비정수압(옵션으로 정수압을 지원함) 모델 입니다. V4.0 부터 기본 연직 좌표계는 mass-based hybrid sigma-pressure vertical coordinate 를 사용합니다. 참고로, V4.0 이전에는 mass-based terrain-following hydrostatic pressure coordinate)를 사용하였습니다. 수평 좌표계는 Arakawa C-grid 를 사용합니다.\nWRF-ARW 모델은 다음과 같이 4종류의 실행가능한 파일이 있습니다.\nideal.exe 및 real.exe : 초기화 프로그램 wrf.exe : 모델의 실제 적분 ndown.exe : one-way nesting에 사용 tc.exe : 태풍이나 허리케인 같은 열대성 저기압의 추가 또는 제거에 필요한 TC Bogusing에 사용 소프트웨어 요구사항 # 사용하는 소프트웨어에 따라 다양한 상황에 처할 수 있고 설명이 복잡해 지므로, 다음과 같은 소프트웨어를 사용한다고 가정하고 설명을 진행합니다.\nFortran 90 또는 95 : Intel Fortran Compiler v18.0 Perl : 5.16.x (권장: 5.04 이상) MPI : openmpi 2.x or 3.x 또는 mvapich2 OpenMP : Intel Fortran Compiler에 포함되어 있는 것을 사용. 참고) 여기 실험에서는 사용하지 않음. netCDF : v4.x Grib2, Jasper, libPNG, Zlib 등 Shell : bash 기준으로 설명함 실험 진행과정 # 이상 실험의 경우: WRF 모델 적분 —\u0026gt; 후 처리 실제 사례 실험의 경우: WPS(전 처리) —\u0026gt; WRF 모델 적분 —\u0026gt; 후 처리 자료동화와 함께 실제 사례 실험의 경우: WPS(전 처리) —\u0026gt; WRFDA(자료동화) —\u0026gt; WRF 모델 적분 —\u0026gt; 후 처리 1. 모델 및 자료 가져오기 # WRF를 사용하기 위해서는 모델 소스코드와 전처리(WPS), 그리고 지형(geog)자료가 필요합니다. 자세한 설명은 여기 를 참조하세요.\n홈페이지에서는 모델과 전처리, 지형자료를 모두 독립적으로 제공하고 있으며, 이상 실험의 경우는 \u0026ldquo;WRF 모델\u0026quot;만 받으면 됩니다. 가져오는 방법은 ftp로 직접 받아오는 방법과 git을 사용하여 최신 버전을 받는 방법이 있습니다.\n선택 1) FTP로 직접 받는 방법 : (버전 V4.0, 2018년 6월 8일 배포)\nWRF 모델 :\ncd ~/models/WRF/V4.0 wget http://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz tar xvzf WRFV4.0.TAR.gz WPS 전처리 :\ncd ~/models/WRF/V4.0 wget http://www2.mmm.ucar.edu/wrf/src/WPSV4.0.TAR.gz tar xvzf WPSV4.0.TAR.gz 선택 2) Git을 사용하여 최신 버전을 받는 방법 : (현재 버전 V4.1, 2019년 4월 12일 배포)\nWRF 모델 :\ncd ~/models/WRF/V4.1 git clone https://github.com/wrf-model/WRF WPS 전처리 :\ncd ~/models/WRF/V4.1 git clone https://github.com/wrf-model/WPS 지형 자료는 FTP로 직접 받아서 풀어 줍니다.\nWPS Geography data :\n고해상도 자료 : 일반적인 용도\ncd ~/models/WRF/Data/geog wget http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_high_res_mandatory.tar.gz tar xvzf geog_high_res_mandatory.tar.gz 저해상도 자료 : 모델 테스트 또는 교육용\ncd ~/models/WRF/Data/geog wget http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_low_res_mandatory.tar.gz tar xvzf geog_low_res_mandatory.tar.gz WRF 모델 디렉토리 구조 설명 # WRF 소스코드에 대한 느낌을 알기 위해 아래 사항을 한번 훑어 보시기 바랍니다.\n모델 소스코드 디렉토리 dyn_en/ : ARW 모델의 역학부분 dyn_nmm/ : NMM 모델의 역학부분. 더 이상 개선이나 지원을 멈춘 상태임 dyn_exp/ : \u0026rsquo;toy\u0026rsquo; 역학 부분 external/ : 입출력과 시간 조절, MPI 병렬화 등을 지원 frame/ : WRF 프레임워크 inc/ : include 디렉토리 main/ : wrf.F가 포함된 메인루틴. 컴파일 후 모든 실행화일이 여기에 저장됨 phys/ : 모델의 물리부분 share/ : WRF의 공유와 입출력 담당 tools/ : 개발자용 도구 스크립트들 clean : 실행화일이나 컴파일 시 생성된 화일들 삭제 compile : WRF 코드 컴파일 스크립트 configure : 모델 구성용 configure.wrf 를 생성하는 스크립트 기타 Makefile : 최상위의 makefile Registry : WRF Registry 파일 arch/ : 컴파일 옵션이 수집되는 디렉토리 run/ : WRF를 실행할 수 있는 디렉토리 test/ : 여러 테스트용 실험들이 저장되어 있으며 WRF에서 사용함 2. WRF 모델의 구성 # 이상 실험과 실제 사례 실험에 관계없이 WPS 전처리 보다 먼저 WRF 모델 코드를 컴파일해야 합니다. 먼저 netCDF 환경변수와 포트란 컴파일러, 그리고 병렬화 관련 구성 파일을 만듭니다. NETCDF 환경변수는 저자가 사용하는 시스템을 기준으로 설명하므로 사용자 컴퓨터에 따라 알맞은 path를 지정하세요.\nexport NETCDF=/opt/netcdf/intel-18.0/netcdf-4.1.3 netCDF는 지정한 포르란 컴파일러와 동일한 버전으로 생성된 라이브러리여야 합니다. 그리고 netCDF v4.x 부터는 C와 Fortran 라이브러리가 독립적으로 구성되어 있으며 포트란 버전인 libnetcdff.a 가 있는지 확인하세요. (이름 뒤에 f 가 두 개 입니다.) netCDF가 설치되어있지 않다면 다음과 같이 설치합니다. 버전 4.1.3 이후부터는 C와 Fortran의 라이브러리가 나누어져 있어서 설치가 복잡하므로 설명을 간단히 하기 위하여 v4.1.3을 기준으로 설명합니다. 병렬 시스템의 모든 서버에서 사용 가능하도록 /opt에 설치하도록 합니다. 설치에 대한 자세한 사항은 여기 를 참조하세요.\ncd ~/local/src wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-4.1.3.tar.gz tar xvzf netcdf-4.1.3.tar.gz export NETCDF=/opt/netcdf/intel-18.0.4/netcdf-4.1.3 export CC=icc export CXX=icc export FC=ifort export FCFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; export F77=ifort export FFLAGS=\u0026#34;-w -O3 -ip -fp-model precise\u0026#34; cd netcdf-4.1.3 ./configure --prefix=${NETCDF} --disable-dap --disable-netcdf-4 --disable-shared make \u0026amp;\u0026amp; make install export NETCDF_classic=1 참고) netCDF v4.x에서는 HDF5와 연동한 빠른 압축기능 및 group 기능 등을 지원합니다. 이를 위해서는 netCDF 설치에 앞서서 HDF5 라이브러리와 Zlib 또는 SZlib 의 설치가 필요합니다. 이에 대한 상세한 설치 방법은 NetCDF V4 설치하기 를 참조하세요. 이러한 기능을 사용하지 않고 간단하게 설치하여 사용하고자 한다면 위와 같이 \u0026ldquo;—disable-netcdf-4\u0026rdquo; 옵션을 사용하여 컴파일 하고, WRF가 이를 알 수 있도록 \u0026ldquo;NETCDF_classic\u0026rdquo; 환경변수를 1로 설정합니다..\nConfigure를 사용하여 모델을 구성합니다.\ncd ~/models/WRF/V4.1/WRF ./configure \u0026gt; Enter selection [1-63] : 15 \u0026gt; Compile for nesting? (1=basic, 2=preset moves, 3=vortex following) [default 1]: 1 (serial) : 1개의 CPU 또는 core를 사용할 경우 (smpar) : Shared-memory 즉, OpenMP를 사용할 경우 (dmpar) : Distributed-memory 즉, MPI를 사용할 경우 (dm+sm) : OpenMP와 MPI를 동시에 사용할 경우\n병렬화와 관련해서는 보통은 성능이 가장 좋은 분산메모리 병렬화만을 사용하므로 \u0026ldquo;dmpar\u0026rdquo; 를 선택합니다. dmpar 는 distrubuted memory parallelization을 뜻합니다. 여기에서는 intel fortran compiler를 사용하므로 15. (dmpar) 를 선택하였습니다. 병렬화에 익숙하지 않다면 싱글(serial) 모드를 선택하여 모델에 친숙해 진 후 병렬화를 시도하도록 하세요.\nNesting 관련 옵션은 보통 \u0026ldquo;1=basic\u0026quot;을 선택합니다. \u0026ldquo;2=preset moves\u0026quot;는 namelist 에서 nesting grid의 이동을 직접 지정할 경우 사용합니다. \u0026ldquo;3=vortex-following\u0026quot;는 태풍이나 허리케인의 와류 중심을 따라서 nesting grid를 자동으로 이동할 경우 사용합니다. 이에 대한 자세한 설정 방법은 여기 를 참조하세요.\nconfigure.wrf 가 생성되면 파일 내용 중에 다음을 확인하여 설정과 다르면 알맞게 수정하여 재저장합니다.\nDEP_LIB_PATH = -L/opt/netcdf/intel-18.0.4/netcdf-4.1.3/lib SFC = ifort SCC = icc CCOMP = icc DM_FC = mpif90 -f90=$(SFC) DM_CC = mpicc -cc=$(SCC) 3. 실제 사례 실험에 대한 WRF 컴파일 # 이상 실험에 대한 WRF 컴파일은 여기 를 참고하세요. 일부 컴퓨터에서는 컴파일 하기 전에 \u0026ldquo;export WRF_EM_CORE=1\u0026quot;를 설정해야 하는 경우가 있으며 잘 모르겠으면 그냥 설정해 주세요.\nexport WRF_EM_CORE=1 ./compile em_real \u0026gt;\u0026amp; log.compile compile에 사용하는 옵션은 \u0026ldquo;./compile\u0026rdquo; 명령을 옵션 없이 실행하면 상세한 설명을 표시해 줍니다. 지금 ./compile 라고만 쳐보세요.\n여기서는 실제 사례 실험을 할 것이므로 \u0026ldquo;em_real\u0026rdquo; 옵션을 선택하였습니다. 컴파일 시에 표시되는 표준 메세지와 오류 메세지는 \u0026ldquo;\u0026gt;\u0026amp;\u0026rdquo; 기능으로 log.compile 이라는 파일에 저장됩니다. 컴파일 후의 성공 여부는 log.compile의 내용을 보면 되며 문제가 있을 경우 이 파일이 문제 해결에 도움이 될 것 입니다. 컴파일은 몇(십)분 정도 걸리는데, 좀 더 빨리 컴파일 하고 싶다면 다음과 같이 -j 옵션으로 병렬 컴파일을 할 수 있습니다.\n./compile -j 8 em_real \u0026gt;\u0026amp; log.compile 컴파일이 성공하면 \u0026ldquo;WRF/main/\u0026rdquo; 디렉토리에 다음과 같은 실행화일들이 생성됩니다. 실행화일의 크기가 0이 아닌지 확인하세요. 이 실행화일들은 main/ 에서 run/ 및 test/em_real/ 디렉토리에 각각 링크 됩니다. 이 디렉토리 들 중의 하나에서 코드를 실행하면 됩니다.\nndown.exe : one-way nesting에 사용 tc.exe : 태풍이나 허리케인 같은 열대성 저기압의 추가 또는 제거에 필요한 TC Bogusing에 사용 real.exe : 실제 사례에 대한 WRF 초기화 wrf.exe : WRF 모델의 실제 적분 컴파일에 문제가 발생하여 실행화일이 제대로 만들어지지 않았다면, log.compile 내에 \u0026ldquo;Error\u0026quot;을 찾아서 원인을 파악하세요. 원인이 파악되었으면 \u0026ldquo;./clean -a; ./configure\u0026rdquo; 를 실행하고 configure.wrf 재 확인 후 다시 컴파일을 시도해 보세요.\n./clean -a # 새로 생성된 파일들을 모두 삭제 ./configure # 생성된 configure.wrf의 내용 확인 ./compile -j 8 em_real \u0026gt;\u0026amp; log.compile WRF가 성공적으로 컴파일 되면 이제 WPS를 컴파일할 차례 입니다. 이 과정은 실제 사례의 실험인 경우게 해당됩니다.\nWPS (WRF 전처리 시스템) : 디렉토리 구조 설명 # README : 코드 및 모델 설정 및 실행 방법에 대한 유용한 정보가 들어 있음 소스 코드 디렉토리 : geogrid/ : 지형 격자와 같은 정적 데이터 생성 관련 디렉토리 metgrid/ : WRF의 입력자료 생성 관련 디렉토리 ungrib/ : GRIB 데이터 압축 해제 관련 디렉토리 util/ : 유틸리티 디렉토리 스크립트들 : clean : 새로 생성된 파일 또는 실행화일들의 삭제 compile : WPS 코드 컴파일 configure : WPS 컴파일 환경 구성. configure.wps가 생성됨 link_grib.csh : GRIB 파일을 WPS 디렉토리로 링크 기타 : arch/ : 컴파일 옵션들이 수집되는 곳 namelist.wps : \u0026ldquo;geogrid.exe\u0026quot;와 \u0026ldquo;ungrib.exe\u0026rdquo;, \u0026ldquo;metgrid.exe\u0026rdquo; 에서 사용하는 WPS namelist. \u0026ldquo;./configure\u0026rdquo; 명령으로 생성됨 namelist.wps-all_options : 참조를 위한 모든 namelist 옵션이 들어가 있는 파일 4. WPS의 구성 및 Grib2 관련 라이브러리들의 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ~/models/WRF/V4.1/WPS ./configure \u0026gt; Enter selection [1-36] : 17 # 17. Linux x86_64, Intel compiler (serial) # \u0026#34;configure.wps\u0026#34; 가 정상적으로 생성되었는지 확인 WPS는 WRF의 입력자료를 생성하는 전처리 과정이므로 아주 큰 영역의 실험이 아닌 경우에는 일반적으로 GRIB2를 처리할 수 있는 싱글(serial)을 사용하는 것을 추천합니다. 여기에서는 Intel Compiler를 사용하는 17번을 선택하였습니다.\n또한, GRIB2 자료를 사용해야 하므로 관련된 라이브러리(JasPer, libPNG, Zlib)를 확인하고 설치되어 있지 않다면 다음과 같이 설치합니다. 모든 라이브러리는 WRF 모델에서 사용한 컴파일러와 동일한 것을 사용하는 것을 추천합니다. 좀 더 자세한 설명은 여기 의 지침을 따르도록 하세요.\nGRIB2에서 사용하는 JasPer와 libPNG, Zlib 등은 일반적인 라이브러리이므로 여기에서는 사용자 home의 local 디렉토리(${HOME}/local)에 설치하는 것으로 설명합니다. 설치가 정상적으로 끝나면 위에서 생성한 \u0026ldquo;configure.wps\u0026quot;의 내용 중에서 COMPRESSION_LIBS와 COMPRESSION_INC의 환경변수를 여기서 설치한 디렉토리로 수정해 주어야 합니다.\n4-1. JasPer 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz tar xvzf jasper-1.900.1.tar.gz cd jasper-1.900.1 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libjasper.a 와 libjasper.la 가 설치되었는지 확인 4-2. libPNG 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz tar xvzf libpng-1.2.50.tar.gz cd libpng-1.2.50 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libpng* 화일들이 설치되었는지 확인 4-3. zlib 설치 # echo $NETCDF # netCDF 관련 환경변수가 설정되어 있지 않다면 알맞게 설정해 준다. export JASPERLIB=${HOME}/local/lib export JASPERINC=${HOME}/local/include cd ${HOME}/local/grib2 wget http://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz tar xvzf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure --prefix=${HOME}/local/intel make; make install # ${HOME}/local/lib 에 libz* 화일들이 설치되었는지 확인 설치가 끝났으면 \u0026ldquo;configure.wps\u0026rdquo; 화일을 수정합니다. 주의) 여기서의 환경변수는 \u0026ldquo;{}\u0026ldquo;가 아닌 \u0026ldquo;()\u0026ldquo;를 사용합니다.\ncd ~/models/WRF/V4.1/WPS vi configure.wps \u0026gt; COMPRESSION_LIBS = -L$(HOME)/local/intel/lib -ljasper -lpng -lz \u0026gt; COMPRESSION_INC = -I$(HOME)/local/intel/include 5. WPS 컴파일 # WPS를 컴파일하기 위하여 다음을 실행하세요. \u0026ldquo;\u0026gt;\u0026amp;\u0026ldquo;를 사용하여 표준 메세지와 에러 메세지를 로그파일로 저장합니다. 컴파일이 실패하면 문제 해결을 위해 이 파일이 필요합니다.\ncd ~/models/WRF/V4.1/WPS ./compile \u0026gt;\u0026amp; log.compile 컴파일이 성공적으로 수행되었다면 다음의 파일들의 크기가 0이 아니어야 합니다.\ngeogrid.exe —\u0026gt; geogrid/src/geogrid.exe : 지형격자와 같은 정적데이터 생성 ungrib.exe —\u0026gt; ungrib/src/ungrib.exe : GRIB 데이터 압축 해제 및 중간 형식 변경 metgrid.exe —\u0026gt; metgrid/src/metgrid.exe : WRF 용 입력 데이터 생성 이 파일들이 보이지 않는다면 log.compile 파일에서 오류가 있는지 확인하세요. 이와 별개로 몇 가지 유틸리티는 util/ 디렉토리 아래에 링크됩니다. 이 유틸리티들에 대한 자세한 설명은 여기 를 참고하세요.\navg_tsfc.exe : 중간 변형된 파일로부터 일평균 표면 온도를 계산. 5층 토양모델 (sf_surface_physics =1)과 함께 사용하는 것을 권장함 g1print.exe : GRIB1 파일의 내용을 표시 g2print.exe : GRIB2 파일의 내용을 표시 mod_levs.exe : 중간 변형 파일의 3D 필드에서 불필요한 레벨을 제거 rd_intermediate.exe : 중간 변형 파일을 읽음 calc_ecmwf_p.exe : ECMWF의 sigma-level 자료들과 함께 사용하기 위해서 다른 대기변수들과 동일 레벨에서 3차원 압력과 지오포텐셜 높이를 생산 height_ukmo.exe : UKMO 통합모델의 자료들을 위한 지오포텐셜 높이 값을 계산 plotgrids.ncl : 격자 영역을 plot. NCL(NCAR Graphics)이 필요합니다. int2nc.ncl : 중간 변형된 파일로부터 netCDF 형식 파일을 생성. NCL(NCAR Graphics)이 필요합니다. 관련 실행화일과 유틸리티가 제대로 컴파일 되지 않았다면 원인을 수정하고 \u0026ldquo;./clean -a\u0026rdquo; 를 실행한 후 재컴파일을 하세요. 모든 것이 올바르게 작성 되었다면 이제 WRF-ARW 모델을 실행할 준비가 되었습니다.\n./clean -a # 새로 생성된 파일들을 모두 삭제 ./configure # 생성된 configure.wps의 내용 확인 ./compile \u0026gt;\u0026amp; log.compile 모델 실행을 위한 기본 사항 # 이제 WRF 모의를 위한 기본 준비가 끝났습니다. 지금부터는 우리나라 지역에 맞게 설정을 하고 모의를 해보도록 하겠습니다. 다음은 일반적인 모델 실행 과정 중에서 프로그램의 흐름에 대한 설명입니다.\nWPS # geogrid.exe : 외부에서 가져온 정적 지형자료로부터 우리나라 영역의 지상 자료를 만듭니다. ungrib.exe : 외부에서 가져온 GRIB 기상자료를 압축해제하고 중간 변형 파일로 압축합니다. metgrid.exe : 기상자료를 우리나라 영역에 맞게 수평적으로 보간합니다. 여기서 만든 자료는 real.exe 를 통하여 WRF의 입력으로 사용됩니다. 참고1) geogrid와 ungrib은 독립적이므로 실행순서에 상관이 없습니다. 참고2) ESRL에서는 WPS Domain Wizard 라는 아주 편리한 도구를 제공하고 있습니다. 영역의 구성 부터 입력자료의 준비까지 GUI 형식으로 사용할 수 있으니 꼭 한번 사용해 보세요.\nWRF # real.exe : 입력 자료를 모델의 연직 좌표에 맞게 수직 보간합니다. wrf.exe : 모델을 적분하여 예측장을 생성합니다. 태풍 솔릭의 실제 사례를 실행하기 전에 먼저 각 개별 구성 요소에 대한 세부 사항을 살펴보도록 하겠습니다.\n6. GEOGRID: 정적 입력 자료 만들기 # GEOGRID의 목적은 모의 영역을 정의하고 다양한 지형 자료를 모델 격자에 맞게 보간하는 것입니다.\n모델 영역은 WPS의 namelist.wps에 \u0026ldquo;\u0026amp;share\u0026quot;와 \u0026ldquo;\u0026amp;geogrid\u0026rdquo; 섹션에서 정의됩니다. namelist.wps에서 사용하는 매개변수들에 대한 권장 사항은 여기 를 참고하세요. namelist.wps에서는 모델 영역의 갯수에 따라서 여러 열이 사용됩니다. 기본적으로 3개의 열을 사용하였지만 max_dom을 2로 설정하였다면 마지막 열은 무시됩니다.\nGEOGRID는 모델영역의 모든 격자점에 대한 위경도를 계산하고 soil categories, land use category, terrain height, annual mean deep-soil temperature, monthly vegetation fraction, monthly albedo, maximum snow albedo, slope category 등을 보간합니다.\nGEOGRID로 정적 입력 자료를 생산하는 방법은 다음과 같습니다.\nnamelist.wps의 \u0026amp;share 영역과 \u0026amp;geogrid 영역을 수정하고 ncl로 확인합니다.\ncd ~/models/WRF/V4.1/WPS vi namelist.wps \u0026amp;share wrf_core = \u0026#39;ARW\u0026#39;, # 역학코어 설정. 연구용:\u0026#39;ARW\u0026#39; or 현업용:\u0026#39;NMM\u0026#39; max_dom = 2, # nesting grid를 포함한 영역의 갯수. io_form_geogrid = 2, # geogrid 데이터 형식. 1=binary, 2=netcdf, 3=GRIB1 / \u0026amp;geogrid parent_id = 1, 1, # mother domain의 id. 첫 영역의 1은 자기 자신을 의미함 parent_grid_ratio = 1, 3, # nested domain의 해상도. 3은 3배를 의미함 i_parent_start = 1, 92, # domain의 x 축 시작점 (격자점) j_parent_start = 1, 53, # domain의 y 축 시작점 (격자점) e_we = 341, 331, # x 축 방향의 격자 갯수 e_sn = 341, 331, # y 축 방향의 격자 갯수 geog_data_res = \u0026#39;5m\u0026#39;,\u0026#39;2m\u0026#39;, # 사용할 지형 데이터의 해상도 설정 (참조: geogrid/GEOGRID.TBL) dx = 18000, # 최상위 domain의 x 축 방향 모형 해상도(meter) dy = 18000, # 최상위 domain의 y 축 방향 모형 해상도(meter) map_proj = \u0026#39;lambert\u0026#39;, # 지도 투영 방법. 중위도는 \u0026#39;lambert\u0026#39;, 저위도는 \u0026#39;mercater\u0026#39; 사용 ref_lat = 35.5, # 최상위 domain의 중심 위도 ref_lon = 144.4, # 최상위 domain의 중심 경도 truelat1 = 20.0, # 지도투영에 의해 발생하는 위도 왜곡에서 지표면과 교차되는 지점1 truelat2 = 40.0, # 지도투영에 의해 발생하는 위도 왜곡에서 지표면과 교차되는 지점2 stand_lon = 144.4, # 투영에서 수직으로 보여질 경도 (보통은 ref_lon과 같음) geog_data_path = \u0026#39;../../Data/geog/WPS_GEOG\u0026#39; # 지형 데이터가 있는 곳의 경로 / 참고) 지도 투영 방법에 관한 개념설명은 저의 홈페이지에 있는 \u0026quot; WRF ARW에서 사용되는 지도 투영법\u0026rdquo; 을 참고하세요. 중위도 지역의 모의에는 보통 \u0026ldquo;Lambert Conformal\u0026rdquo; 투영법을 사용하며, 저위도나 적도지역은 \u0026ldquo;Mercator\u0026rdquo;, 극 지역은 \u0026ldquo;Polar Stereographic\u0026rdquo;, 전지구 모의에는 \u0026ldquo;Cylindrical Equidistant\u0026rdquo; 투영법을 사용합니다.\n영역 설정이 제대로 되었는지 확인하기 위하여 ncl을 이용하여 그려봅니다.\nncl util/plotgrids.ncl # for ncl v6.1.x ncl util/plotgrids_new.ncl # for ncl v6.2 or later geogrid.exe를 실행하여 \u0026lsquo;geo_em.dxx.nc\u0026rsquo;를 생성합니다. (도메인 마다 독립된 화일 생성)\n# geogrid/GEOGRID.TBL -\u0026gt; geogrid/GEOGRID.TBL.ARW 로 링크되어 있는지 확인 ./geogrid.exe # domain을 2개로 지정했으므로 geo_em.d01.nc와 geo_em.d02.nc 가 생성됨 # 간단하게 확인하기 위하여 ncview를 사용하여 확인 ncview geo_em.d01.nc; ncview geo_em.d02.nc 참고1) 만약, \u0026ldquo;ERROR: Error in ext_pkg_open_for_write_begin.\u0026ldquo;와 같은 에러메세지가 나타나고 \u0026ldquo;geo_em.d??.nc\u0026quot;화일의 사이즈가 0인 경우는 netCDF ver.4 에서 지원하는 압축기능을 포함한 라이브러리의 설치가 제대로 되어 있지 않은 경우일 수 있으므로, netCDF의 문제를 해결하여 재설치하거나 압축 기능을 사용하지 않도록 하고 WRF를 재컴파일하여야 합니다. 압축기능을 사용하지 않고 싶다면 \u0026ldquo;export NETCDF_classic=1\u0026quot;을 수행하여 환경변수를 설정한 후 WRF를 처음부터 재컴파일 하면 됩니다.\n참고2) \u0026ldquo;ERROR: Could not open …/…/index\u0026quot;와 같은 에러메세지가 나타나면 \u0026ldquo;namelist.wps\u0026quot;의 \u0026ldquo;geo_data_path = \u0026ldquo;의 부분을 확인하고 지정된 디렉토리에 자료가 있는지 확인합니다.\n7. UNGRIB : 기상 입력 자료를 중간변형 파일로 만들기 # UNGRIB은 GRIB (GRIB1 또는 GRIB2) 형식으로 제공되고 있는 기상자료를 읽어서 중간 변형 파일로 만드는 것입니다. 중간변형 파일에 관한 자세한 내용은 여기 를 참고하세요.\n7-1. 기상 자료 가져오기 : GFS 전지구 자료 # WPS에서는 다양한 기상 자료를 처리할 수 있도록 미리 준비해 두었습니다. 여기에서는 일반적으로 많이 사용하는 GFS의 기상자료를 사용하는 것으로 가정하고 설명하지만, 다른 자료들에도 충분히 응용 가능합니다.\n실험 사례에 대한 모의 기간(2018년 8월 18일~23일)에 맞추어 다음과 같이 GFS 자료를 가져옵니다.\ncd ~/models/WRF/Data/GFS/Grid4 GFSdata=${PWD} YYYYmm=201808 Server=\u0026#39;ftp://nomads.ncdc.noaa.gov/GFS/Grid4\u0026#39; for dd in 18 19 20 21 22 23; do mkdir -p $GFSdata/$YYYYmm/$YYYYmm$dd; cd $GFSdata/$YYYYmm/$YYYYmm$dd for hh in 00 06 12 18; do wget $Server/$YYYYmm/$YYYYmm$dd/gfs_4_$YYYYmm${dd}_${hh}00_000.grb2 done done 참고) GFS 자료는 매일 6시간(0,6,12,18시) 마다 예측 자료를 생산하며 각 예측 시간에는 다음과 같이 0 ~ 240시간 예측까지는 3시간 간격으로 저장되어 있으며, 240 ~ 384시간 예측은 12시간 간격으로 저장되어 있습니다. 각 예측 자료의 000 시간은 초기장으로 생각하면 됩니다. 이 실험에서는 각 모의의 000 시간대의 자료를 가져와서 실험하도록 할 것이므로 모의 결과가 예측 자료를 사용하는 것보다 좋을 수 있으니 주의하세요.\ngfs_4_YYYYmmdd_0000_{000,003,006,009,012,\u0026hellip;.,240}.grb2_ gfs_4_YYYYmmdd_0000{252,264,276,288,300,\u0026hellip;.,384}.grb2 7-2. 중간변형 파일 만든기 # GRIB 자료의 압축풀기는 namelist.wps의 \u0026ldquo;\u0026amp;share\u0026quot;와 \u0026ldquo;\u0026amp;ungrib\u0026quot;의 섹션을 통해 설정합니다. 이 설정은 추천 사례를 통해서 좀 더 자세히 알 수 있습니다.\nUNGRIB이 수행하는 내용은 다음과 같습니다.\nWRF 모델의 도메인 영역에 종속되지 않고 준비된 기상자료 전체에 대해 처리합니다. GEOGRID에도 종속되지 않으며 모델 도메인 영역에 따라 데이터를 축소하거나 맞춤 변형하지 않습니다. 단순히 기상자료로부터 필요한 변수의 압축을 풀고 METGRID 프로그램이 읽을 수 있는 중간 형식으로 저장합니다. Vtables (WPS/ungrib/Variable_Tables/)를 사용하여 GRIB 파일에서 압축을 풀고자 하는 변수를 지정합니다. Vtables 디렉토리에는 다양한 기상 자료의 형식을 지원하는 정보가 들어 있습니다. 자세한 사항은 Variable_Tables/README 파일을 참고하세요. 대부분의 기상자료들을 지원하지만 여기에서 지원하지 않는 자료의 형식은 Vtable을 직접 작성해서 사용해야 합니다. 직접 작성할 경우에 필요한 입력필드는 여기 를 참조하세요. UNGRIB으로 기상자료를 생산하는 방법은 다음과 같습니다.\ncd ~/models/WRF/V4.1/WPS ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable ./link_grib.csh ~/models/WRF/Data/GFS/Grib4/201808/201808{18,19,20,21,22,23}/*.grb2 # GRIBFILE.??? 화일들이 정상적으로 링크되었는지 확인 #예) GRIBFILE.AAA -\u0026gt; ~/models/WRF/Data/GFS/Grib4/201808/20180818/gfs_4_20180818_0000_000.grb2 vi namelist.wps \u0026amp;share start_date = \u0026#39;2018-08-18_12:00:00\u0026#39;,\u0026#39;2018-08-18_12:00:00\u0026#39;, end_date = \u0026#39;2018-08-23_12:00:00\u0026#39;,\u0026#39;2018-08-23_12:00:00\u0026#39;, interval_seconds = 10800 / \u0026amp;ungrib out_format = \u0026#39;WPS\u0026#39;, prefix = \u0026#39;FILE\u0026#39;, / # ungrib을 실행하고 에러가 없는지 확인 ./ungrib.exe \u0026gt;\u0026amp; log.ungrib UNGRIB을 완료하고 나면 \u0026amp;ungrib 섹션의 prefix에 지정한 이름(여기에서는 \u0026lsquo;FILE\u0026rsquo;)과 함께 시계열로 된 기상자료가 중간변형 형식으로 만들어 집니다. 자료의 시간 간격은 \u0026amp;share 섹션에 지정한 \u0026ldquo;interval_seconds = 10800\u0026quot;에 의해서 3시간 간격으로 저장됩니다.\nFILE:2018-08-18_12, FILE:2018-08-18_15, …, FILE:2018-08-23_09, FILE:2018-08-23_12\n중간변형 형식 자료의 정보를 확인하려면 다음과 같은 명령을 사용합니다.\n./util/rd_intermediate.exe FILE:2018-08-18_12 WRF를 모의할 때에는 실험의 전체 기간에 대해 기상자료의 경계조건이 필요합니다. 여기서 생성한 기상 입력 자료의 기간이 충분한지 확인하시기 바랍니다.\n참고1) GRIB 형식이 아닌 기상 자료를 입력자료로 사용할 경우는 중간변형 형식의 파일을 직접 만들 수 있습니다. 이에 대한 자세한 내용은 WRF User\u0026rsquo;s Guide 의 3장을 참조하세요. 입력 자료를 직접 만드는 경우는 UNGRIB의 단계를 건너 뛸 수 있으며, rd_intermediate.exe 프로그램으로 완결성을 확인할 수 있습니다.\n참고2) 중간변형 화일에는 원 자료 전체 지역에 대해 정보가 저장되어 있으므로 모의 실험 영역을 변경한다고 UNGRIB을 다시 실행할 필요는 없습니다. 다만, 원 자료가 새로운 실험 영역을 모두 포함하지 않는 경우는 영역에 맞는 원 자료로 재생산 해야 합니다.\n8. METGRID : 기상 입력자료를 수평보간하고 netCDF 형식으로 만들기 # METGRID는 중간변형된 기상 입력자료를 실험 영역에 맞게 수평적으로 보간합니다. 이 단계에서는 연직 보간은 하지 않습니다. metgrid.exe 의 출력자료는 WRF에서 연직 보간에 사용됩니다.\nMETGRID의 입력은 GEOGRID에서 만든 geo_em.d??.nc 와 UNGRIB에서 만든 FILE:YYYY-MM-DD_hh 화일들 입니다. 다음과 같이 METGRID를 수행하세요.\ncd ~/models/WRF/V4.1/WPS vi namelist.wps \u0026amp;metgrid fg_name = \u0026#39;FILE\u0026#39;, io_form_metgrid = 2, # metgrid 데이터 형식. 2=netcdf / # metgrid를 실행하여 수평 보간 수행 ./metgrid.exe \u0026gt;\u0026amp; log.metgrid METGRID에 의해 만들어진 자료들은 다음과 같습니다. d01과 d02는 도메인 영역을 뜻합니다.\nmet_em.d01.2018-08-18_12:00:00.nc, …, met_em.d01.2018-08-23_12:00:00.nc met_em.d02.2018-08-18_12:00:00.nc, …, met_em.d02.2018-08-23_12:00:00.nc\nWRF로 모의하는 단계 # WRF 모델에는 2 단계가 있습니다.\nreal.exe : METGRID에서 만든 met_em.* 파일들을 연직 보간하고 경계 조건 파일과 초기 조건 파일을 생성하고 일관성을 검사합니다. wrf.exe의 입력자료인 다음과 같은 파일들이 만들어 집니다. 이 자료들은 netCDF 형식으로 되어 있으므로 ncview 등의 도구로 확인할 수 있습니다. wrfinput_d01, wrfinput_d02 # 영역1과 2에 대한 input data wrfbdy_d01 # 영역1의 boundary data\nwrf.exe : 모델을 적분하여 모의합니다. 9. WRF 모의 # WRF의 모의 순서는 :\nnamelist.input을 만들고, real.exe로 연직 보간을 한 후 wrf.exe로 사례 실험 모의를 하고 wrfout* 결과 화일을 분석합니다. 9-1. \u0026ldquo;namelist.input\u0026rdquo; 만들기 # namelist.input 파일은 real.exe와 wrf.exe에서 참조됩니다. namelist.input에 대한 상세한 설명은 WRF/run/README.namelist를 참고하세요. 아래의 내용은 본 실험사례에 관련된 내용만 나열하도록 하겠습니다.\ncd ~/models/WRF/V4.1/WRF/run vi namelist.input # 상세 내용은 WRF/run/README.namelist 참고 \u0026amp;time_control run_days = 5, run_hours = 0, run_minutes = 0, run_seconds = 0, start_year = 2018, 2018, start_month = 08, 08, start_day = 18, 18, start_hour = 12, 12, end_year = 2018, 2018, end_month = 08, 08, end_day = 23, 23, end_hour = 12, 12, interval_seconds = 10800, ! 입력 경계치 자료 (wrfbdy)의 시간 간격 (초) input_from_file = .true.,.false., ! 영역별 nested domain의 경계치 입력자료 사용 유무 history_interval = 180, 180, ! 영역별 결과 저장 간격 (분) frame_per_outfile = 1000, 1000, ! 영역별 결과파일 분리 간격. 예) 1000번 마다 독립 파일 생성 restart = .false., ! 이 실험이 restar인 경우 .true. restart_interval = 7200, ! restart 파일의 저장 간격 (분) io_form_history = 2, ! netCDF(2),PHD5(4),GRIB1(5),GRIB2(10),pnetCDF(11) io_form_restart = 2, ! io_form_input = 2, ! io_form_boundary = 2, ! debug_level = 0, ! 디버그 정보 간격. 예) 50,100,200,300 diag_print = 0, ! print out time series of model diagnostics ! 0 = no print ! 1 = 영역 평균 3시간 간격 기압 관련 자료 표출 ! 2 = 추가로 강우, 증발, 현열속, 잠열속 등 표출 ! SST 자료를 갱신할 경우 (sst_update=1 과 함께 사용): !auxinput4_inname = \u0026#34;wrflowinp_d\u0026lt;domain\u0026gt;\u0026#34; ! 입력자료 파일 이름 형식 !auxinput4_interval = 360 ! SST 갱신 간격 (분) !io_form_auxinput4 = 2 ! 2 = netCDF. V3.2에서 필요 !nwp_diagnostics = 0 ! 모델 적분 시에 검증을 할경우 1로 설정 / \u0026amp;domains time_step = 60, ! 모델 적분 시간 간격 (초). 보통 dx(in km)의 6배보다 작게 설정 time_step_fract_num = 0, ! 시간간격을 초단위 이하로 설정할 경우 설정 time_step_fract_den = 1, ! 예) 시간간격을 60.3 으로 설정할 경우 : ! time_step=60, fract_num=3, fract_den=10 max_dom = 2, ! Domain의 갯수. 1 이면 nesting domain이 없음을 의미 !s_we = 1, 1, ! 영역별 동서방향의 시작 격자점 e_we = 341, 331, ! 영역별 동서방향의 끝 격자점 (해상도) !s_sn = 1, 1, ! 영역별 남북방향의 시작 격자점 e_sn = 341, 331, ! 영역별 남북방향의 끝 격자점 (해상도) !s_vert = 1, 1, ! 영역별 연직방향의 시작(surface) 격자점 e_vert = 33, 33, ! 영역별 연직방향의 끝(top) 격자점 (해상도) dx = 18000, 6000, ! x축 격자간격. ARW(in meters), NMM(in degrees) dy = 18000, 6000, ! y축 격자간격. ARW(in meters), NMM(in degrees) grid_id = 1, 2, ! 영역 id parent_id = 0, 1, ! 상위 영역의 id i_parent_start = 1, 92, ! 영역별 i-index(x축)의 상위영역 시작 격자점 j_parent_start = 1, 53, ! 영역별 j-index(y축)의 상위영역 시작 격자점 parent_grid_ratio = 1, 3, ! 상위영역과의 격자비율. 홀수배로 설정하여야 함 parent_time_step_ratio = 1,3, ! 상위영역과의 적분시간간격 비율. 2배 이상을 권장함 feedback = 1, ! 상위영역으로의 정보교환 유무. 0 = no feedback smooth_option = 0, ! feedback=1의 경우 smooth 방법 ! 0: no smoothing, 1: 1-2-1 smoothing, ! 2: smoothing-desmoothing (default) p_top_requested = 5000, num_metgrid_levels = 32, num_metgrid_soil_levels = 4, use_levels_below_ground = .false., ! 3D PWP 해양모형을 함께 적분하여 결합하는 경우 (sf_ocean_physics=2) : omdt = 1, ! 3D PWP time step (min). 1분 이상의 값이어야 함. ! WRF의 time step과 동일하게 설정 권장 ocean_levels = 30, ! sf_ocean_physics=2 일 경우 연직 층수 ocean_z ! 해양모형의 연직 층(layer)의 깊이 (meters) = 5., 15., 25., 35., 45., 55., 65., 75., 85., 95., 105., 115., 125., 135., 145., 155., 165., 175., 185., 195., 210., 230., 250., 270., 290., 310., 330., 350., 370., 390. ocean_t ! 수온 연직분포 = 302.3493, 302.3493, 302.3493, 302.1055, 301.9763, 301.6818, 301.2220, 300.7531, 300.1200, 299.4778, 298.7443, 297.9194, 297.0883, 296.1443, 295.1941, 294.1979, 293.1558, 292.1136, 291.0714, 290.0293, 288.7377, 287.1967, 285.6557, 284.8503, 284.0450, 283.4316, 283.0102, 282.5888, 282.1674, 281.7461 ocean_s ! 염분 연직분포 = 34.0127, 34.0127, 34.0127, 34.3217, 34.2624, 34.2632, 34.3240, 34.3824, 34.3980, 34.4113, 34.4220, 34.4303, 34.6173, 34.6409, 34.6535, 34.6550, 34.6565, 34.6527, 34.6490, 34.6446, 34.6396, 34.6347, 34.6297, 34.6247, 34.6490, 34.6446, 34.6396, 34.6347, 34.6297, 34.6247 ! vortex를 따라서 nesting 영역을 자동으로 이동하기 위한 설정 : ! 이 설정을 사용하려면, WRF의 컴파일 시에 (3=vortex_following) 옵션으로 컴파일되어 있어야 함 vortex_interval = 15, 15, ! vortex의 위치를 계산하는 간격 max_vortex_speed = 30, 30, ! vortex의 위치를 알기 위한 vortex 반경을 계산하는데 사용 corral_dist = 10, 10, ! 상위영역의 경계측으로 접근할 수 있는 최소한의 격자 수 track_level = 50000, ! 추적되는 vortex가 위치한 곳의 압력(Pa) time_to_move = 0., 0., ! nesting 영역의 이동을 계산하는 시작 시간(분) / \u0026amp;physics mp_physics = 6, 6, ! 미세물리 모수화기법: (cl=class,mo=moment,ic=ice) ! 0 = no microphysics, 1 = Kessler, ! 2 = Lin et al., 3 = WSM 3-cl simple ic, ! 4 = WSM 5-cl, 5 = Ferrier (new Eta), ! 6 = WSM 6-cl graupel, 7 = Goddard 4-ic, ! 8 = Thompson, 9 = Mibrandt-Yau 2-mo, ! 10 = Morrison, 11 = CAM 5.1, ! 13 = SBU_YLIN, 14 = WDM 5-cl, ! 16 = WDM 6-cl, 17 = NSSL 2-m 4-i, ! 18 = NSSL 2-mo 4-ic with predicted CCN, ! 19 = NSSL 1-mo 7-cl, 21 = NSSL 1-mo 6-cl, ! 28 = aerosol-aware Thompson, ! 30 = HUJI spectral bin, ! 32 = HUJI spectral bin, full version, ! 40 = Morrison (2 mo), ! 50 = P3 1-category, 51=P3 + cloud water, ! 95 = Ferrier (old Eta), 97 = Goddard GCE ra_lw_physics = 1, 1, ! 장파복사 모수화기법: ! 0 = no lonwave radiation, 1 = RRTM, ! 3 = CAM, 4 = RRTMG, ! 14 = RRTMG-K from KIAPS, 24 = fast RRTMG, ! 5 = Goddard longwave, 7 = FLG (UCLA), ! 31 = Earth Held-Suarez forcing, ! 99 = GFDL (Eta) longwave ra_sw_physics = 1, 1, ! 단파복사 모수화기법: ! 0 = no shortwave radiation, 1 = Dudhia, ! 2 = Goddard shortwave, 3 = CAM, ! 4 = RRTMG, 14 = RRTMG-K from KIAPS, ! 24 = fast RRTMG, 5 = Goddard shortwave, ! 7 = FLG (UCLA), 99 = GFDL (Eta) longwave radt = 18, 18, ! 복사물리 함수 호출 간격(분). dx(in km)와 동일 값 추천 sf_sfclay_physics = 1, 1, ! 표층 모수화기법: ! 0 = no surface-layer, ! 1 = Revised MM5 Monin-Obukhov, ! 2 = Monin-Obukhov, 3 = NCEP GFS (MMM only) ! 4 = QNSE, 5 = MYNN, ! 7 = Pleim-Xiu (ARW only), ! 10 = TEMF (ARW only), 91 = Old MM5 sf_surface_physics = 2, 2, ! 지면 모수화기법: ! 0 = no surface temp prediction ! 1 = thermal diffusion, 2 = Unified Noah LSM, ! 3 = RUC LSM, 4 = Noah-MP LSM, ! 5 = CLM4 from CAM, 7 = Pleim-Xiu LSM (ARW), ! 8 = SSiB sf_urban_physics = 0, 0, ! urban canopy model 계산 유무 ! 0 = no, 1 = Single-layer, UCM, ! 2 = Multi-layer, BEP, 3 = Multi-layer, BEM bl_pbl_physics = 1, 1, ! 경계층 모수화기법: ! 0 = no boundary-layer, 1 = YSU, ! 2 = Mellor-Yamada-Janjic TKE, ! 3 = Hybrid EDMF GFS (NMM only), ! 4 = Eddy-diff. Mass Flux, QNSE PBL, ! 5 = MYNN L2.5 TKE, 6 = MYNN 3rd level TKE, ! 7 = ACM2 PBL (ARW), 8 = BouLac PBL, ! 9 = UW BL from CAM5, 10 = TEMF, ! 11 = Shin-Hong PBL, 12 = GBM (ARW only), ! 93 = 2015 GFS (NMM only), 99 = MRF bldt = 0, 0, ! 경계층 물리모수화 함수 호출 간격 (분) cu_physics = 1, 0, ! 적운 물리모수화 기법: (참고: 고해상도에서는 사용하지 않음) ! (SAS=Simplified Arakawa-Schubert,K-F=Kain-Fritsch) ! 0: no cumuls, 1: K-F (new Eta), ! 2: Betts-Miller-Janjic, 3: Grell-Freitas ens., ! 4: Scale-aware GFS SAS, 5: Grell 3D ens., ! 6: Modified Tiedtke (ARW only), ! 7: Zhang-McFarlane, 10: Modfied K-F, ! 11: Multi-scale K-F, 14: modified GFS SAS, ! 16: newer Tiedtke, 94: 2015 GFS SAS (HWRF), ! 95: previous GFS SAS (HWRF), ! 96: previous NEW GFS SAS from YSU (ARW only), ! 93: Grell-Devenyi ens., 99: previous K-F cudt = 0, 0, ! 적운 물리모수화 함수 호출 간격 (분) isfflx = 1, ! 표층으로부터의 열속과 습윤속 처리 ! (sf_sfclay_physics = 1,5,7,11의 경우에만 적용됨) ! 1: 표층으로부터의 플럭스 사용 ! 0: 표층으로부터 플럭스 없음 ! with bl_pbl_physics=0 this uses tke_drag_coeff. ! and tke_heat_flux in vertical diff. ! 2: use drag from sf_sfclay_physics and heat flux ! from tke_heat_flux with bl_pbl_physics=0 ifsnow = 0, ! snow-cover 효과 (sf_surface_physics=1과 함께 사용) ! 1: 효과 적용, 0: 효과 없음 icloud = 1, ! cloud effect to the optical depth in radiation ! (only works for ra_sw_physics=1,4 ! and ra_lw_physics=1,4) ! 1: 효과 적용 (cloud fraction = 1), 0: 효과 없음, ! 2: 효과 적용 (cloud fraction = 2), ! 3: 효과 적용 (cloud fraction = 3) surface_input_source = 1, ! landuse 와 soil category 자료의 출처 ! 1: WPS/geogrid, dominant categories는 재계산 ! 2: GRIB from another model ! 3: WPS/geogrid, dominant categories 사용 num_soil_layers = 4, ! LSM(지면모델)의 soil layers 갯수 ! 5: thermal diffusion, 4: Noah LSM ! 6 or 9: RUC LSM, 10: CLM4 LSM ! 2: Pleim-Xu LSM, 3: SSiB LSM !sst_update = 0 ! 해양모형을 사용하지 않고 SST 시계열 자료를 입력으로 할 경우 ! ! (0:no, 1:yes) sf_ocean_physics = 2, ! 해양모형 적분 계산 ! 0: no, 1: 1d mixed layer, ! 2: 3D PWP, no bathymetry isftcflx = 2, ! 열대 폭풍 실험을 위한 Ck와 Cd 선택 ! For sf_sfclay=1 \u0026amp; 11, ! 0: default, 1: Donelan Cd + const z0q ! 2: Donelan Cd + Garratt ! For sf_sfclay=5 ! 0: z0, zt, zq from COARE3.0 (default) ! 1: z0 from Davis et al, zt \u0026amp; zq from COARE3.0 ! 2: z0 from Davis et al, zt \u0026amp; zq from Garratt do_radar_ref = 1, ! 1: allows radar reflectivity to be computed ! using mp-scheme-specific parameters. ! Works for mp_physics=2,4,6,7,8,10,14,16,28 / \u0026amp;fdda ! Data Assimilation 관련 섹션 / \u0026amp;dynamics diff_opt = 1, 1, ! 난류 및 혼합 ! 0: no turbulence or explicit, ! 1: evaluates 2nd order diffusion term ! 실제사례에 추천 ! 2: evaluate mixing terms km_opt = 4, 4, ! eddy coefficient ! 참고) dx \u0026gt; 2km 에서 2번과 3번은 추천하지 않음 ! 1: constant, 2: 1.5 order TKE closure (3D) ! 3: Smagorinsky first order closure (3D) ! 4: horiz. Smagorinsky first order closure ! 실제사례에 추천 damp_opt = 0, ! upper level damping flag ! 0: without damping, ! 1: diffusive damping (실제사례에 추천), ! 2: Rayleigh damping, ! 3: w-Rayleigh damping (실제사례에 추천) dampcoef = 0.2, 0.2, ! damping coefficient zdamp = 5000.,5000., ! damping depth(m) from model top w_damping = 0, ! vertical velocity damping flag ! (for operational use) ! 0: without damping, 1: with damping khdif = 0, 0, ! horiz. diff. const. (m^2/s) ! 보통은 0.1*dx(in meter) 사용 kvdif = 0, 0, ! vert. diff. const. (m^2/s) ! 보통은 100.0을 사용 non_hydrostatic = .true.,.true., ! (비)정수압 가정의 사용 유무 moist_adv_opt = 1, 1, ! for moisture scalar_adv_opt = 1, 1, ! for scalars / \u0026amp;bdy_control spec_bdy_width = 10, ! num of rows for specified boundary value nudging spec_zone = 1, ! num of points in specified zone relax_zone = 9, ! num of points in relaxation zone specified = .true.,.false., ! specified B.C. (only can be used for domain 1) nested = .false.,.true., ! nested B.C. (must be used for nests) / 9-2. real.exe: 기상 자료를 연직 보간하여 WRF 입력 자료 만들기 # cd ~/models/WRF/V4.1/WRF/run ln -sf ../../WPS/met_em.d0* . # 수평보간한 입력 자료를 WPS로부터 링크 # 다음의 세가지 방법 중 하나로 실행할 수 있음 ./real.exe # 단일 프로세서로 실행하는 경우 mpirun -np 2 ./real.exe # 분산병렬 시스템에서 2개의 프로세서로 실행하는 경우 mpirun -np 2 -machinefile ./machfile real.exe # 계산 노드를 지정하여 분산병렬로 실행하는 경우 참고) namelist.input 의 내용 중 date/times 또는 입력자료관련이나 LSM packages 등의 내용을 수정한 경우에는 real.exe를 다시 실행하여 wrfinput과 wrfbdy의 입력자료를 다시 만들어야 합니다.\n9-3. wrf.exe: 사례 실험 모의하기 # cd ~/models/WRF/V4.1/WRF/run # 다음의 세가지 방법 중 하나로 모델을 실행할 수 있음 ./wrf.exe # 단일 프로세서로 실행하는 경우 mpirun -np 4 ./wrf.exe # 분산병렬 시스템에서 4개의 프로세서로 실행하는 경우 mpirun -np 4 -machinefile ./machfile wrf.exe # 계산 노드를 지정하여 분산병렬로 실행하는 경우 # 모의가 끝나면 \u0026#34;wrfout_d??_YYYY-MM-DD_HH:00:00\u0026#34; 형식의 파일이 생성되니 이 자료로 분석에 들어가면 됩니다. 참고) 대용량 시스템에서는 모델을 대화형으로 직접 실행하지 않고, queue를 통해서 job을 제출해야하며 시스템에 따라서 그 사용방법이 다르니 시스템 관리자에게 물어보시기 바랍니다.\n10. 모의 결과 분석 # 사례 실험 모의가 끝나면 다음과 같은 결과 파일이 생성됩니다.\nwrfout_d01_2018-08-18_12:00:00, \u0026hellip;\n이 결과 파일들은 netCDF 형식으로 만들어진 것이므로 ncview 등으로 간단히 확인할 수 있습니다.\nWRF의 홈페이지에서 제공하는 WRF Post-Processing Software 에 편리한 도구들이 있으니 참고하세요. 여기에서는 Python을 이용하여 자료를 분석하고자 하며, 상세한 내용은 추후 다른 지면으로 통하여 제공하도록 하겠습니다.\n수고하셨습니다! ^-^. 작성 : 김동훈 (http://blog.dhkim.info, 인하대학교) \u0026 문일주 (제주대학교)2019년 4월 29일\n- END - ","date":"2019년 4월 29일","externalUrl":null,"permalink":"/2019/04/WRF_Tutor/","section":"글","summary":"WRF ARW V4.1로 태풍 솔릭을 모의하는 전 과정. 모델과 WPS의 설치·구성부터 실행까지 다룬, 이 블로그에서 가장 긴 튜토리얼입니다.","title":"WRF ARW V4 로 태풍 솔릭(Soulik) 모의해 보기","type":"posts"},{"content":"","date":"2019년 2월 14일","externalUrl":null,"permalink":"/tags/FVCOM/","section":"태그","summary":"","title":"FVCOM","type":"tags"},{"content":" FVCOM code study # by Bon-Ho, Gu \u0026amp; Chae-Wook, Lim\nFVCOM 2.x # POM과 동일한 BCOND, ADV 서브루틴 사용\nFVCOM 3.x # POM 98 # FVCOM 2.x WQ \u0026amp; POM 98 # --- The END --- ","date":"2019년 2월 14일","externalUrl":null,"permalink":"/2019/02/FVCOMcode/","section":"글","summary":"FVCOM 2.x와 3.x, POM 98의 소스코드 구조를 서브루틴 호출 관계 도식으로 비교한 코드 스터디 자료입니다. (구본호·임채욱)","title":"FVCOM 소스코드 분석","type":"posts"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/Binary/","section":"태그","summary":"","title":"Binary","type":"tags"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/NetCDF/","section":"태그","summary":"","title":"NetCDF","type":"tags"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/%EC%8B%9C%EA%B0%81%ED%99%94/","section":"태그","summary":"","title":"시각화","type":"tags"},{"content":"","date":"2019년 1월 23일","externalUrl":null,"permalink":"/tags/%EC%9E%90%EB%A3%8C%ED%98%95%EC%8B%9D/","section":"태그","summary":"","title":"자료형식","type":"tags"},{"content":" 원시방정식(Primitive Equation) # 대기와 해양의 유체를 기술하는데 사용되는 방정식은 다음의 세가지가 있다.\n연속방정식(continuity equation) 운동량 보존 방정식(momentum equation) 열에너지 방정식(thermal energy equation) Navier-Stokes equations # N-S 방정식은 점성을 가진 유체의 운동을 기술하는 비선형 편미분 방정식이다.\n이 방정식은 대기와 해양의 분석과 예측 등을 연구하는데 사용되고 있다.\nN-S 방정식은 여러가지 형태로 쓰이지만, 아인슈타인 표기법을 사용하면 다음과 같다.\nThe Primitive Equations in Cartesian Coordinates # momentum equations\ncontinuity equation\ntemperature equation\nsalinity equation\ndensity equation\n해양-기상 변수의 종류 # 해양과 기상 분야에서 사용되는 변수들은 scalar 자료와 vetor 자료로 구분할 수 있다.\n지형자료 : 수심, 표고\nETOPO2: Topography and Bathymetry\n(1995년 작품, 김동훈) Scalar :\n기온(Temperature, oC^oC),\n기압(Pressure, hPahPa),\n습도(Humidity, relative, %\\%),\n강수량(mmmm),\n수온(oC^oC),\n염분(o/oo, g/kgo/_{oo},\\ g/kg), 등\u0026hellip;\n수온(Ocean Temperature, Sea Temperature, Water Temperature)\n(2003년 작품: 김동훈)\n해수면 높이 (SSH, Sea Surface Height)\n(1996년 작품)\nVector :\n바람(Wind, m/sm/s),\n유속(Currents, m/sm/s), 등 \u0026hellip;\n해수면 유속(Sea Surface Currents)\n(2003년 작품: 김동훈) Flux(속) :\n열속(heat flux),\n담수속(fresh water flux)\n열속(heat flux) : 담수속(fresh water flux) :\nEvapolation - Pricipitation\n해양-기상 자료 형태(형식, format)의 종류 # text(ascii) binary bin + ctl grib \u0026amp; grib2 hdf(4,5) NetCDF \u0026hellip; \u0026hellip; 해양-기상 관측 기기들 # Remote Sensing 인공위성 레이더 라이더 Direct Sensing 부이(Buoy) 프로파일러 : ADCP, CTD 자동관측기기 : AWS 해양-기상 자료들 # Argo GTSPP CCHDO World Ocean Database World Ocean Atlas\n: Monthly, seasonal and annual hydrographic data from the U.S. 2001, 2005, 2009, 2013 World Ocean Circulation Experiment(WOCE)\n: Global 0.5o×0.5o0.5^o \\times 0.5^o gridded climatology SeaDataNet Medar/Medatlas 해양-기상 자료 서비스 # PODAAC\n(Physical Oceanography Distributed Active Archive Center)\n해양-대기 자료의 처리 및 표출 # scalar\nContour\n중첩일기도 (고층일기도+적외영상)\n정지화면상에서 여러가지 성분을 함께 나타내기 좋음.\nColor : Surface\nvector\nArrow : Tracer : Streamline\n벡터성분의 움직임을 표현하기 좋지만 난이도 높음.\nOpenDX : Maya : Virtual Reality (Strereo Graphic)\nMaya, NCSA\nNCAS에서 제작한 예로써 realtime rendering은 아님.\n- END - ","date":"2019년 1월 23일","externalUrl":null,"permalink":"/2019/01/MMdata/","section":"글","summary":"원시방정식에서 출발해 해양·기상 변수의 종류, 관측 기기, 자료 서비스, 자료를 그림으로 표출하는 방법까지 한 번에 훑는 개론.","title":"해양 관측자료 및 수치모델 예측자료의 활용과 분석","type":"posts"},{"content":" Binary(이진) data # 텍스트 파일: 인간 친화적 데이터 이진 파일: 컴퓨터 친화적 데이터 NetCDF, Grib, HDF5 등 :\n이진 파일의 일종으로 컴퓨터 친화적이지만, 인간 친화적이기도 함\nBinary format data 읽고 쓰기 # Fortran: binary data 읽고 쓰기\nC: binary data 읽고 쓰기\nPython: binary data 읽고 쓰기\nNetCDF 란? # NetCDF 응용 프로그램들 # CDAT (Climate Data Analysis Tool) CDO (Climate Data Operators) CSIRO MATLAB/netCDF interface FERRET GDAL (Geospatial Data Abstraction Library) GMT (Generic Mapping Tools) GrADS (Grid Analysis and Display System) HDF (Hierarchical Data Format) interface JSON format with the ncdump-json utility NCL (NCAR Command Language) NCO (NetCDF Operators) ncview OPeNDAP (formerly DODS) OpenDX (formerly IBM Data Explorer) Weather and Climate Toolkit (WCT) AVS IDL Interface MATLAB …, …, … Sample NetCDF example # netcdf simple_xy { dimensions: x = 6 ; y = 12 ; variables: int data(x, y) ; data: data = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71 ; } Fortran: Simple NetCDF example\nC: Simple NetCDF example\nPython: Simple NetCDF example\nfrom netCDF4 import Dataset NX = 6; NY = 12 file_name = \u0026#39;simple_xy.nc\u0026#39; with Dataset(file_name, \u0026#39;w\u0026#39;) as fout: fout.createDimension(\u0026#39;x\u0026#39;, NX) fout.createDimension(\u0026#39;y\u0026#39;, NY) data = fout.createVariable(\u0026#39;data\u0026#39;,\u0026#39;f\u0026#39;,(\u0026#39;x\u0026#39;,\u0026#39;y\u0026#39;)) for i in range(NX): for j in range(NY): data[i,j] = i * NY + j print(\u0026#34;*** SUCCESS writing : %s\u0026#34;%file_name) - END - ","date":"2019년 1월 23일","externalUrl":null,"permalink":"/2019/01/DataFormat/","section":"글","summary":"해양·대기 분야에서 다루는 이진 자료와 NetCDF 형식을 Fortran·C·Python 코드 예제로 읽고 쓰는 법, 그리고 관련 응용 프로그램들을 훑어봅니다.","title":"해양-대기 분야의 자료 형식들","type":"posts"},{"content":"","date":"2017년 10월 25일","externalUrl":null,"permalink":"/tags/RNN/","section":"태그","summary":"","title":"RNN","type":"tags"},{"content":"","date":"2017년 10월 25일","externalUrl":null,"permalink":"/tags/SST/","section":"태그","summary":"","title":"SST","type":"tags"},{"content":"2017년 한국기상학회 추계학술대회\n김동훈, 우승범 (인하대학교)\n1. 서론 # 인공신경망의 최신 기술인 딥러닝 방법 중에서 장기 시계열 예측에 적합한 GRU(Gated Recurrent Unit) 순환신경망(Recurrent Neural Networks, RNN)을 사용하여 Nino 3.4 지역의 SSTA(Sea Surface Temperature Anomaly, 해수면온도 이상)를 매월 단위로 미래 8개월까지 예측하는 시스템을 개발하였다. 이 시스템 개발에 앞서서 “인공신경망 딥러닝을 이용한 엘니뇨 예측성 연구”라는 주제로 지난 2017년 4월에 한국해양학회 춘계학술대회에서 선행연구 결과를 제시하여 그 가능성을 소개한 바 있다. 당시에 올 8월까지의 예측자료를 소개한 바가 있으며, 현재까지 입수한 관측자료와 비교한 자료를 그림 1에 제시하였다. 그림에서 보이는 바와 같이 선행연구로 이루어진 엘니뇨 예측시스템의 성능이 고무적인 것을 알 수 있다.\n그림 1. 2017년 3월에 모의한 Nino 3.4 지역 SSTA 예측 결과. 20년간의 학습자료로 구축한 모델(t20)의 예측 평균제곱오차가 0.05도로 높은 성능을 나타내고 있다.\n본 연구에서는 예측인자로써 SST만을 사용한 기존 모델을 개선하여 해양 수심 20미터의 해수온을 추가하고 예측방법 등을 개선하여 딥러닝 방법의 엘니뇨 예측시스템을 개발하였다.\n2. 예측방법 및 자료 # 인공신경망(Neural Networks, NN)은 인공지능 기계학습 기술 중에서 신경모형 패러다임에 속하며 그 중에서도 신경망을 깊게 구성한 것을 심층신경망(Deep NN, DNN)이라고 부른다. 최근의 심층신경망은 새로운 패러다임을 맞이하여 딥러닝(Deep Learning)이라는 새로운 신조어로 불리우는데, 그 방법에 따라서 합성곱신경망(Convolutional NN, CNN)과 순환신경망(Recurrent NN, RNN), 심층신뢰망(Deep Belief Network, DBN) 등으로 나누어 지며, CNN과 RNN은 지도학습(supervised learning)으로, DBN은 비지도학습(unsupervised learning)으로 분류된다. 또한, CNN과 DBN은 이미지 인식과 같은 독립자료의 처리에 적합하며, RNN은 언어 인식과 같이 자료의 순서가 판단에 필요한 시계열 자료의 처리에 적합하다.따라서 시계열의 연속성을 고려하기 위하여 본 연구에서는 RNN의 방법을 사용하였으며, 특히 RNN의 방법 중에서 장기 기억을 잘 반영할 수 있는 GRU 방법을 사용하였다. 사용된 도구는 알파고를 개발한 구글로부터 개방형으로 제공하는 딥러닝 라이브러리인 Tensorflow를 사용하였다.RNN-GRU는 입력층과 은닉(hidden)층, 출력층으로 구성되는데 입력층에 필요한 입력자료는 전지구 월별 시계열 (1979년 1월 – 2017년 6월, 38년 6개월간) 기간에 대하여 엘니뇨와 관계가 깊을 것으로 판단되는 ECMWF 재분석 자료인 ERA-Interim 자료 중 SST와 GODAS(NCEP Global Ocean Data Assimilation System)의 수심 20m에서의 해수온(T20m)을 위경도 방향으로 20도씩 bin으로 나누어 사용하였다. 각 bin은 육지가 10% 이상 포함되어 있는 지역을 제외한 63개의 분할지역에 대하여 지역 평균 시계열 자료로 구성하였다.이 전 연구에서는 입력층으로 전지구 주요 해역을 북태평양과 적도태평양, 동아시아, 대서양, 인도양 등의 5개 지역으로 나누어 각 지역에 대하여 EOF 분석에 의해 도출된 주요모드 시계열자료를 사용하였었는데, 2015년 후반기와 같은 엘니뇨가 강했던 해는 예측성이 떨어졌으며 그 원인은 원 자료를 2차로 가공하면서 딥러닝 모델의 예측성능을 떨어뜨리는 것으로 판단되었다. 출력자료로 사용되는 Nino 3.4 지역의 SSTA는 OISST(version 2)와 ERSST (version 4), HadISST 등의 기관에서 제공하고 있는데 자료 제공 기간과 자료의 품질이 조금씩 차이를 보이고 있다. 각 자료를 비교 분석해 본 결과, 본 연구의 예측 자료 비교에 주로 사용한 NCEP CPC에서 사용한 SSTA와 가장 유사한 것이 OISST 자료인 것으로 판단되어 이를 출력층 자료로 사용하였다.본 실험에서 예측한 기간은 지난 3년간(2015년~2017년6월)으로 매월마다 예측을 하였으며 각 예측에 대하여 미래 8개월까지 예측을 하였다. 예측 기간과 입력 자료들의 불일치 기간을 제외한 1980년부터 2014년까지의 35년간 자료를 딥러닝 모델의 학습에 사용하였으며, 한번 예측에 미래 8개월을 동시에 예측하도록 many-to-many 방법을 사용 하였다.\n3. 결과 # 매월 단위로 미래 8개월을 예측하는 방법으로 지난 3년간에 대하여 관측치와 예측치를 비교하여 보았다 (그림 2).\n그림 2. Nino 3.4 SST Anomaly 시계열. 관측치: 검은 실선, 예측치 평균: 붉은 실선\n검은 실선은 OISST에서 제공하는 관측치이며, 매월마다 그려진 짧은 실선과 점들은 각 달의 8개월 예측을 나타낸다. 그러므로 해당 월에는 지난 8개월동안 예측한 8개의 예측치가 있으므로 이에 대한 앙상블 평균치를 붉은 실선으로 나타내었다. 2015년 2월~5월 사이에는 11월의 강한 anomaly의 trigger가 되는 시점으로, 많은 예측 모델들이 이에 대한 예측에 어려움을 겪었었는데, 딥러닝 모델에서는 이를 잘 모의한 것으로 나타났다. 좀 더 자세한 비교를 위하여 같은 기간에 대하여 미국 기상청(NCEP)의 기후예측센터(CPC)에서 제공하는 유수 연구소들의 예측결과들과 비교해 보았다 (그림 3).\n그림 3. NCEP CPC에서 제공하는 모델별 앙상블 예측결과들과 딥러닝 모델의 예측결과\n(검은실선: 관측치, 붉은별표실선: 딥러닝예측결과의 앙상블평균)\n예측시점 : 2015년2월(좌상), 2015년8월(우상), 2016년11월(좌하), 2017년6월(우하) 4. 결론 # 본 연구에서는 딥러닝을 이용한 해수면 온도 예측 시스템을 개발하였으며, 이를 이용하여 과거 38년간의 관측 재분석 자료를 기반으로 RNN-GRU 방법으로 Nino 3.4 지역의 해수면 온도 이상을 정량적으로 예측해 보았다. 학습된 모형으로 지난 3년간(2015년1월~2017년6월)에 대하여 수행한 예측 결과들은 선진국의 예측결과들과 비교할 수 있을 정도의 높은 성능을 보여 주고 있으며 실 사용에 바로 사용할 수 있을 정도의 완성도를 보여 주고 있다. 지난 3월에 예측한 올해 8월까지의 예측결과가 실측치와 상당히 일치하고 있는 것과 같이, 이번 연구에서도 내년(2018년) 2월까지의 예측자료를 그림 3(오른쪽아래)에 제공하여 추후에 검증할 예정이다.\n=== END === --- ","date":"2017년 10월 25일","externalUrl":null,"permalink":"/2017/10/RNN_Nino34/","section":"글","summary":"GRU 순환신경망으로 Nino 3.4 해역의 해수면온도 이상을 8개월 앞까지 예측한 연구. 2017년 한국기상학회 추계학술대회 발표 자료입니다.","title":"인공지능 딥러닝을 이용한 엘니뇨 예측시스템 개발","type":"posts"},{"content":"2017년 한국기상학회 추계학술대회\n김동훈, 우승범 (인하대학교)\n서론 # 기상관측장비로부터 수신되는 관측자료들은 운영의 복잡함에 따라 지연수신이 되는 경우가 발생함으로써 관측지점이 많아 질수록 모든 자료가 수신되는 데에는 그 만큼 지연시간이 커지게 된다. 그러므로 기준시간을 넘어서 미수신되는 관측자료를 대체할 수 있다면 여러 가지로 큰 의미를 부여할 수 있을 것이다. 예를들어, 기상예측 성능에 가장 큰 영향을 미치는 자료동화에 있어서 미수신되는 관측자료를 대신하여 자료동화의 품질 향상에 기여할 수 있으며, 수신된 관측자료의 1차 품질관리에도 사용 될 수 있을 것이다. 또한, 바람 관측자료의 10분에서 60분 내의 미래 관측치를 예측한다는 것은 항공기 이착륙과 같은 초단기 예측이 필요한 분야에서 큰 의미를 가질 수 있다.\n기상청에서는 레이더 자료와 위성 자료 등을 이용한 실황 또는 초단기 예측 시스템을 개발하여 예보에 사용하고 있다. 이 예측 시스템들은 기본적으로 내·외삽 방법을 기반으로 하고 있으며, 좀 더 선진방법으로 초단기 순환모형을 사용하는 경우도 있지만 우리나라와 같이 국지적으로 짧은 시간에 발생 또는 소멸되는 기상 시스템에는 예측성능을 높이는데 어려움을 겪고 있다. 따라서, 본 연구에서는 그 동안의 개발 방법과는 다른 인공신경망 딥러닝을 이용한 초단기 예측의 가능성을 진단해 보았다.\n예측방법 및 자료 # 딥러닝(Deep Learning) 방법 중에서 시계열 예측에 적합한 순환신경망(Recurrent Neural Networks, RNN)을 사용하여 예측시스템을 개발하였다. 특히 RNN의 방법 중에서 장기 기억을 잘 반영할 수 있는 GRU 방법을 사용하였다.\nRNN-GRU는 입력층과 은닉(hidden)층, 출력층으로 구성되는데 입력층에 필요한 입력자료는 기상청에서 운영하고 있는 자동기상관측장비(Automated Weather Station, AWS)의 관측자료를 사용하였다. AWS는 1분 단위로 지상의 풍속과 풍향, 기온, 강수량 등을 관측하여 실시간으로 제공하는데, 개발된 딥러닝 모델이 10분 단위로 예측하기 편리하도록 시계열 자료를 10분 평균으로 재구성하여 사용하였다.\n본 연구에서 실험한 예측 지점은 인천공항에서 가까운 영종도 지점(지점번호:543)이며, 이 지점을 포함한 주위의 10개 AWS 관측 지점들의 관측 자료(풍속,풍향,기온,강수량)를 예측인자로 사용하였다(그림 1).\n그림 1. 예측 지점인 영종도 지점(543)을 포함한 주위 10개의 AWS 관측 지점 온라인에서 제공받을 수 있는 자료의 한계로 딥러닝 모델의 학습에 사용한 자료는 2016년 1월1일 00시00분부터 1년간인 2016년 12월 31일 23시59분까지의 자료를 사용하였다. 10분 단위의 1년간 학습기간은 지점 당 하나의 변수가 5만개가 넘기 때문에 자료의 양은 많으나 그 기간이 충분치 않은 면이 있다. 그러나 2016년과 2017년의 기후가 크게 다르지 않다는 가정하에 2016년으로 학습한 모델을 가지고 2017년의 특정일에 대하여 예측해 보았다. 2017년 1월부터 8월까지의 기간 중 인천지역의 최대 풍속이 발생하였던 2017년 1월26~27일과 5월6일, 5월13일, 8월24일에 대하여 각각 예측을 시도하였다.\n초단기 풍속 예측모델은 사용하는 자료가 지상으로 한정되어 있으므로 10분 이상의 예측에는 한계가 있을 것으로 예상되어 관측치의 10분 후 예측을 주요 목표로 삼았으나 확장 가능성을 진단하기 위하여 20분부터 60분까지의 예측도 함께 실시하였다.\n결과 # 2017년 1월부터 현재(8월)까지 영종도 지점의 순간풍속이 7∼8 m/s에 달하였던 1월 26~27일과 5월 6일, 5월 13일, 8월 24일에 대하여 각각 실제 관측자료와 예측 자료를 비교하여 보았다(그림 2∼5).\n그림 2. 사례1: 2017년 1월 26~27일 그림 3. 사례2: 2017년 5월 6일 그림 4. 사례3: 2017년 5월 13일 그림 5. 사례4: 2017년 8월 24일 검은 실선은 AWS 관측치이며, 매 10분마다 그려진 짧은 실선과 점들은 각 해당분에서의 60분까지의 예측을 나타낸다. 붉은 실선은 매 10분마다 10분 후의 관측치를 예측한 결과를 이은 선이다.\n관측 시각으로부터 10분 예측의 경우는 평균제곱오차가 각각 0.51(1월2627일), 0.48(5월6일), 0.47(5월13일), 0.47(8월24일)로 나타났으나, 60분으로 갈수록 예측성능은 급격히 떨어지는 것으로 나타났다. 주위의 20km 내외의 지상바람과 기온, 강수량 만으로 60분 후의 바람을 예측한다는 것은 일반적으로 어려운 것으로 예상할 수 있으며, 지상 자료 뿐만 아니라 상층의 관측자료와 함께 딥러닝 모델을 훈련시키면 좀 더 예측성능을 높일 수 있을 것으로 판단된다. 그럼에도 불구하고 1020분 예측 결과는 상당히 고무적으로 나타나고 있어서 초단기 예측에의 활용 가능성은 높다고 할 수 있다.\n결론 # 본 연구에서는 딥러닝을 이용하여 영종도의 AWS 관측지점에 대하여 10분에서 60분 후의 관측치를 예측해 보았다. 지상에 한정된 관측자료와 훈련에 사용할 자료의 기간이 1년간이라는 단점으로 4060분 후의 예측성능은 높지 않지만, 1020분 후의 예측은 활용하기에 충분한 성능을 보여 주었다. 특히, 딥러닝 모델은 학습과정에서 고성능 컴퓨터와 많은 계산시간이 걸리지만, 학습이 완료된 모델을 사용한 예측 시에는 개인용 컴퓨터로도 순식간에 결과를 도출할 수 있는 장점이 있으므로 실제 응용 가능성이 매우 높다고 할 수 있다.\n=== END === ","date":"2017년 10월 25일","externalUrl":null,"permalink":"/2017/10/RNN_Wind/","section":"글","summary":"영종도와 주변 10개 AWS 관측자료를 GRU 순환신경망에 학습시켜 10분 단위 풍속을 초단기 예측한 연구. 2017년 한국기상학회 추계학술대회 발표 자료입니다.","title":"인공지능 딥러닝을 이용한 영종도의 초단기 풍속 예측성 연구","type":"posts"},{"content":"","date":"2017년 10월 25일","externalUrl":null,"permalink":"/tags/%ED%92%8D%EC%86%8D/","section":"태그","summary":"","title":"풍속","type":"tags"},{"content":" 김동훈 # 대기와 해양을 수치로 푸는 일을 합니다. 지역 규모의 기상·해양 순환 모델을 직접 설치하고 돌리는 쪽과, 그렇게 얻은 자료를 인공신경망에 학습시켜 예측에 써 보는 쪽을 함께 들여다보고 있습니다.\n다루는 것들 # 수치모델 WRF ARW — 태풍 사례의 대기 모의 ROMS · pyroms — 지역 해양순환 모의와 격자·초기치·경계치 준비 FVCOM · POM — 비구조 격자 해양모델의 코드 구조 딥러닝 순환신경망(RNN-GRU)을 이용한 Nino 3.4 해수면온도 이상의 중기 예측 AWS 관측자료를 이용한 초단기 풍속 예측 TensorFlow, PyTorch 자료와 도구 NetCDF·HDF5 등 해양–대기 자료 형식, 과학 자료의 시각화, Anaconda/Jupyter 기반 분석 환경 발표 # 김동훈, 우승범 — 인공지능 딥러닝을 이용한 엘니뇨 예측시스템 개발, 2017년 한국기상학회 추계학술대회 김동훈, 우승범 — 인공지능 딥러닝을 이용한 영종도의 초단기 풍속 예측성 연구, 2017년 한국기상학회 추계학술대회 WRF와 ROMS 튜토리얼, pyroms 설치 문서는 문일주(제주대학교)와 함께 작성했습니다.\n연락 # 홈페이지 — www.dhkim.info GitHub — @dohnkim GitLab — @dohnkim ","externalUrl":null,"permalink":"/about/","section":"NWP \u0026 NNN","summary":" 김동훈 # 대기와 해양을 수치로 푸는 일을 합니다. 지역 규모의 기상·해양 순환 모델을 직접 설치하고 돌리는 쪽과, 그렇게 얻은 자료를 인공신경망에 학습시켜 예측에 써 보는 쪽을 함께 들여다보고 있습니다.\n","title":"소개","type":"page"}]