X-STILT 模型函数详解-目录run_xstilt.r2. 脚本执行流程详解run_xstilt_tccon.r2. 脚本主要差异点分析run_sim_multi.r2. 脚本功能模块详解参考X-STILT 模型的下载安装教程可参考另一博客-【X-STILT模型第一期】X-STILT 模型概述。本博客详细解释 X-STILT 模型采用的主脚本。特性/维度run_xstilt.r(通用卫星版)run_xstilt_tccon.r(地面站点版)run_sim_multi.r(多组分模拟版)主要定位基础启动器用于卫星观测的轨迹与足迹计算。定制启动器专为地面 TCCON 站点设计的物理模拟。化学模拟器将物理轨迹与排放清单结合计算浓度。核心作用计算大气粒子运动路径 (Traj) 和地表贡献权重 (Footprint)。针对地面观测站修正太阳倾斜路径并计算高精度轨迹。计算N O 2 NO_2NO2​的化学衰减并结合多种清单模拟X C O 2 , X C O XCO_2, XCOXCO2​,XCO等浓度。观测源支持OCO-2/3, TROPOMI, 或理想受体 (Ideal Run)。TCCON(地面高光谱), EM27/SUN。综合 TROPOMI, OCO-3, TCCON 的观测进行后处理验证。空间释放特性垂直柱状释放 (0-3km)通常代表卫星观测路径。斜柱路径 (run_slant T)随太阳角度偏移。基于已有的轨迹数据进行格点化积分。化学处理不涉及仅考虑物理输送。不涉及仅考虑物理输送。核心功能计算N O x NO_xNOx​随时间的化学寿命和消减。排放清单集成仅作为参数传入如 ODIAC不进行复杂耦合。同左主要为后续模拟准备足迹。高度集成EDGARv6, EPA, ODIAC, Vulcan 等多种清单。典型分辨率0.1 度 (约 10km)。1/120 度 (约 1km)精度更高。取决于输入足迹的分辨率通常 1km - 10km。运行前提需要气象数据 (GFS/HRRR)。需要气象数据及站点观测坐标。必须先运行前两个脚本之一获取.rds轨迹文件。核心差异点解析物理 vs 化学run_xstilt.r和run_xstilt_tccon.r是“跑腿的”它们告诉模型空气块从哪里来经过了哪里。run_sim_multi.r是“算账的”它根据空气块路过的排放源“装载”污染物并考虑化学反应最后算出观测点应该看到多少浓度。垂直 vs 倾斜卫星脚本 (run_xstilt.r) 通常假设观测路径是垂直向上的柱子。TCCON 脚本 (run_xstilt_tccon.r) 考虑到地基仪器是“盯着太阳看”的所以模拟路径必须跟着太阳斜着走。建议的工作流建议在实际研究中通常需要按以下顺序配合使用第一步 (物理模拟)* 如果你研究卫星过境运行run_xstilt.r。如果你研究地面站数据运行run_xstilt_tccon.r。产出大量的轨迹文件 (*.rds)。第二步 (化学模拟)* 运行run_sim_multi.r。它会读取第一步产生的轨迹结合 EDGAR 或 ODIAC 排放清单。产出模拟的X C O 2 XCO_2XCO2​或N O 2 NO_2NO2​浓度值。第三步 (对比验证)* 将run_sim_multi.r算出的模拟值与卫星/地面站实际观测到的值进行对比评估排放清单的准确性或进行通量反演。一句话总结前两个脚本解决“空气怎么流”最后一个脚本解决“浓度怎么变”。run_xstilt.r作为X-STILTColumn-integrated Stochastic Time-Inverted Lagrangian Transport模型运行的“配置中心”和“启动器”。简单来说该脚本负责设置大气传输模型的所有参数如气象数据、观测卫星、模拟高度等并将这些参数打包传递给底层的 X-STILT 核心函数来执行模拟。以下是该脚本主要功能的详细分解1. 核心任务目标根据代码中的A、AA1、B等注释该脚本可以完成以下三类任务轨迹模拟 (Trajectories):计算大气粒子随时间向后运动的路径。足迹计算 (Footprints):计算地表排放对大气观测点受体浓度的贡献权重通常以 0.1 度为分辨率。X C O 2 XCO_2XCO2​模拟与误差分析:结合排放清单如 ODIAC计算二氧化碳浓度增加值或评估由于风场、混合层高度PBL或排放清单偏差导致的模拟误差。2. 脚本执行流程详解第一步环境初始化与依赖加载设置工作目录并加载 X-STILT 所需的库文件dependencies.r。读取 Google API Key用于通过地名自动获取经纬度坐标并绘图。第二步定义模拟站点与观测源站点选择:用户输入站点名称如城市名脚本通过 API 获取中心坐标。传感器选择 (obs_sensor):* 支持OCO-2/3和TROPOMI卫星数据。如果设置为NA则执行“理想模拟Ideal Run”即不依赖卫星观测而是读取用户提供的receptor_demo.csv文件中的受体坐标。时段选择 (timestr):确定模拟的具体日期和过境时间。第三步设置运行开关 (Flags)这是控制脚本行为的“仪表盘”run_trajec T: 是否生成粒子运动轨迹。run_foot T: 是否生成足迹文件。run_sim F: 是否基于现有足迹计算X C O 2 XCO_2XCO2​模拟值。run_hor_err / run_ver_err: 是否开启水平或垂直传输误差分析。第四步受体与气象参数配置柱状释放 (Column Release):针对卫星观测模拟从地面0m到 3000m 高度的垂直柱状空气。粒子数量:numpar 3000即在垂直柱内释放 3000 个随机粒子。气象数据 (met):支持加载 GFS、HRRR 或 WRF 气象驱动数据并会自动调用download.met.arl下载缺失的数据。第五步足迹与权重设置权重调节:设置是否使用平均核函数ak_wgt和压力权重pwf_wgt。这是卫星柱浓度模拟的关键用于匹配卫星传感器的垂直敏感度。空间范围:定义足迹计算的覆盖范围例如站点周围20 ∘ × 20 ∘ 20^\circ \times 20^\circ20∘×20∘。第六步并行计算与资源管理 (SLURM)脚本配置了SLURM并行计算参数节点数、核心数、内存。这是为了在高性能计算集群HPC上大规模运行成千上万个粒子的轨迹模拟以提高效率。3. 关键变量含义表变量名作用site模拟的研究站点名称如 ‘Los_Angeles’minagl / maxagl粒子释放的垂直高度范围0-3000米nhrs向后模拟的小时数-12 表示向后追溯 12 小时foot_res足迹的空间分辨率如 1/10 即 0.1 度odiac_path用于模拟 FFCO2化石燃料 CO2的排放清单路径namelist汇总所有参数的列表作为最终输入4. 总结如何使用此函数修改路径:需要根据服务器环境修改homedir和input_path。设置开关:根据是想跑“轨迹”还是跑“足迹”调整run_trajec和run_foot。运行:在 R 终端执行source(run_xstilt.r)。结果:脚本最终会调用config_xstilt(namelist)根据设置在指定的store_path生成.rds格式的轨迹文件、足迹网格图或X C O 2 XCO_2XCO2​模拟结果。该脚本实际上是把复杂的科学计算流程简化成了一个配置列表方便研究人员快速切换不同的研究案例Case Studies。run_xstilt_tccon.r这个脚本run_xstilt_tccon.r是专门为TCCON地面太阳直射高光谱观测网络站点量身定制的 X-STILT 运行脚本。与之前的通用版本相比它的核心逻辑从“卫星过境观测”转向了“地面站点连续观测”。以下是该脚本的详细功能解释1. 核心定位针对 TCCON 站点的定制模拟TCCON 是通过地面的光谱仪追踪太阳光来测量大气柱浓度的。因此这个脚本在地理定位、时间处理和物理计算上做了专门调整固定站点模拟:脚本直接硬编码了site Lamont位于美国俄克拉荷马州最著名的 TCCON 站点之一及其经纬度-97.486, 36.604。斜柱路径计算 (run_slant T):这是一个关键区别。由于 TCCON 是追踪太阳的观测路径是倾斜的随太阳高度角变化。开启此开关后模型会根据观测时的太阳位置修正空气块的释放位置。2. 脚本主要差异点分析A. 时间序列处理 (Time Distribution)不同于卫星一天只过境一次TCCON 在白天可以连续观测。脚本中有一段专门处理时间逻辑的代码if(grepl(TCCON,obs_sensor)){datesseq(as.POSIXct(2020-07-01 20:00:00,...),bymin)timestrunique(format(dates,...,format%Y%m%d%H))}作用:它创建了一个从 UTC 20:00 到 22:59 的时间序列并按小时%H提取timestr。这意味着它旨在模拟某一天内连续几个小时的大气传输情况。B. 输入/输出 (I/O) 路径观测数据源:指向 TCCON 的标准格式数据GGG2020版本。具体文件:指定了具体的.nc文件oc20110416_20221022.public.qc.nc这是 TCCON 的质量控制后公开发布的数据集。C. 高精度足迹设置foot_res 1/120: 空间分辨率被设定为约1公里1 / 120 1/1201/120度这比通用版的 0.1 度要精细得多。目的:这种高分辨率通常用于研究站点附近的局地排放源对地面观测的影响。D. 运行状态run_trajec T: 开启轨迹计算。run_foot F: 脚本中暂时关闭了足迹生成可能当前任务仅侧重于研究大气路径Trajectories。nhrs -1: 这里的向后模拟时间仅设为1小时。这通常用于分析非常近距离的局地贡献或者是作为测试运行。3. 计算资源配置 (Local vs. HPC)与之前的通用脚本不同这里的 SLURM 配置为关闭状态slurm Fn_nodes 1, n_cores 1这表明该脚本目前被配置为在本地工作站或单核上运行而不是提交到高性能计算集群的大规模作业。4. 关键参数总结表参数名设置值科学含义obs_sensorTCCON使用地面总碳柱观测网络数据obs_verGGG2020TCCON 最新的标准检索算法版本run_slantT开启斜柱修正考虑太阳高度角引起的路径偏移minagl / maxagl0 - 3000m模拟从地面到 3 公里高度的大气柱foot_res1/120极高分辨率足迹约 1km用于精细化研究stop()(存在)注意脚本在config_xstilt前加了stop()说明目前仅用于生成namelist检查参数不会实际执行模拟。5. 总结这个脚本是干什么的这个脚本是用于Lamont 站点 TCCON 观测的局地贡献分析。它通过模拟 2020 年 7 月 1 日 20:00-23:00 期间从地面到 3km 高度释放的 3000 个粒子在过去 1 小时内的运动轨迹并考虑了观测时的太阳倾斜路径。使用建议如果要实际开始计算需要注释掉代码最后的stop()函数并根据需要增加nhrs向后追溯小时数以获得更完整的大气来源信息。run_sim_multi.r这个脚本run_sim_multi.r是 X-STILT 体系中的多组分化学模拟器。如果说前两个脚本run_xstilt.r和run_xstilt_tccon.r主要负责大气物理过程空气粒子怎么跑、足迹长什么样那么这个脚本则是“化学与排放的合体器”。它的核心作用是将已经跑好的 STILT 轨迹Trajectories与各种排放清单结合最终计算出大气中几种关键污染物的浓度。1. 核心任务从“路径”到“浓度”该脚本的主要任务是模拟以下四种物质的浓度对流层N O 2 NO_2NO2​:涉及复杂的化学消减寿命计算。柱浓度C O COCO(X C O XCOXCO):示踪燃烧过程。柱浓度C O 2 CO_2CO2​(X C O 2 XCO_2XCO2​):温室气体模拟。柱浓度C H 4 CH_4CH4​(X C H 4 XCH_4XCH4​):甲烷模拟。关键点这个脚本不运行HYSPLIT 物理模型。它假设你已经运行了之前的脚本并生成了轨迹文件.rds它的工作是进行后处理模拟。2. 脚本功能模块详解A. 多源排放清单集成 (Emission Inventories)这是该脚本最强大的地方它集成了多种主流的排放数据源EDGAR v6:全球最常用的排放清单涵盖N O x , C O , C O 2 , C H 4 NO_x, CO, CO_2, CH_4NOx​,CO,CO2​,CH4​。EPA (AMPD):美国环保局的电厂连续监测数据针对点源。ODIAC / Vulcan:高分辨率的化石燃料C O 2 CO_2CO2​排放清单。Posterior Emissions:支持使用反演后的“后验”排放数据进行验证模拟。B.N O x NO_xNOx​化学动力学 (Chemistry)不同于C O 2 CO_2CO2​这种“长寿命”气体N O 2 NO_2NO2​在大气中会发生反应消失。脚本中ts_chem NAts_fn:脚本不使用固定的寿命而是调用了一个预设的N O x NO_xNOx​衰减曲线nox_curves。它会根据大气环境计算每一条轨迹在每一个时间点的N O x NO_xNOx​寿命。背景值 (bg_nox):自动从 TROPOMI 的辅助数据中提取背景浓度。C. 混合参数与扰动 (Mixing Perturbation)为了进行不确定性分析或为**协同反演EnKF**做准备mx_resmx_hr:定义了空间1km和时间1hr上的混合尺度模拟污染物在大气中的扩散。扰动开关 (perturb_*):可以选择性地对排放、混合过程或化学寿命进行随机扰动生成“集合模拟”来评估误差。3. 关键变量解释变量含义作用aq_invent气溶胶/化学清单设置N O x , C O NO_x, CONOx​,CO使用哪个排放源如 ‘edgar’ghg_invent温室气体清单设置C O 2 , C H 4 CO_2, CH_4CO2​,CH4​使用哪个排放源eno_sf / eco_sf缩放因子手动调整排放强度例如设为 1.2 表示排放增加 20%overwriteTF覆盖开关如果设为T会重新计算并覆盖已有的模拟结果slurm并行作业该脚本默认开启集群并行极大提高多污染物同时计算的速度4. 逻辑流程总结定位:设定站点如洛杉矶LosAngeles和时间点。配对:寻找该站点对应的 TROPOMI测N O 2 , C O NO_2, CONO2​,CO或 OCO-3测C O 2 CO_2CO2​卫星观测数据。化学处理:计算N O x NO_xNOx​随时间流逝的氧化速率。积分计算:模拟浓度 足迹 × 排放清单 × 化学衰减 背景浓度 \text{模拟浓度} \text{足迹} \times \text{排放清单} \times \text{化学衰减} \text{背景浓度}模拟浓度足迹×排放清单×化学衰减背景浓度并行输出:通过config_chemv2函数在超算集群上并行生成所有受体点的模拟结果。5. 为什么用这个脚本如果已经跑通了run_xstilt.r并拿到了物理轨迹那么run_sim_multi.r就是你的**“成果收割机”**。它能帮一次性把卫星看到的浓度通过模型“还原”出来从而对比模型模拟值与卫星观测值之间的差距进而评估排放清单是否准确。参考1、Github-X-STILT