王二小 发表于 2018-5-1 17:13:44

我是新手,请问各位大神们,这个子程序是在做的什么循...

SUBROUTINE multi_to_single(multi_array,simple_array)
USE mytype; USE params
IMPLICIT NONE
INTEGER      :: int_auxil
INTEGER      :: mm_sub, nn_sub
COMPLEX (dp) :: multi_array(-4:1,-4:num_max)
COMPLEX (dp) :: simple_array(1:length_coeff)
!
int_auxil = 1
DO nn_sub = -4, 1
       DO mm_sub = -4,num_max         
               simple_array(int_auxil)=multi_array(nn_sub,mm_sub)      
               int_auxil = int_auxil+1
       END DO
END DO
   
!
return
END SUBROUTINE multi_to_single

王二小 发表于 2018-5-1 21:19:58

帮忙看一下呀

li913 发表于 2018-5-1 21:52:52

二维转为一维存储。直接用reshape函数就是。

王二小 发表于 2018-5-2 00:22:59

li913 发表于 2018-5-1 21:52
二维转为一维存储。直接用reshape函数就是。
恩恩,谢谢。我这个子程序下边还有一个一维转二维的子程序,请问这样转来转去是干嘛呢?您看看这两个
SUBROUTINE multi_to_single(multi_array,simple_array)
USE mytype; USE params
IMPLICIT NONE
INTEGER      :: int_auxil
INTEGER      :: mm_sub, nn_sub
COMPLEX (dp) :: multi_array(-4:1,-4:num_max)
COMPLEX (dp) :: simple_array(1:length_coeff)
!
int_auxil = 1
DO nn_sub = -4, 1
       DO mm_sub = -4,num_max         
               simple_array(int_auxil)=multi_array(nn_sub,mm_sub)      
               int_auxil = int_auxil+1
       END DO
END DO

!
return
END SUBROUTINE multi_to_single
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SUBROUTINE single_to_multi(simple_array,multi_array)
USE mytype; USE params
IMPLICIT NONE
INTEGER      :: int_auxil
INTEGER      :: mm_sub, nn_sub
COMPLEX (dp) :: simple_array(1:length_coeff)
COMPLEX (dp) :: multi_array(-4:1,-4:num_max)
!
int_auxil = 1
DO nn_sub = -4, 1
    DO mm_sub = -4,num_max
         multi_array(nn_sub,mm_sub)=simple_array(int_auxil)
               int_auxil = int_auxil+1
   END DO
END DO   
return
END SUBROUTINE single_to_multi

王二小 发表于 2018-5-2 05:37:53

li913 发表于 2018-5-1 21:52
二维转为一维存储。直接用reshape函数就是。

是不是多维输入,转一维进行计算,使计算变得简便,算完了再转多维输出,是这样吗?

fcode 发表于 2018-5-2 08:05:13

有很多可能会让程序员有这种想法。比如它有个函数只识别二维输入,但它其他部分的计算都用的一维。
又不想改代码,嫌麻烦,就转一下。

实际上,reshape完全可以代替这俩函数。
这个程序作者为啥这么做?一个原因可能是这代码很老,当时还没有 reshape 函数。二个原因可能是作者对语法函数也不熟悉
页: [1]
查看完整版本: 我是新手,请问各位大神们,这个子程序是在做的什么循...