在派生类型中分配数组

时间:2014-03-08 15:38:21

标签: fortran fortran90

我有类似以下的内容

 type BOPinfo

     double precision, allocatable :: realQ4(:,:) realQ6(:,:)

  end type BOPinfo

我已经能够通过谷歌确定当元素是真实的或整数时如何初始化派生类型中的元素。但是,我无法弄清楚fortran如何让我告诉BOPinfo类型的变量realQ4和realQ6的数组大小,以及如何将它们初始化为零。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

对于Fortran 95(使用TR)+ 1分配和归零各个组件:

type(BOPinfo) test
integer n1, n2, m1, m2

allocate (test%realQ4(n1,m1), test%realQ6(n2,m2))
test%realQ4 = 0
test%realQ6 = 0

在Fortran 2003下,动态大小还有其他方法,包括参数化派生类型(目前编译器支持有限)。

答案 1 :(得分:1)

也可以使用structure constructor来创建派生类型值表达式。构造函数是一个与类型名称相同的函数。

variable = BOPinfo(array1, array2)

其中array1和array2是具有适当排名的数组。如果您希望组件为null(),也可以传递not allocated

在Fortran 2008中,您甚至可以省略可分配的组件,它们的状态为not allocated