24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1258  |  回复: 3

xiuxialy

新虫 (初入文坛)

[求助] fortran循环求助

program ex2
  implicit none
  integer::ln,Nrank,m,Nmax,i
  complex(kind=16),allocatable::a(,b(,T_mat(:,
  ln=21
  Nrank=ln
  allocate(a(ln),b(ln))
  do i=1,ln
    a(i)=2*i
    b(i)=3*i
  end do
  do m=0,Nrank
    if (m==0)then
        Nmax=Nrank
    else
        Nmax=Nrank-m+1
    end if
    allocate(T_mat(2*Nmax,2*Nmax))
    print *,m
    read(*,*)
    call Tmat(Nmax,ln,a,b,T_mat)
  end do
end
!*************************************************************!   
subroutine Tmat(Nmax,Nrank,a,b,T)
  implicit none
  integer::Nrank,Nmax,i,j
  complex(kind=16)::a(Nrank),b(Nrank),T(2*Nmax,2*Nmax)
  do i=1,2*Nmax
    do j=1,2*Nmax
      T(i,j)=0.0
      if(i==j)then
        if(j<=Nmax) then
          T(i,j)=a(i+Nrank-Nmax)
        else
          T(i,j)=b(Nrank+j-2*Nmax)
        end if
      end if
    end do
  end do
end subroutine Tmat
为什么循环中只能输出0?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pippi6

铁杆木虫 (著名写手)

工程和科学数值计算咨询

【答案】应助回帖

感谢参与,应助指数 +1
因为 read(*,*) 在等待 数据
  另外,你在do loop 里重复做 allocate 有问题,应把
    allocate(T_mat(2*Nmax,2*Nmax))
移到 do loop 之前。
后面还有 数组越界之类,问题多多,需要详细查。
2楼2013-06-29 17:12:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiuxialy

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by pippi6 at 2013-06-29 17:12:59
因为 read(*,*) 在等待 数据
  另外,你在do loop 里重复做 allocate 有问题,应把
    allocate(T_mat(2*Nmax,2*Nmax))
移到 do loop 之前。
后面还有 数组越界之类,问题多多,需要详细查。

谢谢,昨天发帖后我编了个小程序发现这个问题了,确实是这样,不过仍然很感谢!
3楼2013-06-30 11:15:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiuxialy

新虫 (初入文坛)

PROGRAM gmm01f
      implicit double precision (a-h,o-z)
      include 'gmm01f.par'
      parameter (nmp=np*(np+2),nmp0=(np+1)*(np+4)/2)
      parameter (NXMAX=3000,nangmax=181,MOR=181,ncmax=360)
      parameter (ni0=np*(np+1)*(2*np+1)/3+np*np)
      parameter (ng0=np*(2*np**3+10*np**2+19*np+5)/6)       
      parameter (nrc=4*np*(np+1)*(np+2)/3+np)
      parameter (nij=nLp*(nLp-1)/2)
      integer u,v,u0,nmax(nLp),uvmax(nLp),ind(nLp),ind2(nLp)
      double precision k,lnfacd,r0(6,nLp),x(nLp),dang(nangmax),
     +   r00(3,nLp),rsr0(NXMAX),rsi0(NXMAX),
     +   rsx0(NXMAX),px0(NXMAX),w1(np),w2(np),w3(np),w4(np),
     +   rsr(np,nLp),rsi(np,nLp),rsx(np,nLp),px(np,nLp),betar(MOR),
     +   thetr(MOR),phair(MOR),smue(4,4),mue(4,4,ncmax,nangmax),
     +   besj(0:2*np+1),besy(0:2*np+1),i11(nangmax),
     +   i21(nangmax),i22(nangmax),i12(nangmax),inat(nangmax),
     +   pol(nangmax),cscaxi(nLp),cscayi(nLp),cextxi(nLp),
     +   cextyi(nLp),cabsxi(nLp),cabsyi(nLp),cexti(nLp),cabsi(nLp),
     +   cscai(nLp),assymi(nLp),assymxi(nLp),assymyi(nLp),
     +   cprxi(nLp),cpryi(nLp),cpri(nLp),drot(nrc,nij),
     +   c0i(nLp),c1i(nLp),confg(5,nij)
      complex*16 A,B,cmz,Aj,Bj,A2,B2,Aj2,Bj2,A0,B0,ephi,ci,cin,
     +   atr0(ni0,nij),btr0(ni0,nij),atr(2,np,nmp),at(nmp),bt(nmp),
     +   atr1(ni0,nij),btr1(ni0,nij),ek(np,nij),ref(nLp),ref0(nLp),
     +   p0(nLp,nmp),q0(nLp,nmp),an(np),bn(np),aMie(nLp,np),
     +   bMie(nLp,np),B2i(nLp),
     +         as(nLp,nmp),bs(nLp,nmp),as0(nLp,nmp),bs0(nLp,nmp),
     +   asc(nLp,nmp),bsc(nLp,nmp),as1(nLp,nmp),bs1(nLp,nmp),
     +   ast(nLp,nmp),bst(nLp,nmp),asp(nLp,nmp),bsp(nLp,nmp),
     +   asv(nLp,nmp),bsv(nLp,nmp),
     +   s2x(ncmax,nangmax),s4x(ncmax,nangmax),
     +         s3y(ncmax,nangmax),s1y(ncmax,nangmax),
     +         atj(nmp),btj(nmp),py0(NXMAX),py(NXMAX),dpy(NXMAX)
      CHARACTER FLNAME*20,fileout*20,fileout1*19,fileout2*21,
     +   tailn*3,cnr2*2,cnr3*3,cnr1*1,flout*22
      COMMON/MIESUB/ twopi,pih
      common/rot/bcof(0:np+2),dc(-np:np,0:nmp)
      common/fnr/fnr(0:2*(np+2))
      common/pitau/pi(nmp0),tau(nmp0)
      common/tran/atr
      common/ig0/iga0(ni0)
      common/g0/ga0(ng0)
      common/cofmnv0/cof0(ni0)
      common/crot/cofsr(nmp)
      pih = dacos(0.d0)
      twopi = 4.d0*pih
      pione  = 2.d0*pih
      ci=dcmplx(0.d0,1.d0)
      cin=dcmplx(0.d0,-1.d0)
      gcs=0.d0
      gcv=0.d0
      idpq=0       
      OPEN(UNIT=1,FILE='C:\Users\lenovo\Desktop\gmm01f.in',status='old')
      READ(1,'(a20)') FLNAME
程序编译正确,但若在最后一行前加read(*,*),运行屏幕会停止,而加在最后一行后运行屏幕会一闪而过,帖子可能有点长,但都是定义部分,请各位大牛指点一下
4楼2013-09-05 21:08:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiuxialy 的主题更新
信息提示
请填处理意见