【发布时间】:2020-10-02 02:44:17
【问题描述】:
for(i=1;i<=ntype;i++)
for(cnt=0,j=1;j<=nbeta[i];j++) {
cnt++;
pos[i][cnt]=j;
if (lll[i][j]==0) {
for(kk=1;kk<=kkbeta[i];kk++)
bfunc[i][cnt][kk]=bfunctmp[i][j][kk];
llltmp[i][cnt]=lll[i][j];
} // if
if (lll[i][j]>0) {
for(kk=1;kk<=kkbeta[i];kk++)
bfunc[i][cnt][kk]=0.5*(bfunctmp[i][j ][kk]+
bfunctmp[i][j+1][kk]);
llltmp[i][cnt]=lll[i][j];
j++;
} // if
} // j,i
!我翻译的fortran代码是
do i =1,ntype
cnt =0
do j =1,nbeta(i)
cnt = cnt+1
pos(i,cnt) =j
if(lll(i,j) ==0) then
do kk =1, kkbeta(i)
bfunc(i,cnt,kk)= bfunctmp(i,j,kk)
end do !end kk
llltmp(i,cnt) =lll(i,j)
! write(*,*)i,j,lll(i,j)
! write(*,*)i,cnt,llltmp(i,cnt) ! '(5x,3I5)'
end if
! cnt1 =j
if(lll(i,j) > 0) then
do kk =1, kkbeta(i)
bfunc(i,cnt,kk)= 0.5 *(bfunctmp(i,j,kk) + bfunctmp(i,j+1,kk))
end do !end kk
llltmp(i,cnt) =lll(i,j)
j =j+1
end if
end do !end j
end do !end i
! DO 主体内的 do 变量不应出现在变量定义上下文中。 [j]
我期待尽快解决这个问题。谢谢!
【问题讨论】:
-
它不喜欢分配
j的事实,因为它用于包含DO 循环。您需要为它保留一个单独的计数器,它不会在 DO 循环中使用。 -
@TomKarzes 我尝试更改不同名称的计数器,但没有提供相同的结果。但是这里 j 连接到 pos[i][cnt]=j;