【问题标题】:How to end fortran function without error with f2py如何使用 f2py 无错误地结束 fortran 函数
【发布时间】:2017-05-24 11:28:25
【问题描述】:

我正在用 f2py 为 python 编写一个 fortran 函数。在某种情况下,我想终止程序并返回我的输出而不会出错。不幸的是,停止程序会因错误而停止,因此,当我在 python 中调用该函数时,整个脚本都会停止。

我现在的做法是在我的函数的主循环中放置一个条件退出,如下所示:

SUBROUTINE func(x)
...
do j1=1,N_steps

if (condition) then
 exit
end if

end do
end subroutine

然而,缺点是如果条件不满足,它会在每次迭代时检查它。条件在循环中不会改变。我更喜欢这样的东西

SUBROUTINE func(x)
...

if (condition) then
 stop
end if

do j1=1,N_steps
   ...
end do
end subroutine

但随后函数确实因错误而停止。

【问题讨论】:

  • 错误信息是什么?
  • 不管我放什么。如果我把 stop 0 错误信息是 0
  • 啊,对.. 但是错误是如何传播到 Python 的?你得到一个异常还是终止进程?
  • 它终止了进程,这是我的问题,因为我无法捕捉到它。

标签: python numpy fortran f2py


【解决方案1】:

我没有找到重复的,所以:

您使用RETURN 语句从函数或子例程返回:

if (condition)  return

EXIT 终止循环或其他构造

STOP 终止整个程序

【讨论】:

  • 我很惭愧!我也没有真正在互联网上找到它,并认为它不存在。
  • 有些人实际上将return放在每个程序的末尾。我觉得那是多余的和丑陋的。
【解决方案2】:

怎么样:

SUBROUTINE func(x)
...
if (.not. condition) then    
    do j1=1,N_steps
       ...
    end do
end if
end subroutine

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2013-11-11
    相关资源
    最近更新 更多