首页 > 解决方案 > 将 python 代码包装到 Fortran 子例程中的当前最佳方法

问题描述

目前我正在运行一个由 Fortran 90 编写的大气模型。在一些子程序中,我使用 python(主要是 tensorflow)进行了一些创新。现在我需要将此 python 代码实现到 Fortran 中,那么是否有任何包装器可以做到这一点?只是在 Fortran 子例程中调用 python?我知道F2py能够将 fortran 代码包装到 python 脚本中,即在 python 脚本中调用 fortran 子例程,但我想做相反的方式。我搜索了互联网,但找不到这样做的方法。

这是我的想法的伪代码:

SUBROUTINE demo(INPUTS, OUTPUTS)
! Definition of INPUTS
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PINPUTS
REAL, DIMENSION(:,:,:,:), INTENT(IN) :: POUTPUTS

PINPUTS = INPUTS

! using some python wrappers
POUTPUTS = python_wrapper(PINPUTS)

OUTPUTS = POUTPUTS
END SUBROUTINE demo

在python脚本“python_wrapper.py”中,我需要做:

import tensorflow as tf

# read saved model "model_saved";
# get the variables "OUTPUTS" passed from demo.f90;

prediction = model_saved.predict(OUTPUTS)

# then pass this variable "prediction" back to Fortran subroutine demo.f90;
# so that the "prediction" will be used for following calculation of the atmospheric model

请注意,将大气模型(最初在 Fortran 90 代码中)重写为 python 代码是不可能的,重新发明这将花费我很多时间。而且不可能将所有部分(包括大气模型和python脚本的创新部分)都运行到python脚本中,因为demo.f90子程序只是整个Fortran 90大气模型的一个小分支。

那么有什么包可以做到这一点吗?非常感谢!非常感谢!

标签: pythonpython-3.xfortranwrapperfortran90

解决方案


推荐阅读