我有一个名为
pres_lev3d
的原始数组,其大小由 pres_lev3d(im*jm, levsi)
定义,其中 im*jm
为 72960,levsi
为 64。这对应于全球大气数据,因此对应于大小。该数组是可分配的:real (kind=kind_io8), allocatable :: pres_lev3d(:, :)
。我有第二个数组 press_1d
,其大小也以类似的方式定义 pres_1d(im*jm, levsi)
,但在此数组中 levsi
是 1。
我需要将两个数组(技术上是二维和一维数组)连接到形状为
(/72960, 65/)
的数组。在 MATLAB 中,这似乎是一个非常简单的过程,但是,我似乎找不到在 Fortran 90 中绕过它的简单方法。
我尝试创建第三个数组
pres_lev=(/pres_lev3d, pres_1d/)
并且还尝试使用
merge
,但这些方法似乎都不起作用。
我对 Fortran 相当陌生。
如果我正确地遵循了你的解释,这可能会起作用
real(kind_io8), dimension(72960,65) :: out_array
...
out_array(:,1:64) = pres_lev3d
out_array(:,65) = pres_1d
如果这不够简单,或者我误解了你的问题,请进一步解释。 要分配
out_array
以符合您的输入数组,请尝试类似
real(kind_io8), dimension(:,:), allocatable :: out_array
...
allocate(out_array(size(pres_lev3d,1),size(pres_lev3d,2)+1))
...
out_array(:,1:64) = pres_lev3d
out_array(:,65) = pres_1d
现在可以使用:
in_array :: out_array(1)
in_array :: out_array(2)
out_array, allocatable :: out_array(:)
...
out_array = [in_array1, in_array2]