在网格模型数据中求解倾斜列

时间:2019-02-18 19:05:39

标签: matlab math iteration integration chemistry

在您的帮助下,过去两周来我在解决这个问题方面做得非常好,非常感谢这个美好的社区!

首先,我想阐明以下几点:我不希望找到解决方案,但希望获得一些帮助(可以使用任何编程语言)找到可以帮助我更接近所需解决方案的模块。另外,如果您对实现我的解决方案有任何数学建议,我也会很乐意接受!我目前正在使用MATLAB,但是如果有一种编程语言可以更好地满足我的期望结果,我会很乐意为您提供帮助!

我的问题如下:

简而言之,我想给定我所拥有的模型数据的字段,沿着从地面到“大气层顶部”的路径求出二氧化氮的量。

我的问题是,对于海拔高度(指定为1-> 27),纬度(指定为点1-> 364)和经度(指定为点1-> 264)的每种组合,都有一个设定量该位置存在二氧化氮。这意味着网格盒并不是无限小,因此我在可视化和想出如何沿空间线找到二氧化氮量方面遇到困难。

以下是一些可视化效果:

首先是2D网格表示。如您所见,每个位置和高度的组合中,每个栅格框内都有一个“设定量”的NO2。目前,我的代码有能力解决例如B列中的NO2总量。基本上,我可以沿垂直直线求解NO2! 2D Grid 这是第二次表示,每个网格框的相同常量在这里也适用。主要区别在于这是3个维度,更能代表我要开发的产品。基本上,我想要点1和点2之间的数量。

3D Grid

目前,我已经设法在经度和纬度的组合下(忽略第四维,只是它的时间。这是我将在以后添加到该项目中的一个维)求和总计大气中的二氧化氮(也称为垂直柱),其代码如下:

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”。因此,基本上我不想从“地面”到达“大气层正上方”的位置,而是要从地面到大气层的另一种经度和纬度组合。

同样,我不希望有解决方案,但我非常感谢您对此问题提出任何建议!

最好, 泰勒

0 个答案:

没有答案