Решение для наклонного столбца в данных модели сетки
С вашей помощью я зашёл довольно далеко с этой проблемой за последние две недели, так что большое спасибо этому замечательному сообществу!!
Прежде всего я хочу прояснить следующее: я не ожидаю решения, но мне нужна помощь в поиске модулей (на любом языке программирования), которые могли бы помочь мне приблизиться к желаемому решению. Также, если у вас есть какой-либо математический совет по достижению моего решения, я с радостью приму его! В настоящее время я использую MATLAB, но если есть язык программирования, который лучше подходит для получения желаемого результата, я с радостью попробую!
Моя проблема заключается в следующем:
Короче говоря, я хочу найти количество диоксида азота на пути от земли до "верха атмосферы", учитывая поле данных модели, которое у меня есть.
Моя проблема заключается в том, что для каждой комбинации уровня высоты (назначается как 1->27), широты (назначается как точка 1 -> 364) и долготы (назначается как точка 1-> 264) существует установленное количество диоксида азота. присутствовать на этой позиции. Это означает, что прямоугольники сетки не бесконечно малы, поэтому у меня возникают проблемы с визуализацией и поиском того, как я могу найти количество диоксида азота вдоль линии в пространстве.
Вот некоторые визуализации:
Во-первых, это двумерное сеточное представление. Как вы можете видеть, каждый блок сетки имеет "установленное количество" NO2 внутри каждой комбинации положения и высоты. В настоящее время мой код способен решать, например, общее количество NO2 в столбце B. По сути, я могу определить для NO2 по вертикальной прямой линии! Вот второе представление, и то же самое постоянное количество для каждого поля сетки сохраняется и здесь. Основное отличие состоит в том, что это в трех измерениях и является более представительным для продукта, на который я нацеливаюсь. В основном я хочу, чтобы количество вещей между точкой один и точкой 2.
В настоящее время мне удалось при комбинации широты и долготы (игнорировать четвертое измерение, просто время. Это измерение, к которому я вернусь с последующим добавлением в этот проект), суммировать общее количество диоксида азота. в атмосфере (также известной как вертикальный столбец) со следующим кодом:
av = 6.022140857747*(10^23); % Avogadro's Number 1/mol
R = 82.06; % Gas Constant cm3*atm/(k*mol)
Pres_atm = Pres*(1/101325); % Changes the pressure matrix to units of atm
no2_moleccm3 = no2*(1/(10^6))*av.*Pres_atm*(1/R).*(1/Temp); % Conversion of no2
to molecules/cm3
% For loop that changes the total height to a difference of heights for
% each altitude layer of 2->27
for index = 2:27
h(:,:,index,:) = flheight(:,:,index,:) - flheight(:,:,index-1,:);
end
h(:,:,1,:) = flheight(:,:,1,:); % Adding the first altitude layer
% For loop that changes the total mid-layer height to a height difference
% at each altitude 2->27
for index = 2:27
mh(:,:,index,:) = mlheight(:,:,index,:) - mlheight(:,:,index-1,:);
end
mh(:,:,1,:) = mlheight(:,:,1,:); % Adding the first mid altitude layer
no2_moleccm2 = no2_moleccm3.*h(:,:,:,:); % Converts no2 to units of molecules
per unit area.
vcol = sum(no2_moleccm2(1,1,:,12)) % Calculates a vertical column for any
combination of time, lat, and lon.
Я получаю довольно приличный ответ для количества вертикальных столбцов, в точности то, что я хочу.
Теперь я хочу создать некоторый код, который может найти аналогичное количество, но отслеживая (согласно моему коду) "no2_moleccm2" по наклонному столбцу вместо вертикального столбца. Таким образом, в основном, вместо того, чтобы идти от "земли" к точке "наверху атмосферы, находящейся прямо над ней", я хочу перейти от земли к вершине атмосферы с другой комбинацией широты и долготы.
Опять же, я не ожидаю решения, но буду очень признателен за любые советы по этой проблеме!
Бест, Тейлор