CLM模型运行


CLM模型运行

提示:linux ubuntu系统,确保安装完成intel编译器,netcdf库

1.环境变量设置

HOME目录下勾选显示隐藏文件,找到~/.bashrc文件,双击打开,查找export,在该句下行添加下方环境变量

# 安装intel虚拟机位置在~/intel,
source ~/intel/oneapi/setvars.sh 

source ~/intel/oneapi/setvars.sh 用于设置Intel oneAPI开发环境。这个命令的具体功能是执行setvars.sh脚本,该脚本包含了设置环境变量所需的指令,使用户可以使用Intel oneAPI工具集进行开发。这个命令用于在当前shell会话中执行脚本。与直接运行脚本不同,source命令会在当前的shell环境中执行脚本,这意味着脚本中设置的任何环境变量都会应用于当前的会话。

export CC=icc
export FC=ifort
export F77=ifort
export F90=ifort
export CXX=icpc
export MPICC=mpiicc
export MPIFC=mpiifort
export MPIF77=mpiifort
export MPIF90=mpiifort
export MPICXX=mpiicpc
export NETCDF=~/netcdf-intel  
export NETCDF_HOME=~/netcdf-intel
export NETCDF_PATH=~/netcdf-intel  
export HDF5=~/netcdf-intel
export LD_LIBRARY_PATH=~/netcdf-intel/lib:$LD_LIBRARY_PATH
ulimit -s unlimited 

2.inputdata数据下载

下载地址https://svn-ccsm-inputdata.cgd.ucar.edu/trunk/inputdata
inputdata放在HOME目录下~/cesm/inputdata

3.设置文件修改

1) machine文件修改

cd ~/DGVM/clm5.0/cime/config/cesm/machines/
# 备份文件
cp config_machines.xml config_machines.xml.orig
gedit config_machines.xml 

将下述代码添加到该文件中

<machine MACH="myintel">
    <DESC>
    </DESC>
    <NODENAME_REGEX>regex.expression.matching.your.machine</NODENAME_REGEX>
    <OS>LINUX</OS>
    <PROXY> https://howto.get.out </PROXY>
    <COMPILERS>intel</COMPILERS>
    <MPILIBS>impi</MPILIBS>
    <PROJECT>none</PROJECT>
    <SAVE_TIMING_DIR> </SAVE_TIMING_DIR>
    <CIME_OUTPUT_ROOT>$ENV{HOME}/cesm/scratch</CIME_OUTPUT_ROOT>
    <DIN_LOC_ROOT>$ENV{HOME}/cesm/inputdata</DIN_LOC_ROOT>
    <DIN_LOC_ROOT_CLMFORC>$ENV{HOME}/cesm/inputdata/lmwg</DIN_LOC_ROOT_CLMFORC>
    <DOUT_S_ROOT>$ENV{HOME}/cesm/archive/$CASE</DOUT_S_ROOT>
    <BASELINE_ROOT>$ENV{HOME}/cesm/cesm_baselines</BASELINE_ROOT>
    <CCSM_CPRNC>$ENV{HOME}/cesm/tools/cime/tools/cprnc/cprnc</CCSM_CPRNC>
    <GMAKE>make</GMAKE>
    <GMAKE_J>2</GMAKE_J>
    <BATCH_SYSTEM>none</BATCH_SYSTEM>
    <SUPPORTED_BY>me@my.address</SUPPORTED_BY>
    <MAX_TASKS_PER_NODE>2</MAX_TASKS_PER_NODE>
    <MAX_MPITASKS_PER_NODE>2</MAX_MPITASKS_PER_NODE>
    <PROJECT_REQUIRED>FALSE</PROJECT_REQUIRED>
    <mpirun mpilib="default">
      <executable>mpirun</executable>
      <arguments>
	<arg name="ntasks"> -np {{ total_tasks }} </arg>
      </arguments>
    </mpirun>
    <module_system type="none"/>
    <environment_variables>
      <env name="OMP_STACKSIZE">256M</env>
      <env name="NETCDF_PATH">/home/dell/netcdf-intel</env>
    </environment_variables>
    <resource_limits>
      <resource name="RLIMIT_STACK">-1</resource>
    </resource_limits>
  </machine>

2)complier文件修改

cd ~/DGVM/clm5.0/cime/config/cesm/machines/
cp config_compilers.xml config_compilers.xml.orig
gedit config_compilers.xml 

查找intel修改该部分,修改后内容是

<compiler COMPILER="intel">
  <CFLAGS>
    <base>  -qno-opt-dynamic-align -fp-model precise -std=gnu99 </base>
    <append compile_threaded="true"> -qopenmp </append>
    <append DEBUG="FALSE"> -O2 -debug minimal </append>
    <append DEBUG="TRUE"> -O0 -g </append>
  </CFLAGS>
  <CPPDEFS>
    <!-- http://software.intel.com/en-us/articles/intel-composer-xe/ -->
    <append> -DFORTRANUNDERSCORE -DCPRINTEL</append>
  </CPPDEFS>
  <CXX_LDFLAGS>
    <base> -cxxlib </base>
  </CXX_LDFLAGS>
  <CXX_LINKER>FORTRAN</CXX_LINKER>
  <FC_AUTO_R8>
    <base> -r8 </base>
  </FC_AUTO_R8>
  <FFLAGS>
    <base> -qno-opt-dynamic-align  -convert big_endian -assume byterecl -ftz -traceback -assume realloc_lhs -fp-model source  </base>
    <append compile_threaded="true"> -qopenmp </append>
    <append DEBUG="TRUE"> -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created </append>
    <append DEBUG="FALSE"> -O2 -debug minimal </append>
  </FFLAGS>
  <FFLAGS_NOOPT>
    <base> -O0 </base>
    <append compile_threaded="true"> -qopenmp </append>
  </FFLAGS_NOOPT>
  <FIXEDFLAGS>
    <base> -fixed -132 </base>
  </FIXEDFLAGS>
  <FREEFLAGS>
    <base> -free </base>
  </FREEFLAGS>
  <HAS_F2008_CONTIGUOUS>TRUE</HAS_F2008_CONTIGUOUS>
  <LDFLAGS>
    <append compile_threaded="true"> -qopenmp </append>
  </LDFLAGS>
  <MPICC> mpiicc  </MPICC>
  <MPICXX> mpiicpc </MPICXX>
  <MPIFC> mpiifort </MPIFC>
  <SCC> icc </SCC>
  <SCXX> icpc </SCXX>
  <SFC> ifort </SFC>
  <SLIBS>
    <append MPILIB="mpich"> -mkl=cluster </append>
    <append MPILIB="mpich2"> -mkl=cluster </append>
    <append MPILIB="mvapich"> -mkl=cluster </append>
    <append MPILIB="mvapich2"> -mkl=cluster </append>
    <append MPILIB="mpt"> -mkl=cluster </append>
    <append MPILIB="openmpi"> -mkl=cluster </append>
    <append MPILIB="impi"> -qmkl=cluster -L/home/dell/netcdf-intel/lib -lnetcdf -lnetcdff </append>
    <append MPILIB="mpi-serial"> -mkl </append>
  </SLIBS>
  <SUPPORTS_CXX>TRUE</SUPPORTS_CXX>
</compiler>

4. case 创建、编译及运行

以上环境都设置好之后,进行case创建和编译

# 转到clm5.0/cime/scripts/文件夹下
cd  ~/DGVM/clm5.0/cime/scripts/
# 1-分辨率
./query_config --grids   
# 2-模块配置
./query_config --compsets
# 3-创建 case
./create_newcase --case 1850CLM50Bgc --res f19_g16 --compset I1850Clm50Bgc  --compiler intel --mach myintel  --run-unsupported 
# 4-进入文件夹
cd 1850CLM50Bgc 
# 5-编辑env_run,将DATM_CLMNCEP_YR_START 和DATM_CLMNCEP_YR_END改为自己inputdata输入数据的时间
gedit env_run.xml
# 6-设置case
./case.setup
# 7-编译case,必须使用python2.7
/usr/bin/python2.7 ./case.build --skip-provenance-check
# 8-确认核数
./preview_run
# 9-确认数据
./check_input_data
# 10-进入run目录
cd ~/cesm/scratch/1850Clm50Bgc/run
# 11-创建文件夹
mkdir timing/checkpoints -p
# 12-运行case
mpirun -np 16 ../bld/cesm.exe

I1850: 这部分通常指的是时间或者实验类型。在这个例子中,“I”可能代表“历史”(historical),而“1850”表示年份,指的是该模型配置旨在模拟的年份或时间段。
Clm50: 这部分指的是特定的陆地模型版本。在CESM中,“Clm”代表“Community Land Model”,一个高级陆地表面过程模型,而“50”可能是版本号。
Bgc: 这通常代表“生物地球化学”(Biogeochemistry),指该模型包括了生物地球化学循环的模拟,比如碳循环、氮循环等。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值