Python调用Fortran的三种形式

Posted 大作家佚名

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python调用Fortran的三种形式相关的知识,希望对你有一定的参考价值。

Python调用Fortran的三种形式

1. 简介

在一些研究领域很多经典算法和工具都由上古语言Fortran编写,而这部分代码又没有对应的C/C++和Python版本。因此,掌握Python语言调用Fortran程序这一技能,在一些研究领域有助于我们站在巨人的肩上看的更远。

Python调用Fortran可以总结为三种:(1)于 F2PY的f2py调用Fortran;(2)使用动态链接库;(3)利用Python的os包调用Fortran

2. Python调用Fortran的三种方法

2.1 计算圆面积的Fortran函数

接下来将用下面的函数进行演示。这里的例子是返回一个参数的,返回多个参数以及修改参数的Fortran用法,可以参考:Fortran - 程序( Procedures)

function area_of_circle (r)  
! function result     
implicit none      
   ! dummy arguments        
   real :: area_of_circle   
   ! local variables 
   real :: r     
   real :: pi
   pi = 4 * atan (1.0)     
   area_of_circle = pi * r**2  
end function area_of_circle

2.2 基于 F2PY的f2py调用Fortran

新建circle.f90后,在终端中运行如下代码:

python -m numpy.f2py -c circle.f95 -m circle

具体步骤如下图,然后可以看到生成的circle.cpython-36m-x86_64-linux-gnu.so


在Python中,可以直接import上面的函数名

import circle
print(circle.__doc__)
print(circle.area_of_circle(2))


注意上面的__doc __是f2py自动生成的,可以看到fortran模块里面包含几个函数,每个函数里面还可以再调用doc看到接口参数类型。

2.3 使用动态链接库调用Fortran

2.4 利用Python的os包调用Fortran

参考
Python与Fortran混合编程
python调用fortran的3种形式【f2py,动态链接库,os命令】

以上是关于Python调用Fortran的三种形式的主要内容,如果未能解决你的问题,请参考以下文章

怎样从 C 中调用 FORTRAN (C++, BASIC, Pascal, Ada, LISP) 的函数?反之亦然?

fortran如何在一个module中调用其他module的变量?

在 Fortran 派生类型中保存指向 C 函数的指针

python子进程

java传参调用fortran的exe可执行文件

使用 Fortran 中的内存数据调用 C 代码