在Fortran中存储不同大型矩阵的最佳方法

时间:2014-11-21 04:41:42

标签: oop matrix fortran large-data

我需要将不同物体的面板信息存储到矩阵中。每个矩阵将包含一个主体的所有信息。所以N个体将导致N个矩阵。但是,主体总数将由用户输入决定。

我正在寻找一种单独创建矩阵的方法。 for循环索引----- i将是矩阵名称的一部分,因此矩阵大小可以根据特定的主体而变化。这个想法就像:

for i = 1:N      

        for j = 1: ROW

                 for k = 1: COL

                           Mat_i (j,k) = panel(j,k)
                 end
        end
end

Fortran可行吗?有没有其他方法可以达到类似的效果?

1 个答案:

答案 0 :(得分:1)

索引不能是变量名的一部分。但您可以使用用户定义的类型完成此操作:

type body_type
   real, dimension (:,:), allocatable :: panel
end type body_type

type (body_type), dimension (:), allocatable :: bodies

然后,当用户告诉您N时,分配一组实体:

allocate (bodies (N))

然后当知道数组的维度时,在i:

的循环中分配它们
allocate (bodies (i) % panel (ROW_i,COL_i))

如果实体具有其他属性(例如质量,颜色等),则可以将它们作为类型中的附加项包含在内。以这种方式对相关数量进行分组是很好的编程实践。