【问题标题】:Fortran Derived Type:Fortran 派生类型:
【发布时间】:2012-10-23 04:03:53
【问题描述】:

我被下面的例子弄糊涂了:

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) 是什么意思? mercedes(1,1,1,1)是什么意思?

【问题讨论】:

  • 你熟悉 Fortran 中的数组吗?

标签: object fortran90 derived-types


【解决方案1】:

它所做的只是声明一个维度为 (m,n,q,r) 的 car 数组。但是,您的示例代码并未定义这些尺寸。

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 指向数组中的第一辆车。它基本上充当别名。

【讨论】:

    猜你喜欢
    • 2019-03-02
    • 2013-10-07
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    相关资源
    最近更新 更多