循环索引自行改变

时间:2014-07-09 21:55:53

标签: loops fortran

我有几百行程序(包括函数)基本上是自由形式的Fortran。有一次,我有一对嵌套的do循环,它们调用函数并将结果存储在矩阵中。但是,我不相信任何问题(虽然我可能是错的)。

在第一个do循环开始后,我立即使用另一个数组的列定义一个数组。紧接着,指数总是设置为3.我还没有在通常的地方找到任何有用的信息。我已经在下面提供了一段代码。

do i = 1,n
   print *, 'i:',i        ! Gives i = 1
   applyto = eig_vec(:,i)
   print *, i             ! Gives i = 3
   state1 = create_state(ground,applyto,state,bin_state,num_s,ns)
   first = destroy_state(ground,state1,state,bin_state,num_s,ns)
   state1 = destroy_state(ground,applyto,state,bin_state,num_s,ns)
   second = create_state(ground,state1,state,bin_state,num_s,
 1  ns)
   do j = 1,n
    bra = eig_vec(:,j)
    a_matrix(j,i) = sum(bra*first + bra*second)
    matrix(j,i) = sum(bra*first - bra*second
   end do
  end do

这是一个错误吗?我错过了一些明显的东西吗我正在使用高级优化编译代码,如果这可能是问题的根源。我对Fortran来说相对较新,所以调试标志或命令(对于gdb - 我相信我所拥有的全部内容)都是受欢迎的。

0 个答案:

没有答案