2012-10-29 17 views
4

我想用python運行一些fortran代碼,並使用f2py -c -m。但是,似乎只有功能被打包到.so文件中,但不包括程序。那我該如何處理全局變量呢?例如,一個變量ç放在一個模塊如何在python中調用fortran代碼時處理全局變量(例如使用f2py)?

MODULE nfw 
    double precision :: c 
END MODULE nfw 

,在程序修改,並使用一個函數在同一文件中隱含

PROGRAM Compute_Profile 
    USE nfw 
    c = 5.0 
END PROGRAM Compute_Profile 

DOUBLE PRECISION FUNCTION y(x) 
    USE nfw 
    double precision :: x 
    y = c * x 
    return 
END FUNCTION y 

我怎樣才能打電話讓函數y(x)瞭解python中的值c

回答

6

在你的f2py模塊下應該是另一個模塊,一個名爲nfw的Fortran。它應該在那裏。

$ f2py -c -m mod nfw.f90 

$ python 
import mod 
mod.nfw.c 

array(0.0) 

確保您使用f2py模塊編譯源文件。

+0

它的工作原理,謝謝!我已經將兩個文件打包到''f2py -c -m mod Compute_Profile.f90 nfw.f90'庫中,現在我看到我可以讓mod.y通過指定'mod.nfw.c = 2.0'來知道__c__的值。 :-) – user1342516

相關問題