MOM4 설치기 -2
발췌 : http://dhkim.tistory.com/260
여기에서는 ’07년 12월 이후에 2년만에 다시 공식적으로 제공(‘09.12.18)한
“mom4p1_pubrel_18dec2009“와 “om3_core“의 실험예를 이용하여 설명을 합니다.
공식 발표전에 작성한 “mom4p1_alpha_sep2009의 설치기“와 기본적으로 내용은 거의 비슷하지만,
알파버전을 사용하지 않고 공식버전을 바로 사용하시는 분들을 위하여 중복된 부분도 설명합니다.
또한, 새롭게 추가되거나 수정된 부분은 녹색으로 표시하여 구분하도록 하겠습니다. ###
[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]
- cd ~/models/MOM; tar xvzf mom4p1_pubrel_18dec2009.tar.gz
- cd mom4p1_pubrel_18dec2009; mkdir data; tar xvzf om3_core3.input.tar.gz -C data/
- #exp/mom4p1_coupled_compile.csh, bin/mkmf.template.???, bin/environs.??? 를 알맞게 수정
- cd exp; ./mom4p1_coupled_compile.csh >& compile.msg # 컴파일 하여 에러가 없는지 확인
- #./mom4p1_coupled_run.csh 를 알맞게 수정한 후 실행
——————————————————————
1. 소스코드 및 실험 자료 받기
MOM4의 소스코드는 GForge 에 등록한 후에 내려 받을 수 있습니다.
등록을 완료했으면 여기를 방문하여 MOM4P1 프로젝트에 접근을 요청합니다.
프로젝트 접근 허가를 받았으면, 여기를 방문하여 내려받으면 됩니다.
내려받은 소스코드를 다음과 같이 풀어줍니다.
%cd ~/models/MOM; tar xvzf mom4p1_pubrel_18dec2009.tar.gz
%setenv MOMHOME ~/models/MOM/mom4p1_pubrel_18dec2009
MOM4는 기본적으로 여러개의 실험 예를 제공하는데,
아래의 실험 예 중에 적당한 것을 골라 여기에서 내려받으면 됩니다.
본 설치기에서는 “om3_core3“의 실험으로 설명하며,
결합모형인 CM2.1의 실험에 대한 것은 개인적으로 연락 주시기 바랍니다.
[실험 예]
atlantic : 경계조건을 사용한 지역 해양 모형
bowl : bowl 지형을 가진 sector 모형
box : 평평한 해저지형을 가진 sector 모형. 가장 간단한 실험
box_channel : 남쪽에 channel을 가진 이상적인 실험
dome : overflow schemes를 테스트하는데 좋은 이상적인 실험
ebm : GFDL의 energy balance atmosphere + ice 모형을 결합한 실험
iom : 인도양을 대상으로 한 지역모형
mk3p5 : CSIRO에서 실험한 전지구 구면좌표계 모형
symmetric_box : 적도를 기준으로 대칭으로 구성된 이상적인 실험
torus : tracer advection schemes을 테스트하기 좋은 x와 y 방향에 대해 주기적인 이상적인 실험
om3_core : tripolar grid의 전지구 약 1도 해상도와 연직 50개의 층으로 이루어진 실험.
GFDL 해빙모형과 결합되어 있으며, Coordinated Ocean Reference Experiment 자료로부터
평년의 기후 자료를 입력 받음. GFDL의 IPCC 시나리오 모의와 거의 유사한 실험임
om3_ecosystem : om3_core와 같으며, 추가적으로 GFDL Ocean Biogeochemistry (GOB) model이
결합되어있음. 22개에 달하는 각종 ecosystems and biogeochemical cycles이 고려되어있음.
CM2.1p1 : 해양 및 해빙부분은 om3_core와 같으며, 추가적으로 실제 AGCM과 결합한 실험임.
실험 구성은 IPCC AR4에 제출한 GFDL CM2.1과 같음.
2. 컴파일 하기
MOM4를 컴파일 하기 위해서는 NetCDF와 MPI 라이브러리들이 필요하므로
잘 모를 경우는 시스템 관리자에게 물어보도록 하세요. (버전과 설치위치 등)
[환경]
– 포트란 : PGI 7.1.6
– $MPICH = /usr/local/mpich2/pgi716
– $NETCDFHOME = /usr/local/netcdf-3.6.3
만약 netcdf 버전 4를 사용할 경우에는 mom4p1_coupled_compile.csh 내에 “-Duse_netCDF3” 로
되어있는 부분을 삭제하고 mppnccombine의 컴파일 부분에는 “-Duse_netCDF4″를 추가해야 함.
MOM4의 실험 예들은 크게 2가지로 나뉘는데, 그것은 해양 독립 모형과 결합(해빙,대기 등) 모형입니다.
box 또는 bowl 같은 해양 독립 모형들은 mom4p1_solo 타입이며 om3_core나 atlantic 등은
mom4p1_coupled 타입이므로 여기에서는 mom4p1_coupled_compile.csh를 편집합니다.
% cd $MOMHOME/exp
% vi mom4p1_coupled_compile.csh
set platform = pgi –> $MOMHOME/bin 에 보면 여러가지 platform이 있으니 참조하면 됨
cc -O -o $mppnccombine -I$NETCDFHOME/include -L$NETCDFHOME/lib
$code_dir/postprocessing/mppnccombine/mppnccombine.c -lnetcdf
–> $NETCDFHOME은 미리 정해져 있거나 시스템에 맞게 설정해 줍니다.
–> $MOMHOME/bin/mppnccombine.pgi 가 존재하면
새로 생성하지 않으므로 확인하여 직접 삭제해 줍니다.
% vi ../bin/mkmf.template.pgi
NETCDF_ROOT = $(NETCDFHOME) –> 시스템에 맞게 설정해 줍니다.
MPI_ROOT = $(MPICH) –> 시스템에 맞게 설정해 줍니다.
INCLUDE = -I$(NETCDFHOME)/include -I$(MPI_ROOT)/include
FFLAGS_OPT = -O2 -Mcray=pointer –> -O2 와 -fast 를 같이 쓰면 에러나네요.-_-
FFLAGS = $(INCLUDE) -i4 -r8 -Ktrap=fp -Mallocatable=O3 -D_F200 $(FFLAGS_OPT) $(FFLAGS_DEBUG)
FC = mpif90 –> 시스템에 맞는 컴파일러를 지정
LDFLAGS = $(VERBOSE) -L$(NETCDF_ROOT)/lib -lnetcdf -L$(MPI_ROOT)/lib -lmpich
% vi ../bin/environs.pgi
–> 시스템에서 module을 사용하지 않는 경우에는 module 관련된 것을 모두 지웁니다.
모두 수정을 하였다면, 다음의 명령으로 컴파일 수행을 합니다.
% ./mom4p1_coupled_compile.csh >& compile.msg
에러 없이 ../exec_pgi/mom4p1_coupled/fms_mom4p1_coupled.x 가 만들어 졌다면 성공한 것임.
컴파일을 처음부터 새로 하고 싶다면, exec_pgi/mom4p1_coupled 디렉토리와 bin/mppnccombine.pgi 를
삭제한 후 다시 컴파일 하면 됩니다.
3. 실행 해보기
실행하기 전에 실행 스크립트를 다음과 같이 수정합니다.
% vi mom4p1_coupled_run.csh
set platform = pgi –> $MOMHOME/bin 에 보면 여러가지 platfom이 있음
set name = om3_core3 –> om3_core1, atlantic1, MOM4p1_SIS_TOPAZ 등이 있음.
set inputDataDir = $root/data/om3_core3/INPUT –> 내려받은 입력자료를 풀어 준 곳
set archive = $expdir/OUTPUT –>대용량 결과화일을 옮겨줄 디렉토리. 미리 만들어져 있어야 함!
#Archive the results 로부터 마지막 exit 0 바로 위까지는 결과화일의 압축과 저장에 대한 것이므로
시스템에 맞게 수정하거나 필요 없을 경우 모두 삭제합니다.
앞서 내려받은 “om3_core3″의 실험 자료 중 input 자료를 $inputDataDir에 가서 풀어 줍니다.
% tar xvzf …(path)…/om3_core3.input.tar.gz -C $inputDataDir/
이제 실행을 하면 되는데, MPI실행방법에 대해 잘 모를 경우는
“클러스터 시스템에서의 MPI 설정 방법“을 참조하세요.
% mpdboot -n 4 -f ~/mpd.hosts
% ./mom4p1_coupled_run.csh >& coupled_run.msg
모의 기간과 결과 생성 화일의 조절은 각각 ∈putDataDir∈put.nml과inputDataDir/diag_table 의
내용을 조절하면 됩니다. 또한, 기존에 생성된 결과화일을 모두 지우고 새롭게 실행하려면 work/om3_core3
디렉토리를 지우고 실행하면 됩니다.
4. 결과 비교하기
이번 버전에 대한 om3_core3의 결과화일을 현재까지는 제공하고 있지 않지만, 곧 제공될 것으로 생각됩니다.
결과화일을 제공하게 되면 이 실험에서 산출된 $MOMHOME/work/om3_core3/ascii 에 있는
“*.fms.out”과 “*.logfile.*.out”을 비교하여 실험이 정상적으로 되었는지 판단하면 됩니다.
Good luck!