Предисловие
Целью данной статьи является реализация метода расчета расходимости потока водяного пара в одном слое и расходимости потока водяного пара в целом слое 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.Импортировать библиотеку
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
Warning: ecCodes 2.21.0 or higher is recommended. You are running version 2.14.1
02
2. Чтение данных
# использовать 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)
03
3. Процесс расчета дивергенции
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))
04
4. Рисование
полный слой водяного пара
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