WRF/CMAQ模型的编译
一、WPS和WRF编译Compiling WRFhttps://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.phpFull WRF and WPS Installation Example (GNU) | WRF MPAS-A Support Forumhttps://forum.mmm.ucar.edu/threads/full-wrf-and-wps-installation-example-gnu.12385/二、CMAQ编译Intel编译器安装WRF-CMAQ-CSDN博客https://blog.csdn.net/weixin_55713760/article/details/120943523WRF编译也可以按照这个链接2.1. 修改化学机制setenv Mechanism saprc07tic_ae7i_aqset ModMech MECHS/${Mechanism}自己修改增减机制参考下面的链接CMAQ/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md at 5.5 · USEPA/CMAQ · GitHubhttps://github.com/USEPA/CMAQ/blob/5.5%2B/DOCS/Users_Guide/Tutorials/CMAQ_UG_tutorial_chemicalmechanism.md三、环境库的安装# 文件夹定义export DIR/data/home/gzq25_slurm/librariesexport TARDIR${DIR}/tar_gz3.1 # intel直接copy之前的文件夹source /data/home/gzq25_slurm/libraries/intel/oneapi/setvars.sh --forcewhich iccwhich ifortwhich mpiifortmpiifort -show3.2 # zlibcd ${DIR}rm -rf zlib-1.2.11tar -xzf ${TARDIR}/zlib-1.2.11.tar.gzmkdir -p ${DIR}/zlib/1.2.11cd ${DIR}/zlib-1.2.11CCicc CXXicc FCifort CPPicpc -E CPPFLAGS-fPIC ./configure --prefix${DIR}/zlib/1.2.11 | tee configure.logmake -j4 | tee make.logmake check | tee make_check.logmake install | tee make_install.log3.3 # curlexport ZLIB${DIR}/zlib/1.2.11export PATH${ZLIB}/bin:${PATH}export LD_LIBRARY_PATH${ZLIB}/lib:${LD_LIBRARY_PATH}cd ${DIR}rm -rf curl-7.75.0tar -xzf ${DIR}/tar_gz/curl-7.75.0.tar.gzmkdir -p ${DIR}/curl/7.75.0cd ${DIR}/curl-7.75.0CCicc CXXicc FCifort CPPicpc -E CPPFLAGS-fPIC ./configure --prefix${DIR}/curl/7.75.0 --with-zlib${ZLIB} --without-ssl | tee configure.logmake -j4 | tee make.logmake install | tee make_install.logexport CURL${DIR}/curl/7.75.0ls -lh \${CURL}/bin/curl \${CURL}/bin/curl-config \${CURL}/lib/libcurl.a \${CURL}/include/curl/curl.hexport PATH${CURL}/bin:${PATH}export LD_LIBRARY_PATH${CURL}/lib:${ZLIB}/lib:${LD_LIBRARY_PATH}3.4 # hdf5cd ${DIR}rm -rf hdf5-1.10.5tar -xjf ${TARDIR}/hdf5-1.10.5.tar.bz2mkdir -p ${DIR}/hdf5/1.10.5cd ${DIR}/hdf5-1.10.5CCicc CXXicpc FCifort F77ifort F90ifort CFLAGS-O2 -fPIC CXXFLAGS-O2 -fPIC FFLAGS-O2 -fPIC FCFLAGS-O2 -fPIC ./configure --prefix${DIR}/hdf5/1.10.5 --with-zlib${ZLIB} --enable-fortran --enable-hl --enable-static --enable-shared | tee configure.logmake -j4 | tee make.logmake check | tee make_check.logmake install | tee make_install.logexport HDF5${DIR}/hdf5/1.10.5export PATH${HDF5}/bin:${PATH}export LD_LIBRARY_PATH${HDF5}/lib:${LD_LIBRARY_PATH}ls -lh \${HDF5}/lib/libhdf5.a \${HDF5}/lib/libhdf5.so \${HDF5}/lib/libhdf5_hl.a \${HDF5}/lib/libhdf5_hl.so \${HDF5}/lib/libhdf5_fortran.a \${HDF5}/lib/libhdf5_fortran.so \${HDF5}/include/hdf5.hwhich h5ccwhich h5fcwhich h5dumph5cc -showconfig | head -n 80h5dump -V3.5 # netcdf-ccd ${DIR}rm -rf netcdf-c-4.7.0tar -xzf ${TARDIR}/netcdf-c-4.7.0.tar.gzmkdir -p ${DIR}/netcdf/4.7.0cd ${DIR}/netcdf-c-4.7.0CCicc CXXicc FCifort CPPicpc -E CPPFLAGS-fPIC -I${HDF5}/include -I${ZLIB}/include -I${CURL}/include LDFLAGS-L${HDF5}/lib -L${ZLIB}/lib -L${CURL}/lib ./configure --prefix${DIR}/netcdf/4.7.0 --enable-netcdf-4 --enable-static --enable-shared --disable-dap | tee configure.logmake -j4 | tee make.logmake check | tee make_check.logmake install | tee make_install.logexport NETCDF${DIR}/netcdf/4.7.0export PATH${NETCDF}/bin:${PATH}export LD_LIBRARY_PATH${NETCDF}/lib:${LD_LIBRARY_PATH}which nc-configwhich ncdumpnc-config --versionnc-config --allncdump -versionls -lh \${NETCDF}/include/netcdf.h \${NETCDF}/lib/libnetcdf.a \${NETCDF}/lib/libnetcdf.so \${NETCDF}/bin/nc-config \${NETCDF}/bin/ncdump3.6 # netcdf-fortrancd ${DIR}rm -rf ${DIR}/netcdf-fortran-4.4.5tar -xzf ${TARDIR}/netcdf-fortran-4.4.5.tar.gzcd ${DIR}/netcdf-fortran-4.4.5export NETCDF${DIR}/netcdf/4.7.0export PATH${NETCDF}/bin:${PATH}export LD_LIBRARY_PATH${NETCDF}/lib:${LD_LIBRARY_PATH}which nc-confignc-config --versionwhich ifortwhich icc注意这个版本的文件有问题执行这个命令对第14行进行修正sed -i 14c\ include netcdf.inc nf_test/ftst_rengrps.FCCicc CXXicc FCifort F77ifort CPPicpc -E CPPFLAGS-fPIC -I${NETCDF}/include LDFLAGS-L${NETCDF}/lib LD_LIBRARY_PATH${NETCDF}/lib:$LD_LIBRARY_PATH ./configure --prefix${NETCDF} --enable-static --enable-shared 21 | tee configure.logmake -j4 21 | tee make.logmake check 21 | tee make_check.logmake install 21 | tee make_install.logwhich nf-confignf-config --versionnf-config --allls -lh \${NETCDF}/bin/nf-config \${NETCDF}/lib/libnetcdff.a \${NETCDF}/lib/libnetcdff.so \${NETCDF}/include/netcdf.mod \${NETCDF}/include/netcdf.incfile ${NETCDF}/lib/libnetcdff.so.6.1.1ldd ${NETCDF}/lib/libnetcdff.so3.7 # ioapiCMAQ安装教程(基于intel编译器) - 知乎https://zhuanlan.zhihu.com/p/710326443Intel编译器安装WRF-CMAQ-CSDN博客https://blog.csdn.net/weixin_55713760/article/details/120943523下载网址wget https://www.cmascenter.org/ioapi/download/ioapi-3.2.tar.gz这里对文件进行了修改适用多文件处理程序ioapi-3.2-largemkdir -p /data/home/gzq25_slurm/libraries/ioapi-3.2-largetar -xzf /data/home/gzq25_slurm/libraries/tar_gz/ioapi-3.2-large.tar.gz -C /data/home/gzq25_slurm/libraries/ioapi-3.2-largecd /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2grep -nE MXFILE3|MXVARS3 \ioapi/PARMS3.EXT \ioapi/fixed_src/PARMS3.EXT \ioapi/PARMS3-LARGE.EXT \ioapi/parms3.h \ioapi/parms3-large.hINTEGER, PARAMETER :: MXFILE3 512 ! max number of open filesINTEGER, PARAMETER :: MXVARS3 16384 ! max number of variables per fileexport BINLinux2_x86_64ifortmkdir Linux2_x86_64ifortcd /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2vi Makefile 修改如下BIN Linux2_x86_64ifortVERSION 3.2-${CPLMODE}BASEDIR /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2NCFLIBS -L/data/home/gzq25_slurm/libraries/netcdf/4.7.0/lib -lnetcdff -lnetcdf -L/data/home/gzq25_slurm/libraries/hdf5/1.10.5/lib -lhdf5_hl -lhdf5 -lhdf5hl_fortran -L/data/home/gzq25_slurm/libraries/zlib/1.2.11/lib -lzIODIR $(BASEDIR)/ioapiFIXDIR $(IODIR)/fixed_srcHTMLDIR $(BASEDIR)/HTMLTOOLDIR $(BASEDIR)/m3toolsOBJDIR $(BASEDIR)/$(BIN)INSTALL /data/home/gzq25_slurm/libraries/ioapiLIBINST $(INSTALL)/$(BIN)BININST $(INSTALL)/$(BIN)CPLMODE nocplPVMINCL make configure可以不再手动修改 ioapi/Makefile 和 m3tools/Makefile可由make configure生成但需要手动修改ioapi/Makeinclude.Linux2_x86_64ifortcd /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2/ioapivi MakefileBASEDIR /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2INSTDIR /data/home/gzq25_slurm/libraries/ioapi/${BIN}IODIR ${BASEDIR}/ioapi# OBJDIR ${IODIR}/../lib# OBJDIR ${IODIR}/../${BIN}OBJDIR ${BASEDIR}/${BIN}FIXDIR ${IODIR}/fixed_src# Architecture dependent stuffinclude /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2/ioapi/Makeinclude.$(BIN)DEFINEFLAGS $(ARCHFLAGS) $(PARFLAGS)#DEFINEFLAGS -DIOAPICPL1 $(ARCHFLAGS) $(PARFLAGS)#DEFINEFLAGS -DIOAPI_PNCF1 $(ARCHFLAGS) $(PARFLAGS)#DEFINEFLAGS -DIOAPI_NCF41 $(ARCHFLAGS) $(PARFLAGS)#DEFINEFLAGS -DIOAPI_PNCF1 -DIOAPI_NCF41 $(ARCHFLAGS) $(PARFLAGS)这个需要手动修改vi Makeinclude.Linux2_x86_64ifort# Version $Id: Makeinclude.Linux2_x86_64ifort 1 2017-06-10 18:05:20Z coats $## Michael Bane (UManchester UK) reports that for ifort version 9,# -stack_temps -safe_cray_ptr are not supported and that there are# problems with -unroll without an unroll-count (bug reported# to Intel)AR arCC iccCXX icpcFC ifort -auto -warn notruncated_source -static-intelM4 m4LINK $(CC)## Module-include-directory commandMODI -IE132 -extend-source 132# MFLAGS -traceback # generic# MFLAGS -traceback -msse4.1 -xSSE4.1 # penryn# MFLAGS -traceback -mavx2 -xAVX -marchcorei7-avx # SandyBridge# MFLAGS -traceback -mavx -xAVX2 -marchcorei7-avx2 # HaswellMFLAGS -traceback -marchcore-avx2OMPFLAGS OMPLIBS #OMPFLAGS -openmp # for Intel compilers, version 15 or earlier#OMPLIBS -openmp# OMPFLAGS -openmp -qopenmp# OMPLIBS -openmp -qopenmp -qopenmp-linkstatic -shared_intelCOPTFLAGS -O3 ${MFLAGS}FOPTFLAGS -O3 -unroll -stack_temps -safe_cray_ptr \-convert big_endian -assume byterecl ${MFLAGS}FPPFLAGS -DF901FSFLAGS -saveARCHFLAGS \-DAUTO_ARRAYS1 \-DF901 -DFLDMN1 \-DFSTR_Lint \-DIOAPI_NO_STDOUT1 \-DAVOID_FLUSH1 -DBIT321PARFLAGS ARCHLIB #ARCHLIB -Bstatic# M4DEFFILE $(PVM_ROOT)/conf/$(PVM_ARCH).m4# PVMLIBS -L$(PVM_ROOT)/lib/$(PVM_ARCH) -lpvm3PVMLIBS cd /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2/m3toolsvi MakefileBASEDIR /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2SRCDIR ${BASEDIR}/m3toolsIODIR ${BASEDIR}/ioapiOBJDIR ${BASEDIR}/${BIN}INSTDIR /data/home/gzq25_slurm/libraries/ioapi/${BIN}# Architecture dependent stuff# Assumes FC is an f90include /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2/ioapi/Makeinclude.${BIN}FFLAGS -I$(IODIR) ${MODI}$(OBJDIR) -DIOAPI_NCF4 $(ARCHFLAGS) $(PARFLAGS) $(FOPTFLAGS) $(ARCHFLAGS)LDFLAGS -I$(IODIR) $(DEFINEFLAGS) $(ARCHFLAGS)# Incompatibility between netCDF versions before / after v4.1.1:# For netCDF v4 and later, you may also need the extra libraries# given by netCDF commands## nc-config --libs# nf-config --libs## Cygwin libraries need -lnetcdff.dll -lnetcdf.dll below#LIBS -L${OBJDIR} -lioapi -L/data/home/gzq25_slurm/libraries/netcdf/4.7.0/lib -lnetcdff -lnetcdf -L/data/home/gzq25_slurm/libraries/hdf5/1.10.5/lib -lhdf5_hl -lhdf5 -lhdf5hl_fortran -L/data/home/gzq25_slurm/libraries/zlib/1.2.11/lib -lz $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)#LIBS -L${OBJDIR} -lioapi -lnetcdf $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)cd /data/home/gzq25_slurm/libraries/ioapi-3.2-large/ioapi-3.2make configuremake allmake installcp ioapi/fixed_src/* /data/home/gzq25_slurm/libraries/ioapi/fixed_src/