Python';s相当于;“等价性”;Fortran中的概念?
我对将旧的Fortran代码重写为Python感兴趣。该代码用于求解任何一般场变量,称之为Python';s相当于;“等价性”;Fortran中的概念?,python,porting,equivalence,Python,Porting,Equivalence,我对将旧的Fortran代码重写为Python感兴趣。该代码用于求解任何一般场变量,称之为F(速度、温度、压力等)。但要解决每个变量,我们必须将该变量的等价性定义为F 例如,类似这样的内容: 等价(F(1,1,1),TP(1,1)),(折叠(1,1,1),TPOLD(1,1)) 是否有上述概念的Python版本 据我所知,在python中无法操纵内存使用。 您可以简单地使用列表 F=[] 及 当你这样做的时候 F=FOLD F和FOLD将指向相同的数据。 我建议使用numpy和scipy
F
(速度、温度、压力等)。但要解决每个变量,我们必须将该变量的等价性定义为F
例如,类似这样的内容:
等价(F(1,1,1),TP(1,1)),(折叠(1,1,1),TPOLD(1,1))
是否有上述概念的Python版本 据我所知,在python中无法操纵内存使用。 您可以简单地使用列表
F=[]
及
当你这样做的时候
F=FOLD
F和FOLD将指向相同的数据。
我建议使用numpy和scipy来创建解算器,并使用python概念来提高效率,而不是试图模仿fortran概念。尤其是非常老的问题。(我不理解这里提到的Python概念,但有一个简短的评论:)Fortran的
等价性语句不一定使F
和TP
指向相同的数据。相反,它使(部分)T
和(部分)TP
指向同一事物。也就是说,两个数组的长度可能不同,只有重叠部分共享内存。答案的这个Python构造是否具有相同的效果?不,它没有。它将指针(可以说)从一个列表移动到另一个列表。@Michael,我不会将F
和FOLD
等同起来。相反,我必须将F
等同于T
,FOLD
等同于tell
F
和FOLD
被定义为三维数组。由于变量太多(速度、温度、压力等),很难单独求解每个变量,因此他使用了等效的思想来求解每个变量,如F(:,:,1)=T
,F(:,:,2)=v
,F(:,:,3)=p
等…我想我必须做一些类似于上面的事情,但不完全基于等价性。可能类似于F(:,:,1)=T
,F(:,:,2)=v
,F(:,:,3)=p
。然后用循环索引作为数组F
的第三维,在一个循环中求解它们。有人能告诉我上述方法是否合适,或者有更好的方法吗?
F=FOLD