gfortran编译错误错误:[关闭]的不可分类声明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gfortran编译错误错误:[关闭]的不可分类声明相关的知识,希望对你有一定的参考价值。

我正在编写Fortran代码来输入Abaqus中的用户子程序。这个示例代码用于UEL示例。

我想为超弹性参数制作UEL子程序。我是第一次做Fortran,所以我无法解决错误。

这是我的代码。错误是Unclassifiable语句,但我不知道Fortran方法。

    c
c Blankholder force contro element for deep drawing applications
c
     subroutine uel(rhs, amatrx, svars, energy, ndofel, nrhs, nsvars,
    1 props, nprops, coords, mcrd, nnode, u, du, v, a, jtype, time, dtime,
    2 kstep, kinc, jelem, params, nload, jdltyp, adlmag, predef, npredf,
    3 lfoags, mlvarx, ddlmag, mdload, pnewdt, jprops, njprop, period)
c
     include 'aba_param.inc'
c
     dimension rhs(mlvarx, *), amatrx(ndofel, ndofel), svars(*), props(*),
    1 energy(7), coord(mcrd, nnode), u(ndofel), du(mlvarx, *), v(ndofel),
    2 a(ndofel), time(2), params(*), jdltyp(mdload, *), adlmag(mdload, *),
    4 ddlag(mdload, *), predef(2, npredf, nnode), lflags(4), jprops(*)
c
c Pick up the input data
c
     sPunch         = props(1)      !Spring stiffness
     fPunchTarget = props(2)        ! Target punch force
     fHolderInit    = props(3)      ! Initial blankholder force
     fractHolder   = props(4)       ! Fractional change allowed
     tolPunch       = props(5)      ! Tolereance on punch force
c
c Calculate the punch force
c
     fPunchNew = sPunch * (u(1)-u(2))
c
c Generate force vector and
c
     rhs(1,1) = -fPunchNew
     rhs(2,1) = +fpunchNew
c
c Generate stiffness matris
c
     amatrx(1,1) = +sPunch
     amatrx(1,2) = -sPunch
     amatrx(2,1) = -sPunch
c
c The holder force is only applied during steps 2 and 3
c
     if(kstep.eq.2) teh
c
c Ramp the punch force to the desired starting value
c
    fHolder = time(1)*fHolderInit/period
    svars(2) = fHolder
    rhs(3,1) = -fHolder
    else if(kstep.eq.3) then
c
c Adjust the punch force to control the blankholder force
c
c Values of state variables at start of increment
c
    fPunchOld = svars(1)    !Punch force
    fHolderOld = svars(2)   !Blankholder force
    fPunchMax = svar(3) !Maximum blankholder force
c
c Allowed change in blankholer force
c
    dfHolderMax = fractHolder * fHolderOld
c
c Allowed tolerance in the targetforce
c
    dfPunchTol = tolPunch * fPunchTarget
c
c Calculate the holder force
c
    if (fPunchOld.gt.fPunchTarget+dfPunchTol) then
      fHolerNew = fHolderOld - dfHolderMax  !Decrease
    else if(fPunchMax.lt.fPunchTarget+dfPunchTol .or.
     1      fPunchOld.gt.fPunchTarget-dfPunchTol) then
      fHolderNew = fHolderOld
    else
      fHolderNew = fHolderOld + dfHolderMax !Increase
    end if
c
c Generate holer force vector
c
    rhs(3,1) = -fHolderNew
c
c Update state variables
c
    svars(1) = fPunchNew
    svars(2) = fPHolderNew
    svars(3) = max(fPunchMax, fPunchNew)
     end if
c
     return 
     end

这是我的错误。

my_subroutine.for:4:6:

      subroutine uel(rhs, amatrx, svars, energy, ndofel, nrhs, nsvars,
      1
Error: Bad continuation line at (1)
my_subroutine.for:4:6:

      subroutine uel(rhs, amatrx, svars, energy, ndofel, nrhs, nsvars,
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:5:6:

     1 props, nprops, coords, mcrd, nnode, u, du, v, a, jtype, time, dtime,
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:6:6:

     2 kstep, kinc, jelem, params, nload, jdltyp, adlmag, predef, npredf,
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:7:6:

     3 lfoags, mlvarx, ddlmag, mdload, pnewdt, jprops, njprop, period)
      1
Error: Unclassifiable statement at (1)
aba_param.inc:17:57:

       PARAMETER(IALLD=0,IRMMD=4,NEMPTY=0,ISPIND=2,IGRAD=0)
                                                         1
Error: Unexpected characters in PARAMETER statement at (1)
my_subroutine.for:12:6:

     1 energy(7), coord(mcrd, nnode), u(ndofel), du(mlvarx, *), v(ndofel),
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:13:6:

     2 a(ndofel), time(2), params(*), jdltyp(mdload, *), adlmag(mdload, *),
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:14:6:

     4 ddlag(mdload, *), predef(2, npredf, nnode), lflags(4), jprops(*)
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:46:6:

  svars(2) = fHolder
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:47:6:

  rhs(3,1) = -fHolder
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:48:5:

     else if(kstep.eq.3) then
     1
Error: Non-numeric character in statement label at (1)
my_subroutine.for:48:5:

     else if(kstep.eq.3) then
     1
Error: Unclassifiable statement at (1)
my_subroutine.for:79:6:

  rhs(3,1) = -fHolderNew
      1
Error: Unclassifiable statement at (1)
my_subroutine.for:83:11: Error: 'svars' at (1) is not a variable
my_subroutine.for:84:11: Error: 'svars' at (1) is not a variable
my_subroutine.for:85:11: Error: 'svars' at (1) is not a variable
f951.exe: Error: Unexpected end of file in 'my_subroutine.for'

如何解决此错误并使用Fortran方法?

答案

您正在使用所谓的“固定形式”Fortran,其中第6列中的字符表示线条延续,请参阅Fortran Wiki page about this

从错误中,如果问题中的格式正确,您显然会错过每行开头的一个空格(错误位于该行的字符6处)。

确保“延续字符”(此处为1,2和3)位于第六列。

您还可以决定切换到“自由格式”Fortran,其中延续线的表示方式不同。

以上是关于gfortran编译错误错误:[关闭]的不可分类声明的主要内容,如果未能解决你的问题,请参考以下文章

浮点错误 gfortran

编译 RcppArmadillo 时遇到问题 - 未找到库 gfortran

编译使用带有gfortran的英特尔MKL模块的代码

C++ 编译时提示:不能将参数 1 从“char [6]”转换为“LPCTSTR”

用于大多数高性能生产代码的 gfortran 标志 [关闭]

将 gfortran 与英特尔 MKL 链接