在过去的几天里,我似乎在编码时碰壁了。据我所知,可以在 fortran ala 中创建数组数组 可变大小数组的 Fortran 数组
type par
.... !data
integer :: location
end type par
type locations
....! data
type (par), allocatable, dimension(:) :: pars
end type locations
type (par), allocatable, dimension(:) :: all_pars
type (locations), allocatable, dimension(:) :: all_loc
.... !read numpars, numlocs from file etc
allocate(all_pars(numpars))
allocate(all_locs(numlocs))
!initialize all_pars
do n = 1:numpars
....
all_pars(n)%location = some_location
enddo
!get particles in each location
do n = 1:numlocs
allocate(all_locs(n)%pars(count(all_pars(:)%location .ne. n)))
all_locs(n)%pars = pack(all_pars, (all_pars(:)%location .ne. n)) !ERROR: An assignment of different structure types is invalid.
enddo
对于上面的堆栈溢出示例,编译器不会抱怨我的等效代码行,但是当我尝试使用该数组来存储打包函数调用的结果时,它确实存在问题。我怀疑分配函数可能没有按预期运行,但由于代码无法编译,我无法调试它....
使用包的古怪想法来自http://flibs.sourceforge.net/fortran_aspects.html,大约在页面的一半。
我正在使用 ifort 12.1.3.293 的 linux 系统上运行
任何帮助深表感谢