沙尘传输模拟教程(基于wrf-chem)

沙尘传输模拟教程(基于wrf-chem)

文章目录

  • 沙尘传输模拟教程(基于wrf-chem)
    • 简介
      • 实验目的
      • wrf-chem简介
    • 软件准备
      • wps、wrf-chem安装
      • conda安装
      • ncl安装
      • ncap安装
    • 数据准备
      • 气象数据准备
      • 下垫面数据准备
    • WPS数据预处理
    • namelist.wps的设置
      • geogrid.exe下垫面处理
      • ungrib.exe气象数据预处理
      • metgrid.exe气象插值
    • WRF模型运行
      • 参数设置
      • 沙尘模式选择
      • real.exe生成气象场
    • wrf-chem进行沙尘侵蚀和传输模拟
    • 后处理与结果展示
      • 数据后处理
      • 结果图
    • 参考

简介

实验目的

本实验的目的是使用 WRF-Chem 模拟和分析地表(沙漠)区域产生的沙尘的侵蚀和传输过程。通过构建一个包含沙尘侵蚀图的 WRF 域domain,研究沙尘在大气中的输送和扩散情况。

我们的实验区域为中国黄河附近的沙漠,研究时间为2024年7月11日-7月16日,最后得到这段时间的沙尘侵蚀和传输情况。

wrf-chem简介

WRF(Weather Research and Forecasting Model)是一个用于大气研究和天气预报的数值模型。

WRF-Chem 是 WRF 模型的一个扩展版本,它集成了大气化学和气溶胶过程的模拟功能。WRF-Chem可用于:

  • 化学过程模拟:包括气态污染物、气溶胶和化学反应。
  • 气溶胶过程:模拟气溶胶的生成、增长、凝结、沉降和输送。
  • 污染物传输:模拟污染物在大气中的水平和垂直输送过程。
  • 反馈机制:化学成分和气溶胶对气象过程的反馈,如辐射和云微物理过程。

软件准备

wps、wrf-chem安装

本教程这是官方例子(https://ruc.noaa.gov/wrf/wrf-chem/tutorialexercises.htm)的扩充,我们使用官方推荐的wrf 3.9和wps 3.9版本,熟悉这个过程后,可以切换为WRF V4版本。

前往网站:https://www2.mmm.ucar.edu/wrf/users/download/get_sources.html下载。

参考网站:https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php

按照网站给出的8个步骤,依次进行测试、安装好netcdf、mpich等包,最后再安装wps和wrf。

安装注意事项:

(1)WPS安装

安装wps3.9版本在configure后,会有一个configure.wps文件,需要手动修改WRF_DIR参数,改为wrf安装目录的相对路径

(2)wrf-chem安装

安装wrf时,打开bashrc设置安装过程中编译wrf-chem(wrf默认是不安装的,需要手动开启)

#先打开环境变量
vim ~/.bashrc

然后在环境变量中添加以下参数,开启wrf-chem:

# 启用WRF-Chem
export WRF_EM_CORE=1
export EM_CORE=1
export NMM_CORE=0
export WRF_CHEM=1
export EM_CORE=1

这样wrf安装完毕后wrf-chem也同时编译完成了。

conda安装

在Linux系统中安装conda,前往网站:https://docs.anaconda.com/miniconda/ 下载miniconda,

安装过程参考官网,可以选择离线和在线两种安装方式,安装完成后,新建一个环境:

conda create -n nco_ncl_env
conda activate nco_ncl_env

设置频道优先级,优先使用 conda-forge 提供的包:

conda config --add channels conda-forge
conda config --set channel_priority strict

ncl安装

NCL(The NCAR Command Language)是由美国国家大气研究中心(NCAR)开发的一种专门用于气象数据展示的一门语言。有多种方式可以安装,我们选择最方便的conda进行安装。

conda install -c conda-forge ncl

ncap安装

我们后面还需要用到ncap处理wrfout数据(把不同颗粒大小的沙尘汇总)。

ncap 是 NCO (NetCDF Operators) 工具包中的一个命令行工具,用于处理 NetCDF 文件中的变量及其数据。这里我们依然可以偷懒,使用conda快速安装。

conda install -c conda-forge nco

数据准备

气象数据准备

前往FNL数据的官网:https://rda.ucar.edu/datasets/ds083.2/,选择Complete File List全气象要素(包含70多种气象要素)。

选择时间下载气象数据:

这里我下载了2024.07.11到2024.07.16的气象数据,请按照你的时间要求下载。

下垫面数据准备

前往网站:https://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog_V3.html,下载wrf v3的下垫面数据:

这个下垫面数据包含有全球的地表特征,包括地形高度、土地利用、土壤类型、植被指数、水体覆盖和地表反照率等,也有我们这次实验需要模拟的沙尘侵蚀erodibility数据。下垫面数据大概是3G,解压后大概是20个G。

WPS数据预处理

namelist.wps的设置

可以根据自己的区域和时间段进行调整,下面是我的设置:

&sharewrf_core = 'ARW',max_dom = 1,start_date = '2024-07-11_00:00:00',end_date   = '2024-07-16_00:00:00',interval_seconds = 21600io_form_geogrid = 2,
/&geogridparent_id         =   1,  parent_grid_ratio =   1,  i_parent_start    =   1,  j_parent_start    =   1,  e_we              =  41, e_sn              =  41,  dx = 100000,dy = 100000,map_proj = 'lambert',ref_lat   =  38.00,ref_lon   =  104.00,truelat1  =  35.0,truelat2  =  45.0,stand_lon =  104.0,geog_data_path = '/WRF3_GEOG/geog'
/&ungribout_format = 'WPS',prefix = 'FILE',
/&metgridfg_name = 'FILE'io_form_metgrid = 2, 
/

geogrid.exe下垫面处理

cd geogridln -svf GEOGRID.TBL.ARW_CHEM GEOGRID.TBLcd .../geogrid.exe

文件夹中会多一个geo_em.d0*.nc 的文件,这个包含了研究区域的下垫面数据,

ungrib.exe气象数据预处理

使用ungrib.exe处理数据:

metgrid.exe气象插值

WRF模型运行

参数设置

namelist的具体参数可以参考官方说明,由于太多,这里不做说明,可查看官方网站的说明:https://www2.mmm.ucar.edu/wrf/users/namelist_best_prac_wrf.html

&time_controlrun_days                            = 2,run_hours                           = 0,run_minutes                         = 0,run_seconds                         = 0,start_year                          = 2024,start_month                         = 07,start_day                           = 13,start_hour                          = 00,start_minute                        = 00,start_second                        = 00,end_year                            = 2024,end_month                           = 07,end_day                             = 15,end_hour                            = 00,end_minute                          = 00,end_second                          = 00,interval_seconds                    = 21600,input_from_file                     = .true.,history_interval                    = 60,frames_per_outfile                  = 72,restart                             = .false.,restart_interval                    =    0,io_form_history                     = 2,io_form_restart                     = 2,io_form_input                       = 2,io_form_boundary                    = 2,auxinput6_inname                    = 'wrfbiochemi_d01',auxinput7_inname                    = 'wrffirechemi_d<domain>',auxinput8_inname                    = 'wrfchemi_gocart_bg_d<domain>',auxinput12_inname                   = 'wrf_chem_input',auxinput5_interval_m                = 86400,auxinput7_interval_m                = 86400,auxinput8_interval_m                = 86400,io_form_auxinput2                   = 2,io_form_auxinput5                   = 0,io_form_auxinput6                   = 0,io_form_auxinput7                   = 0,io_form_auxinput8                   = 0,io_form_auxinput12                  = 0,debug_level                         = 0,auxinput1_inname                    = "met_em.d<domain>.<date>",
/auxinput13_inname                   = 'wrfchemv_d<domain>',auxinput13_interval_m               = 86400,io_form_auxinput13                  = 0,&dfi_control
/&domainstime_step                           = 600,time_step_fract_num                 = 0,time_step_fract_den                 = 1,max_dom                             = 1,s_we                                =   1,e_we                                = 41,s_sn                                =   1,e_sn                                = 41,e_vert                              = 31,num_metgrid_levels                  = 42,num_metgrid_soil_levels             = 4,dx                                  = 100000,dy                                  = 100000,grid_id                             = 1,parent_id                           = 0,i_parent_start                      = 1,j_parent_start                      = 1,parent_grid_ratio                   = 1,parent_time_step_ratio              = 1,p_top_requested                     = 5000,feedback                            = 1,smooth_option                       = 0,p_top_requested                     = 5000,zap_close_levels                    = 50,interp_type                         = 1,t_extrap_type                       = 2,force_sfc_in_vinterp                = 0,use_levels_below_ground             = .true.,use_surface                         = .true.,lagrange_order                      = 1,/sfcp_to_sfcp                        = .true.,&physicsnum_land_cat                        = 21,mp_physics                          = 4,progn                               = 0,ra_lw_physics                       = 1,ra_sw_physics                       = 2,radt                                = 30,sf_sfclay_physics                   = 1,sf_surface_physics                  = 2,bl_pbl_physics                      = 1,bldt                                = 0,cu_physics                          = 5,cu_diag                             = 1,cudt                                = 0,ishallow                            = 0,isfflx                              = 1,ifsnow                              = 1,icloud                              = 1,surface_input_source                = 1,num_soil_layers                     = 4,sf_urban_physics                    = 0,mp_zero_out                         = 2,mp_zero_out_thresh                  = 1.e-12,maxiens                             = 1,maxens                              = 3,maxens2                             = 3,maxens3                             = 16,ensdim                              = 144,cu_rad_feedback                     = .true.,/&fdda/&dynamicsrk_ord                              = 3,w_damping                           = 1,diff_opt                            = 1,km_opt                              = 4,diff_6th_opt                        = 0,diff_6th_factor                     = 0.12,base_temp                           = 290.damp_opt                            = 0,zdamp                               = 5000.,dampcoef                            = 0.01,khdif                               = 0,kvdif                               = 0,non_hydrostatic                     = .true.,moist_adv_opt                       = 2,scalar_adv_opt                      = 2,chem_adv_opt                        = 2,tke_adv_opt                         = 2,time_step_sound                     = 4,h_mom_adv_order                     = 5,v_mom_adv_order                     = 3,h_sca_adv_order                     = 5,v_sca_adv_order                     = 3,/&bdy_controlspec_bdy_width                      = 5,spec_zone                           = 1,relax_zone                          = 4,specified                           = .true.,nested                              = .false.,/&grib2/&namelist_quiltnio_tasks_per_group = 0,nio_groups = 1,/&chemkemit                               = 1,chem_opt                            = 401,bioemdt                             = 0,photdt                              = 0,chemdt                              = 10,io_style_emissions                  = 0,emiss_opt                           = 3,emiss_opt_vol                       = 0,emiss_ash_hgt                       = 20000.,chem_in_opt                         = 0,phot_opt                            = 0,gas_drydep_opt                      = 0,aer_drydep_opt                      = 1,bio_emiss_opt                       = 0,ne_area                             = 0,dust_opt                            = 1,dmsemis_opt                         = 0,seas_opt                            = 0,depo_fact                           = 0.25,gas_bc_opt                          = 0,gas_ic_opt                          = 0,aer_bc_opt                          = 1,aer_ic_opt                          = 1,gaschem_onoff                       = 0,aerchem_onoff                       = 1,wetscav_onoff                       = 0,cldchem_onoff                       = 0,vertmix_onoff                       = 1,chem_conv_tr                        = 0,conv_tr_wetscav                     = 0,conv_tr_aqchem                      = 0,biomass_burn_opt                    = 0,plumerisefire_frq                   = 30,have_bcs_chem                       = .false.,aer_ra_feedback                     = 0,aer_op_opt                          = 0,opt_pars_out                        = 0,diagnostic_chem                     = 0,/

沙尘模式选择

也可以试试其他沙尘传输模型,在namelist.input中修改,这里我选择的是dust_opt=1:

  1. GOCART 沙尘方案(dust_opt=1)
    • 使用 GOCART(Goddard Chemistry Aerosol Radiation and Transport)沙尘排放方案。
  2. AFWA 沙尘方案(dust_opt=3)
    • 使用 AFWA(Air Force Weather Agency)沙尘排放方案。
  3. UoC 沙尘方案(dust_opt=4)
    • 使用 UoC(University of Cologne)沙尘排放方案。

real.exe生成气象场

使用命令:

#使用mpich并行运行,并用nohup后台运行
nohup mpirun -np 8 ./real.exe >&realexe.log &
#或者直接run
./real.exe#查看进度
tail -f rsl.out.0000

如果计算量比较大,可以用sbatch提交到超算平台进行计算。

wrf-chem进行沙尘侵蚀和传输模拟

mpirun -np 8 ./wrf.exe
#wrf.exe也可以用sbatch提交作业到超算平台上
tail rsl.out.0000

运行完成。

后处理与结果展示

数据后处理

我们模拟的,不同大小的沙尘相加:

使用ncap2进行汇总:

ncap2 -v -s "total_dust=DUST_1+DUST_2+DUST_3+DUST_4+DUST_5" wrfout_d01_2024-07-13_00:00:00 dust1_all.nc

结果图

我们可以用ncl直接出图,也可以下载到本地用panoply查看。

(1)地中海区域的沙尘传输浓度图(2010年某时刻)

(1)部分中国区域的沙尘浓度分布情况(2024年7月某时刻)

自此,实验完毕

(由于我还在入门,难免有不周到之处,后续还会继续更新这方面的教程)。

参考

官方实验地址:https://ruc.noaa.gov/wrf/wrf-chem/tutorialexercises.htm

WRF/WPS V3版本:https://www2.mmm.ucar.edu/wrf/users/download/get_sources.html

WRF安装指南:https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php

WPS的namelist制作与出图:https://zhuanlan.zhihu.com/p/705431890

下垫面数据:https://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog_V3.html

conda下载地址:https://docs.anaconda.com/miniconda/

NCL出图:https://www.ncl.ucar.edu/Download/

namelist.wps的设置:https://www2.mmm.ucar.edu/wrf/users/namelist_best_prac_wps.html

namelist.input的设置:https://www2.mmm.ucar.edu/wrf/users/namelist_best_prac_wrf.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3247616.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

AI、ML、DL 和 DS 之间的区别

人工智能 数据分析 数据科学 深度学习 机器学习 神经网络 在本文中&#xff0c;我们将了解 AI&#xff08;人工智能&#xff09;、ML&#xff08;机器学习&#xff09;、DL&#xff08;深度学习&#xff09;和 DS&#xff08;数据科学&#xff09;之间的区别。这些术语经常互换…

K8S 上部署 Emqx

文章目录 安装方式一&#xff1a;快速部署安装方式二&#xff1a;定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 Pod3. 使用 Services 公开 EMQX Broker Pod 服务4. 通过 kubernetes 自动集群 EMQX MQTT 服务器5. 修改 EMQX Broker 的配置6. 赋予 Pod 访…

第11章 规划过程组(11.5规划资源管理)

第11章 规划过程组&#xff08;四&#xff09;11.4规划质量管理&#xff0c;11.5规划资源管理在第三版教材第414~419页&#xff1b; 图片文字音频方式 视频38 第一个知识点&#xff1a;主要输出 1、质量管理计划 描述如何实施适用的政策、程序和指南以实现质量目标&#xff…

【Socket套接字编程】(实现TCP和UDP的通信)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

数据分析01——系统认识数据分析

1.数据分析的全貌 1.1观测 1.1.1 观察 &#xff08;1&#xff09;采集数据 a.采集数据&#xff1a;解析系统日志 当你在看视频的时候———就会产生日志———解析日志———得到数据 b.采集数据&#xff1a;埋点获取新数据&#xff08;自定义记录新的信息&#xff09; 日志…

数据建模标准-关系建模

数据模型定义&#xff1a;DAMA数据治理体系中将数据模型定义为一种文档形式&#xff0c;数据模型是用来将数据需求从业务传递到IT,以及在IT内部从分析师、建模师和架构师到数据库设计人员和开发人员的主要媒介&#xff1b; 作用&#xff1a;记录数据需求和建模过程中产生的数据…

应用最优化方法及MATLAB实现——第4章代码实现

一、概述 之前对这本书的第三章进行了代码实现&#xff0c;这篇博客是对这本书第4章相关代码进行实现&#xff0c;部分内容安装书中代码无法实现相应功能&#xff0c;MATLAB会报错&#xff0c;对其进行一定程度的更改后&#xff0c;可以正常运行&#xff0c;与书中所给示例运行…

亲测--linux下安装ffmpeg最新版本---详细教程

下载地址 Download FFmpeg 下载最新的https://ffmpeg.org/releases/ffmpeg-7.0.1.tar.xz 上传到服务器 解压 tar xvf ffmpeg-7.0.1.tar.xz 编译 cd ffmpeg-7.0.1 ./configure --prefix=/usr/local/ffmpeg make && make install 报错: 解决:在后面加 跳过检测…

Template_C++

C模板 C提供了function template. function template&#xff1a;实际上是建立一个通用函数&#xff0c;其函数类型和形参类型不具体制定&#xff0c;用一个虚拟的类型来代表。这个通用的函数就称为函数模版。 是不是可以这样理解&#xff0c;函数模版就是给了一种功能&…

线程的中断和同步问题

1、自动终断【完成】&#xff1a;一个线程完成执行后&#xff08;即run方法执行完毕&#xff09;&#xff0c;不能再次运行 。 2、手动中断&#xff1a; stop( ) —— 已过时&#xff0c;基本不用。&#xff08;不安全&#xff0c;就像是突然停电&#xff09; interrupt( ) …

从0到1搭建数据中台(4):neo4j初识及安装使用

在数据中台中&#xff0c;neo4j作为图数据库&#xff0c;可以用于数据血缘关系的存储 图数据库的其他用于主要用于知识图谱&#xff0c;人物关系的搭建&#xff0c;描述实体&#xff0c;关系&#xff0c;以及实体属性 安装 在官网 https://neo4j.com/ 下载安装包 neo4j-co…

系统架构师考点--面向对象开发

大家好。今天再来总结一下面向对象的相关考点。面向对象技术。这部分在上午场客观题一般占3-5分左右。下午的案例题和论文题也可能有所涉及。 一、面向对象开发 (1)对象&#xff1a;由数据及其操作所构成的封装体&#xff0c;是系统中用来描述客观事务的个实体&#xff0c;是…

【算法/天梯赛训练】天梯赛模拟题集

L1-009 N个数求和 #include <iostream> #include <algorithm>using namespace std;typedef long long ll; const int N 105;typedef struct node {ll x, y; }node; node a[N];ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a; }int main() {int n;cin >>…

Lua基础知识入门

1 基础知识 标识符&#xff1a;标识符的定义和 C语言相同&#xff1a;字母和下划线_ 开头&#xff0c; 下划线_ 大写字母一般是lua保留字&#xff0c; 如_VERSION 全局变量&#xff1a;默认情况下&#xff0c;变量总是认为是全局的&#xff0c;不需要申明&#xff0c;给一个变…

ECMP等价多路由机制,大模型训练负载均衡流量极化冲突原因,万卡(大规模)集群语言模型(LLM)训练流量拥塞特点

大规模集群&#xff0c;大语言模型(LLM)训练流量特点&#xff0c;ECMP&#xff08;Equal-Cost Multi-Path Routing&#xff09;流量极化拥塞原因。 视频分享在这&#xff1a; 2.1 ECMP等价多路由&#xff0c;大模型训练流量特点&#xff0c;拥塞冲突极化产生原因_哔哩哔哩_bi…

vue2导入elementui组件库

第一步安装 npm i element-ui -S 第二步在main.js中导入 第三步使用然后在运行项目

Linux——五种IO模型

目录 一、I/O的理解 二、五种IO模型 1.阻塞式IO 2.非阻塞式IO 3.信号驱动IO 4.多路复用IO 5.异步IO 一、I/O的理解 I/O的本质就是输入输出&#xff0c;C语言的stdio&#xff0c;C的iostream&#xff0c;添加了这两个库&#xff0c;我们才能够进行printf、scanf、cin、c…

【HarmonyOS】HarmonyOS NEXT学习日记:三、初识ArkUI

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;三、初识ArkUI 忘掉HTML和CSS&#xff0c;ArkUI里构建页面的最小单位就是 “组件”&#xff0c;所以今天的目标就是认识一些常用的基础组件&#xff0c;以及他们的用法&#xff0c;对ArkUI形成一个基本认识。 基本组成 了解…

【前端】表单密码格式—校验。

如图&#xff1a;实现表单输入密码和确认密码的时候进行表单校验。 实现方式&#xff1a; 1.在代码的data里面定义&#xff0c;函数验证的方法。如图所示,代码如下 【代码】如下&#xff1a; const validatePassword (rule, value, callback) > {if (value ) {callback(n…

MongoDB自学笔记(三)

一、前文回顾 上一篇文章中我们学习了更新操作&#xff0c;以及讲解了部分的更新操作符&#xff0c;今天我们继续学习剩余的更新操作符。 二、更新操作符 1、$rename 语法&#xff1a;{ $rename: { < field1 >: < newName1 >, < field2 >: < newName2…