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同理。
-----------------------------------------------我是IO API的分界线---------------------------------------------
目的:为了获得CMAQ所需要的库文件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目录拷入到这个目录中。
-----------------------------------------------我是CVSROOT的分界线---------------------------------------------
目的:其实我也不是很清楚,好像是与服务器相关的吧。
-----------------------------------------------
1.解压cvs-1.11.20.tar.gz到/home/hdyl/CVSROOT;
2.设置环境变量;
3.# ./configure
# make
# make install
-----------------------------------------------我是CMAQ的分界线---------------------------------------------
*在csh环境下进行。
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---输入输出的各类数据文件;
b.lib---编译得到的各种库文件存放于此目录;
c.models---模式以及机理的原程序文件;
d.scripts---工作目录,存放运行脚本和可执行文件。
-----------------------------------------------我是SMOKE的分界线---------------------------------------------
安装过程参考manual中的帮助ch12
-------------------------安装-------------------------
1.版本为2.0,下载到的文件有:
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中。
*安装完后显示:subsys/smokev1/assigns:没有那个文件或目录;
——复制subsys/smoke/assigns到subsys/smokev1/assigns(不晓得有米用处,不过好像最终未用到)
-------------------------编译-------------------------
1.# cd $EDSS_ROOT/scripts
# source platform--如无错误则不需要更新(我认为),并为EDSS_EXE设置环境变量;
# echo $EDSS_OS,得出为Linux2--如果有错误再输入这个;
*查询变量,# echo $变量。
eg:# echo $EDSS_EXE,得出为Linux2_x86pg。
2.将IO/API的库文件放入:$EDSS_ROOT/subsys/ioapi/bin/$EDSS_EXE/libioapi.a;
*后期调试在此处一直有错误,所以,就在smoke文件夹中重新安装ioapi,步骤同前面的ioapi安装所讲一样,安装后需要将库文件与下面的datshift文件放入/home/hdyl/smoke/subsys/ioapi/bin/Linux2_x86pg中。
将IO/API的工具datshift安装到:$EDSS_ROOT/subsys/ioapi/bin/$EDSS_EXE/datshift;--试验了一下,没看出有什么作用..==b;
将NETCDF的库文件放入:$EDSS_ROOT/subsys/netcdf/bin/$EDSS_EXE/libnetcdf.a;
*按照指导手册与王老师留下来的文件夹可以看到存在一个ioapi_includes文件夹,但是由于不知道是怎么得到的,于是只好先创建/home/hdyl/smoke/subsys/ioapi_includes文件夹,并在其中将原ioapi文件夹中的以下文件拷入:
ATDSC3.EXT
CONST3.EXT
FDESC3.EXT
IODECL3.EXT
NETCDF.EXT
NOTICE.EXT
PARMS3.EXT
STATE3.EXT
今天在/home/hdyl/smoke/subsys/ioapi/fixed_src中找到一致的文件,所以拷入ioapi_includes文件夹中。
3.如果有需要,则更新文件:--这一步我在运行后分别显示如下:
3.# cd $SMKROOT/scripts/make--$SMKROOT代表的是/home/hdyl/smoke/subsys/smoke;
# vi Makeall--编辑文件头,如果在前面已经编译过的可以选N;
*在运行过程中有存在如下错误:
Makeit:Command not found.
解决方案是将Makeall中的所有Makeit都改为./Makeit。
4.