Я работаю с f2py, и я довольно застрял. У меня есть функция в Fortran:f2py не возвращает размер (N, 3) на python
!f90
subroutine f(!args
implicit none;
double precision, dimension(N, 3):: fMatrix;
!f2py double precision, dimension(N,3), intent(out, c) :: fMatrix
!Stuff happens here
end subroutine force
я использовал
f2py -c -m moduleName file.f90
, чтобы преобразовать его в модуль питона. Он компилируется без ошибок, и python может его вызвать. Но ... К сожалению, он ничего не возвращает. Я думал, что с помощью
!f2py intent(out,c) fMatrix
следует изменить память сэкономить на питон использование типа и вернуть fMatrix к питону. Но ..
...
myf = fortranModule.f(args);
print myf
Возвращает «Нет».
Я предполагаю, что я делаю что-то неправильно; несколько хитов, которые я нашел, упоминали о том, что fMatrix - N.3, и поэтому у него возникают проблемы с определением типа возврата?
Я попытался добавить намерение (in)/intent (out) к объявлениям fortran, но это дало больше ошибок в начале. Тем не менее, я попробовал это снова сейчас; намерение (в) заявлениях работает, но умысел (уходит) бросает:
double precision, dimension(N, 3), intent(out):: fMatrix;
Error: Symbol at (1) is not a DUMMY variable
Я надеюсь, что кто-то есть ответ для меня, Спасибо заранее!
Я раньше работал на C++ и использовал вызов по ссылке в PHP (& $ bladievar), поэтому я привык к этому. Что касается намерения (inout), вам нужно добавить директиву! F2py (in, out). Не понял, что один! Благодарю. – Daimonie