回 帖 发 新 帖 刷新版面

主题:提示说数组越界,找不出哪里越界了? 求帮忙。。。。

    program main

    parameter(pi=3.1415926,e=2.1e9,r=0.01,dx=0.1,p=7.85e9,dt=0.15)
    real k(10,10),m(10,10),b(10,10),f(25,10),u(27,10)
    real a1,b1
    integer a(2,2)
    integer i,j
    real area,gxs,zxs,g1,g2

c波速、总长度、横截面积
    c=sqrt(e/p)
    l=(10-1)*dx/c+2
    area=pi*(r/2)*(r/2)

    gxs=(e*area)/dx
    zxs=(p*area*dx)/2
    g1=gxs
    g2=(-1)*gxs

      data((k(i,j), i=1,10),j=1,10) /100*0/
      a(1,1)=g1
    a(1,2)=g2
    a(2,1)=g2
    a(2,2)=g1
      do i=1,10
     k(i,i)=k(i,i)+a(1,1)
      
     enddo
     do j=2,9
        k(j,j)=k(j,j)+a(2,2)
       enddo
    do i=1,9
      k(i,i+1)=a(1,2)
      k(i+1,i)=a(1,2)
     enddo

    data((m(i,j), i=1,10),j=1,10) /100*0/
    do i=1,10
     m(i,i)=m(i,i)+zxs
      
     enddo


      a1=2/zxs
      b1=(dt*dt)/zxs      
        b=a1*m-b1*k
    data((f(j,i), i=2,10),j=1,25) /225*0/


            do j=1,25
               do i=1,10
       u(0,i)=0
       u(1,i)=0
    
      f(j,1)=y(j*dt)

    u(j+1,i)=b(i,i)*u(j,i)+b(i,i+1)*u(j,i+1)-u(j-1,i)+f(j,i)

    print*,u(j+1,i)   
           enddo
       enddo
    
    

    end
中间的子函数y(x)的程序为:
    function y(x)
    real x,pi,s
    s=1.0e4
    pi=3.1415926
    if((x.gt.0).and.(x.le.2))then
    y=s*sin(pi*x/2)
    else
    y=0
    endif
    end
求各位帮忙!!!

回复列表 (共3个回复)

沙发

u(0,i)=0   ! array bound exceed

板凳


data (u(0,i),i=1,10)/10*0/
       data (u(-1,i),i=1,10)/10*0/
    那改成这样赋值,可不可以?

3 楼


real k(10,10),m(10,10),b(10,10),f(25,10),u(-1:25,1:11)

我来回复

您尚未登录,请登录后再回复。点此登录或注册