티스토리 뷰

### 여기에서는 '09년 11월 현재의 최신 버전인 "mom4p1_alpha_sep2009"와
      "om3_core"의 실험예를 이용하여 설명을 합니다. ###

[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]
  1. cd ~/models/MOM; tar xvzf mom4p1_alpha_sep2009.tar.gz
  2. cd data; tar xvzf om3_core3.input.tar.gz; cd ..
  3. cd mom4p1_alpha_sep2009/exp
  4. #./mom4p1_coupled_compile.csh, ../bin/mkmf.template.???, ../bin/environs.??? 를 알맞게 수정
  5. ./mom4p1_coupled_compile.csh >& compile.msg # 컴파일 하여 에러가 없는지 확인
  6. #./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!