赞
踩
2023.8.15 更新
以下记录可能偏旧,最近在移植时有所更新,最新移植记录可参考 CESM2.1.3 移植记录
8月初花了10天左右把CESM移植到HPC服务器上,现在因为登录节点和计算节点的不同,一些软件目录不共享,CESM运行有点问题,同时因为有点完美主义,对原来的目录结构不太满意,所以重新移植了一遍到指定的目录下。
第一次移植时遇到很多困难,所幸一路搜索各种博客和论坛都能找到解决方案。感念大家的分享精神,这次在移植的过程中也特意做个记录,给大家做个参考。
需要的环境和一些基础软件比如python,git什么的我就不多说了,可以参考别的博客。
我在安装的过程中是把命令写入shell脚本中执行的,这样基本上一路执行安装脚本,然后配置环境变量就可以完成安装了。下面分块把具体执行的命令列出来,并在我的能力范围内解释一下一些命令的作用方便理解。
服务器Linux版本:CentOS7
编译器:intel编译器
安装包存放路径是 /home/packages/installation_cesm/
安装目录是 /home/software/libcesm/
源代码存放目录是 /home/model/cesm/my_cesm_sandbox
在最后会把脚本和安装包以及CESM的源代码打包放在网盘里面供大家直接下载。
1. perl5
perl5是CESM里面比较重要的一个包,我这次重装就是因为在运行一些复杂点的组件时开始调用perl发现找不到,而最开始是用yum装在默认路径下的。问了老师才知道计算节点上只共享/home
目录,因此重新从源代码编译,方便指定路径安装。
01_perl5.sh
export CC=icc export CXX=icpc export CPP='icc -E' export CXXCPP='icpc -E' export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPPFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export FCLAGS='-O3 -xHost -ip -no-prec-div -static-intel' DIR=/home/software/libcesm/perl5 tar -xvf perl-5.28.0.tar.gz cd perl-5.28.0 ./Configure -des -Dusethreads -Dprefix=${DIR} make make test make install
这里开头的几个环境变量设置是我从老师原有的几个安装脚本中copy过来的,各自的含义就是配置各个编译命令用什么编译器,更深入的我也不是很了解,可以自行查询。
其余的就是解压安装包,然后一步步通过make安装。
装好后在 ~/.bashrc
中配置perl5环境变量。然后source
一下或者重启终端,用env
测试一下看看有没有添加成功。
# perl5
export PATH=/home/software/libcesm/perl5/bin:$PATH
用 perl --version
验证
This is perl 5, version 28, subversion 0 (v5.28.0) built for x86_64-linux-thread-multi
Copyright 1987-2018, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
2. cmake
cmake同上。
这里用configure最后好像也是会调用bootstrap,所以参考网上的直接用bootstrap设置了。
02_cmake.sh
export CC=icc export CXX=icpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' DIR=/home/software/libcesm/cmake tar -xvf cmake-2.8.12.2.tar.gz cd cmake-2.8.12.2 ./bootstrap --prefix=${DIR} make make install
配置cmake环境变量。
# cmake
export PATH=/home/software/libcesm/cmake/bin:$PATH
用 cmake --version
验证
cmake version 2.8.12.2
3. mpich
开头的unset
同样是copy过来的,因为没什么影响也懒得删了,根据自己系统配置来就行。
03_mpich.sh
unset F90 unset F90FLAGS export CC=icc export CXX=icpc export CPP='icc -E' export CXXCPP='icpc -E' export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPPFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export FCLAGS='-O3 -xHost -ip -no-prec-div -static-intel' DIR=/home/software/libcesm/mpich tar -xvf mpich-3.4.2.tar.gz cd mpich-3.4.2 ./configure --prefix=${DIR} make make check make install
装完后配置mpich环境变量。
# mpich
export PATH=/home/software/libcesm/mpich/bin:/home/software/libcesm/mpich/include:$PATH
export LD_LIBRARY_PATH=/home/software/libcesm/mpich/lib:$LD_LIBRARY_PATH
4. zlib
这个比较简单,安装也很快。
04_zlib.sh
export CC=icc export CXX=icpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' DIR=/home/software/libcesm/zlib tar -xvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure --prefix=${DIR} make make check make install
这个环境变量看别的教程好像没有配置,我也不知道要不要,为了统一索性配上了。
# zlib
export PATH=/home/software/libcesm/zlib/include:$PATH
export LIBRARY_PATH=/home/software/libcesm/zlib/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/software/libcesm/zlib/lib:$LD_LIBRARY_PATH
5. hdf5
这个比较重要也很容易配错,中间报错的解决方法就各自寻找吧,第一次配的时候我也忘记记录了。
编译器设置要带上上面刚装的 mpi,如上各设置所示。
在配置文件中还要给出zlib所在的目录 --with-zlib=/home/software/libcesm/zlib
05_hdf5.sh
export CC=mpiicc export CXX=mpiicpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=mpiifort export FC=mpiifort export F90=mpiifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' DIR=/home/software/libcesm/hdf5 tar -xvf hdf5-1.10.4.tar.gz cd hdf5-1.10.4 ./configure --with-zlib=/home/software/libcesm/zlib --prefix=${DIR} --enable-fortran --enable-fortran2003 -enable-parallel --with-pic make make check make install cd ..
配置hdf5环境变量。
# hdf5
export PATH=/home/software/libcesm/hdf5/bin:/home/software/libcesm/hdf5/include:$PATH
export LD_LIBRARY_PATH=/home/software/libcesm/hdf5/lib:$LD_LIBRARY_PATH
6. pnetcdf
这里CFLAGS
CXXFLAGS
等参数设置添加了-fPIC
,不加这个的话在linux64系统下编译似乎会出错,加上就没问题了。
下面./configure
中--enable-relax-coord-bound
好像是让编译条件放宽一点?默认是另外一个设置,在别的博客上见到过,不过现在找不到了,第一次安装的时候加上这个参数就没报错了。
06_pnetcdf.sh
export CC=mpiicc export CXX=mpiicpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC' export F77=mpiifort export FC=mpiifort export F90=mpiifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel -fPIC' export CPP='mpiicc -E' export CXXCPP='mpiicpc -E' DIR=/home/software/libcesm/pnetcdf tar -xvf pnetcdf-1.12.0.tar.gz cd pnetcdf-1.12.0 ./configure --prefix=${DIR} --enable-relax-coord-bound make make check make install
配置pnetcdf环境变量。
# pnetcdf
export PATH=/home/software/libcesm/pnetcdf/bin:/home/software/libcesm/pnetcdf/include:$PATH
export LD_LIBRARY_PATH=/home/software/libcesm/pnetcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/home/software/libcesm/pnetcdf/share/man:$MANPATH
7. netcdf-c
netcdf从某个版本开始分成了netcdf-c和netcdf-fortran,要分别安装,先装netcdf-c。
注意,两个要装在同一目录下
在这里要给出hdf5和pnetcdf的路径,所以安装顺序不能乱改。
07_netcdf_c.sh
export CC=mpiicc export CXX=mpiicpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=mpiifort export FC=mpiifort export F90=mpiifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' export CPPFLAGS='-I/home/software/libcesm/hdf5/include -I/home/software/libcesm/pnetcdf/include' export LDFLAGS='-L/home/software/libcesm/hdf5/lib -L/home/software/libcesm/pnetcdf/lib' DIR=/home/software/libcesm/netcdf tar -xvf netcdf-c-4.7.4.tar.gz cd netcdf-c-4.7.4 ./configure --prefix=${DIR} --enable-pnetcdf make make check make install
配置netcdf环境变量。
# netcdf
export PATH=/home/software/libcesm/netcdf/bin:/home/software/libcesm/netcdf/include:$PATH
export LIBRARY_PATH=/home/software/libcesm/netcdf/lib:$LIBRARY_PATH
export LD_LIBRARY_PATH=/home/software/libcesm/netcdf/lib:$LD_LIBRARY_PATH
export MANPATH=/home/software/libcesm/netcdf/share/man:$MANPATH
用 nc-config --all
验证
This netCDF 4.7.4 has been built with the following features: --cc -> mpiicc --cflags -> -I/home/software/libcesm/netcdf/include -I/home/software/libcesm/hdf5/include -I/home/software/libcesm/pnetcdf/include --libs -> -L/home/software/libcesm/netcdf/lib -lnetcdf --static -> -lpnetcdf -lhdf5_hl -lhdf5 -lm -lz -lcurl --has-c++ -> no --cxx -> --has-c++4 -> no --cxx4 -> --has-fortran -> yes --fc -> mpiifort --fflags -> -I/home/software/libcesm/netcdf/include -I/home/software/libcesm/netcdf/include --flibs -> -L/home/software/libcesm/netcdf/lib -lnetcdff --has-f90 -> --has-f03 -> yes --has-dap -> yes --has-dap2 -> yes --has-dap4 -> yes --has-nc2 -> yes --has-nc4 -> yes --has-hdf5 -> yes --has-hdf4 -> no --has-logging -> no --has-pnetcdf -> yes --has-szlib -> no --has-cdf5 -> yes --has-parallel4 -> yes --has-parallel -> yes --prefix -> /home/software/libcesm/netcdf --includedir -> /home/software/libcesm/netcdf/include --libdir -> /home/software/libcesm/netcdf/lib --version -> netCDF 4.7.4
注意这里 --has-nc4 -> yes
,如果netcdf版本较低,可能这个参数是 no
,然后运行cesm就会报错,这个错误第一次移植时花了一整天才在论坛上找到解决方案,很坑。
8. netcdf-fortran
接下来装netcdf-f。
注意,两个要装在同一目录下
参数中除了之前的hdf5和pnetcdf外,还要带上上一步的netcdf-c。
08_netcdf_f.sh
export CC=mpiicc export CXX=mpiicpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=mpiifort export FC=mpiifort export F90=mpiifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' export CFLAGS=$(nc-config --cflags) export CPPFLAGS='-I/home/software/libcesm/netcdf/include -I/home/software/libcesm/hdf5/include -I/home/software/libcesm/pnetcdf/include' export LDFLAGS='-L/home/software/libcesm/netcdf/lib -L/home/software/libcesm/hdf5/lib -L/home/software/libcesm/pnetcdf/lib' DIR=/home/software/libcesm/netcdf tar -xvf netcdf-fortran-4.5.3.tar.gz cd netcdf-fortran-4.5.3 ./configure --prefix=${DIR} --enable-pnetcdf make make check make install
由于装在同一目录,环境变量在netcdf-c时已经配置过了,就不用再配了
验证 nf-config --all
This netCDF-Fortran 4.5.3 has been built with the following features: --cc -> mpiicc --cflags -> -I/home/software/libcesm/netcdf/include -I/home/software/libcesm/netcdf/include -I/home/software/libcesm/hdf5/include -I/home/software/libcesm/pnetcdf/include --fc -> mpiifort --fflags -> -I/home/software/libcesm/netcdf/include -I/home/software/libcesm/netcdf/include --flibs -> -L/home/software/libcesm/netcdf/lib -lnetcdff --has-f90 -> --has-f03 -> yes --has-nc2 -> yes --has-nc4 -> yes --prefix -> /home/software/libcesm/netcdf --includedir-> /home/software/libcesm/netcdf/include --version -> netCDF-Fortran 4.5.3
9. lapack blas
这两个是线性代数的计算包。
blas包含在lapack的安装包内,但默认不编译,所以要修改 Makefile
文件让它编译。
如下面注释所示,然后通过 make
安装,再进入到LAPACKE
文件夹中再 make
一次,最后把产生的 .h
文件和 .a
文件都放到安装目录里面就可以了。
09_lapack_blas.sh
export CC=icc export CXX=icpc export CFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CXXFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export F77=ifort export FC=ifort export F90=ifort export FFLAGS='-O3 -xHost -ip -no-prec-div -static-intel' export CPP='icc -E' export CXXCPP='icpc -E' DIR=/home/software/libcesm/lapack tar -xvf lapack-3.10.1.tar.gz cd lapack-3.10.1 cp INSTALL/make.inc.ifort make.inc # 修改Makefile文件使其编译blas sed -i '12s/^/#/g' Makefile sed -i '13s/#//g' Makefile # /******************************************************************* # .PHONY: lib # lib: lapacklib tmglib # #lib: blaslib variants lapacklib tmglib # 变成 # .PHONY: lib # #lib: lapacklib tmglib # lib: blaslib variants lapacklib tmglib # *******************************************************************/ make cd LAPACKE make mkdir ${DIR} mkdir ${DIR}/include mkdir ${DIR}/lib cp include/*.h ${DIR}/include/ cd .. cp *.a ${DIR}/lib/
配置环境变量
# lapack
export PATH=/home/software/libcesm/lapack/include:$PATH
export LD_LIBRARY_PATH=/home/software/libcesm/lapack/lib:$LD_LIBRARY_PATH
10. esmf
这个的重要程度就不必多说了,看网上说他的安装文件和安装位置必须在同一个目录下,因此和上面的软件安装略有不同,要把安装包解压到安装目录里面,之后再直接 make
就可以了。
10_esmf.sh
ESMF_HOME=/home/software/libcesm/esmf/esmf-ESMF_7_1_0r export ESMF_DIR=$ESMF_HOME export ESMF_COMM=intelmpi export ESMF_COMPILER=intel export ESMF_ABI=64 export ESMF_INSTALL_PREFIX=/home/software/libcesm/esmf/esmf_install export ESMF_NETCDF_INCLUDE=/home/software/libcesm/netcdf/include export ESMF_NETCDF_LIBPATH=/home/software/libcesm/netcdf/lib export ESMF_NETCDF_LIBS="-lnetcdf -lnetcdff" export ESMF_CCOMPILER="mpiicc -cc=icc" export ESMF_CXXCOMPILER=mpiicpc export ESMF_CXXLINKER=mpiicpc export ESMF_F90COMPILER=mpiifort export ESMF_F90LINKER=mpiifort unzip esmf-ESMF_7_1_0r.zip -d /home/software/libcesm/esmf/ cd $ESMF_DIR make make check make install
软件安装到这里就基本完成了,下面是配置cesm的运行环境。
cesm源代码在github上下载,然后再根据里面的external的需求来继续clone到本地,在这里之前已经挂梯子装好了,文章最后会把装好依赖库的源码打包到网盘。
源码在服务器上的路径 /home/model/cesm/my_cesm_sandbox
在源码能完整clone到本地的情况下,这部分就主要是配置 config_machines.xml
、 config_compilers.xml
、config_batch.xml
这三个xml文件。
然后在自己HOME目录下新建文件夹 .cime
,将这三个文件放到这个目录下,用来覆盖cesm原有的配置。
这里直接列出来我自己的配置。
要是想自己写的话可以参考cesm源代码里面 /home/model/cesm/my_cesm_sandbox/cime/config/cesm/machines
下的这三个文件,但不建议直接修改里面的东西。
config_machines.xml
简单说一下我的配置思路,<machine>
是机器的名称,可以理解为方便模式识别的id。
下面就是一些系统的配置,其中,
<COMPILERS>
要与在 config_compilers.xml
中写的编译器名称要一样,这样才能将machine
和compiler
绑定起来。
<SAVE_TIMING_DIR>
之后的这几个标签,我的思路是输出文件放在 cesm_files
这个文件夹下,其后各种子文件夹是看别人博客模仿着写的,可以根据自己需要修改。
然后模式的输入数据 <DIN_LOC_ROOT>
和 <DIN_LOC_ROOT_CLMFORC>
统一放在cesm源码里面,方便大家统一调用,避免重复下载。
<BATCH_SYSTEM>
填入的是作业系统的名称( config_batch.xml
中),我虽然用了slurm作业系统,但没搞明白这里的作业提交逻辑,因此这里写的是none
,后续再自己写slurm脚本,利用sbatch
进行提交作业。
<MAX_TASKS_PER_NODE>
是CPU的核数,根据自己系统进行设置。
<environment_variables>
是导入环境变量,一般来说再在 ~/.bashrc
里面写过就不用了,但我看别人都有写,为了保险,就写上了。
注意,其中的 $HOME
请替换为自己的目录,cesm在读取这个文件时似乎不会转义,因此写绝对路径,不要用变量代替。
<?xml version="1.0"?> <config_machines version="2.0"> <machine MACH="daqi"> <DESC>test</DESC> <NODENAME_REGEX>ln9.*</NODENAME_REGEX> <OS>LINUX</OS> <COMPILERS>intel</COMPILERS> <MPILIBS>intelmpi</MPILIBS> <PROJECT>none</PROJECT> <SAVE_TIMING_DIR>$HOME/cesm_files/timing</SAVE_TIMING_DIR> <CIME_OUTPUT_ROOT>$HOME/cesm_files/output</CIME_OUTPUT_ROOT> <DIN_LOC_ROOT>/home/model/cesm/my_cesm_sandbox/inputdata</DIN_LOC_ROOT> <DIN_LOC_ROOT_CLMFORC>/home/model/cesm/my_cesm_sandbox/inputdata/atm/datm7</DIN_LOC_ROOT_CLMFORC> <DOUT_S_ROOT>$HOME/cesm_files/output/$CASE</DOUT_S_ROOT> <BASELINE_ROOT>$HOME/cesm_files/output/baselines</BASELINE_ROOT> <CCSM_CPRNC>$HOME/cesm_files/output/cprnc</CCSM_CPRNC> <GMAKE>make</GMAKE> <GMAKE_J>8</GMAKE_J> <BATCH_SYSTEM>none</BATCH_SYSTEM> <SUPPORTED_BY>@sysu.edu.cn</SUPPORTED_BY> <MAX_TASKS_PER_NODE>20</MAX_TASKS_PER_NODE> <MAX_MPITASKS_PER_NODE>20</MAX_MPITASKS_PER_NODE> <PROJECT_REQUIRED>FALSE</PROJECT_REQUIRED> <mpirun mpilib="default"> <executable>mpirun</executable> <arguments> <arg name="num_tasks" > -n {{ total_tasks }}</arg> </arguments> </mpirun> <module_system type="none"></module_system> <environment_variables> <env name="OMP_STACKSIZE">256M</env> <env name="NETCDF_PATH">/home/software/libcesm/netcdf</env> <env name="HDF5_PATH">/home/software/libcesm/hdf</env> <env name="ZLIB_PATH">/home/software/libcesm/zlib</env> <env name="ESMF_PATH">/home/software/libcesm/esmf/esmf_install</env> </environment_variables> </machine> </config_machines>
config_compilers.xml
这里就是配置各种编译器设置,参数,环境变量了,看标签名就挺好理解的,就不多说了。
注意这里 <compiler COMPILER="intel" MACH="daqi">
我是避免出意外刻意写得这么绑定的,宽松一些的可以参考cesm源码里面标准的 config_compilers.xml
。
<?xml version="1.0"?> <config_compilers version="2.0"> <compiler COMPILER="intel" MACH="daqi"> <CPPDEFS> <append>-DLINUX</append> </CPPDEFS> <LDFLAGS> <append compile_threaded="TRUE"> -fopenmp </append> <append> -mkl </append> </LDFLAGS> <CFLAGS> <append DEBUG="FALSE"> -O2 </append> </CFLAGS> <CONFIG_ARGS> <base> --host=Linux </base> </CONFIG_ARGS> <FFLAGS> <append DEBUG="FALSE"> -O2 </append> </FFLAGS> <MPICC> mpiicc </MPICC> <MPICXX> mpiicpc </MPICXX> <MPIFC> mpiifort </MPIFC> <SCC> icc </SCC> <SCXX> icpc </SCXX> <SFC> ifort </SFC> <ESMF_LIBDIR>/home/software/libcesm/esmf/esmf_install/bin/binO/Linux.intel.64.intelmpi.default</ESMF_LIBDIR> <MPI_PATH>/home/software/libcesm/mpich</MPI_PATH> <NETCDF_PATH>/home/software/libcesm/netcdf</NETCDF_PATH> <PNETCDF_PATH>/home/software/libcesm/pnetcdf</PNETCDF_PATH> <SLIBS> <append>-L/home/software/libcesm/netcdf/lib -lnetcdf -lnetcdff -L/home/software/libcesm/hdf5/lib -lhdf5 -lhdf5_hl -L/home/software/libcesm/zlib/lib -lz -L/home/software/libcesm/lapack/lib -llapack</append> </SLIBS> </compiler> </config_compilers>
config_batchs.xml
none
。<?xml version="1.0"?>
<config_batch version="2.0">
<batch_system MACH="daqi" type="none" >
</batch_system>
</config_batch>
cesm的运行基本就是四个步骤:(1)创建;(2)设置算例;(3)编译;(4)运行。
如果前面都弄好了的话在这里基本是不会有什么问题的。
下面就演示一下我自己创建算例的过程,给大家做个参考。
cime/scripts
目录:cd /home/model/cesm/my_cesm_sandbox/cime/scripts
然后调用 create_new_case
创建新算例
./create_newcase --case $HOME/cases/compset_QPC6 --compset QPC6 --res f09_f09_mg17 --mach daqi
这里,--case
是指定算例的路径和名字,默认放在 scripts
路径下,--compset
是基础组件的名字,--res
是设置分辨率, --mach
是调用哪台mach的配置。
compset和res的选择可以参考官方指南
注意,我这个组件和分辨率的配置是官方经过科学验证后认可的配置,如果是自己搭配的组件和分辨率没经过官方科学验证的话,在最后需要加上 --run-unsupported
参数。
cd $HOME/cases/compset_QPC6
在这里,可以通过 xmlchange
改写一些参数的设置,设置完之后
输入命令设置算例:
./case.setup
这一步基本不会有什么问题,基本就是走个过场(
./case.build
程序就会自动编译各个组件,中间报错就各自寻找解决方案吧,我遇到的太多了(心累
最后看到程序输出
MODEL BUILD HAS FINISHED SUCCESSFULLY
就代表模型的移植基本成功了。
./case.submit
之后程序会自动检测需要哪些输入数据,然后自行下载,如果模型比较复杂的话,需要的输入数据会很多,需要下载比较长的时间。
在所有输入数据都下载完毕后,程序就会自己开始运算。
移植cesm真的花了挺长时间,幸好网络上有很多前辈留下的经验帖和移植记录作为参考、以及官方论坛上的问答,让我一直能够解决中途遇见的各种bug。
在此感谢以下几篇博客的作者:
以及特别感谢官方论坛的各位:
DiscussCESM Forums
在论坛上基本上所有碰见的报错都可以找到类似的问题,里面的人也都会很热心地解答,他们的讨论过程给我调试错误提供了很多灵感,大家要是移植过程中遇到什么 错误也可以先上去搜一搜。
最后,真的十分感谢大家的无私奉献精神,让我获益匪浅,也让我萌生了写下这篇博客的念头,希望这篇博客能够帮到正在移植cesm的您。
安装包
链接:https://pan.baidu.com/s/1za2ZP1V62QWGGb_8rpxaNw
提取码:hu7j
cesm源码
链接:https://pan.baidu.com/s/1M6l-trumaqswWw3JwSs3nA?pwd=aqyj
提取码:aqyj
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。