回 帖 发 新 帖 刷新版面

主题:关于数组的问题

fortran 里面在给二位数组的每个元素赋值是可否想c里面一样,例如一个12乘12的矩阵EK,其中每个元素都是多项式,我赋值可否这样写   
           EK(1,1)=a**2+b
           EK(2,1)=a**3+2*b
。。。。。。。。。。。。。。。。。。。。。
我就是这么写的,单为什么会有这样的错误。
EK(1,1)=1/(5*a**5*b**5)*2*(a**8*(156-36*v)+12*b**8*(13-3*v)+30* 
     a   a**7*b*(-13+3*v)+30*a*b**7*(-13+3*v)-120*a**5*b**3*(2+3*v)-120*a**
     a   3*b**5*(2+3*v)+10*a**6*b**2*(39+4*v)+10*a**2*b**6*(39+4*v)+
     a   5*a**4*b**4*(39+106*v))*ET 
最前面的a为续行符


E:\ractangular\rec.f(34) : Error: The shapes of the array expressions do not conform.   [EK]
      EK(1,1)=1/(5*a**5*b**5)*2*(a**8*(156-36*v)+12*b**8*(13-3*v)+30*

回复列表 (共9个回复)

沙发

贴EK的定义语句看看?

板凳


ET 是什么?

3 楼


DIMENSION EK(12,12)

4 楼


ET 是一个修正的数,也是一个常数

5 楼

如果ET是一个数组那么右边算出来的是一个数组. 左边被赋值的是一个数组中的元素. 那当然就矛盾了.

你不贴定义代码是很难看问题的. 这个让别人帮你去猜就是浪费大家时间.

6 楼


不是啊,那都是重复的工作了啊,程序其实就是我用别的软件算出的结果,然后用fortran写出来,数组是EK,ET我说过是个常数啊。
我就是想问问您,fortran里面数组的赋值可不可以像c里面一样,单独给某个元素赋值。

7 楼

看来你没有翻书...  当然可以单独赋值, 不能单独赋值要数组何用.

8 楼


书上都是全部赋值啊,比如A(2,2),他们都是一次写下来,例如1,2,3,4,并且需要注意的是是按列排列的,我就是随便看了下,以为应该和c差不多,但是这个程序总是报错。
我看看把完整程序发上来,您帮忙看看。

9 楼

但是单独赋值不行啊。。。。。。。我就没看到哪本书是单独赋值的。都是一起赋值的,
我现在是想把数组的每个元素都赋值,但是每个元素都是非常长的
例如
EK(1,1)=1/(5*a**5*b**5)*2*(a**8*(156-36*V)+12*b**8*(13-3*V)+30* 
     a**7*b*(-13+3*V)+30*a*b**7*(-13+3*V)-120*a**5*b**3*(2+3*V)-120*a**
      3*b**5*(2+3*V)+10*a**6*b**2*(39+4*V)+10*a**2*b**6*(39+4*V)+
      5*a**4*b**4*(39+106*V))*K 
这里的EK我定义是real*8 EK(12,12)
其余的a,b,v,K是这样的
             
    E=PROPS(1)
    V=PROPS(2)
    H=PROPS(3)
    L=PROPS(4)
C     GEOMETRY
C     节点坐标
      DO I=1,4
    X(1,I)=COORDS(1,I)
    X(2,I)=COORDS(2,I)
    ENDDO
C     一些基本参数
      a=X(1,2)-X(1,1)
    b=X(2,4)-X(2,1)
    C=E*H*H*H/12*(1+12*(L/H)**2)
    Y=1-V*V
    K=C/Y
这里的props和coords是一个已知的数组

那么回到问题上来,我赋值的左边 EK(1,1)是第一行第一列的元素,我赋值的右边是个数,不是数组,怎么还会出现The shapes of the array expressions do not conform???

我来回复

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