回 帖 发 新 帖 刷新版面

主题:不知道怎么解决

我现在是有限元建模,因为是一种新的单元,所以现行的商用软件里面没有这种单元,然后我是用fortran自己写这个单元的刚度矩阵,然后与abaqus对接,这个刚度阵比较复杂,我用mathmatica算出来了,然后我想只是在fortran里面赋值,其实就是照抄进去,但是出现很多错误。
以前没有接触过fortran一直学的是c语言。我想是不是因为表达式过长,因为我写到一行的后面的时候都是绿的了,再后面就是红的了,然后我都给换行了。。。。。这里面coords数组和AMATRX数组都是abaqus软件接口里面的数组,所以这里没有定义。
 [color=FF0000]以下是程序,都是重复性的赋值工作,因字数限制,中间的一些赋值表达式我就没有贴上来[/color]
REAL*8 E,V,H,L,a,b,ET,EK(12,12),X(2,4)
C     MATERIAL PROPERTIES AND ELASTIC MATRIX
      E=PROPS(1)
V=PROPS(2)
H=PROPS(3)
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)
ET=E*H*H*H/12/(1-UM*UM)*(1+(L/H)**2)
C     单刚赋值
      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))*ET 


            EK(10,1)=1/(5*a**5*b**5)*
        2*(30*a**7*b*(13-3*v)+36*b**8*(-1+v)+10*a**2*b**6*(-21+2*v)+ 
       12*a**8*(-13+3*v)-30*a*b**7*(-5+3*v)- 
       10*a**6*b**2*(39+4*v)+30*a**5*b**3*(8+9*v)+ 
       15*a**3*b**5*(13+11*v)-5*a**4*b**4*(39+61*v))*ET
    EK(10,2)=1/(5*a**3*b**4)*(10*a*b**5*(7-3*v)+20*b**6*(-1+v)+ 
      12*a**6*(-13+3*v)-10*a**2*b**4*(13+4*v)+ 
      10*a**4*b**2*(-48+5*v)-15*a**5*b*(-29+7*v)+ 
      10*a**3*b**3*(27+7*v))*ET
    EK(10,3)=1/(5*a**4*b**3)*(5*a**2*b**4*(51-10*v)-36*b**6*(-1+v)+ 
      20*a**6*(1+3*v)+15*a*b**5*(-11+7*v)-10*a**3*b**3*(21+16*v)+ 
      5*a**4*b**2*(26+59*v)-70*a**5*(b+3*b*v))*ET
    EK(10,4)=-1/(5*a**5*b**5)*
       2*(36*a**8*(-1+v)+36*b**8*(-1+v)+10*a**6*b**2*(-21+2*v)+ 
      10*a**2*b**6*(-21+2*v)-30*a**7*b*(-5+3*v)- 
      30*a*b**7*(-5+3*v)-65*a**4*b*4*(3+4*v)+ 
      15*a**5*b**3*(13+11*v)+15*a**3*b**5*(13+11*v))*ET
    EK(10,5)=1/(5*a**3*b**4)*(10*a**2*b**4*(13-2*v)-36*a**6*(-1+v)- 
      20*b**6*(-1+v)+10*a*b**5*(-7+3*v)+10*a**3*b**3*(-21+5*v)+ 
      15*a**5*b*(-11+7*v)-5*a**4*b**2*(-51+22*v))*ET
    EK(10,6)=1/(5*a**4*b**3)*(-36*b**6*(-1+v)+
     40*a**6*v+5*a**2*b**4*(33+2*v)+15*a*b**5*(-9+5*v)-
      10*a**5*b*(2+15*v)-10*a**3*b**3*(12+17*v)+
     10*a**4*b**2*(7+23*v))*ET
    EK(10,7)=1/(5*a**5*b**5)*
      2*(-30*a**3*b**5*(-5+v)+36*a**8*(-1+v)-90*a*b**7*(-1+v)+ 
      36*b**8*(-1+v)+10*a**6*b**2*(-21+2*v)+ 
      40*a**2*b**6*(-3+2*v)-30*a**7*b*(-5+3v)+ 
      15*a**5*b**3*(13+5*v)-5*a**4*b**4*(39+7*v))*ET
    EK(10,8)=1/(5*a**2*b**4)*(-20*b**5+5*a**3*b**2*(33-10*v)+ 
      10*a**2*b**3*(-12+v)-36*a**5*(-1+v)+5*a*b**4*(14+v)+ 
      15*a**4*b*(-9+5*v))*ET
    EK(10,9)=1/(5*a**4*b**3)*(-10*a**3*b**3*(-9+v)-75*a*b**5*(-1+v)+ 
      36*b**6*(-1+v)-40*a**6*v+10*a**2*b**4*(-9+5*v)- 
      10*a**4*b**2*(7+5*v)+10*a**5*b*(2+9*v))*ET
    EK(10,10)=-1/(5*a**5*b**5)*
      2*(30*a**7*b*(13-3*v)-30*a**3*b**5*(-5+v)-90*a*b*7*(-1+v)+ 
      36*b**8*(-1+v)+40*a**2*b**6*(-3+2*v)+12*a**8*(-13+3*v)+ 
      60*a**5*b**3*(4+3*v)-10*a**6*b**2*(39+4*v)- 
      5*a**4*b**4*(39+16*v))*ET
    EK(11,1)=1/(5*a**3*b**4)*(a**6*(156-36*v)+40*b**6*v+
     10*a**4*b**2*(30+v)+15*a**5*b*(-23+5*v)-10*a*b**5*(2+15*v)- 
      10*a**3*b**3*(15+17*v)+10*a**2*b**4*(7+23*v))*ET
    EK(11,2)=(40*b**4+a**4*(234-54*v)+10*a**2*b**2*(56-11*v)+ 
      30*a*b**3*(-8+v)+45*a**3*b*(-13+3*v))/(15*a*b**3)*ET
    EK(11,3)=-((2*(a-b)**2*(2*b**2*v+a**2*(1+3*v)-a*(b+4*b*v)))/
    (a**2*b**2))*ET
    EK(11,4)=1/(5*a**3*b**4)*(36*a**6*(-1+v)-40*b**6*v-
     5*a**4*b**2*(33+2*v)-15*a**5*b*(-9+5*v)+10*a*b**5*(2+15*v)+ 
      10*a**3*b**3*(12+17*v)-10*a**2*b**4*(7+23*v))*ET
    EK(11,5)=(-40*b**4-30*a*b**3*(-6+v)+54*a**4*(-1+v)- 
      45*a**3*b*(-5+3*v)+5*a**2*b**2*(-61+22*v))/(15*a*b**3)*ET
    EK(11,6)=-((2*(a-b)**2*(2*a**2*v+2*b**2*v-a*(b+3*b*v)))/
    (a**2*b**2))*ET
    EK(11,7)=1/(5*a**2*b**4)*(-20*b**5-36*a**5*(-1+v)+35*a*b**4*(2+v)- 
      40*a**2*b**3*(3+2*v)+5*a**3*b**2*(33+2*v)+15*a**4*b*(-9+5*v))*ET
    EK(11,8)=(2*(45*a*b**3-10*b**4-45*a**3*b*(-2+v)+27*a**4*(-1+v)+ 
      5*a**2*b**2*(-19+4*v)))/(15*a*b**3)*ET
    EK(11,9)=(2*(a-b)**2*(-b+2*a*v))/(a*b**2)*ET
    EK(11,10)=1/(5*a**2*b**4)*(20*b**5+15*a**4*b*(23-5*v)-
     35*a*b**4(2+v)-10*a**3*b**2*(30+v)+12*a**5*(-13+3*v)+
     10*a**2*b**3*(15+8*v))*ET
    EK(11,11)=(-120*a*b**3+20*b**4+a**4*(234-54*v)+
     20*a**2*b**2*(17-2*v)+90*a**3*b*(-5+v))/(15*a*b**3)*ET
    EK(12,1)=1/(5*a**4*b**3)*(-36*b**6*(-1+v)+20*a**6*(1+3*v)+ 
      10*a**3*b**3*(-21+5*v)+5*a**4*b*2*(26+5*v)+ 
      15*a*b**5*(-11+7*v)-10*a**5*b*(7+9*v)-5*a**2*b**4*(-51+22*v))*ET
    EK(12,2)=(2*(a-b)*(-a*b**2*(-3+v)+b**3*(-1+v)-a**2*b*(3+2*v)+ 
      a**3*(1+3*v)))/(a**2*b**2)*ET
    EK(12,3)=1/(15*a**3*b)*
      2*(-60*a**3*b*(-3+v)+27*b**4*(-1+v)-45*a*b**3*(-3+2*v)+ 
      5*a**4*(-11+3*v)+10*a**2*b**2*(-23+11*v))*ET
    EK(12,4)=1/(5*a**4*b**3)*(10*a**3*b**3*(21-5*v)+10*a**5*b*(7-3*v)+ 
      20*a**6*(-1+v)+36*b**6*(-1+v)+10*a**4*b**2*(-13+2*v)- 
      15*a*b**5*(-11+7*v)+5*a**2*b**4*(-51+22*v))*ET
    EK(12,5)=(2*(a-b)**2*(2*a*b+a**2*(-1+v)+b**2*(-1+v)))/
    (a**2*b**2)*ET
    EK(12,6)=(-40*a**4-30*a**3*b*(-6+v)+54*b**4*(-1+v)- 
      45*a*b**3*(-5+3*v)+5*a**2*b**2*(-61+22*v))/(15*a**3*b)*ET
    EK(12,7)=1/(5*a**4*b**3)*(10*a**2*b**4*(15-11*v)+
     10*a**4*b**2*(13-2*v)+50*a**3*b**3*(-3+v)-20*a**6*(-1+v)+
     105*a*b**5*(-1+v)-36*b**6*(-1+v)+10*a**5*b*(-7+3*v))*ET
    EK(12,8)=(2*(a-b)*(2*a*b-b**2+a**2(-1+v)))/(a*b**2)*ET
    EK(12,9)=(40*a**4+10*a**2*b**2*(17-11*v)+30*a**3*b*(-4+v)+ 
      135*a*b**3*(-1+v)-54*b**4*(-1+v))/(15*a**3*b)*ET
    EK(12,10)=1/(5*a**4*b**3)*(-50*a**3*b**3*(-3+v)-105*a*b**5*(-1+v)+ 
      36*b**6*(-1+v)-20*a**6*(1+3*v)-5*a**4*b**2*(26+5*v)+ 
      10*a**5*b*(7+9*v)+10*a**2*b**4*(-15+11*v))*ET
    EK(12,11)=(-2*b**3+3*a*b**2*(2+v)-2*a**2*b*(3+4v)+a**3*(2+6*v))/
    (a*b**2)*ET
    EK(12,12)=-1/(15*a**3*b)*
      2*(-60*a**3*b*(-2+v)-90*a*b**3*(-1+v)+27*b**4*(-1+v)+ 
      5*a**4*(-11+3*v)+10*a**2*b**2*(-14+11*v))*ET
C     利用循环将另一半写出
      DO 10 I=1,12
    II=I+1
    DO 10 J=II,12
10    EK(I,J)=EK(J,I)
      RETURN
    END
      OPEN(20,FILE='E:\REC.DAT',STATUS='REPLACE')
      DO N=1,12
    WRITE(20,'(1X12E10.3)') EK(N,:)
    END DO
    CLOSE (20)
C     将单刚与接口刚阵对接
      DO I=1,12
    DO J=1,12
    AMATRX(I,J)=EK(I,J)
    ENDDO
    ENDDO
    RETURN
    END

E:\ractangular\rec.f(17) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: , )
      EK(1,1)=1/(5*a**5*b**5)*2*(a**8*(156-36*v)+12*b**8*(13-3*v)+30*a
----------------------------------------------------------------------^
E:\ractangular\rec.f(18) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
 **7*b*(-13+3*v)+30*a*b**7*(-13+3*v)-120*a**5*b**3*(2+3*v)-120*a**
-------------------------------------------------------------------------^
E:\ractangular\rec.f(19) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
  3*b**5*(2+3*v)+10*a**6*b**2*(39+4*v)+10*a**2*b**6*(39+4*v)+
--------------------------------------------------------------------^
E:\ractangular\rec.f(21) : Error: Syntax error, found '(' when expecting one of: * :: , <END-OF-STATEMENT> ; : ) + . - (/ [ ] /) ** / > // .LT. < ...
 EK(2,1)=(1/(5*a**3*b**4))*(a**6*(156-36*v)+10*a**4*b**2(48-5*v)- 
---------------------------------------------------------------^
E:\ractangular\rec.f(21) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
 EK(2,1)=(1/(5*a**3*b**4))*(a**6*(156-36*v)+10*a**4*b**2(48-5*v)- 
-------------------------------------------------------------------------^
E:\ractangular\rec.f(22) : Error: Syntax error, found INTEGER_CONSTANT '70' when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM TYPE COMPLEX BYTE CHARACTER ...
       70a*b**5*(1+3*v)+20*b**6*(1+3*v)+15*a**5*b*(-29+7*v)- 
-------^
E:\ractangular\rec.f(22) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
       70a*b**5*(1+3*v)+20*b**6*(1+3*v)+15*a**5*b*(-29+7*v)- 
-------------------------------------------------------------^
E:\ractangular\rec.f(23) : Error: Syntax error, found ')' when expecting one of: <END-OF-STATEMENT> ; + . - //
       10*a**3*b**3*(27+16*v)+5*a**2*b**4*(26+59*v))*ET
---------------------------------------------------^
E:\ractangular\rec.f(24) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
 EK(2,2)=-(1/(15*a*b**3))*
---------------------------------^
E:\ractangular\rec.f(25) : Error: Syntax error, found INTEGER_CONSTANT '2' when expecting one of: <LABEL> <END-OF-STATEMENT> ; BLOCK BLOCKDATA PROGRAM TYPE COMPLEX BYTE CHARACTER ...
      2(-90*a**3*b*(-4+v)+110*a**2*b**2*(-4+v)-60*a*b**3*(-4+v)+ 
------^
E:\ractangular\rec.f(25) : Error: Syntax error, found END-OF-STATEMENT when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
      2(-90*a**3*b*(-4+v)+110*a**2*b**2*(-4+v)-60*a*b**3*(-4+v)+ 
-----------------------------------------------------------------^
E:\ractangular\rec.f(26) : Error: Syntax error, found ')' when expecting one of: <END-OF-STATEMENT> ; + . - //
      9*a**4*(-13+3*v)+5*b**4*(-11+3*v))*ET
有很多类似的错误,共30个error。
[color=0000FF]如果哪位朋友有好的建议的话可以直接回复或者发到我邮箱 songhengxu@sohu.com
感激不尽[/color]

回复列表 (共1个回复)

沙发

都没有热心人啊。。。。。我自己知道了。。。。忘掉续行符了。。。。。。

我来回复

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