VieVS(Vienna VLBI and Satellite Software),是由维也纳工业大学大地测量与地理信息系开发及维护的VLBI分析程序库,RADIATE是一款基于该程序库的独立软件。该软件使用Fortran90编写,在Linux平台运行,交互方式为命令行(终端)操作,其功能为通过ray-tracing重建大地测量中的对流层延迟,其计算基于数值天气模型(NWM)输出文件包含ZTD/ZHD/ZWD/AH/AW等若干对流层参数。
RADIATE使用GPLv3.0版权协议,允许用户修改、分配、私人用途、商业用途及专利使用,仅要求源码使用者同样继承GPLv3.0协议,不对使用结果做任何保证。
Modules
软件一共10个模块54个子程序,代码总行数10,000+,以下为各个模块的功能以及对应的子程序:
| 模块 | 功能 | 子程序 | 个数 |
|---|---|---|---|
| 1 | 程序启动,定义主设置并识别用户定义的设置 | RADIATE_Fortran_start | 1 |
| 2 | 主程序,协调和执行工作流 | RayTrace_main_global | 1 |
| 3 | 数据加载及预处理 | import_station_data create_session_index_and_epologs_single create_session_index_and_epologs_dual load_session_index load_epologs get_observing_stations get_coord_observing_stations |
7 |
| 4 | 气象数据的加载、处理和垂直插值 | get_meteo_undulation_refr_glob get_gribdata_gribex get_gribdata_txt get_global_undulation profilewise_refrHD_ECMWFmin gridwise_refrHD_ECMWFmin standard_atm gph2horth calc_refr_ind_at_stations |
9 |
| 5 | 射线追踪和延迟计算 | get_RayTrace2D_pwl_global get_RayTrace2D_ref_pwl_global get_RayTrace2D_Thayer_global R_earth_euler R_earth_gaussian determine_lat_lon adapt_lat_lon_to_interval get_ref_pwl_delay get_ref_pwl_delay_zenith |
9 |
| 6 | 延时的时间插值 | combine_and_sort_rd time_interpolation lagrange_int |
3 |
| 7 | 创建输出 | create_radiate_global get_unique_stations_with_coord create_trp_global ell2xyz create_errorlog |
5 |
| 8 | 辅助工具子程序 | get_elapsed_time upper mjd2date date2mjd qsort msort meshgrid2D test_start_values_and_global_coverage mean_total2D get_bilint_value determine_grid_points bilinear_interpolation resize_errorlog |
13 |
| 9 | 结构体、派生类型和全局变量 | module_type_definitions module_date_type_definition module_sort_type_definitions module_global_var |
4 |
| 10 | 常量 | module_constants module_meteo_constants |
2 |
-
constants: 程序中用到的各种常量
item 中文 abbr value unit normal gravity 正常重力 gn 9.80665 [m/s^2] equatorial axis of WGS84 reference ellipsoid WGS84椭球长半轴 a_WGS84 6378137.0 [m] polar axis of WGS84 reference ellipsoid WGS84椭球短半轴 b_WGS84 6356752.3142 [m] constant for speed of light 光速 c 299792458 [m/s] temperature scale offset for transformation from [°C] to [K] 摄氏温度与开耳文温度转换常数 C2K 273.15 - -
meteo_constants: 气象常量
item 中文 abbr value unit universal gas constant 通用气体常数 R 8314.510 [kgm^2/(kmolKs^2)] = [J/(kmolK)]
Install
首先需要在本地创建目录,然后将软件克隆到新目录:
$ mkdir RADIATE
$ cd RADIATE
$ git clone https://github.com/TUW-VieVS/RADIATE.git
克隆过后需要对程序进行编译,软件提供了批处理编译shell脚本,如下执行脚本,生成可执行文件radiate
$ ./compile_RADIATE.sh
Data
-
NWM数据文件:必须是1°x1°水平分辨率和25级垂直分辨率,范围为全球,放入./DATA/GRIB文件夹下。
- 注册ECMWF账号,根据选择数据类别,下载grib文件;
- 安装ecCodes软件,使用其内部工具grib_filter将grib文件转换为要求的文本格式。
-
Azel文件:ray-tracing观测规范文件,放入./DATA/AZEL文件夹下。
*具体文件格式见”文件格式”
Running
$ ./radiate <azel_yyyymmddhh_UNI.txt> <site.ell> <-para1> <-para2> ... <-paran>
./radiate为运行命令,紧随其后的为一组输入参数,前两个参数是必须的,其余参数为可选参数。
-
必要参数
azel_yyyymmddhh_UNI.txt为azel文件名;-
site.ell为相应站点坐标文件名,在软件的./DATA/STATIONS文件夹下给出了以下选择:vlbi.ell:包含所有VLBI测站的椭球坐标(约240个)slr.ell:包含所有SLR测站的椭球坐标(约170个)gnss.ell:包含所有GNSS测站的椭球坐标(约460个)doris.ell:包含所有DORIS测站的椭球坐标(约200个)gridpoint_coord_5x5.txt:包含全局5°x5°网格的所有网格点的椭球坐标(2592个)gridpoint_coord_1x1.txt:包含全局1°x1°网格的所有网格点的椭球坐标(64800个)
-
可选参数
- 气象数据垂直插值的方法
-profilewise:(默认)-gridwise
- 射线追踪方法(定义交叉点和延迟的方法)
-pwl:分段线性射线追踪方法(默认)-ref_pwl:改进的分段线性射线追踪方法-Thayer:Thayer射线追踪方法
- 观测波长(在微波或光学技术的光线追踪之间进行选择)
-microwave:微波波段(默认)-optical:光学波段(实现波长:532nm)
- 时间插值方法(将观测值分配给时期的模式)
-one_epoch_per_obs:每个观察仅分配给最接近观察的grib-file时期-two_epochs_per_obs:(默认)每个观察被分配给两个周围的grib-file时期,并从它们进行线性插值
- 指定是否应创建.trp文件并将其保存到RESULTS /以及标准生成的.radiate文件
-trp:创建(默认)-notrp:不创建
- 指定是否将错误日志保存到DATA / ERROR_LOG
-errorlog:记录(默认)-noerrorlog:不记录
- 指定生成的会话索引和epolog文件是否应在最后清除
-cleanup:清除(默认)-nocleanup:保留
- 指定会话的评估方式
-readAzel:(默认)-createUniAzel
- 气象数据垂直插值的方法
Formats
-
NWM
软件要求输入的NWM信息要求严格遵循特定文本格式,NWM的分辨率在水平方向上必须是1°x1°,在垂直方向上必须是25个压力水平,数据内容包括位势高度Z[m],比湿Q和温度T[K]。
- 标题行:
181 360:纬度个数,经度个数90.0000000 -90.0000000:纬度范围0.00000000 359.000000:经度范围1.00000000 1.00000000:经度间隔,纬度间隔25:压力等级数- 以[hPa]为单位的压力水平列表,从顶部压力水平开始到底部压力水平结束
3:参数个数yyyy mm dd hh mm ss ii:NWM的日期; ii表示预测步骤,但它可以包含任何数字
- 数据行:
总共75行,每个值的格式为:值(压力等级,纬度,经度),压力等级1为最高压力等级(在大多数情况下为1 hPa)。
-
Azel
Azel文件包含要进行光线跟踪的观察的所有规范。根据可选的输入参数,azel文件必须手动创建,或者自动(和内部)计算。
- 如果设置了可选的输入参数
-readAzel(默认也设置),则光线跟踪器需要将相应的azel文件存储在“DATA / AZEL /”中。azel文件的每一行都指定一个观察点,从而产生一个光线跟踪延迟。Azel文件必须包含以下列:- scannumber(也可以设置为任意数字)
- 修正儒略日(包括小数位)
- 年
- 年积日
- 时
- 分
- 秒
- 站名
- 方位角[rad]
- 海拔[rad]
- 来源(VLBI类星体或GNSS卫星;也可以设置为’无’)
- 现场温度[°C](如果不可用,也可以设置为NaN)
- 现场压力[hPa](如果不可用,也可以设置为NaN)
- 现场水汽压[hPa](如果不可用,也可设置为NaN)
- 如果设置了可选的输入参数
-createUniAzel,则不需要手动创建azel文件。相反,azel文件由RADIATE在内部创建(不将它们写入任何位置),遵循DATA / INPUT / AZEL_spec.txt中的规范。AZEL_spec.txt 的语法在其标题中描述。为了创建AZEL_list.txt含有亚悉文件名的列表是光线跟踪,这是基于在指定的日期信息AZEL_spec.txt,shell脚本FUN_ADD / create_AZEL_list.sh必须被执行。如前所述,用户很可能不需要此选项。
- 如果设置了可选的输入参数
References
[1] Hofmeister A (2016) Determination of path delays in the atmosphere for geodetic VLBI by means of ray-tracing. Ph.D. thesis, Department of Geodesy and Geophysics, Faculty of Mathematics and Geoinformation, Technische Universität Wien.http://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-3444
[2] Hofmeister A, Böhm J (2017) Application of ray-traced tropospheric slant delays to geodetic VLBI analysis. J Geod. doi:10.1007/s00190-017-1000-7
[3] Zus F, Dick G, Dousa J, Heise S, Wickert J (2014) The rapid and precise computation of GPS slant total delays and mapping factors utilizing a numerical weather model. Radio Sci 49:207–216. doi:10.1002/2013RS005280
[4] Zus F, Dick G, Dousa J, Wickert J (2015) Systematic errors of mapping functions which are based on the VMF1 concept. GPS Solut 19:277. doi:10.1007/s10291-014-0386-4
(详情见维也纳工业大学数学与地球信息学院大地测量与地理信息系Hofmeister的博士论文.http://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-3444, 2016)
grib_filter:https://confluence.ecmwf.int/display/ECC/grib_filter