MOM4 설치기 -1
발췌 : http://dhkim.tistory.com/259
여기에서는 ’09년 11월 현재의 최신 버전인 “mom4p1_alpha_sep2009“와
“om3_core“의 실험예를 이용하여 설명을 합니다. ###
[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]
- cd ~/models/MOM; tar xvzf mom4p1_alpha_sep2009.tar.gz
- cd data; tar xvzf om3_core3.input.tar.gz; cd ..
- cd mom4p1_alpha_sep2009/exp
- #./mom4p1_coupled_compile.csh, ../bin/mkmf.template.???, ../bin/environs.??? 를 알맞게 수정
- ./mom4p1_coupled_compile.csh >& compile.msg # 컴파일 하여 에러가 없는지 확인
- #./mom4p1_coupled_run.csh 를 알맞게 수정한 후 실행
——————————————————————
1. 소스코드 및 실험 자료 받기
MOM4의 소스코드는 GForge 에 등록한 후에 내려 받을 수 있습니다.
등록을 완료했으면 여기를 방문하여 MOM4P1 프로젝트에 접근을 요청합니다.
프로젝트 접근 허가를 받았으면, 여기를 방문하여 내려받으면 됩니다.
내려받은 소스코드를 다음과 같이 풀어줍니다.
%cd ~/models/MOM; tar xvzf mom4p1_alpha_sep2009.tar.gz
%setenv MOMHOME ~/models/MOM/mom4p1_alpha_sep2009
MOM4는 기본적으로 여러개의 실험 예를 제공하는데,
아래의 실험 예 중에 적당한 것을 골라 여기에서 내려받으면 됩니다.
또한, 최신 버전으로 실험된 실험 예들은 여기에서 내려받으면 됩니다.
본 설치기에서는 “om3_core3“의 실험으로 설명합니다.
[실험 예]
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이 고려되어있음.
2. 컴파일 하기
MOM4를 컴파일 하기 위해서는 NetCDF와 MPI 라이브러리들이 필요하므로
잘 모를 경우는 시스템 관리자에게 물어보도록 하세요. (버전과 설치위치 등)
[환경]
– 포트란 : PGI 7.1.6
– $NETCDFHOME = /usr/local/netcdf-4.0.1
– $MPICH = /usr/local/mpich2/pgi716
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 가 만들어 졌다면 성공한 것임.
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_core”의 실험 자료 중 input 자료를 $inputDataDir에 가서 풀어 줍니다.
% tar xvzf …(path)…/om3_core3.input.tar.gz
이제 실행을 하면 되는데, MPI실행방법에 대해 잘 모를 경우는
“클러스터 시스템에서의 MPI 설정 방법“을 참조하세요.
% mpdboot -n 4 -f ~/mpd.hosts
% ./mom4p1_coupled_run.csh >& coupled_run.msg
4. 결과 비교하기
내려받은 om3_core3의 자료에는 결과 화일도 같이 있으므로,
이 실험에서 산출된 $MOMHOME/work/om3_core3/ascii 에 있는
“*.fms.out”과 “*.logfile.*.out”을 비교하여 실험이 정상적으로 되었는지 판단합니다.
Good luck!