编译和安装

操作步骤

  1. 使用PuTTY工具,以root用户登录服务器。
  2. SVN检出获取ROMS源码。

    建立一个新文件夹,将ROMS源码检出到文件夹中,获取源码需要注册帐户。

    cd /path/to/ROMS
    mkdir ROMS_3.6
    svn checkout --username 帐户名 --password 密码 https://www.myroms.org/svn/src/trunk ROMS_3.6

    例如:

    使用HPC/Huawei12#$的帐户及密码进行源码检出,命令如下:

    svn checkout --username HPC --password Huawei12#$ https://www.myroms.org/svn/src/trunk ROMS_3.6

    源码文件结构如下:

  3. 自定义build脚本。

    1. 为了在使用中对源码内容不做修改,执行以下命令,新建“ROMSProjects”文件夹用于ROMS的编译运行,upwelling是源码包中自带的默认算例。
      cd /path/to/ROMS
      mkdir ROMSProjects
      cd ROMSProjects
      mkdir upwelling
      cd upwelling
    2. 执行以下命令,在源码的“ROMS/Bin”目录下,存在“build.sh”“build.bash”文件,在当前环境下使用“.bash”文件,复制“build.bash”文件到“upwelling”目录中。
      cp /path/to/ROMS/ROMS_3.6/ROMS/Bin/build.bash .
    3. 执行以下命令编辑“build.bash”文件。
      1. 打开“build.bash”文件。
        vi build.bash
      2. 按“i”进入编辑模式,修改以下内容。
        export ROMS_APPLICATION=UPWELLING
        export MY_ROOT_DIR=/path/to/ROMS
        export MY_PROJECT_DIR=${MY_ROOT_DIR}/ROMSProjects/upwelling
        export MY_ROMS_SRC=/path/to/ROMS/ROMS_3.6
        export USE_MPI=on
        export USE_MPIF90=on
        export which_MPI=openmpi
        export FORT=gfortran
        export USE_LARGE=on
        export USE_NETCDF4=on
        export USE_PARALLEL_IO=on
        export PATH=/path/to/OPENMPI/bin:$PATH
        export NF_CONFIG=/path/to/NETCDF/bin/nf-config
        export NETCDF_INCDIR=/path/to/NETCDF/include
        export NETCDF_LIBDIR=/path/to/NETCDF/lib
      3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  4. 执行以下命令复制输入和配置文件。

    cp /path/to/ROMS/ROMS_3.6/ROMS/External/ocean_upwelling.in .
    cp /path/to/ROMS/ROMS_3.6/ROMS/External/varinfo.dat
    cp /path/to/ROMS/ROMS_3.6/ROMS/Include/upwelling.h .

  5. 执行以下命令编辑“ocean_upwelling.in”文件。

    1. 打开“ocean_upwelling.in”文件。
      vi ocean_upwelling.in
    2. 按“i”进入编辑模式,修改“ocean_upwelling.in”文件。
      修改文件中“VARNAME”“varinfo.dat”的路径,注意粗体部分。
      VARNAME = /path/to/ROMS/ROMSProjects/upwelling/varinfo.dat
      设置“NtileI”“NtileJ”,二者的乘积应与运行时设置的np相等,例如np设置为96时,“NtileI”“NtileJ”可以设置如下值,注意粗体部分。
      NtileI == 6
      NtileJ == 16

      NtileI、NtileJ的设置规则参考故障排除

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  6. 执行以下命令编译ROMS。

    ./build.bash -j 8

    在使用MPI的情况下,编译成功将生成可执行文件“OceanM”,可使用ls命令进行查看。

    ll /path/to/ROMS/ROMSProjects/upwelling
    -rwxr-xr-x 1 root root 1671056 Aug 15 18:41 oceanM