2012-05-15 3 views
0

Я использую FORTRAN-90. У меня есть одна проблема.Сохранение массива в FORTRAN-90

Я хочу хранить данные (т. Е. Значения X и Y) в трехмерном массиве (A 900 900 900), B (900 900 900)) таким образом, что при начале я использовал только 30X30X30 элементов каждого массива для хранения 30X30X30 начальные значения X и Y, а затем на следующем временном шаге у меня есть некоторые научные вычисления для изменения значений X и Y, а затем снова хочу сохранить измененные значения XXXXXXXX X и Y в том же массиве из (31X31X31) -й позиции обоих массивов и снова та же процедура для следующего шага времени. Таким образом, я хочу заполнить массив моими данными и, наконец, хочу напечатать эти массивы.

Не могли бы вы помочь мне, как я могу написать эту algorithim я FORtran код ... ..

Пожалуйста, помогите мне.

Пожалуйста, руководство меня

С наилучшими пожеланиями

Amitavo

+1

11GB для двойной точности. Это то, что вы действительно хотите? –

+0

Помимо проблем с размерами, можете ли вы отправить пример, начинающийся с массива 3x3x3, и перейти на 4x4x4, чтобы мы могли понять, что именно вы пытаетесь выполнить. – ja72

+1

Если вы никогда не собираетесь использовать кросс-термины 'A (1,31,31)', вам не нужен весь элемент '900x900x900'. Используются только подстроки '30'' 30x30x30', что значительно меньше места. – ja72

ответ

0

Ну, как насчет этого:

real*8 :: A(900,900,900),X(30,30,30) 
integer :: offset 

offset=0 

! define X however ... 

A(1:30,1:30,1:30)=X 

do while (offset<900) 
! do stuff to X 
! do more stuff to X 
    offset=offset+30 
    A(1+offset:30+offset,1+offset:30+offset,1+offset:30+offset)=X 
enddo 

Кроме того, я думаю, что ja72 имеет лучшую идею. Но если это так, вам нужно это сделать, я думаю, что это то, что вы хотите.

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