Как рассчитать расходимость потока водяного пара с помощью wrfout
Как рассчитать расходимость потока водяного пара с помощью wrfout

Предисловие

Целью данной статьи является реализация метода расчета расходимости потока водяного пара в одном слое и расходимости потока водяного пара в целом слое WRFOUT. Модель WRF (Weather Research and Forecasting) — это численная модель, широко используемая в исследованиях по прогнозированию погоды и климата. Дивергенция потоков водяного пара играет важную роль в исследованиях погоды и климата. В этом проекте будут обрабатываться и анализироваться выходные данные (WRFOUT) режима WRF для расчета дивергенции потока водяного пара в одном слое и дивергенции потока водяного пара во всем слое.

В процессе реализации этой функции ниже будут подробно представлены используемые принципы формул, а также приведены соответствующие примеры кода и инструкции по использованию. При этом результаты расчетов будут визуально отображаться для лучшего понимания и анализа пространственного распределения и закономерностей изменения дивергенции потока водяного пара.

Введение концепции

Дивергенция потока водяного пара является мерой изменений в переносе водяного пара.

Дивергенция потока водяного пара представляет собой скорость изменения потока водяного пара в единицу времени и на единицу площади. Он может отражать, собирается ли водяной пар или рассеивается, и может более точно определить, способствует ли он образованию конвективной погоды.

Отрицательное значение дивергенции потоков водяного пара указывает на накопление водяного пара, что способствует формированию конвективной погоды, и наоборот, положительное значение указывает на дисперсию водяного пара, не способствующую формированию конвективной погоды;

Формула расходимости потока водяного пара

Расчетная часть этой статьи относится к

https://blog.csdn.net/weixin_44237337/article/details/122601116

Концепции одного слоя и целого слоя можно прочитать

https://blog.csdn.net/wdbhysszjswn/article/details/129044910

Однослойная реализация водяного пара

01

1.Импортировать библиотеку

Язык кода:javascript
копировать
Язык кода:javascript
копировать
from wrf import uvmet, to_np, getvar, interplevel, smooth2d, get_cartopy, cartopy_xlim, cartopy_ylim, latlon_coords
import numpy as np
from netCDF4 import Dataset
import xarray as xr
from metpy.units import units
import matplotlib.pyplot as plt
from matplotlib.cm import get_cmap
from matplotlib.colors import from_levels_and_colors
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import cartopy.io.shapereader as shpreader
from cartopy.feature import NaturalEarthFeature
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
from cartopy.mpl.gridliner import LATITUDE_FORMATTER, LONGITUDE_FORMATTER
import cmaps
from glob import glob
import metpy.calc as mpcalc
import metpy.constants as constants
Язык кода:javascript
копировать
Язык кода:javascript
копировать
Warning: ecCodes 2.21.0 or higher is recommended. You are running version 2.14.1

02

2. Чтение данных

Язык кода:javascript
копировать
Язык кода:javascript
копировать
# использовать netCDF4 Чтение пакетов WRF моделированиеданные
wrf_file = Dataset('/home/mw/input/wrfout3385/wrfout_d02_2022-07-14_0600.nc')
# Извлечение функций
lon = getvar(wrf_file, 'lon', timeidx=0)
lat = getvar(wrf_file, 'lat', timeidx=0)
u = getvar(wrf_file, 'ua', timeidx=0)
v = getvar(wrf_file, 'va', timeidx=0)
q = getvar(wrf_file, 'QVAPOR', timeidx=0)*1000
# Извлеките долготу и широту моделирования WRF из множества
lats, lons = latlon_coords(u)

# Извлечение картографической проекции моделирования WRF
wrf_proj = get_cartopy(u)
Язык кода:javascript
копировать

03

3. Процесс расчета дивергенции

Язык кода:javascript
копировать
Язык кода:javascript
копировать
p = getvar(wrf_file, 'pressure', timeidx=0)
u850 = interplevel(u, p, 850)
v850 = interplevel(v, p, 850)
q850 = interplevel(q, p, 850) ** units('g/kg')
z = getvar(wrf_file, 'z', units="dm", timeidx=0)
z850 = interplevel(z, p, 850)
dx, dy = mpcalc.lat_lon_grid_deltas(lon,lat)
# вычислитьрасходимость потока водяного пара
q_flux_divergence = mpcalc.divergence(
    to_np(
        u850 *
        q850/constants.g),
    to_np(
        v850 *
        q850/constants.g),
    dx=to_np(dx),
    dy=to_np(dy))
Язык кода:javascript
копировать

04

4. Рисование

полный слой водяного пара

Язык кода:javascript
копировать
Язык кода:javascript
копировать
Язык кода:javascript
копировать
u_interp = interplevel(u, p, levels)
v_interp = interplevel(v, p, levels)
q_interp = interplevel(q, p,уровни) ** единицы('г/кг')
лев = u_interp.level

# Спасибо, что прочитали эту страницу
qu = u_interp *q_interp/constants.g
qv = v_interp *q_interp/constants.g
q_flux_divergence_all = np.zeros((lev.shape[0],lat.shape[0],lon.shape[0]))
for i in range(lev.shape[0]):
    q_flux_divergence_all[i] = mpcalc.divergence(u = to_np(qu[i]),v = to_np(qv[i]),dx = to_np(dx) ,dy = to_np(dy),x_dim=-1, y_dim=-2)

# Воля q_flux_divergence_all в NaN Значение заменяется на 0
q_flux_divergence_all = np.nan_to_num(q_flux_divergence_all, nan=0)
total_div_qv = np.trapz(q_flux_divergence_all,lev,axis=0)
total_div_qv[2]

наконец

При использовании metpy нужно обратить внимание на множество вещей. Чтобы работать хорошо, единицы измерения, размеры и форматы должны быть согласованы. Вы можете только тестировать больше.

На полный код и файлы можно ответить в фоновом режиме.“расходимость потока водяного пара”Получить ссылку。

Обложка нарисована искусственным интеллектом

/imagine prompt: color photo of water vapor flux, depicting the movement and exchange of moisture in the atmosphere —c 10 —ar 2:3

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose