[Redhat9.0]Models-3安装备忘录之LINUX篇
----------------------------------------------上一篇:MM5---------------------------------------------
PAVE版本:PAVE2.1.2
NetCDF版本:NetCDF3.5.1
IOAPI版本:IOAPI2.2
CVSROOT版本:CVS1.11.20
CMAQ版本:CMAQ4.3
SMOKE版本:SMOKE2.0
-----------------------------------------------
-----------------------------------------------
1.将netcdf-3.5.1在文件夹/usr/local/netcdf(便于管理,也与环境变量相符)解压出src目录;
2.在csh环境下进行安装、编译,在终端中输入以下语句:
# setenv FC pgf90
# setenv CC gcc
# setenv FFLAGS "-O2"
# setenv CPPFLAGS "-DNDEBUG -DsunFortran"
3.# ./configure --prefix=/usr/local/netcdf
4.# make
# make test
# make install--产生bin、include、bin、man目录,并于lib目录中编译出需要的libnetcdf.a文件;
5.# ln -s /usr/local/netcdf/lib/libnetcdf.a /home/hdyl/MODELS3/lib/netCDF/Linux/libnetcdf.a
--CMAQ仅需要库文件libnetcdf.a,因此只要将编译得到的libnetcdf.a链接到CMAQ适当目录下即可,由于这些文件夹尚未建立,可能在后面安装CMAQ的时候链接会更方便一些,下面的IOAPI编译出的libioapi.a同理。
--源程序可以删掉,安装的貌似可以,保留也行。
-----------------------------------------------
1.解压ioapi_22.tar.gz到“/home/hdyl/ioapi_22”中;
2.在csh环境下安装、编译:
# setenv BIN Linux2_i686pg(原来是:Linux2_x86pg,为了跟CMAQ中统一,就改了)
# setenv CC gcc
# cd ioapi_22
# cp Makefile.nocpl Makefile
3.# vi Makeinclude.Linux2_i686pg--修改有关编译项(这个文件夹里所有的x86pg都改为i686pg):
--a.CC = /usr/bin/gcc (可能要这样改,我原来的是这样的);
--b.OMPFLAGS、OMPLIBS为多CPU条件下的选项,在单CPU下应关闭(置空);
--c.FSFLAGS=--Msave,pgf90不能识别,关闭;
--d. 由于gcc不能识别COPTFLAGS中的-fast项,故关闭了COPTFLAGS和FOPTFLAGS中的-fast;
--e.对于ARCHFLAGS,选择没有-Msecond -underscore和-Mnosecond -underscore的选项。
4.# make--创建Linux2_i686pg目录,并在该目录中编译出libioapi.a文件;
5.# ln -s libioapi.a /home/hdyl/MODELS3/lib/ioapi_22/libioapi.a (如果libioapi.a不在CMAQ目录下)。
--CMAQ仅需要库文件libioapi.a,因此原则上只要将该文件编译出,并置于CMAQ的适当目录下即可。
注意:如果当时安装IOAPI没有装在/home/hdyl/MODELS3/lib/ioapi_22中,则应该将安装目录下的fixed_src目录拷入到这个目录中。
-----------------------------------------------
1.解压cvs-1.11.20.tar.gz到/home/hdyl/CVSROOT;
2.设置环境变量;
3.# ./configure
# make
# make install
1.设置环境变量:
setenv M3HOME /home/hdyl/MODELS3
setenv M3MODEL $M3HOME/models
setenv M3LIB $M3HOME/lib
setenv M3DATA $M3HOME/data
setenv M3WORD $M3HOME/scripts
2.# cd $M3HOME--解压M3DATA.tar.gz产生$M3DATA目录及子目录;
3.创建$M3LIB及其子目录:
# mkdir $M3LIB--后面类似;
其中,将前述编译得到的libnetcdf.a和libioapi.a分别链接到$M3LIB/netCDF/Linux和$M3LIB/ioapi_22/Linux2_i686pg目录下。
# ln -s /usr/local/netcdf/lib/libnetcdf.a /home/hdyl/MODELS3/lib/netCDF/Linux/libnetcdf.a
# ln -s libioapi.a /home/hdyl/MODELS3/lib/ioapi_22/Linux2_i686pg/libioapi.a
*子目录pario、dynmem(没有创建)与并行计算有关。
4.# cd $M3HOME--解压MODELS.tar.gz$M3MODEL目录及其子目录;
5.# mkdir $3WORK
# cd $M3WORK--解压SCRIPTS.tar.gz产生$M3WORK的子目录;
6.# cd $M3WORK/build
# ./bldit.m3bld
7.# cd $M3WORK/stenex
# ./bldit.se_noop.pgf (单CPU计算);
或 # ./bldit.se.pgf(并行计算)
注意:修改这个文件内的路径以及编译器。
8.编译执行JPROC、ICON、BCON、MCIP、CCTM(第一层的第一天)
# cd $M3WORK/jproc
# ./bldit.jproc.pgf---注意:修改这个文件内的路径(PGI、ioapi以及netCDF),下同;
# ./run.jproc >&! jproc.log&
-----------------------------------------------
# cd $M3WORK/icon
# ./bldit.icon.pgf
set FC = /usr/pgi/linux86/5.0/bin/pgf90
set IOAPI = "${M3LIB}/ioapi_22/${BLD_OS}_i686pg -lioapi"
set ICL_IOAPI = ${M3LIB}/ioapi_22/fixed_src
set NETCDF = "${M3LIB}/netCDF/Linux -lnetcdf"
# ./run.icon---注意:修改这个文件内的EXEC路径,改为:Linux2_i686pg,下同(可能还需要改别的);
-----------------------------------------------
# cd $M3WORK/bcon
# ./bldit.bcon.pgf
# ./run.bcon >&! bcon.log&
-----------------------------------------------
# cd $M3WORK/mcip2---MM5数据转换成为CCTM可处理的文件;
# cd BLD
# make
# cp mcip.exe ../mcip.exe
# ./run.mcip
-----------------------------------------------
在已经准备好气象、源排放文件后,运行CCTM:
(数据包括:MM5输出数据、SMOKE数据、JPROC、ICON、BCON数据)
# $M3WORK/cctm
# ./bldit.cctm.pgf
# .run.cctm >&! cctm.log&
9.参考TUTUOIAL_PROCEDURE文件,计算第二天的coarse domain浓度场以及第一天和第二天的fine domain浓度场;
-----------------------------------------------
注意:
1.CMAQ的相关安装和运行均在cshell的环境中进行;
2.为保证编译得到的库文件libnetcdf.a、libioapi.a、libCVS.a等的相容性,在安装和编译时,应设置相同的编译环境变量setenv CC gcc,否则可能会JPROC可执行程序的非正常运行(挂置、无信息、结果输出)。
3.主要安装参考文件:README、TUTORIAL_PROCEDURE、CVS_NETCDF、IOAPI;
4.$M3HOME:
a.data---输入输出的各类数据文件;
c.models---模式以及机理的原程序文件;
d.scripts---工作目录,存放运行脚本和可执行文件。
安装过程参考manual中的帮助ch12
smoke.Linux2_x86ifc.tar.gz;smoke.nctox.data.tar.gz;smoke_install.csh;manual.zip(前两个不需要解压),为省事,可将这些文件放入/home/hdyl/smoke文件夹中,作为EDSS_ROOT,不需要解压;
2.在.cshrc中设置环境变量:
setenv EDSS_ROOT /home/hdyl/smoke
setenv SMK_HOME /home/hdyl/smoke--暂时不懂是做什么的;
3.# mkdir -p $EDSS_ROOT--(创建smoke文件夹)
4.# cd /home/hdyl/smoke
# source smoke_install.csh--解压并安装SMOKE到EDSS_ROOT中。
1.# cd $EDSS_ROOT/scripts
# source platform--如无错误则不需要更新(我认为),并为EDSS_EXE设置环境变量;
2.将IO/API的库文件放入:$EDSS_ROOT/subsys/ioapi/bin/$EDSS_EXE/libioapi.a;
将IO/API的工具datshift安装到:$EDSS_ROOT/subsys/ioapi/bin/$EDSS_EXE/datshift;--试验了一下,没看出有什么作用..==b;
将NETCDF的库文件放入:$EDSS_ROOT/subsys/netcdf/bin/$EDSS_EXE/libnetcdf.a;
今天在/home/hdyl/smoke/subsys/ioapi/fixed_src中找到一致的文件,所以拷入ioapi_includes文件夹中。
- $EDSS_SUBSYS/edss_tools/setup/sysflags --TOOLS_ROOT:Undefined variable
-
$EDSS_SUBSYS/filesetapi/sysflags --FS_ROOT:Undefined variable
-
$SMKROOT/assigns/sysflags --source sysflags:MD_SRC:Undefined variable
3.# cd $SMKROOT/scripts/make--$SMKROOT代表的是/home/hdyl/smoke/subsys/smoke;
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。