我是新手,请问各位大神们,这个子程序是在做的什么循...
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 帮忙看一下呀 二维转为一维存储。直接用reshape函数就是。 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
li913 发表于 2018-5-1 21:52
二维转为一维存储。直接用reshape函数就是。
是不是多维输入,转一维进行计算,使计算变得简便,算完了再转多维输出,是这样吗? 有很多可能会让程序员有这种想法。比如它有个函数只识别二维输入,但它其他部分的计算都用的一维。
又不想改代码,嫌麻烦,就转一下。
实际上,reshape完全可以代替这俩函数。
这个程序作者为啥这么做?一个原因可能是这代码很老,当时还没有 reshape 函数。二个原因可能是作者对语法函数也不熟悉
页:
[1]