主题:关于数组的问题
songhengxu
[专家分:0] 发布于 2010-04-26 14:08:00
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*
最后更新于:2010-04-28 12:26:00
回复列表 (共9个回复)
沙发
yeg001 [专家分:14390] 发布于 2010-04-26 19:36:00
贴EK的定义语句看看?
板凳
doctorlive [专家分:800] 发布于 2010-04-27 10:05:00
ET 是什么?
3 楼
songhengxu [专家分:0] 发布于 2010-04-27 10:13:00
DIMENSION EK(12,12)
4 楼
songhengxu [专家分:0] 发布于 2010-04-27 10:13:00
ET 是一个修正的数,也是一个常数
5 楼
yeg001 [专家分:14390] 发布于 2010-04-27 15:22:00
如果ET是一个数组那么右边算出来的是一个数组. 左边被赋值的是一个数组中的元素. 那当然就矛盾了.
你不贴定义代码是很难看问题的. 这个让别人帮你去猜就是浪费大家时间.
6 楼
songhengxu [专家分:0] 发布于 2010-04-27 23:04:00
不是啊,那都是重复的工作了啊,程序其实就是我用别的软件算出的结果,然后用fortran写出来,数组是EK,ET我说过是个常数啊。
我就是想问问您,fortran里面数组的赋值可不可以像c里面一样,单独给某个元素赋值。
7 楼
yeg001 [专家分:14390] 发布于 2010-04-27 23:21:00
看来你没有翻书... 当然可以单独赋值, 不能单独赋值要数组何用.
8 楼
songhengxu [专家分:0] 发布于 2010-04-28 12:25:00
书上都是全部赋值啊,比如A(2,2),他们都是一次写下来,例如1,2,3,4,并且需要注意的是是按列排列的,我就是随便看了下,以为应该和c差不多,但是这个程序总是报错。
我看看把完整程序发上来,您帮忙看看。
9 楼
songhengxu [专家分:0] 发布于 2010-05-06 16:55:00
但是单独赋值不行啊。。。。。。。我就没看到哪本书是单独赋值的。都是一起赋值的,
我现在是想把数组的每个元素都赋值,但是每个元素都是非常长的
例如
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???
我来回复