收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

地球系统模式CESM2.0 | 环境配置及安装

[复制链接]

CESM(Community Earth System Model)是由美国国家大气中心(National Center For Atmospheric Research,NCAR)于1996研发的地球系统模式,是目前最先进、使用最广泛的地球系统模式之一。CESM利用耦合器协同大气、海洋、陆面、海冰等分量模式进行气候模拟。

8c7ceaeda0ac2ffc1e17e8b31d005d78.png

CESM由大气模式(CAM)、海洋模式(POP)、陆面模式(CLM)、海冰模式(CICE)和陆冰模式(CISM)5个分量模式以及控制各分量交互的耦合器(CPL)组成,每个分量模式由动力模式数据模式等多种选择,可以进行多种组合满足不同的研究目的,并且各分量模式及耦合器均为并行模型,它们同时支持分布式内存共享内存两种并行机制,可以非常灵活的使用各种计算资源。

98050fa3fe784cb41daae6d76827e941.png

模型先后经历了CESM1.x.x,CESM2.x.x 多个版本的迭代, 经过多年的发展和沉淀,直到最近的CESM2.2.0版本。分量模式也增加了河流模式(RTM),形成现在“六位一体”的格局,模型水平结构和垂直结构也变得越来越复杂详尽。

ddffe829170a0ea716fe480ef44ec69c.png

6ac64a660f73b6263744bd250dc5c67a.png

整个模式的代码由FORTRAN编程语言所写。随着版本的更新和发展,为了更好地管理和调度各个模块,其模型中也添加了部分Python, Perl等语言脚本,但这些脚本旨在管理模型,并不参与模型结构本身。整个模型代码总量预计在5万行以上。

e485bcee280aadfd431081a5dcf98091.png

由于模型结构较为复杂,且以代码构成,没有可视化界面

模型需要在Linux系统环境中运行,新手入门需花些时间成本。首先要对Linux的 “命令行” 交互模式进行适应。

模型的成功安装依赖于其所在的系统环境,因此需要对其进行配置和搭建。

现以Linux的Ubuntu 18.04版本为例,对CESM2.X 所需的模型环境进行配置;

2 R4 ]" j2 f0 M" ]


) g5 ?+ f1 [7 J, F' K" i1 ~' `

所需软件及依赖包


, r8 T; _7 m* k4 k7 c1 j7 Y1 ]

& Y* k  \9 n: V# F. ^, w. ^* E- _" T

主要包括C、FORTRAN等编译器,mpi并行计算库,netcdf文件的并行读取库、make安装工具等等,列表如下:

gcc gfortran make m4 libtool libxml2-utils python

libxml-libxml-perl libcurl4-openssl-dev liblapack-dev libblas-dev

mpich libmpich-dev sudo cmake git zlib

HDF5 Pnetcdf netcdf netcdf-fortran

如果你具有系统的管理员权限,可利用Ubuntu的apt包管理工具实现一键安装,十分方便;

对于有些包,apt管理工具中可能没有或找不到,那就只能选择源码自行编译安装。本例以apt安装基础包,源码自行编译安装非基础包对两种安装方式都进行讲解,代码如下:

, ]1 m( y2 z- \8 I; S

01 安装基础包


  • / P3 k' V* o1 N  E9 o9 \
    [Shell] 纯文本查看 复制代码
    apt-get -y --no-install-recommends --assume-yes install gcc gfortran make m4 libtool libxml2-utils python libxml-libxml-perl libcurl4-openssl-dev liblapack-dev libblas-dev mpich libmpich-dev sudo cmake git
    
    apt-get clean

    0 ]3 ~% R4 O( S: F% M

02 安装zlib


  • 1 X% x% z3 T( x8 o5 M
    [Shell] 纯文本查看 复制代码
    ZDIR=/usr/local/zlib        #定义环境变量
    
    cd /usr/local/src/zlib-1.2.11                 
    
    ./configure --prefix=${ZDIR} 
    
    make 
    
    make check 
    
    make install 
    
    rm -rf /usr/local/src/zlib-1.2.11 

    . ^. U, n4 ^; S4 {

03  安装HDF5


  • 3 j& M1 T( p, ^2 v* \5 b9 [
    [Shell] 纯文本查看 复制代码
    H5DIR=/usr/local/hdf5
    
    cd /usr/local/src/hdf5-1.10.4
    
    CC=mpicc CFLAGS=-w ./configure --prefix=${H5DIR} --with-zlib=${ZDIR} --enable-parallel --enable-hl 
    
    make 
    
    make check
    
    make install 
    
    rm -rf /usr/local/src/hdf5-1.10.4

    4 ]( Y$ Y  Y+ J! v8 r$ J

, \* l" p& {$ e( l7 T! x6 x; K

! ?; e" p3 v/ i3 a7 p/ t: ]$ F+ @, [5 D0 Y  d* k$ ~' r8 q
9 l+ M& X3 U1 B

04  安装pnetcdf

  • # R7 X3 x  {: T! F- y" N$ k
    [Shell] 纯文本查看 复制代码
    PNDIR=/usr/local/pnetcdf
    
    cd /usr/local/src/pnetcdf-1.11.0 
    
    MPICC=mpicc CFLAGS="-fPIC -g -O2" ./configure --prefix=${PNDIR} --enable-shared --enable-profiling
    
    make
    
    make tests 
    
    make check
    
    make ptests 
    
    make install 
    
    rm -rf /usr/local/src/pnetcdf-1.11.0

  • # L3 K3 D+ \% s5 Z* {
    8 V2 K7 k5 ?1 X1 G1 s: }4 r# R: d

05 安装netcdf


  • 9 f) c- Q: s# I" J+ F
  • ( }: c  r  O+ {4 h6 a4 F% j+ ^( }
    [Shell] 纯文本查看 复制代码
    NCDIR=/usr/local/netcdf4
    
    cd /usr/local/src/netcdf-c-4.6.2
    
    CC=mpicc CPPFLAGS="-I${PNDIR}/include -I${H5DIR}/include -I${ZDIR}/include" LDFLAGS="-L${PNDIR}/lib -L${H5DIR}/lib -L${ZDIR}/lib" ./configure --prefix=${NCDIR} --enable-parallel-tests --enable-parallel
    
    make
    
    make check
    
    make install 
    
    rm -rf /usr/local/src/netcdf-c-4.6.2
  • 5 P, c; {+ H$ R* L; e2 l3 e
  • 06安装netcdf-fortran
    $ Z; _1 Q% \3 m2 }& [/ P6 V
  • [Shell] 纯文本查看 复制代码
    NFDIR=/usr/local/netcdff4
    
    cd /usr/local/src/netcdf-fortran-4.4.5
    
    CPPFLAGS=-I${NCDIR}/include LDFLAGS=-L${NCDIR}/lib ./configure --prefix=${NFDIR} 
    
    make
    
    make check
    
    make install
    
    rm -rf /usr/local/src/netcdf-fortran-4.4.5
    ) N! [: K3 g$ X( I, `

07 建立动态链接库

  • ' ^! W) Q& H7 k) q
  • 9 {+ H! j! K6 f, n# }! w- N4 [
    6 R8 s2 I" X4 ^+ g3 j- c- \, M3 L4 n
[Shell] 纯文本查看 复制代码
echo ${NCDIR}/lib > /etc/ld.so.conf.d/netcdf.conf 

echo ${NFDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf 

echo ${ZDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf 

echo ${H5DIR}/lib >> /etc/ld.so.conf.d/netcdf.conf 

echo ${PNDIR}/lib >> /etc/ld.so.conf.d/netcdf.conf 

ldconfig

[/size][/font][p=null, 2, center][font=新宋体][size=3]

结语

( I6 ]# z1 ?$ u8 c& ~2 K
% E/ V+ M  Y, o4 M. l% ~- r

如此,CESM2.X以上版本的环境就搭建好了。当然,每台机器的基本配置有所差异,如CPU不同,安装Linux发行版不同,此过程中可能会出现由于小问题。当然,如果这些问题都顺利通过,那基本上CESM模型的环境就搭建好了。搭建好之后,就可以进行CESM模型的下载及安装了!

! l/ b5 x6 K0 K* W2 i
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
活着便精彩
活跃在2022-4-10
快速回复 返回顶部 返回列表