2015-06-29 2 views
2

У меня есть исходный массив под названием 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.Как объединить два массива в Fortran 90

мне нужно объединить обе массивы (технически 2d и 1d массив) в массив из форма (/72960, 65/). В среде MATLAB это кажется очень простой процесс, однако, я не могу показаться, чтобы найти легкий путь вокруг него в Fortran 90.

Я попытался создать третий массив

pres_lev=(/pres_lev3d, pres_1d/) 

и также попытался использовать merge, но ни один из этих подходов, похоже, не сработает.

Я довольно новичок в Фортране.

ответ

4

Если я следовал ваше объяснение правильно это, вероятно, работать

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 
+0

Работает как очарование! Спасибо! – malanga

Смежные вопросы