1ARGO资料实时模式质量控制技术报告编制:刘增宏童明荣孙朝辉国家海洋局第二海洋研究所国家海洋局动力过程与卫星海洋学重点实验室ARGO大型科学观测试验项目组2003年11月杭州2一、介绍ARGO资料实时模式质量控制系统是一套在UNIX/Linux操作平台上运行的专门用于接收和处理ARGO剖面浮标资料的处理软件包。该系统中大部分程序由美国大西洋海洋与大气实验室(AOML)提供,具体说明可以查看,所有程序使用C/C++、FORTRAN、PERL及SHELL(bash)语言编写。所以,在使用该系统前,必须先熟悉Linux操作系统的一些常用命令。二、系统的安装1、所需软件GMT和NetCDF:GMT(TheGenericMappingTools)是一个绘图软件,可以从下载;NetCDF是读、写NetCDF格式文件的软件,下载地址为。(注:可以从GMT网站上同时下载并安装GMT和NetCDF。)质量控制程序:由美国大西洋海洋与大气实验室(AOML)提供,主要用于数据接收、数据转换、数据质量控制和转换成NetCDF格式等。WOA01历史月平均温、盐度场:这是一个基于WOA2001水文数据库,并按浮标通常的采样深度插值得到的全球1°×1°温、盐度历史观测资料集,以便与实际观测结果比较。该数据库由12对数据文件组成,如grid_woa01_t_xxx.dat以及grid_woa01_s_xxx.dat,其中xxx代表月份(如,jan,feb...)。全球地形数据:tbase.txt,给出了分辨率为5’的全球地形数据,用于检测浮标是否位于海洋中。NCEP全球周平均海洋同化数据集:ocnYYMMDD.nc,其中YYMMDD代表年、月和日,下载地址为,每周可下载最新文件。T_mask_xy:全球海洋温度屏蔽文件。2、安装a)把WOA01历史月平均温、盐度场、全球地形数据和NCEP全球周平均海洋同化数据集以及t_mask_xy拷贝到/usr/local/database目录(可以选择其他目录)下。3b)把qc目录下所有文件和子目录拷贝到/home/liuzh目录(可以选择其他目录)下。c)各目录的说明:argolist:当天收到并处理的文件列表(进行实时质量控制时要用到);argoscripts:存放主要的shell脚本文件;argoslog:存放日志文件;argostmp:存放日志文件;cntfiles:存放由十六进制转换来的count文件;collect:存放自动收集argos信息的程序(APEX);collect1:存放自动收集argos信息的程序(APEX);collect2:存放自动收集argos信息的程序(PROVOR);(注:如果浮标数目较多时可以建立多个collect*(*可任取,仅作标识用)目录,因处理APEX浮标信息的方法和PROVOR有所不同,所以两类浮标应分开存放在不同目录。)donecnt:完成的count文件;donephy:完成的浮标物理文件;doneprv:完成处理的argos信息文件;floatid:存放浮标的编号和ID号(floatno_argoid_list);hexfiles:存放十六进制文件;metafiles:存放浮标表头文件;ncfiles:存放处理后的netCDF格式文件;phyfiles:存放未经质量控制的物理文件;programs:存放主要的程序;provor:处理PROVOR浮标的程序及shell脚本;prvfiles:存放接收到的argos信息文件;qcfiles:存放经质量控制后的文件;qclist:存放经质量控制后的文件列表;qclog:存放质量控制日志文件;qctemp:存放对温度质量控制后的文件。3、编写环境变量在利用实时质量控制程序处理ARGO剖面浮标资料时,首先需要把一些环境变量写入/root/.bash_profile文件中。如exportTOPO=/usr/local/database/tbase.txt,系统重新启动后,就4会把变量$TOPO指向/usr/local/database/tbase.txt。下面是一些处理浮标资料时需要使用的环境变量:exportTOPO=/usr/local/database/tbase.txtexportMASK_T=/usr/local/database/t_mask_xyexportCLIMATOLOGY_T=/usr/local/database/grid_woa01_texportCLIMATOLOGY_S=/usr/local/database/grid_woa01_sexportANALYSIS_FILE=/usr/local/database/ocnYYMMDD.ncexportDEBUG=yexportSENSOR=”TS”exportPRVFILES_DIR=/home/liuzh/qc/prvfilesexportHEXFILES_DIR=/home/liuzh/qc/hexfilesexportHEXPROVOR_DIR=/home/liuzh/qc/provor/hexfilesexportCNTFILES_DIR=/home/liuzh/qc/cntfilesexportCNTPROVOR_DIR=/home/liuzh/qc/provor/cntfilesexportMETAFILES_DIR=/home/liuzh/qc/metafilesexportMETAFILES_NC_DIR=/home/liuzh/qc/metafiles/meta_nc/exportPHYFILES_DIR=/home/liuzh/qc/phyfilesexportPHYPROVOR_DIR=/home/liuzh/qc/provor/phyfilesexportFAILED_PHYFILES_DIR=/home/liuzh/qc/phyfailedexportARGOSLOG_DIR=/home/liuzh/qc/argoslogexportARGOSLIST_SUCCESS_DIR=/home/liuzh/qc/listsuccessexportARGOSLIST_FAILURE_DIR=/home/liuzh/qc/listfailureexportFAILURE_META_DIR=/home/liuzh/qc/metafailureexportFAILURE_LIST_DIR=/home/liuzh/qc/failurelistexportARGOLIST_DIR=/home/liuzh/qc/argolistexportFAILURE_CNTFILES_DIR=/home/liuzh/qc/cntfailureexportARGOSPRG_DIR=/home/liuzh/qc/programsexportARGOSPRG_DIR1=/home/liuzh/qc/provor/programexportFLOATIDFILES_DIR=/home/liuzh/qc/floatidexportDONE_CNTFILES_DIR=/home/liuzh/qc/donecntexportDONE_PHYFILES_DIR=/home/liuzh/qc/donephy5exportDONE_PRVFILES_ARGO_DIR=/home/liuzh/qc/doneprvexportARGOSTMP_DIR=/home/liuzh/qc/argostmpexportARGOSSCRIPT_DIR=/home/liuzh/qc/argoscriptsexportARGOSSCRIPT_DIR1=/home/liuzh/qc/provor/scriptsexportEMAILFILES_DIR=/home/liuzh/qc/emailfilesexportNCFILES_DIR=/home/liuzh/qc/ncfilesexportNPROFILE=1exportSTDDEV_FACTOR_CLIMA=10exportSTDDEV_FACTOR_ANALYSIS=10exportresults_outfile=/home/liuzh/qc/argoslog/results_qcexporttrace_outfile=/home/liuzh/qc/argoslog/trace_qcexporterror_outfile=/home/liuzh/qc/argoslog/qc2netcdf_errorexportdebug_outfile=/home/liuzh/qc/argoslog/qc2netcdf_debugexportnclist_outfile=/home/liuzh/qc/argoslog/qc2netcdf_listexportnc_errorfile=/home/liuzh/qc/argoslog/meta2netcdf_errorexportnc_debugfile=/home/liuzh/qc/argoslog/meta2netcdf_debugexportnc_outfile=/home/liuzh/qc/argoslog/meta2netcdf_listexportTODAY=`date+‘%Y.%m.%d’`exportQCTMP_DIR=/home/liuzh/qc/qctempexportQCLOG_DIR=/home/liuzh/qc/qclogexportQCLIST_DIR=/home/liuzh/qc/qclistexportQCFILES_DIR=/home/liuzh/qc/qcfilesexportDONEOLD_CNTFILES_DIR=/home/liuzh/qc/oldcnt4、编译程序任何C/C++或FORTRAN语言编写的程序必须通过编译,得到可执行的程序才能运行。在LINUX中,编译C程序使用命令gcc–cyourroutine.c生成yourroutine.o目标文件,然后用gcc–oyourroutine.xyourroutine.o生成可执行文件yourroutine.x。如果程序中还包含子程序,则先编译子程序gcc–csubroutine.c,然后gcc–oyourroutine.xyourroutine.osubroutine.o生成可执行文件。如果程序中使用到库函数,则在编译的时候必须连接到该库函数的地址,如gcc–oyourroutine.xyourroutine.o/home/liuzh/gmt/netcdf-3.5.0/lib/libnetcdf.a。FORTRAN程6序的编译用编译器g77,命令与上面基本相同。运行shell脚本文件时,文件必须为可执行的,如meta2netcdf.bash,先用命令chmoda+xmeta2netcdf.bash使该文件为可执行,然后在当前命令提示符下键入./meta2netcdf.bash,就可以执行这个脚本文件。表1列出了ARGO实时数据处理系统中包含的全部程序。例:编译prv2hex.c,使用命令gcc–cymd2julday.c[Enter],gcc–cprv2hex.c[Enter],gcc–oprv2hex.xprv2hex.oymd2julday.o[Enter](注:prv2hex.c中调用子程序ymd2julday.c)。编译qc_t.f和qc_s.f时,已经把编译命令分别写到Shell脚本文件com_qc_t.sh和com_qc_s.sh中,故只需执行./com_qc_t.sh和./