Смекни!
smekni.com

«Применение ит в моделировании атмосферных процессов» (стр. 6 из 8)

На выходе программы metgrid формируются файлы, содержащие значения всех необходимых статических и изменяющихся во времени величин в узлах сетки, включая и характеристики самой расчётной сетки. Каждый отдельный выходной файл с именем met_em.dNN.<date> содержит данные для области счёта NN (met_nmm.d01.<date> в NMM) только для одного момента модельного времени <date>, интервал между ними задаётся пользователем параметром interval_seconds в записи &share файла списка имён namelist.wps и определяется, в сущности, необходимой для моделирования частотой обновления боковых граничных условий в исходной области. Выходные файлы metgrid, как и выходные фалы geogrid, имеют формат интерфейса ввода-вывода системы WRF, в качестве которого рекомендуется использовать NetCDF. В таком случае для их визуализации и анализа могут использоваться программы ncview, NCL и многие другие [9, 11].

2.4 Программные средства визуализации данных

Если в качестве формата выходных данных в WRF используется NetCDF, то для их визуализации могут использоваться универсальные программы, такие как ncview. В то же время, для ARW и NMM разработаны специализированные программные средства визуализации и последующего анализа результатов моделирования.

Для обоих динамических ядер может использоваться разработанная в NCEP система WRF Post-Processing (WPP), задачей которой является приведение выходных данных WRF к формату, пригодному для использования в метеослужбах [9, 11].

Популярной системой визуализации данных различных мезомасштабных моделей является RIP (Read / Interpolate / Plot), изначально предназначавшаяся для визуализации выходных данных MM5. Текущая версия RIP4 позволяет работать в том числе и с данными WRF, включая как ARW, так и NMM [9, 11]. Система RIP основывается на графической библиотеке NCAR Graphics.

Визуализация и анализ данных ARW наиболее полно может быть осуществлена с помощью сценариев языка NCL (NCAR Command Language). Начиная с NCL версии 5, NCAR объединил в библиотеках NCL все собственные разработки в области анализа и визуализации научных данных, включив NCL и NCAR Graphics.

NCL представляет собой интерпретируемый язык, предназначенный для работы с научными данными и их визуализации. Поддерживаются данные в форматах NetCDF, HDF4, HDF4-EOF, GRIB, двоичные и ASCII файлы. Библиотеки NCL доступны для скачивания на соответствующем разделе сайта UCAR [14].

NCL может равным образом использоваться для работы с любыми научными данными, однако для данных WRF в NCL были разработаны некоторые дополнительные компоненты (например, встроенные функции анализа данных ARW), наиболее полно представленные в NCL версии 5.1.0 и выше. Более того, доступно множество готовых сценариев NCL для типичных задач обработки результатов моделирования.

Система ARWpost предназначена для приведения данных ARW к формату популярных в метеорологии и атмосферных исследованиях систем визуализации GrADS и Vis5D [9].

В NCAR также разработана одна из наиболее универсальных программ визуализации научных данных — VAPOR (Visualization and Analysis Platform for Ocean, atmosphere and solar Researchers). Задачей VAPOR является интерактивный анализ и визуализация данных численного моделирования гидродинамических процессов различной природы. Особенностью VAPOR является возможность визуализации изменяющихся во времени трёхмерных полей данных с использованием техники DVR (Direct Volume Rendering – прямая объёмная визуализация) [9]. VAPOR доступна для свободного скачивания с сайта [15].

Глава 3: Вычислительный эксперимент на основе системы WRF

3.1 Подготовка входных данных

Рассмотрим пример использования системы WRF для моделирования атмосферных процессов, протекавших в прошлом (август 2005 года) на территории Беларуси, на основе архивных данных.

Статические геоданные глобального покрытия для программы geogrid могут быть взяты с сайта WRF [13]. Геоданные с максимальным разрешением в 30 угловых секунд в архиве geog.tar.gz занимают 354 Мб, после извлечения из архива — более 9,3 Гб.

Поля метеорологических величин, полученные в результате вычислений модели глобальной циркуляции GFS, для текущего момента времени и нескольких предшествующих дней могут скачиваться с сайта NCEP. Данные GFS для временного промежутка 01.08.2005 — 10.08.2005 доступны в архиве NOAA [16] или Архиве исследовательских данных (RDA, Research Data Archive) Лаборатории вычислительных и информационных систем (CISL, Computational and Information Systems Laboratory) NCAR [17].

Данные в исходном виде содержат значения множества переменных для всего земного шара, что существенно увеличивает их объём. На Web-странице архива [16] может быть указан необходимый для конкретной задачи набор переменных и изобарических уровней, а также ограничена географическая область. На основании указанных данных сценарий Perl формирует новый набор данных, доступный для скачивания с сайта в течение некоторого времени.

Набор данных в файлах gfs_3_2005*.grb формата GRIB для региона 20 — 35 градусов восточной долготы, 50 — 60 градусов северной долготы с пространственным разрешением в 1 градус и набора переменных, требуемого для организации моделирования в системе WRF, имеет объём порядка 42 Мб.

Разместим в центре выбранного региона область моделирования с расчётной сеткой 40 на 48 узлов и шагом 18,5 км.

Основные компоненты файла списка имён namelist.wps приведены в листинге 3.1. Параметры сетки и картографической проекции Ламберта, а также путь к каталогу, содержащему файлы статических геоданных (~/geog/) задаются в записи &geogrid, рассматриваемый промежуток времени и интервал между выходными файлами системы WPS в записи &metgrid.

Листинг 3.1 — Файл namelist.wps

&share

wrf_core = 'ARW',

max_dom = 1,

start_date = '2005-08-08_00:00:00'

end_date = '2005-08-11_00:00:00'

interval_seconds = 10800

io_form_geogrid = 2,

/

&geogrid

parent_id = 1,

parent_grid_ratio = 1,

i_parent_start = 1,

j_parent_start = 1,

e_we = 40,

e_sn = 48,

geog_data_res = '30s'

dx = 18500,

dy = 18500,

map_proj = 'lambert',

ref_lat = 53.00,

ref_lon = 27.00,

truelat1 = 53.0,

truelat2 = 57.0,

stand_lon = 27.0,

geog_data_path = '~/geog/'

/

&ungrib

out_format = 'WPS',

prefix = 'FILE',

/

&metgrid

fg_name = 'FILE'

io_form_metgrid = 2,

/

В результате работы программы geogrid.exe будет создан файл geo_em.d01.nc объёмом 790,8 Кб в формате NetCDF.

Перед запуском ungrib.exe предварительно необходимо с помощью сценария link_grib.csh создать символические ссылки GRIBFILE.AAA, GRIBFILE.AAB, … GRIBFILE.ZZZ в рабочем каталоге на файлы в формате GRIB, содержащие исходные метеоданные. На выходе программы ungrib.exe создаются файлы FILE:2005-08-01_00 – FILE:2005-08-10_24 с данными в промежуточном формате.

На выходе программы metgrid.exe файлы met_em.d01.2005-08-01_00:00:00.nc – met_em.d01.2005-08-10_24:00:00.nc содержат данные с интервалом в 3 часа, как указано в namelist.wps (interval_seconds = 10800).

3.2 Моделирование в динамическом ядре ARW

Выходные файлы системы WPS met_em.d01.*.nc должны быть скопированы в рабочий каталог WRF для построения на их основе начальных и граничных условий. Ограничим моделирование интервалом длительностью в сутки. В листинге 3.2 приведено содержимое основных записей файла namelist.input.

Листинг 3.2 — Файл namelist.input

&time_control

run_days = 0,

run_hours = 72,

run_minutes = 0,

run_seconds = 0,

start_year = 2005,

start_month = 08,

start_day = 09,

start_hour = 12,

start_minute = 00,

start_second = 00,

end_year = 2005,

end_month = 08,

end_day = 10,

end_hour = 12,

end_minute = 00,

end_second = 00,

interval_seconds = 10800

input_from_file = .true.,

history_interval = 10,

frames_per_outfile = 10,

restart = .true.,

restart_interval = 1440,

io_form_history = 2

io_form_restart = 2

io_form_input = 2

io_form_boundary = 2

debug_level = 0

/

&domains

time_step = 10,

time_step_fract_num = 0,

time_step_fract_den = 1,

max_dom = 1,

s_we = 1,

e_we = 40,

s_sn = 1,

e_sn = 48,

s_vert = 1,

e_vert = 28,

num_metgrid_levels = 27

dx = 18500,

dy = 18500,

grid_id = 1,

parent_id = 0,

i_parent_start = 0,

j_parent_start = 0,

parent_grid_ratio = 1,

parent_time_step_ratio = 1,

feedback = 1,

smooth_option = 0

/

В результате работы программы real.exe создаются файл начальных условий wrfinput_d01 и файл граничных условий wrfbdy_d01, а после запуска основной программы wrf.exe начинается интегрирование уравнений модели. Результаты записываются в выходной файл wrfout_d01_2005-08-09_12:00:00 в формате NetCDF.

3.3 Визуализация результатов вычислений с помощью NCL

Для визуализации полученных результатов воспользуемся интерпретируемым языком NCL. Необходимый сценарий может быть составлен на основе предлагаемых шаблонов [14]. Рассмотрим сценарий для визуализации давления на уровне моря с помощью изобар, векторного поля скорости ветра, расчета и отображения энергии неустойчивости (обычно называемой также CAPE – Convective Available Potential Energy). Сценарий приведён в листинге 3.3.

Листинг 3.3 — сценарий cape_slp.ncl

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"

load "$NCARG_ROOT/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"

begin

a = addfile("./wrfout_d01_2005-08-09_12:00:00.nc","r")

type = "pdf"

wks = gsn_open_wks(type,"CAPE-SLP-Windbarbs")

times = wrf_user_list_times(a)

ntimes = dimsizes(times)

do it = 1,ntimes-1,2

print("Working on time: " + times(it) )

res@TimeLabel = times(it)

slp = wrf_user_getvar(a,"slp",it)

p = wrf_user_getvar(a,"pressure",it)

wrf_smooth_2d(slp, 3 )

u10 = wrf_user_getvar(a,"U10",it)

v10 = wrf_user_getvar(a,"V10",it)

tc = wrf_user_getvar(a,"tc",it)

cape = wrf_user_getvar(a,"slp",it)

do i = 0, 38, 1

do j = 0, 46, 1

cape(i,j) = cape_thermo(p(:,i,j),tc(:,i,j),-999,0)

end do

end do

wrf_smooth_2d(cape,3)

cape@decription = "CAPE"

cape@units = "J/kg"

u10@units = "m/s"

v10@units = "m/s"

opts = True

opts@FieldTitle = "CAPE"

opts@cnFillOn = True

opts@cnLinesOn = False

opts@cnLineLabelsOn = True

opts@ContourParameters = (/ 0., 90., 1./)

opts@cnLineLabelBackgroundColor = -1

opts@gsnSpreadColorEnd = -3

cont_cape = wrf_contour(a,wks,cape,opts)

delete(opts)

opts = True

opts@cnLineColor = "Blue"

opts@cnHighLabelsOn = True

opts@cnLowLabelsOn = True

opts@ContourParameters = (/ 900., 1100., 4. /)

opts@cnLineLabelBackgroundColor = -1

opts@gsnContourLineThicknessesScale = 2.0

cont_psl = wrf_contour(a,wks,slp,opts)

delete(opts)

opts = True

opts@FieldTitle = "Wind"

opts@NumVectors = 30

vect = wrf_vector(a,wks,u10,v10,opts)