Fortran派生类型:

时间:2012-11-02 13:28:25

标签: object fortran90 derived-types

我对以下示例感到困惑:

TYPE :: car 
    real :: x,  u ! position, velocity
    real :: y,  v ! 
    real :: z,  w !  
    real,dimension(3) :: uvw_0    ! initial uvw
END TYPE

TYPE (car), pointer:: mercedes
TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 

它看起来像是对象的实现,但

是什么
TYPE (car), DIMENSION(m,n,q,r), TARGET :: mercedes_ay 

对TYPE(car)做什么 - DIMENSION(m,n,q,r)引用了哪些变量? mercedes_ay(1,1,1,1)是什么意思?梅赛德斯(1,1,1,1)是什么意思?

1 个答案:

答案 0 :(得分:6)

它正在做的是声明一个car维的数组(m,n,q,r)。但是,这些维度不是由您的示例代码定义的。

mercedes_ay(1,1,1,1)是阵列中的第一辆车。因此mercedes_ay(1,1,1,1)%x是第一辆车的x位置。 mercedes_ay(1,1,1,1)%uvw_0(1)是第一辆车的初始u。等。

mercedes(1,1,1,1)是不可能的,因为它没有DIMENSION,它是一个标量。所以它只能指向一个标量。相反,它可能会被用作:

mercedes => mercedes_ay(1,1,1,1)

这意味着您将mercedes指向阵列中的第一辆车。它基本上是一个别名。