沙尘传输模拟教程(基于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://www.mzph.cn/bicheng/47499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker替换主程序排错

docker替换主程序排错 背景&#xff1a;经常会遇到主程序启动错误&#xff0c;导致无法进入到容器内部排错。 替换命令 docker run --rm -it --entrypoint/bin/sh 镜像名

石油与化工行业的工业互联网平台革新之路

石油和化工工业互联网平台的变革是近年来工业发展的重要趋势之一&#xff0c;它基于工业互联网技术&#xff0c;通过数字化、网络化和智能化手段&#xff0c;推动石油和化工行业的转型升级。以下是关于石油和化工工业互联网平台变革的详细分析&#xff1a; 一、革新背景 行业…

@Valid校验前端参数

1、导入依赖。&#xff08;springmvc的stater-web和json依赖也需要添加&#xff0c;此处先不列举&#xff09; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependen…

批量下载网易云音乐歌单的Python脚本

在日常的音乐收藏和整理中,有时候我们希望能够快速地备份或下载网易云音乐中的歌曲,以便在没有网络连接的情况下也能随时听到自己喜欢的音乐。这时候,Python可以提供一种便捷的解决方案,让我们能够轻松地实现这一目标。 技术背景 本文介绍的Python脚本利用了Requests库和…

SpringSecurity + JWT 实现登录认证

目录 1. JWT 的组成和优势 2. JWT 的工作原理 2.1 生成 JWT 2.2 传输JWT 3. SpringSecurity JWT 实现登录认证 3.1 配置 Spring Security 安全过滤链 3.2 自定义登录认证过滤器 3.3 实现SpringSecurity用户对象 3.4 获取当前登录用户 1. JWT 的组成和优势 JWT 由三…

SSE(Server Sent Event)实战(3)- Spring Web Flux 实现

上篇博客 SSE&#xff08;Server Sent Event&#xff09;实战&#xff08;2&#xff09;- Spring MVC 实现&#xff0c;我们用 Spring MVC 实现了简单的消息推送&#xff0c;并且留下了两个问题&#xff0c;这篇博客&#xff0c;我们用 Spring Web Flux 实现&#xff0c;并且看…

STM32(六):STM32指南者-定时器实验

目录 一、基本概念1、常规定时器2、内核定时器 二、基本定时器实验1、实验说明2、编程过程&#xff08;1&#xff09;配置LED&#xff08;2&#xff09;配置定时器&#xff08;3&#xff09;设定中断事件&#xff08;4&#xff09;主函数计数 3、工程代码 三、通用定时器实验实…

【Neural signal processing and analysis zero to hero】- 2

Nonstationarities and effects of the FT course from youtube: 传送地址 why we need extinguish stationary and non-stationary signal, because most of neural signal is non-stationary. Welch’s method for smooth spectral decomposition Full FFT method y…

【TDA4板端部署】基于 Pytorch 训练并部署 ONNX 模型在 TDA4

1 将torch模型转onnx模型 Ti转换工具只支持以下格式&#xff1a; Caffe - 0.17 (caffe-jacinto in gitHub) Tensorflow - 1.12 ONNX - 1.3.0 (opset 9 and 11) TFLite - Tensorflow 2.0-Alpha 基于 Tensorflow、Pytorch、Caffe 等训练框架&#xff0c;训练模型&#xff1a;选择…

数据结构与算法(2):顺序表与链表

1.前言 哈喽大家好喔&#xff0c;今天博主继续进行数据结构的分享与学习&#xff0c;今天的主要内容是顺序表与链表&#xff0c;是最简单但又相当重要的数据结构&#xff0c;为以后的学习有重要的铺垫&#xff0c;希望大家一起交流学习&#xff0c;互相进步&#xff0c;让我们…

数据结构之跳表SkipList、ConcurrentSkipListMap

概述 SkipList&#xff0c;跳表&#xff0c;跳跃表&#xff0c;在LevelDB和Lucene中都广为使用。跳表被广泛地运用到各种缓存实现当中&#xff0c;跳跃表使用概率均衡技术而不是使用强制性均衡&#xff0c;因此对于插入和删除结点比传统上的平衡树算法更为简洁高效。 Skip lis…

AQS详解(详细图文)

目录 AQS详解1、AQS简介AbstractQueuedSynchronizer的继承结构和类属性AQS的静态内部类Node总结AQS的实现思想总结AQS的实现原理AQS和锁的关系 2、AQS的核心方法AQS管理共享资源的方式独占方式下&#xff0c;AQS获取资源的流程详解独占方式下&#xff0c;AQS释放资源的流程详解…

如何通过DBC文件看懂CAN通信矩阵

实现汽车CAN通信开发&#xff0c;必不可少要用到DBC文件和CAN通信矩阵。 CAN通信矩阵是指用于描述 CAN 网络中各个节点之间通信关系的表格或矩阵。它通常记录了每个节点能够发送和接收的消息标识符&#xff08;ID&#xff09;以及与其他节点之间的通信权限。 通信矩阵在 CAN 网…

利用Msfvenom获取WindowsShell

一、在kali主机上利用msfvenom生成windows端的安装程序(exe文件),程序名最好取一个大家经常安装的程序,如腾讯视频、爱奇艺等。 (1)由于生成的程序可能会被杀毒软件识别,我们比较一下使用单个编码器生成的程序与用两个编码器生成的程序,哪个更容易被识别。 利用单个编码…

SSE(Server Sent Event)实战(2)- Spring MVC 实现

一、服务端实现 使用 RestController 注解创建一个控制器类&#xff08;Controller&#xff09; 创建一个方法来创建一个客户端连接&#xff0c;它返回一个 SseEmitter&#xff0c;处理 GET 请求并产生&#xff08;produces&#xff09;文本/事件流 (text/event-stream) 创建…

mybatis-plus仿 JPA的 GenerationType.TABLE 实现

概述 1&#xff09;配置mybatis-plus 主键默认策略&#xff0c;实体添加主键注解 2&#xff09;新建主键存储表 3&#xff09;编写主键策略实现类 注意事项&#xff1a;如果 程序含数据库恢复功能&#xff0c;数据恢复后&#xff0c;需调用 CustomIdGenerator.clearTabIdState…

如何使用Milvus Cloud进行稀疏向量搜索

如何使用Milvus Cloud进行向量搜索Milvus Cloud 是一款高度可扩展、性能出色的开源向量数据库。在最新的 2.4 版本中,Milvus Cloud 支持了稀疏和稠密向量(公测中)。本文将利用 Milvus Cloud 2.4 来存储数据集并执行向量搜索。 接下来,我们将演示如何利用 Milvus Cloud 在 M…

[GXYCTF2019]Ping Ping Ping1

打开靶机 结合题目名称&#xff0c;考虑是命令注入&#xff0c;试试ls 结果应该就在flag.php。尝试构造命令注入载荷。 cat flag.php 可以看到过滤了空格,用 $IFS$1替换空格 还过滤了flag&#xff0c;我们用字符拼接的方式看能否绕过,ag;cat$IFS$1fla$a.php。注意这里用分号间隔…

睡前故事—绿色科技的未来:可持续发展的梦幻故事

欢迎来到《Bedtime Stories Time》。这是一个我们倾听、放松、并逐渐入睡的播客。感谢你收听并支持我们&#xff0c;希望你能将这个播客作为你睡前例行活动的一部分。今晚我们将讲述绿色科技的未来&#xff1a;可持续发展的梦幻故事的故事。一个宁静的夜晚&#xff0c;希望你现…

0602STM32定时器输出比较

STM32定时器输出比较 PWM简介 主要用来输出PWM波形&#xff0c;PWM波形又是驱动电机的必要条件&#xff0c;所以如果想用STM32做一些有电机的项目&#xff0c;比如智能车&#xff0c;机器人等。那输出比较功能就要认真掌握 1.PWM驱动LED呼吸灯 2.PWM驱动舵机 3.PWM驱动直流电机…