с вашей помощью, я зашел довольно далеко с этой проблемой за последние две недели, поэтому большое спасибо этому замечательному сообществу !!
Прежде всего, я хочу прояснить следующее: я неЯ не ожидаю решения, но мне нужна помощь в поиске модулей (на любом языке программирования), которые могли бы помочь мне приблизиться к желаемому решению.Также, если у вас есть какой-либо математический совет по достижению моего решения, я с радостью приму его!В настоящее время я использую 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» по наклонному столбцу вместо вертикального столбца.Таким образом, в основном, вместо того, чтобы идти от «земли» к точке «наверху атмосферы, находящейся прямо над ней», я хочу перейти от земли к вершине атмосферы с другой комбинацией широты и долготы.
Опять же, я не ожидаю решения, но буду очень признателен за любые советы по этой проблеме!
Бест, Тейлор