实用标准文档
编译环境。环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。一些环境变量的说明可参见下表(表1)。
表1 编译NetCDF的一些环境变量及其说明 变量 CC 描述 C编译器 Notes 如果未指定,设置脚本程序将试图找出合适的C编译器,如:cc, c89, xlc, or gcc。 FC Fortran编译如果未指定,设置脚本程序将试图找出合适的Fortran 90 or 器 Fortran 77 编译器。 如果不需要Fortran接口,则可将FC(如果存在) 设置为\。 Fortran 90如果未指定,设置脚本程序将试图找出合适的Fortran 90 编编译器 译器。 如果指定了Fortran 90编译器,则不需要FC参数。(如果存在) 如果不需要Fortran 90接口,则可将F90设置为\。 C++编译器 如果未指定,设置脚本程序将试图找出合适的C++编译器。 不需要C++接口时,可将CXX 设置为 \。 F90 CXX CFLAGS C编译器参数例如 \ 或 \ 选项 C 预处理参例如\ 是忽略声明部分的检测(assertion) 数选项 Fortran 编译器参数选例如\ 或 \ 项 Fortran 90 编译器参数例如\ 或 \。如果未指定,则采用FFLAGS的值。 选项 C++ 编译器例如\ 或 \ 标志 CPPFLAGS FFLAGS F90FLAGS CXXFLAGS ARFLAGS NMFLAGS FPP M4FLAGS LIBS FLIBS 混合参数选在一些操作平台中可能用到这些参数中的一个或几个。 项 值得注意的是,如果不设置环境变量,那么配置脚本程序将会试图找出相应合理的设置值。但在IBM SP机器上,如果用户不设置Fortran90的编译和编译选项,那么配置脚本往往找不到正确的Fortran90编译器和编译选项,从而造成
文案大全
实用标准文档
NetCDF函数库中没有Fortran90的程序接口。
环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。典型的环境变量有:
环境变量名 变量值 USER steve
HOME /home/steve
PATH /bin:/usr/bin:/home/steve/bin
执行命令行命令“env”,可得到当前环境中的环境变量列表。
定义和设置环境变量的方式取决于用户所用的外壳(Shell)类型。Csh类shell(如csh、tcsh)用户设置方式如下: setenv CC c89
setenv CPPFLAGS “-0 -DNDEBUG” 而标准UNIX shell(例如sh、ksh、bash)用户要设置上面同样的环境变量,可如下设置: export CC=c89
export CPPFLAGS=”-0 -DNDEBUG” 以上两种方式中,参数值中带有将值的各部分分开的空格分隔符时,双引号不能省略。否则,参数值只是设置为所要取值得一部分。
标准shell用户还有一种额外的快捷方式为单一命令定义和设置环境变量。环境变量可在命令行中定义和设置,并只在这一行中生效。例如: export FOO=foo env | grep FOO FOO=foo
FOO=bar env | grep FOO FOO=bar
env | grep FOO FOO=foo
测试系统时,环境变量及其赋值可列表式给出。标准UNIX shell用户可直接使用标准语法。例如,标准shell用户可以用(以IBM SP AIX为例): export CC=xlc CPPFLAGS=-DNDEBUG CFLAGS=-O FC=f77 \\ FFLAGS=-O CXX=xlC F90=xlf90 F90FLAGS=-qsuffix=f=f90
在IBM AIX SP环境下,编译NetCDF所需要的一些相应的系统环境变量有: CC=/bin/xlc
CPPFLAGS=-DNDEBUG CFLAGS=-O FC=/bin/xlf FFLAGS=-O
F90=/bin/xlf90
F90FLAGS=-qsuffix=f=f90 # Note: no \ CXX=/bin/xlC CXXFLAGS=-O
文案大全
实用标准文档
因为有些机器的AIX系统在用F90编译器编译时,选用“-O”优化编译会产生错误信息为“1501-229 Compilation ended due to lack of space”的错误。通常是由于编译时优化消耗内存太多,以至于超出计算机内存。解决方法之一是用ulimit命令将数据段(data)、堆栈段(stack)以及内存段(memory)设置成足够大或者设置成无限制(unlimited)。另一种解决方法就是,在设置F90编译选项时,不要用“-O”优化选项。另外,如果要用64位模式编译程序,则除了在C和Fortran编译选项中添加“-q64”外,还要设置以下环境变量: ARFLAGS='-X 64 cru' NMFLAGS='-X 64'
2.3.4 编译和安装NetCDF
要生成编译netCDF所需的Makefile文件,必须先运行配置脚本程序(configure)。 它存放在netCDF目录的src子目录中。
首先,选择安装的目录。用这个目录作为配置脚本程序参数“――prefix=”的指定值。程序默认的安装目录(prefix参数值)是“. .”,即将程序包安装在 . . /bin,. ./lib和. ./man,这些目录是相对于netCDF的src/目录。 执行设置脚本格式如下:
./configure --prefix=目录名
这里“- - prefix = . . .”是可选的;如果省略的话,程序将默认地将当前目录的父目录“. . ”设为安装目录。
运行配置脚本程序时,程序会检测系统的与编译netCDF程序包相关的属性设置。检测结果将会显示在标准输出设备上(如显示器)。 配置脚本程序还会创建一个记录文件“config.log”。它包含了配置脚本程序检测系统属性设置时发现的错误信息。由于系统检测可能会导致一些错误,因此在记录文件中可能会记录一些错误信息。这些错误信息未必表明是有问题(严重的错误标志会导致下一步编译“make”程序失败)。不过,记录文件中的编译器不能启动的错误信息例外,这是一个编译环境的严重错误,必须改正,否则不会产生相应编译环境的程序接口。 运行编译命令“make”。此命令将创建一个或多个netCDF库。它包括基本的netCDF库“libsrc/libnetcdf.a”。如果系统有Fortran 77或者Fortran 90编译器,那么Fortran接口程序会包含在此库中。如果系统有C++编译器,那么C++接口程序会创建在库“cxx/libnetcdf_c++.a”中。命令创建的库还包括netCDF应用程序库ncgen和ncdump。
如果第一步的编译通过,则可以用命令“make test”来检验netCDF库和可执行程序创建得正确与否。系统会建立和运行各种测试C、Fortran和C++的程序,以及应用程序“ncdump”和“ncgen”。以“***”开头的输出显示行中,列出了测试成功与否的信息。任何错误都会明确列出,并终止程序的运行。测试过程中的编译器和连接器警告会被忽略掉。
如果编译和测试都正确,这时就可以安装程序库和可执行程序了。安装时,运行命令“make install”即可,它将连接系统的函数库和应用程序,安装到指定的目录中。
在进行编译安装的时候,可以编写一个shell脚本程序。这样,在安装的时候,只需执行这个批处理命令就行。这里给出一个在AIX系统上编译安装的例子,
文案大全
实用标准文档
比如取名为install.nc: make distclean
export CC='/usr/bin/xlc' export CPPFLAGS=-DNDEBUG export CFLAGS=-O
export FC='/usr/bin/xlf90 ' export FFLAGS='-O3 -qfixed '
export F90FLAGS='-O3 -qfree -qsuffix=f=f90' export F90='/usr/bin/xlf90 ' export CXX='/usr/bin/xlC' export CXXFLAGS=-O
configure --prefix=/u/wrf_xp/netcdf make
make test make install
2.3.5 问题处理
(1) 详细阅读本安装文档。
(2) 转到netCDF的顶级目录下的源程序目录SRC。 (3) 执行命令“make distclean”,即使执行失败也不会造成什么错误。 (4) 如果存在“config.cache”文件,则将它删除。 (5) 按上面描述的方法设置相应的环境变量。 (6) 重新执行配置脚本程序。 (7) 执行命令“make”。 (8) 执行命令“make test”。 (9) 执行命令“make install”。
值得注意的是,设置和编译系统应该具有较新的“sh”shell、“make”程序以及C和Fortran编译器。在曙光机器上,就存在Fortran90编译器版本比较陈旧,不能编译后缀名为“.F90”的程序,导致运行配置脚本时,无法通过对Fortran90编译器的检测,故不能生成Fortran90程序接口。
2.4 标准初始化(SI)的安装
2.4.1 文件和资料的获取
标准初始化是WRF模式的数据前处理部分,也是WRF模式的三维变分系统建立使用之前为WRF模式提供初/边值的部分。SI主要的具有两大功能: (1) 模式区域的定义和创建
在这里,用户可以定义计算区域(投影参数,范围大小,区域位置等)。根据这些定义设置,SI的“gridgen_model.exe”程序会产生一个名为“static”的文件。它是NetCDF格式的文件,包含模式格点定义信息和一些静态数据场(如地形、土地利用、土壤类型、月叶面积指数、经度和纬度等)。 (2) 将数据插值到WRF模式的计算格点(包括水平方向和垂直方向)上,为WRF模式提供初始场和边界条件。
这项功能是由“hinterp.exe”和“vinterp.exe”程序来完成。另外,
文案大全
实用标准文档
“gribprep.exe”程序是将标准的GRIB码格式的数据文件转换成“hinterp.exe”程序能识别的格式。也可以不用“gribprep.exe”程序,而是直接将其他数据格式的数据写成“hinterp.exe”所能识别的格式即可。 安装之前,首先需从WRF模式的提供网站(http://www.wrf-model.org)下载标准初始化(SI)的压缩程序包WRFSI.TAR.gz、AVN模式的试验数据AVN.TAR以及模式所需的静态数据(如地形、土地利用类型、土壤温度等): WRFSI.TAR.gz AVN.TAR
greenfrac_10m.tar.gz - 10分的植被指数数据 pctland_10m.tar.gz - 10分的土地利用数据
soiltemp_1deg.tar.gz - 1度的全球深层土壤温度数据 topo_10m.tar.gz - 10分的地形数据
另外,还应该下载如下四个文件夹及其其中的数据文件:
- landuse_30s/ USGS 24-category landuse fractions - soiltype_bot_30s/ WMO/FAO 16-category 2-layer soil types - soiltype_top_30s/ - topo_30s/
解压这些文件后,应该得到八个目录: greenfrac_10m/ pctland_10m/ topo_10m/
soiltemp_1deg/ landuse_30s/
soiltype_bot_30s/ soiltype_top_30s/ topo_30s/
解压后的各目录中所得到的数据文件大多数都是10°×10°的数据块文件。用户大约需要1.8Gb的磁盘空间来存储这些数据。其目录在WRF SI的参数配置文件中需要做相应的设定。
2.4.2 安装环境
编译时,要求系统装有Perl(5.003以上的版本)和make(3.75以上的版本)。由于WRF SI模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C(或C++)编译器。SI的数据格式采用了NetCDF的格式,要求系统安装了NetCDF函数库。
2.4.3 SI的目录结构
在进行编译和运行SI前,有必要先熟悉SI的目录结构。在SI的编译和运行当中,有四个“顶级”路径环境变量。这里“顶级”的意思是指每一个路径都是一个总的路径,在其下面,编译和运行时可能会创建许多子目录。从这个意义上来说,这四个目录分别相当于他们的子目录的顶级目录。这四个“顶级”目录分别为:
(1) SRCROOT
文案大全
相关推荐: