ubuntu不支持gmake,需要
./xmlchange -file env_build.xml -id GMAKE -val make
- DIN_LOC_ROOT下初始场文件和地面数据集的路径应与以下xml文件内设置保持一致 xml文件路径:
PATH_TO_CESM/models/lnd/clm/bld/namelist_files/namelist_defaults_usr_files.xml
<!-- Initial file (relative to ${csmdata}) -->
<finidat >lnd/clm2/initdata/clmi.${clm_usr_name}_${mask}_simyr${sim_year}.nc</finidat>
<!-- Surface dataset (relative to ${csmdata}) -->
<fsurdat >lnd/clm2/surfdata_map/surfdata_${clm_usr_name}_simyr${sim_year}.nc</fsurdat>
- compilers设置
PATH_TO_CESM/scripts/ccsm_utils/Machines
<compiler MACH="userdefined">
<LAPACK_LIBDIR> /usr/lib/x86_64-linux-gnu </LAPACK_LIBDIR>
<NETCDF_PATH> /home/yl/CESM/netcdf/libs</NETCDF_PATH>
<PNETCDF_PATH></PNETCDF_PATH>
<ADD_SLIBS>-L/home/yl/CESM/netcdf/libs/lib -lnetcdf -lnetcdff</ADD_SLIBS>
<ADD_CPPDEFS></ADD_CPPDEFS>
<CONFIG_ARGS></CONFIG_ARGS>
<ESMF_LIBDIR></ESMF_LIBDIR>
<MPI_LIB_NAME></MPI_LIB_NAME>
<MPI_PATH></MPI_PATH>
</compiler>
datm.buildexe.csh中gmake改为$GMAKE
gamke complib -j $GMAKE_J MODEL=datm COMPLIB=$LIBROOT/libatm.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
$GMAKE complib -j $GMAKE_J MODEL=datm COMPLIB=$LIBROOT/libatm.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
sice.buildexe.csh
$GMAKE complib -j $GMAKE_J MODEL=sice COMPLIB=$LIBROOT/libice.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
/home/yl/CESM/cesm1_2_1/models/ocn/socn/bld/socn.buildexe.csh
$GMAKE complib -j $GMAKE_J MODEL=socn COMPLIB=$LIBROOT/libocn.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
/home/yl/CESM/cesm1_2_1/models/glc/sglc/bld/sglc.buildexe.csh
$GMAKE complib -j $GMAKE_J MODEL=sglc COMPLIB=$LIBROOT/libglc.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
/home/yl/CESM/cesm1_2_1/models/wav/swav/bld/swav.buildexe.csh
$GMAKE complib -j $GMAKE_J MODEL=swav COMPLIB=$LIBROOT/libwav.a -f $CASETOOLS/Makefile MACFILE=$CASEROOT/Macros.$MACH || exit 2
/home/yl/CESM/cesm1_2_1/models/drv/bld/cesm.buildexe.csh
$GMAKE exec_se -j $GMAKE_J EXEC_SE=$EXEROOT/cesm.exe MODEL=driver \
USER_CPPDEFS="$multiinst_cppdefs" -f $CASETOOLS/Makefile || exit 2
cesm1_2_1/tools/cprnc/genf90/genf90.pl 需要复制
scripts/ccsm_utils/Machines/buildlib.csm_share需要添加 m u l t i i n s t c p p d e f s = " multiinst_cppdefs = " multiinstcppdefs="multiinst_cppdefs -fno-range-check";
my $multiinst_cppdefs = "$xmlvars{USER_CPPDEFS}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ATM=$xmlvars{NINST_ATM}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_LND=$xmlvars{NINST_LND}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_OCN=$xmlvars{NINST_OCN}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ICE=$xmlvars{NINST_ICE}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_GLC=$xmlvars{NINST_GLC}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_WAV=$xmlvars{NINST_WAV}";
$multiinst_cppdefs = "$multiinst_cppdefs -DNUM_COMP_INST_ROF=$xmlvars{NINST_ROF}";
$multiinst_cppdefs = "$multiinst_cppdefs -fno-range-check";