Фортран 77 массивов в Numpy Arrays - PullRequest
0 голосов
/ 31 августа 2018

Я нахожусь в процессе переноса кода Fortran 77 (ок. 1990 г.), который изначально был написан на бейсике (ок. 1986 г.), на Python 3 с использованием нескольких модулей, а именно Numpy и Pandas.

Он использует несколько циклов для назначения элементов массивов. Например:

6050  do 6100 J = 1,3
         Y(J,1) = Z(J)
6100        continue

где Z инициализируется как

5000  do 5500 J = 1,3
      Z(J) = 0
5500  continue

и Z и Y были выделены памяти как

dimension C(4), Z(4), ... K(4,4), Y(4,4)

Далее по коду Z-вектор переназначается после построения вектора C с использованием массива K

6500  do 6600 M = 1,3
         C(M) = (K(M,1)+2*K(M,2)+2*K(M,3)+K(M,4))/6
         Z(M) = Z(M) + C(M)
6600  continue

Есть несколько мест, где это происходит с различными другими массивами. Тем не менее, Z и Y являются наиболее критичными массивами, так как именно они назначают большинство переменных.

Мне было интересно, как с этим справиться? или если есть лучший способ сделать это.

В настоящее время у меня есть

import numpy as np
...
Z = np.zeroes((1,4))
Y = np.zeroes((4,4))
(...etc...)

...
for n in range(1,i) # main loop of calculation
    ...
    Y[0,:] = Z
    ...

    C = (K[:,0]+2*K[:,1]+2*K[:,2]+K[:,3])/6
    Z = Z + C

но я не думаю, что это правильно.

У меня есть только распечатка исходного кода. У меня нет копий файлов ввода / вывода. Если бы у меня был хотя бы правильно отформатированный входной файл, я бы перепечатал фортран в компилятор, запустил его и посмотрел, что происходит в реальном коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...