티스토리 뷰

### 여기에서는 '07년 12월 이후에 2년만에 다시 공식적으로 제공('09.12.18)한
      "mom4p1_pubrel_18dec2009"와 "om3_core"의 실험예를 이용하여 설명을 합니다.
      공식 발표전에 작성한 "mom4p1_alpha_sep2009의 설치기"와 기본적으로 내용은 거의 비슷하지만,
      알파버전을 사용하지 않고 공식버전을 바로 사용하시는 분들을 위하여 중복된 부분도 설명합니다.
      또한, 새롭게 추가되거나 수정된 부분은 녹색으로 표시하여 구분하도록 하겠습니다. ###

[설명 필요 없이 그냥 설치하고자 하면 다음과 같이 따라하면 됩니다.]
  1. cd ~/models/MOM; tar xvzf mom4p1_pubrel_18dec2009.tar.gz
  2. cd mom4p1_pubrel_18dec2009; mkdir data; tar xvzf om3_core3.input.tar.gz -C data/
  3. #exp/mom4p1_coupled_compile.csh, bin/mkmf.template.???, bin/environs.??? 를 알맞게 수정
  4. cd exp; ./mom4p1_coupled_compile.csh >& compile.msg # 컴파일 하여 에러가 없는지 확인
  5. #./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
   모의 기간과 결과 생성 화일의 조절은 각각 $inputDataDir/input.nml 과 $inputDataDir/diag_table 의
   내용을 조절하면 됩니다. 또한, 기존에 생성된 결과화일을 모두 지우고 새롭게 실행하려면 work/om3_core3
   디렉토리를 지우고 실행하면 됩니다.

 
4. 결과 비교하기
   이번 버전에 대한 om3_core3의 결과화일을 현재까지는 제공하고 있지 않지만, 곧 제공될 것으로 생각됩니다.
   결과화일을 제공하게 되면
이 실험에서 산출된 \$MOMHOME/work/om3_core3/ascii 에 있는
   "*.fms.out"과 "*.logfile.*.out"을 비교하여 실험이 정상적으로 되었는지 판단하면 됩니다.
   Good luck!