Fortran 派生类型:
Posted
技术标签:
【中文标题】Fortran 派生类型:【英文标题】:Fortran Derived Type: 【发布时间】: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 中的数组吗? 【参考方案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
指向数组中的第一辆车。它基本上充当别名。
【讨论】:
以上是关于Fortran 派生类型:的主要内容,如果未能解决你的问题,请参考以下文章