f2py用户b指南b和参考b手册b

f2py用户b指南b和参考b手册b

ID:30361054

大小:356.54 KB

页数:39页

时间:2018-12-29

f2py用户b指南b和参考b手册b_第1页
f2py用户b指南b和参考b手册b_第2页
f2py用户b指南b和参考b手册b_第3页
f2py用户b指南b和参考b手册b_第4页
f2py用户b指南b和参考b手册b_第5页
资源描述:

《f2py用户b指南b和参考b手册b》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、F2PY用户指南和参考手册作者Author:PearuPetersonContact:pearu@cens.ioc.eeWebsite:http://cens.ioc.ee/projects/f2py2e/Date:2005-01-30Revision:1.25译者翻译:cpythonerEmail:cpythoner@gmail.comBlog:cpython.bloggoing.com日期:2005-03-10版本1.25-1贡献者-37-目录1引言22三种封装方法——开始22.1快速方法32.2聪明方法4

2、2.3既快且聪明的方法53签名文件63.1Pythonmoduleblock73.2Fortran/C例程签名73.2.1类型声明(Typedeclarations)83.2.2语句(Statements)83.2.3Attributes113.3扩展153.3.1F2PY指令153.3.2C语言表达式163.3.3Multilineblocks174在Python中使用绑定174.1标量参数(或数值参数)184.2字符串参数194.3数组参数204.4回调参数234.5Commonblocks264.6For

3、tran90moduledata284.6.1Allocatablearrays295使用F2PY305.1命令f2py305.2Pythonmodulef2py2e346使用scipy_distutils356.1Scipy_distutils0.2.2及更高版本366.2Scipy_distutilspre0.2.2367F2PY的扩展用法377.1向F2PY产生的模块中添加自写的函数377.2修改F2PY生成模块的字典38-37-1引言F2PY——FortrantoPythoninterfacegener

4、ator——项目的目的是要在Python和Fortran语言之间提供一个连接。F2PY是一个Python包(包含一个命令行工具f2py和一个模块f2py2e),用来建立PythonC/API扩展模块,从而能够:Ø调用Fortran77/90/95外部子程序、Fortran90/95模块子程序以及C函数;Ø访问Fortran77COMMONblocks和Fortran90/95module数据,包括allocatablearrays。2三种封装方法——开始用F2PY把Fortran或C函数封装成Python包括下

5、列步骤:Ø创建签名文件,包含:对Fortran或C函数封装器的描述,也称为函数签名。在Fortranroutines的情况下,F2PY通过扫描Fortran源码,从而收集创建函数封装器所需要的所有相关信息。Ø(可选)编辑F2PY所创建的签名文件,以优化函数封装器,使之更“聪明”、更加“Python化”。ØF2PY读取签名文件,生成一个PythonC/API模块,该模块包含Fortran/C/Python绑定信息。ØF2PY编译所有的源文件,建立包含封装器的扩展模块。在建立扩展模块时,F2PY使用了scipy_d

6、istutils包,它支持大量的Fortran编译器。上述步骤可以在一条命令中执行,也可以一步一步顺序执行,其中某些步骤可以忽略或者同其它步骤组合使用,视具体情况而定。下面介绍3种使用F2PY的典型方法。以下面的Fortran77代码为例说明。CFILE:FIB1.FSUBROUTINEFIB(A,N)CCCALCULATEFIRSTNFIBONACCINUMBERSCINTEGERNREAL*8A(N)DOI=1,NIF(I.EQ.1)THENA(I)=0.0D0ELSEIF(I.EQ.2)THENA(I)=

7、1.0D0-37-ELSEA(I)=A(I-1)+A(I-2)ENDIFENDDOENDCENDFILEFIB1.F1.1快速方法把Fortran子程序FIB封装为Python函数的最快的方法是运行:F2py–cfib1.f–mfib1该命令在当前目录下建立一个扩展模块fib1.pyd。现在,在Python中就可以访问Fortran子程序FIB了:>>>importNumeric>>>importfib1>>>printfib1.fib.__doc__fib-Functionsignature:fib(a,[n

8、])Requiredarguments:a:inputrank-1array('d')withbounds(n)Optionalarguments:n:=len(a)inputint>>>a=Numeric.zeros(8,'d')>>>fib1.fib(a)>>>printa[0.1.1.2.3.5.8.13.]注:ØF2PY发现第2个参数n是第一个数组参数的维数,因为缺省情况下所有

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。