草庐IT

python - Cython 和 fortran - 如何在没有 f2py 的情况下一起编译

最终更新这个问题是关于如何写一个setup.py这将编译一个直接访问FORTRAN代码的cython模块,就像C一样。这是一个相当漫长而艰巨的解决方案之旅,但完整的困惑包含在下面作为上下文。原问题我有一个扩展名,它是一个Cython文件,它设置了一些堆内存并将其传递给fortran代码,还有一个fortran文件,这是一个古老的模块,如果可以,我希望避免重新实现。.pyx文件可以很好地编译为C,但是cython编译器在.f90上卡住了带有以下错误的文件:$pythonsetup.pybuild_ext--inplacerunningbuild_extcythoningdelaunay/

python - 在 C/C++、Python 或 Fortran 中编程时输入方程式的方法

我正在编写一个代码,其中包含带有许多三角函数和其他恒等式的长数学方程式。有没有一种方法可以在latex中可视化相同的表达式,并从中生成C或Python表达式,或者反过来。如何输入和检查数学表达式以查看括号等是否在正确的位置并在latex文档中使用它们?提前致谢 最佳答案 您看过Sympy了吗?它有一个用于从python代码生成LaTeX的模块,但它实际上要多得多。Sympy,正如您可能从名称中猜到的那样,是一个用于符号计算的python库。Sympy库还包含它自己的内置解释器(cd到站点包中的sympy目录,然后在shell提示符下

python - 在 Python 中重定向 FORTRAN(通过 F2PY 调用)输出

我正在尝试找出如何重定向某些FORTRAN代码的输出,我已使用F2PY为其生成了Python接口(interface)。我试过:fromfortran_codeimportfortran_functionstdout_holder=sys.stdoutstderr_holder=sys.stderrsys.stdout=file("/dev/null","w")fortran_function()sys.stdout.close()sys.stderr.close()sys.stdout=stdout_holdersys.stderr=stderr_holder这是在Python中重定

python - 我怎样才能轻松地将 FORTRAN 代码转换为 Python 代码(真正的代码,而不是包装器)

我有一个FORTRAN数字库(我相信FORTRANIV),我想将它转换为Python代码。我想要可以在任何Python虚拟机——Windows、MacOS-X、Linux、Android上导入的真实源代码。我开始手动执行此操作,但库中大约有1,000个例程,因此这不是一个合理的解决方案。 最佳答案 FortrantoLisp存在这样的工具,或FortrantoC,甚至FortrantoJava.但是您永远不会拥有Fortran到Python的工具,原因很简单:与Fortran、Lisp或C不同,Python没有GOTO[1]。而且F

python - 是否可以使用 MPI 将数据从 Fortran 程序发送到 Python?

我正在开发一种工具来模拟波能转换器,我需要将两个软件包相互耦合。一个程序是用Fortran编写的,另一个是用C++编写的。我需要在每个时间步将信息从Fortran程序发送到C++程序。然而,在将数据发送到C++程序之前,首先需要在Python中对其进行处理。我收到了使用MPI在程序之间传输数据的提示。我现在正尝试将一个简单的字符串从Fortran代码发送到Python,但Python代码卡在接收命令处。我的Fortran代码如下所示:USEGlobalVariablesUSEMPIIMPLICITNONECHARACTER(LEN=10)::astringINTEGER::comm,r

python - 如何将 numpy 数组顺序强制为 Fortran 样式?

我使用了很多Fortran库来进行一些数学计算。所以numpy中的所有数组都需要Fortran-contiguous。目前我用numpy.asfortranarray()完成了这个.我的问题是:这是告诉numpy数组应该以Fortran格式存储的快速方法还是有更快的方法?是否可以设置一些numpy标志,以便创建的每个数组都采用Fortran样式? 最佳答案 在生成numpy.array对象时使用可选参数order='F'(默认为'C')。这就是我这样做的方式,可能会做与您正在做的相同的事情。关于第2点,我不知道设置默认顺序,但在生成

python - 如何获取先前未知的数组作为 Fortran 中函数的输出

在Python中:defselect(x):y=[]foreinx:ife!=0:y.append(e)returny作为:x=[1,0,2,0,0,3]select(x)[1,2,3]tobetranslatedintoFortran:functionselect(x,n)result(y)implicitnoneinteger::x(n),n,i,j,y(?)j=0doi=1,nif(x(i)/=0)thenj=j+1y(j)=x(i)endifenddoendfunction问题是Fortran语言:如何声明y(?)?如何声明x的预定义值如何避免维度信息n对于1,如果它被定义为y

go - 从 go 调用 fortran 库的最小示例

我正在寻找这两种语言之间FFI的最小示例,一个调用Fortran库的Go程序的非常简单的helloworld。我想强调的是,我不是在寻找外部资源、建议或教程,我只是在寻找golang中的最小代码片段,以及Fortran中的相应格式。这个网站上有很多例子:CallingCfromfortran(ifort,gfortran)callingC#fromFortranReadC++'HelloWorld'fromFortranCallGofunctionsfromC从golang调用CCallingHaskellFFIFunctionPtrsfromCCallingpythonfromfor

linux - 是否有适用于 Linux 的高性能 Fortran 编译器?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭2年前。Improvethisquestion现在我使用Sun-Studio,但Oracle对它要价高得离谱。是否有用于Linux的高性能Fortran编译器可以与Sun-Studio的性能相媲美?GNU的Fortran编译器要慢得多。

linux - Fortran 中的共享库,最小示例不起作用

我想了解如何在Linux下使用Fortran动态创建和链接共享库。我有两个文件:第一个,liblol.f90,如下所示:subroutinefunc()print*,'lol!'endsubroutinefunc我用gfortran-shared-fPIC-oliblol.soliblol.f90编译它第二个文件main.f90如下所示:programmaincallfunc()endprogrammain当我现在尝试使用命令gfortran-L编译它时。-llolmain.f90-omain,我收到以下错误:/tmp/ccIUIhcE.o:Infunction`MAIN__':mai