爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 34547|回复: 21

cesm1_2_2在南信大大型机上的移植以及运行简单case的步骤

[复制链接]

新浪微博达人勋

发表于 2017-4-22 21:21:43 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
CESM1.2.2_nuist
一、有大型机账号(以下介绍仅针对南信大大型机)

设置.bashrc文件(在home目录下,编辑的话在shell里卖弄输入vi ~/.bashrc)
下面的是我的.bashrc里面的设置:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions

export PS1="\e[0;36m[\u@\h \W]\\$ \e[m"

# MODULE COMPILER
      module unload pgi
      module unload intel/11.1.046
      module unload intel/12.1.0.233
     module load intel/16.0.1
#      module load pgi/13.3-0

# MODULE MPI
      module unload openmpi/1.8.4
      module load mvapich2/2.0b
# MODULE LIB
      module load hdf5/1.8.11
      module load grib_api/1.11.0
      module load jasper/1.900.1
      module load zlib/1.2.3
      module load libpng/1.2.46
      module load udunits/2.1.24
      module load hdf-eos2/2.18v1.00
      module load lapack/3.3.1
      module load netcdf/4.3.0

# MODULE TOOLS
      module unload ncl/6.1.2
      module load ncl/6.3.0
      module load nco/4.3.7
      module load cdo/1.6.2
      module unload matlab
      module unload matlab/2012a
     module load ncview/2.1.2
     module load OpenGrADS

三、下载模式以及补全从官网上下载的模式(官网上1.2.2版本没有全,需要后期自己手动更改)
1.下载模式:
在shell里输入svnco https://svn-ccsm-models.cgd.ucar.edu/cesm1/release_tags/cesm1_2_2 yourDirectory
(这里不明白的话自己百度下linux的svn用法)
2.更新模式:
第一步:先更新模式顶层下的文件:
先进入到模式源代码包里,在shell里输入:cd/nuist/u/home/*****/cesm1_2_2_new
然后vi SVN_EXTERNAL_DIRECTORIES,就是修改这个文件,把这一行修改成:models/utils/pio                  https://github.com/NCAR/ParallelIO.git/tags/pio1_8_12/pio
若后面有报错mct的事情就把models/utils/mct                  https://github.com/quantheory/MC ... fixes_n04_MCT_2.8.3
改好了之输入:svn propset svn:externals -FSVN_EXTERNAL_DIRECTORIES .
注意上面最后一个有个空格和点号"."别落下了
好了再输入:svnupdate
第二步:
cd到 /nuist/u/home/****/cesm1_2_2_new/tools/cprnc,
还是vi SVN_EXTERNAL_DIRECTORIES,语句改为genf90 https://github.com/PARALLELIO/genf90/tags/genf90_140121,:
然后在命令行里面输入:svn propset svn:externals -FSVN_EXTERNAL_DIRECTORIES .
然后svn update

至此,模式的更新内容就全了,不然官网svn下载下不全。

3. 开始更改模式的默认设置,制作一个名字叫做wyq的machine
cd /nuist/u/home/******/cesm1_2_2_new/scripts/ccsm_utils/Machines
第一步,vi config_machines.xml,制造一个叫做wyq的mach:编辑一大段如下,可以更改里面叫做usermachine的机器,里面的其他的机器都是在别的地方的大型机:
<machine MACH="wyq">
        <DESC>IBM HPC Platform,OS is LINUX, 12 pes/node,batch system is PBS</DESC>                                 <!-- can be anything -->
        <OS>LINUX</OS>                              <!-- LINUX,Darwin,CNL,AIX,BGL,BGP -->
        <COMPILERS>intel,pgi,gnu</COMPILERS>     <!-- intel,ibm,pgi,pathscale,gnu,cray,lahey -->
        <COMPILER>intel</COMPILER>     <!-- intel,ibm,pgi,pathscale,gnu,cray,lahey -->
        <MPILIBS>mpich,openmpi</MPILIBS>                <!-- openmpi, mpich, ibm, mpi-serial -->
        <MPILIB>mpich</MPILIB>                <!-- openmpi, mpich, ibm, mpi-serial -->
        <CESMSCRATCHROOT>/nuist/scratch/******/cesm1_2_2_new/$CASE</CESMSCRATCHROOT>                     <!-- complete path to the 'scratch' directory -->
        <RUNDIR>/nuist/scratch/*****/cesm1_2_2_new/$CASE/run</RUNDIR>                       <!-- complete path to the run directory -->
        <EXEROOT>/nuist/scratch/*****/cesm1_2_2_new/$CASE/exe</EXEROOT>                     <!-- complete path to the build directory -->
        <DIN_LOC_ROOT>/nuist/scratch/*****/inputdata_yum</DIN_LOC_ROOT>           <!-- complete path to the inputdata directory -->
        <DIN_LOC_ROOT_CLMFORC>DIN_LOC_ROOT_CLMFORC</DIN_LOC_ROOT_CLMFORC> <!-- path to the optional forcing data for CLM (for CRUNCEP forcing) -->
        <DOUT_S>FALSE</DOUT_S>                                            <!-- logical for short term archiving -->
        <DOUT_S_ROOT>USERDEFINED_optional_run</DOUT_S_ROOT>               <!-- complete path to a short term archiving directory -->
        <DOUT_L_MSROOT>USERDEFINED_optional_run</DOUT_L_MSROOT>           <!-- complete path to a long term archiving directory -->
        <CCSM_BASELINE>USERDEFINED_optional_run</CCSM_BASELINE>           <!-- where the cesm testing scripts write and read baseline results -->
        <CCSM_CPRNC>USERDEFINED_optional_test</CCSM_CPRNC>                <!-- path to the cprnc tool used to compare netcdf history files in testing -->
        <BATCHQUERY>qstat</BATCHQUERY>
        <BATCHSUBMIT>qsub</BATCHSUBMIT>
        <SUPPORTED_BY>USERDEFINED_optional</SUPPORTED_BY>
        <GMAKE_J>12</GMAKE_J>
        <MAX_TASKS_PER_NODE>12</MAX_TASKS_PER_NODE>

</machine>
第二步:vi config_compilers.xml:
<compiler MACH="wyq">
  <NETCDF_PATH> /nuist/p/public/app/netcdf/4.3.0/intel/16.0.1</NETCDF_PATH>
  <PNETCDF_PATH></PNETCDF_PATH>
  <ADD_SLIBS>-L/nuist/p/public/app/netcdf/4.3.0/intel/16.0.1/lib -lnetcdff -L/nuist/p/public/app/lapack/3.3.1/intel/16.0.1/lib/ -llapack -lblas -ltmglib</ADD_SLIBS>
  <ADD_CPPDEFS></ADD_CPPDEFS>
  <CONFIG_ARGS></CONFIG_ARGS>
  <ESMF_LIBDIR></ESMF_LIBDIR>
  <MPI_LIB_NAME>mpich</MPI_LIB_NAME>
  <MPI_PATH>/nuist/p/public/app/mvapich2/2.0b/intel/16.0.1</MPI_PATH>
</compiler>
第三步:cp env_mach_specific.userdefinedenv_mach_specific.nuist
就是生成一个叫做env_mach_specific.wyq的文件,我的叫做.wyq是因为我的模式机器machine的名字就是wyq,可以取别的名字,比如nuist_123等等以你的名字命名的机器。我的这个文件如下:
#! /bin/csh -f
# Mach: nuist
source /etc/profile.d/modules.csh  >&/dev/null
module purge

# The following sets the environment variables MPI_ROOT and MPICH_PATH
if ( $COMPILER == "intel" ) then
   module load intel/16.0.1
endif

if ( "$MPILIB" == "mpich" ) then
  module load mvapich2/2.0b
endif


# The following sets the environment variable NETCDF
module load netcdf/4.3.0

# The following sets the environment variable hdf5
module load hdf5/1.8.11

# The following sets the environment variable CMake
module load cmake/2.8.12.1


module list

第四步:cp mkbatch.userdefinedmkbatch.wyq,就是生成一个.wyq的文件,如下:
#! /bin/csh -f

#################################################################################
if ($PHASE == set_batch) then
#################################################################################

source ./Tools/ccsm_getenv || exit -1

set ntasks  = `${CASEROOT}/Tools/taskmaker.pl -sumonly`
set maxthrds = `${CASEROOT}/Tools/taskmaker.pl -maxthrds`
@ nodes = $ntasks / ${MAX_TASKS_PER_NODE}
if ( $ntasks % ${MAX_TASKS_PER_NODE} > 0) then
  @ nodes = $nodes + 1
  @ ntasks = $nodes * ${MAX_TASKS_PER_NODE}
endif
@ taskpernode = ${MAX_TASKS_PER_NODE} / ${maxthrds}
set qname = batch
set tlimit = "10:00:00"

#--- Job name is first fifteen characters of case name ---
set jobname = `echo ${CASE} | cut -c1-15`

if ($?TESTMODE) then
set file = $CASEROOT/${CASE}.test
else
set file = $CASEROOT/${CASE}.run
endif

cat >! $file << EOF1

#!/bin/csh -f

总结:更改/nuist/u/home/*****/cesm1_2_2_new/scripts/ccsm_utils/Machines路径下的四个文件:
config_machines.xml
config_compilers.xml
env_mach_specific.wyq
mkbatch.wyq

************************************我是分界线****上述是移植,接下来就是要运行case,出来结果了则说明模式是调通了,我只用CLM 如果要用别的,比如CAM社么的具体分析,*****************************************************
在以上的基础上运行case部分(大体是四个步骤:create,setup, build, run; 运行命令在linux下面就是输入./啥啥啥,有的时候你没有executable的权限所以先要用chmod这个命令):
1)  首先,cd /nuist/u/home/*****/cesm1_2_2_new/scripts,进入源码包,
找到想运行的例子(compset,就是componentset的缩写)以及分辨率(res就是resolution的缩写),参考userguide以及http://www.cesm.ucar.edu/models/cesm1.2/cesm/doc_cesm1_2_1/modelnl/这个网站,然后再输入如下命令:
./create_newcase -case /nuist/scratch/*****/cesm1_2_2_new/mycase1 -res f19_g16 -compset ICLM45CNDV -mach wyq

(解释:这个命令的意思就是在/nuist/scratch/*****/cesm1_2_2_new/mycase1这个路径下建立一个case,case的名字是ICLM45CNDV,case的分辨率是f19_g16,建立case使用的机器是wyq;

注意我用的这个case是ICLM45CNDV,需要的数据比较多,在 build的时候下载inputdata需要时间很长,你可以选择别的简单点的case测试一下,网站如上,可以测试一个X,这个case测试起来比较快;我也用过这个命令:create_newcase-case /nuist/scratch/******/cesm1_2_2_new/caseyxy/ -compset B1850C5 -resT31_g37 -mach nuist 这个case挺快的)

2)   然后进入到case所在的目录,即输入cd /nuist/scratch/*****/cesm1_2_2_new/mycase1
看一下这几个文件(vi 你想看的文件名)(或者用记事本或者编辑器打开都行)

①   vi  env_build.xml这个文档里面是输入输出文件的,inputdata数据的位置啊,以及rundirectoryEXEROOT的位置的,这个不用改,在前面已经设置过了的
vi env_mach_pes.xml ,这个要按照你运行的case具体修改一下,一般情况选择默认就行了,我改了:NTASKS_ATM=72N TASKS_LND=72,意是关于核子的配置,这个不怎么明白;虽然可以随时编辑这个文件,在build命令调用之后这个文件就不能够再被编辑了。

然后./cesm_setup(如果你setup之后了想要再改一下上面的哪个文件的,就是要输入一个clean命令这个命令是./cesm_setup–clean)
3)./mycase1.build
如果这个build不想要了还有命令./mycase1.clean_build
4)vi env_run.xml
<entry id="STOP_OPTION"   value="nyears"  />(是默认的是ndays,按自己情况更改)
<entry id="STOP_N"   value="5"  />

REST_OPTION"   value="$STOP_OPTION"  />
<entry id="REST_N"   value="10"  />(这个意思是每10年输出一个restart文件,必须有,看手册)
<entry id="DIN_LOC_ROOT_CLMFORC"   value="/nuist/scratch/******/inputdata/atm/datm7/atm_forcing.datm7.CMIP5_ACCESS10"  />

<entry id="CONTINUE_RUN"   value="FALSE"  />(如果在case运行过程中,大型机突然掉了,那再运行就把这个设置为TRUE,别的不用改)
注:.xml文件可以用vi命令来编辑(不懂百度),也可以用./xmlchange这个工具来更改,例如输入:
./xmlchangeCONTINUE_RUN=TRUE
5).然后vi user_nl_clm添加上:
hist_nhtfrq=0
hist_mfilt = 1
再在shell里输入./preview_namelists,这样子run/lnd_in文件里面就加上了这两个设置
hist_nhtfrq=0表示每月输出一次结果,hist_mfilt = 1表示每个结果写成一个nc文件)
注:①初始场的设置很重要,run/lnd_in里面会有finidat = ,就是指定初始场文件,
②设置初始场文件的方法是:在user_nl_clm里面写入finidat =/路径/文件名.nc ,然后再用./preview_namelists
③xml文件里CLM_FORCE_COLDSTART=off的话需要提供初始场
6)上传xml文件到case目录下面;再修改.run文件再提交文件qsub.run
①修改项目号,
②修改251行,在后面添加上; cd $CASEROOT,如下所示
if ($DOUT_S == 'TRUE') then
  echo"Archiving cesm output to $DOUT_S_ROOT"
  echo"Calling the short-term archiving script st_archive.sh"
  cd$RUNDIR; $CASETOOLS/st_archive.sh; cd $CASEROOT
*************************************************************分界线在此********************************************
注:生成的数据没有设置short archive的话都在$RUNDIR里面,$RUNDIR里面的一些文件比如lnd_in 什么的是决定了模式真正如何运行的脚本(我的理解)
********************************************************************************************************************
模式实在是精妙博大,希望大家多多交流,多多分享~~~~~~~~~~~,我的帖子理解有误或者偏差之处请指正出来,多谢大家~~~~~~~~~





评分

参与人数 1金钱 +1 收起 理由
ccznizuibang + 1 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-23 10:23:13 | 显示全部楼层
厉害了楼主,最近正在安装CESM模式,照着这篇帖子做就好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-15 06:03:21 | 显示全部楼层
万分感谢,整了几个星期不如看楼主一篇帖子{:eb303:}{:eb303:}{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-14 16:08:29 | 显示全部楼层
你好,我有些关于CESM移植的问题可以请教一下吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-27 16:15:53 | 显示全部楼层
这个帖子对新人太有用了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-1-17 22:42:40 | 显示全部楼层
楼主真真是太厉害了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-6-29 15:23:51 | 显示全部楼层
学习了
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2018-7-24 17:22:42 | 显示全部楼层
学习学习,写得很仔细
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-19 20:46:02 | 显示全部楼层
学习了,谢谢楼主
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-20 08:53:20 | 显示全部楼层
楼主好棒,想请教一下你说的svn下载不全是不是指在运行了官网给出的命令后,/components文件夹里面只有类似cln,mosart等几个子模式,并没有把所有的子模式都下载下来?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表