提问人:Tanus Szabo 提问时间:11/11/2023 更新时间:11/22/2023 访问量:61
如何使用 f2py 更新 python 变量
How to update python variables with f2py
问:
我正在尝试创建一个使用 fortran 进行一些计算的 python 程序,但我正在努力使用子例程更新变量值。
举一个简单的例子来说明我的意思,我有一个python脚本:r.py
import fortran_script
import numpy as np
a = np.array([10, 20, 30], np.float32)
b = 10
fortran_script.fmodule.r(a, b)
print(f"a = {a}")
print(f"b = {b}")
和一个 Fortran 脚本:r.f90
module fmodule
implicit none
contains
subroutine r(a, b)
real, intent(inout):: a(:)
integer, intent(inout) :: b
a(1:3)=a(3:1:-1)
b=b+10
write(*,*) 'a = ', a
write(*,*) 'b = ', b
end subroutine r
end module fmodule
使用 fortran 编译脚本并运行 python 代码,fortran 写入了正确的值:f2py
a = 30.0000000 20.0000000 10.0000000
b = 20
但是python没有得到整数的正确值:b
a = [30. 20. 10.]
b = 10
所以,我的问题是如何使用 f2py 正确地将值从 fortran 子例程传递和返回到 python?
答:
评论