在macOS Big Sur上安装软件包“pyplatefit”时失败

2024-10-01 09:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

当我使用“python setup.py”安装软件时,我得到一个错误,如下所示

Error: Rank mismatch in argument 'c' at (1) (rank-1 and scalar)
error: Command "/usr/local/bin/gfortran -Wall -g -fno-second-underscore -arch x86_64 -fPIC -O3 -funroll-loops -Ibuild/src.macosx-10.9-x86_64-3.7/build/src.macosx-10.9-x86_64-3.7/pyplatefit -I/Users/zhangyunhao/anaconda3/lib/python3.7/site-packages/numpy/core/include -I/Users/zhangyunhao/anaconda3/include/python3.7m -c -c pyNNLS/nnls_burst.f90 -o build/temp.macosx-10.9-x86_64-3.7/pyNNLS/nnls_burst.o" failed with exit status 1

我在github.com/ElmerCSC/elmerfem/issues/231中发现了一个类似的错误,表明该软件和我的gfortran版本不匹配。但我仍然不知道如何用从自制软件安装的gfortran 10.2解决这个问题

文件pyNNLS/nnls_burst.f90

double precision FUNCTION DIFF(X,Y)
!
!  Function used in tests that depend on machine precision.
!
!  The original version of this code was developed by
!  Charles L. Lawson and Richard J. Hanson at Jet Propulsion Laboratory
!  1973 JUN 7, and published in the book
!  "SOLVING LEAST SQUARES PROBLEMS", Prentice-HalL, 1974.
!  Revised FEB 1995 to accompany reprinting of the book by SIAM.
!
      double precision :: X, Y
      DIFF=X-Y
      return
      end


SUBROUTINE G1 (A,B,CTERM,STERM,SIG)
!
!     COMPUTE ORTHOGONAL ROTATION MATRIX..
!
!  The original version of this code was developed by
!  Charles L. Lawson and Richard J. Hanson at Jet Propulsion Laboratory
!  1973 JUN 12, and published in the book
!  "SOLVING LEAST SQUARES PROBLEMS", Prentice-HalL, 1974.
!  Revised FEB 1995 to accompany reprinting of the book by SIAM.
!
!     COMPUTE.. MATRIX   (C, S) SO THAT (C, S)(A) = (SQRT(A**2+B**2))
!                        (-S,C)         (-S,C)(B)   (   0          )
!     COMPUTE SIG = SQRT(A**2+B**2)
!        SIG IS COMPUTED LAST TO ALLOW FOR THE POSSIBILITY THAT
!        SIG MAY BE IN THE SAME LOCATION AS A OR B .
!     ------------------------------------------------------------------
      double precision :: A, B, CTERM, ONE, SIG, STERM, XR, YR, ZERO
      parameter (ONE = 1.0d0, ZERO = 0.0d0)
!     ------------------------------------------------------------------
      if (abs(A) .gt. abs(B)) then
         XR=B/A
         YR=sqrt(ONE+XR**2)
         CTERM=sign(ONE/YR,A)
         STERM=CTERM*XR
         SIG=abs(A)*YR
         return
      endif

      if (B .ne. ZERO) then
         XR=A/B
         YR=sqrt(ONE+XR**2)
         STERM=sign(ONE/YR,B)
         CTERM=STERM*XR
         SIG=abs(B)*YR
         return
      endif

      SIG=ZERO
      CTERM=ZERO
      STERM=ONE
      return

      end SUBROUTINE


!   SUBROUTINE H12 (MODE,LPIVOT,L1,M,U,IUE,UP,C,ICE,ICV,NCV)
!
!  CONSTRUCTION AND/OR APPLICATION OF A SINGLE
!  HOUSEHOLDER TRANSFORMATION..     Q = I + U*(U**T)/B
!
!  The original version of this code was developed by
!  Charles L. Lawson and Richard J. Hanson at Jet Propulsion Laboratory
!  1973 JUN 12, and published in the book
!  "SOLVING LEAST SQUARES PROBLEMS", Prentice-HalL, 1974.
!  Revised FEB 1995 to accompany reprinting of the book by SIAM.
!     ------------------------------------------------------------------
!                     Subroutine Arguments
!
!     MODE   = 1 OR 2   Selects Algorithm H1 to construct and apply a
!            Householder transformation, or Algorithm H2 to apply a
!            previously constructed transformation.
!     LPIVOT IS THE INDEX OF THE PIVOT ELEMENT.
!     L1,M   IF L1 .LE. M   THE TRANSFORMATION WILL BE CONSTRUCTED TO
!            ZERO ELEMENTS INDEXED FROM L1 THROUGH M.   IF L1 GT. M
!            THE SUBROUTINE DOES AN IDENTITY TRANSFORMATION.
!     U(),IUE,UP    On entry with MODE = 1, U() contains the pivot
!            vector.  IUE is the storage increment between elements.
!            On exit when MODE = 1, U() and UP contain quantities
!            defining the vector U of the Householder transformation.
!            on entry with MODE = 2, U() and UP should contain
!            quantities previously computed with MODE = 1.  These will
!            not be modified during the entry with MODE = 2.
!     C()    ON ENTRY with MODE = 1 or 2, C() CONTAINS A MATRIX WHICH
!            WILL BE REGARDED AS A SET OF VECTORS TO WHICH THE
!            HOUSEHOLDER TRANSFORMATION IS TO BE APPLIED.
!            ON EXIT C() CONTAINS THE SET OF TRANSFORMED VECTORS.
!     ICE    STORAGE INCREMENT BETWEEN ELEMENTS OF VECTORS IN C().
!     ICV    STORAGE INCREMENT BETWEEN VECTORS IN C().
!     NCV    NUMBER OF VECTORS IN C() TO BE TRANSFORMED. IF NCV .LE. 0
!            NO OPERATIONS WILL BE DONE ON C().
!     ------------------------------------------------------------------
SUBROUTINE H12 (MODE,LPIVOT,L1,M,U,IUE,UP,C,ICE,ICV,NCV)
!     ------------------------------------------------------------------
      integer :: I, I2, I3, I4, ICE, ICV, INCR, IUE, J
      integer :: L1, LPIVOT, M, MODE, NCV
      double precision :: B, C(*), CL, CLINV, ONE, SM
!     double precision U(IUE,M)
      double precision :: U(IUE,*)
      double precision :: UP
      parameter (ONE = 1.0d0)
!     ------------------------------------------------------------------
      IF (0.GE.LPIVOT.OR.LPIVOT.GE.L1.OR.L1.GT.M) RETURN
      CL=abs(U(1,LPIVOT))
      IF (MODE.EQ.2) GO TO 60
!                            ****** CONSTRUCT THE TRANSFORMATION. ******
          DO 10 J=L1,M
   10     CL=MAX(abs(U(1,J)),CL)
      IF (CL) 130,130,20
   20 CLINV=ONE/CL
      SM=(U(1,LPIVOT)*CLINV)**2
          DO 30 J=L1,M
   30     SM=SM+(U(1,J)*CLINV)**2
      CL=CL*SQRT(SM)
      IF (U(1,LPIVOT)) 50,50,40
   40 CL=-CL
   50 UP=U(1,LPIVOT)-CL
      U(1,LPIVOT)=CL
      GO TO 70
!            ****** APPLY THE TRANSFORMATION  I+U*(U**T)/B  TO C. ******
!
   60 IF (CL) 130,130,70
   70 IF (NCV.LE.0) RETURN
      B= UP*U(1,LPIVOT)
!                       B  MUST BE NONPOSITIVE HERE.  IF B = 0., RETURN.
!
      IF (B) 80,130,130
   80 B=ONE/B
      I2=1-ICV+ICE*(LPIVOT-1)
      INCR=ICE*(L1-LPIVOT)
          DO 120 J=1,NCV
          I2=I2+ICV
          I3=I2+INCR
          I4=I3
          SM=C(I2)*UP
              DO 90 I=L1,M
              SM=SM+C(I3)*U(1,I)
   90         I3=I3+ICE
          IF (SM) 100,120,100
  100     SM=SM*B
          C(I2)=C(I2)+SM*UP
              DO 110 I=L1,M
              C(I4)=C(I4)+SM*U(1,I)
  110         I4=I4+ICE
  120     CONTINUE
  130 RETURN
      END SUBROUTINE


!     SUBROUTINE NNLS  (A,MDA,M,N,B,X,RNORM,W,ZZ,INDEX,MODE)
!
!  Algorithm NNLS: NONNEGATIVE LEAST SQUARES
!
!  The original version of this code was developed by
!  Charles L. Lawson and Richard J. Hanson at Jet Propulsion Laboratory
!  1973 JUN 15, and published in the book
!  "SOLVING LEAST SQUARES PROBLEMS", Prentice-HalL, 1974.
!  Revised FEB 1995 to accompany reprinting of the book by SIAM.
!
!     GIVEN AN M BY N MATRIX, A, AND AN M-VECTOR, B,  COMPUTE AN
!     N-VECTOR, X, THAT SOLVES THE LEAST SQUARES PROBLEM
!
!                      A * X = B  SUBJECT TO X .GE. 0
!     ------------------------------------------------------------------
!                     Subroutine Arguments
!
!     A(),MDA,M,N     MDA IS THE FIRST DIMENSIONING PARAMETER FOR THE
!                     ARRAY, A().   ON ENTRY A() CONTAINS THE M BY N
!                     MATRIX, A.           ON EXIT A() CONTAINS
!                     THE PRODUCT MATRIX, Q*A , WHERE Q IS AN
!                     M BY M ORTHOGONAL MATRIX GENERATED IMPLICITLY BY
!                     THIS SUBROUTINE.
!     B()     ON ENTRY B() CONTAINS THE M-VECTOR, B.   ON EXIT B() CON-
!             TAINS Q*B.
!     X()     ON ENTRY X() NEED NOT BE INITIALIZED.  ON EXIT X() WILL
!             CONTAIN THE SOLUTION VECTOR.
!     RNORM   ON EXIT RNORM CONTAINS THE EUCLIDEAN NORM OF THE
!             RESIDUAL VECTOR.
!     W()     AN N-ARRAY OF WORKING SPACE.  ON EXIT W() WILL CONTAIN
!             THE DUAL SOLUTION VECTOR.   W WILL SATISFY W(I) = 0.
!             FOR ALL I IN SET P  AND W(I) .LE. 0. FOR ALL I IN SET Z
!     ZZ()     AN M-ARRAY OF WORKING SPACE.
!     INDEX()     AN INTEGER WORKING ARRAY OF LENGTH AT LEAST N.
!                 ON EXIT THE CONTENTS OF THIS ARRAY DEFINE THE SETS
!                 P AND Z AS FOLLOWS..
!
!                 INDEX(1)   THRU INDEX(NSETP) = SET P.
!                 INDEX(IZ1) THRU INDEX(IZ2)   = SET Z.
!                 IZ1 = NSETP + 1 = NPP1
!                 IZ2 = N
!     MODE    THIS IS A SUCCESS-FAILURE FLAG WITH THE FOLLOWING
!             MEANINGS.
!             1     THE SOLUTION HAS BEEN COMPUTED SUCCESSFULLY.
!             2     THE DIMENSIONS OF THE PROBLEM ARE BAD.
!                   EITHER M .LE. 0 OR N .LE. 0.
!             3    ITERATION COUNT EXCEEDED.  MORE THAN 3*N ITERATIONS.
!
!     ------------------------------------------------------------------
SUBROUTINE NNLS (A,MDA,M,N,B,X,RNORM,W,ZZ,INDEX,MODE)
!     ------------------------------------------------------------------
      integer :: I, II, IP, ITER, ITMAX, IZ, IZ1, IZ2, IZMAX, J, JJ, JZ, L
      integer :: M, MDA, MODE,N, NPP1, NSETP, RTNKEY
!     integer INDEX(N)
!     double precision A(MDA,N), B(M), W(N), X(N), ZZ(M)
      integer :: INDEX(*)
      double precision :: A(MDA,*), B(*), W(*), X(*), ZZ(*)
      double precision :: ALPHA, ASAVE, CC, DIFF, DUMMY, FACTOR, RNORM
      double precision :: SM, SS, T, TEMP, TWO, UNORM, UP, WMAX
      double precision :: ZERO, ZTEST
      parameter (FACTOR = 0.01d0)
      parameter (TWO = 2.0d0, ZERO = 0.0d0)
!     ------------------------------------------------------------------
      MODE=1
      IF (M .le. 0 .or. N .le. 0) then
         MODE=2
         RETURN
      endif
      ITER=0
      ITMAX=3*N
!
!                    INITIALIZE THE ARRAYS INDEX() AND X().
!
          DO 20 I=1,N
          X(I)=ZERO
   20     INDEX(I)=I
!
      IZ2=N
      IZ1=1
      NSETP=0
      NPP1=1
!                             ******  MAIN LOOP BEGINS HERE  ******
   30 CONTINUE
!                  QUIT IF ALL COEFFICIENTS ARE ALREADY IN THE SOLUTION.
!                        OR IF M COLS OF A HAVE BEEN TRIANGULARIZED.
!
      IF (IZ1 .GT.IZ2.OR.NSETP.GE.M) GO TO 350
!
!         COMPUTE COMPONENTS OF THE DUAL (NEGATIVE GRADIENT) VECTOR W().
!
      DO 50 IZ=IZ1,IZ2
         J=INDEX(IZ)
         SM=ZERO
         DO 40 L=NPP1,M
   40        SM=SM+A(L,J)*B(L)
         W(J)=SM
   50 continue
!                                   FIND LARGEST POSITIVE W(J).
   60 continue
      WMAX=ZERO
      DO 70 IZ=IZ1,IZ2
         J=INDEX(IZ)
         IF (W(J) .gt. WMAX) then
            WMAX=W(J)
            IZMAX=IZ
         endif
   70 CONTINUE
!
!             IF WMAX .LE. 0. GO TO TERMINATION.
!             THIS INDICATES SATISFACTION OF THE KUHN-TUCKER CONDITIONS.
!
      IF (WMAX .le. ZERO) go to 350
      IZ=IZMAX
      J=INDEX(IZ)
!
!     THE SIGN OF W(J) IS OK FOR J TO BE MOVED TO SET P.
!     BEGIN THE TRANSFORMATION AND CHECK NEW DIAGONAL ELEMENT TO AVOID
!     NEAR LINEAR DEPENDENCE.
!
      ASAVE=A(NPP1,J)
      CALL H12 (1,NPP1,NPP1+1,M,A(1,J),1,UP,DUMMY,1,1,0)
      UNORM=ZERO
      IF (NSETP .ne. 0) then
          DO 90 L=1,NSETP
   90       UNORM=UNORM+A(L,J)**2
      endif
      UNORM=sqrt(UNORM)
      IF (DIFF(UNORM+ABS(A(NPP1,J))*FACTOR,UNORM) .gt. ZERO) then
!
!        COL J IS SUFFICIENTLY INDEPENDENT.  COPY B INTO ZZ, UPDATE ZZ
!        AND SOLVE FOR ZTEST ( = PROPOSED NEW VALUE FOR X(J) ).
!
         DO 120 L=1,M
  120        ZZ(L)=B(L)
         CALL H12 (2,NPP1,NPP1+1,M,A(1,J),1,UP,ZZ,1,1,1)
         ZTEST=ZZ(NPP1)/A(NPP1,J)
!
!                                     SEE IF ZTEST IS POSITIVE
!
         IF (ZTEST .gt. ZERO) go to 140
      endif
!
!     REJECT J AS A CANDIDATE TO BE MOVED FROM SET Z TO SET P.
!     RESTORE A(NPP1,J), SET W(J)=0., AND LOOP BACK TO TEST DUAL
!     COEFFS AGAIN.
!
      A(NPP1,J)=ASAVE
      W(J)=ZERO
      GO TO 60
!
!     THE INDEX  J=INDEX(IZ)  HAS BEEN SELECTED TO BE MOVED FROM
!     SET Z TO SET P.    UPDATE B,  UPDATE INDICES,  APPLY HOUSEHOLDER
!     TRANSFORMATIONS TO COLS IN NEW SET Z,  ZERO SUBDIAGONAL ELTS IN
!     COL J,  SET W(J)=0.
!
  140 continue
      DO 150 L=1,M
  150    B(L)=ZZ(L)
!
      INDEX(IZ)=INDEX(IZ1)
      INDEX(IZ1)=J
      IZ1=IZ1+1
      NSETP=NPP1
      NPP1=NPP1+1
!
      IF (IZ1 .le. IZ2) then
         DO 160 JZ=IZ1,IZ2
            JJ=INDEX(JZ)
            CALL H12 (2,NSETP,NPP1,M,A(1,J),1,UP,A(1,JJ),1,MDA,1)
  160    continue
      endif
!
      IF (NSETP .ne. M) then
         DO 180 L=NPP1,M
  180       A(L,J)=ZERO
      endif
!
      W(J)=ZERO
!                                SOLVE THE TRIANGULAR SYSTEM.
!                                STORE THE SOLUTION TEMPORARILY IN ZZ().
      RTNKEY = 1
      GO TO 400
  200 CONTINUE
!
!                       ******  SECONDARY LOOP BEGINS HERE ******
!
!                          ITERATION COUNTER.
!
  210 continue
      ITER=ITER+1
      IF (ITER .gt. ITMAX) then
         MODE=3
!         write (*,'(/a)') ' NNLS quitting on iteration count.'
         GO TO 350
      endif
!
!                    SEE IF ALL NEW CONSTRAINED COEFFS ARE FEASIBLE.
!                                  IF NOT COMPUTE ALPHA.
!
      ALPHA=TWO
      DO 240 IP=1,NSETP
         L=INDEX(IP)
         IF (ZZ(IP) .le. ZERO) then
            T=-X(L)/(ZZ(IP)-X(L))
            IF (ALPHA .gt. T) then
               ALPHA=T
               JJ=IP
            endif
         endif
  240 CONTINUE
!
!          IF ALL NEW CONSTRAINED COEFFS ARE FEASIBLE THEN ALPHA WILL
!          STILL = 2.    IF SO EXIT FROM SECONDARY LOOP TO MAIN LOOP.
!
      IF (ALPHA.EQ.TWO) GO TO 330
!
!          OTHERWISE USE ALPHA WHICH WILL BE BETWEEN 0. AND 1. TO
!          INTERPOLATE BETWEEN THE OLD X AND THE NEW ZZ.
!
      DO 250 IP=1,NSETP
         L=INDEX(IP)
         X(L)=X(L)+ALPHA*(ZZ(IP)-X(L))
  250 continue
!
!        MODIFY A AND B AND THE INDEX ARRAYS TO MOVE COEFFICIENT I
!        FROM SET P TO SET Z.
!
      I=INDEX(JJ)
  260 continue
      X(I)=ZERO
!
      IF (JJ .ne. NSETP) then
         JJ=JJ+1
         DO 280 J=JJ,NSETP
            II=INDEX(J)
            INDEX(J-1)=II
            CALL G1 (A(J-1,II),A(J,II),CC,SS,A(J-1,II))
            A(J,II)=ZERO
            DO 270 L=1,N
               IF (L.NE.II) then
!
!                 Apply procedure G2 (CC,SS,A(J-1,L),A(J,L))
!
                  TEMP = A(J-1,L)
                  A(J-1,L) = CC*TEMP + SS*A(J,L)
                  A(J,L)   =-SS*TEMP + CC*A(J,L)
               endif
  270       CONTINUE
!
!                 Apply procedure G2 (CC,SS,B(J-1),B(J))
!
            TEMP = B(J-1)
            B(J-1) = CC*TEMP + SS*B(J)
            B(J)   =-SS*TEMP + CC*B(J)
  280    continue
      endif
!
      NPP1=NSETP
      NSETP=NSETP-1
      IZ1=IZ1-1
      INDEX(IZ1)=I
!
!        SEE IF THE REMAINING COEFFS IN SET P ARE FEASIBLE.  THEY SHOULD
!        BE BECAUSE OF THE WAY ALPHA WAS DETERMINED.
!        IF ANY ARE INFEASIBLE IT IS DUE TO ROUND-OFF ERROR.  ANY
!        THAT ARE NONPOSITIVE WILL BE SET TO ZERO
!        AND MOVED FROM SET P TO SET Z.
!
      DO 300 JJ=1,NSETP
         I=INDEX(JJ)
         IF (X(I) .le. ZERO) go to 260
  300 CONTINUE
!
!         COPY B( ) INTO ZZ( ).  THEN SOLVE AGAIN AND LOOP BACK.
!
      DO 310 I=1,M
  310     ZZ(I)=B(I)
      RTNKEY = 2
      GO TO 400
  320 CONTINUE
      GO TO 210
!                      ******  END OF SECONDARY LOOP  ******
!
  330 continue
      DO 340 IP=1,NSETP
          I=INDEX(IP)
  340     X(I)=ZZ(IP)
!        ALL NEW COEFFS ARE POSITIVE.  LOOP BACK TO BEGINNING.
      GO TO 30
!
!                        ******  END OF MAIN LOOP  ******
!
!                        COME TO HERE FOR TERMINATION.
!                     COMPUTE THE NORM OF THE FINAL RESIDUAL VECTOR.
!
  350 continue
      SM=ZERO
      IF (NPP1 .le. M) then
         DO 360 I=NPP1,M
  360       SM=SM+B(I)**2
      else
         DO 380 J=1,N
  380       W(J)=ZERO
      endif
      RNORM=sqrt(SM)
      RETURN
!
!     THE FOLLOWING BLOCK OF CODE IS USED AS AN INTERNAL SUBROUTINE
!     TO SOLVE THE TRIANGULAR SYSTEM, PUTTING THE SOLUTION IN ZZ().
!
  400 continue
      DO 430 L=1,NSETP
         IP=NSETP+1-L
         IF (L .ne. 1) then
            DO 410 II=1,IP
               ZZ(II)=ZZ(II)-A(II,JJ)*ZZ(IP+1)
  410       continue
         endif
         JJ=INDEX(IP)
         ZZ(IP)=ZZ(IP)/A(IP,JJ)
  430 continue
      go to (200, 320), RTNKEY

END SUBROUTINE

当我试图用gfortran作为gfortran nnls_burst.f90编译这个文件时

nnls_burst.f90:113:32:

  113 |    10     CL=MAX(abs(U(1,J)),CL)
      |                                1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 10 at (1)
nnls_burst.f90:114:24:

  114 |       IF (CL) 130,130,20
      |                        1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
nnls_burst.f90:118:33:

  118 |    30     SM=SM+(U(1,J)*CLINV)**2
      |                                 1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 30 at (1)
nnls_burst.f90:120:31:

  120 |       IF (U(1,LPIVOT)) 50,50,40
      |                               1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
nnls_burst.f90:127:24:

  127 |    60 IF (CL) 130,130,70
      |                        1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
nnls_burst.f90:132:23:

  132 |       IF (B) 80,130,130
      |                       1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
nnls_burst.f90:143:23:

  143 |    90         I3=I3+ICE
      |                       1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 90 at (1)
nnls_burst.f90:144:29:

  144 |           IF (SM) 100,120,100
      |                             1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
nnls_burst.f90:149:23:

  149 |   110         I4=I4+ICE
      |                       1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 110 at (1)
nnls_burst.f90:230:20:

  230 |    20     INDEX(I)=I
      |                    1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 20 at (1)
nnls_burst.f90:249:30:

  249 |    40        SM=SM+A(L,J)*B(L)
      |                              1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 40 at (1)
nnls_burst.f90:279:33:

  279 |    90       UNORM=UNORM+A(L,J)**2
      |                                 1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 90 at (1)
nnls_burst.f90:288:23:

  288 |   120        ZZ(L)=B(L)
      |                       1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 120 at (1)
nnls_burst.f90:312:19:

  312 |   150    B(L)=ZZ(L)
      |                   1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 150 at (1)
nnls_burst.f90:329:23:

  329 |   180       A(L,J)=ZERO
      |                       1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 180 at (1)
nnls_burst.f90:431:20:

  431 |   310     ZZ(I)=B(I)
      |                    1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 310 at (1)
nnls_burst.f90:441:21:

  441 |   340     X(I)=ZZ(IP)
      |                     1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 340 at (1)
nnls_burst.f90:454:25:

  454 |   360       SM=SM+B(I)**2
      |                         1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 360 at (1)
nnls_burst.f90:457:21:

  457 |   380       W(J)=ZERO
      |                     1
Warning: Fortran 2018 deleted feature: DO termination statement which is not END DO or CONTINUE with label 380 at (1)
nnls_burst.f90:275:44:

  275 |       CALL H12 (1,NPP1,NPP1+1,M,A(1,J),1,UP,DUMMY,1,1,0)
      |                                            1
Error: Rank mismatch in argument 'c' at (1) (rank-1 and scalar)

现在我知道这个错误是由古代研究人员开发的文件中的错误编码造成的


Tags: ofthetoindexifdoatsm