Download simplx.eso

Back to the list

   1 : C SIMPLX    SOURCE    CHAT      05/01/13    03:18:54     5004           
   2 :       SUBROUTINE SIMPLX(A,M,N,MP,NP,M1,M2,M3,ICASE,IZROV,IPOSV,
   3 :      >                                         EPS,L1,L2,L3,MMAX)
   4 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC        
   5 : C                                                                     C
   6 : C     METHODE DU SIMPLEX : CALCUL EFFECTIF APPELER PAR SIMPLE         C
   7 : C                                                                     C
   8 : C     FORTRAN APPELLANT SIMP1,SIMP2 ET SIMP3                          C
   9 : C                                                                     C
  10 : C     P.PEGON 31/8/92                                                 C
  11 : C                                                                     C
  12 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  13 :       IMPLICIT INTEGER(I-N)
  14 :       IMPLICIT REAL*8(A-H,O-Z)
  15 :       DIMENSION A(MP,NP),IZROV(N),IPOSV(M),L1(MMAX),L2(MMAX),L3(MMAX)
  16 : C
  17 :       NL1=N
  18 :       DO 11 K=1,N
  19 :         L1(K)=K
  20 :         IZROV(K)=K
  21 :  11   CONTINUE
  22 : C
  23 :       NL2=M
  24 :       DO 12 I=1,M
  25 :         L2(I)=I
  26 :         IPOSV(I)=N+I
  27 :  12   CONTINUE
  28 : C
  29 :       DO 13 I=1,M2
  30 :         L3(I)=1
  31 :  13   CONTINUE
  32 : C
  33 :       IR=0
  34 :       IF(M2+M3.EQ.0)GOTO 30
  35 : C 
  36 :       IR=1
  37 :       DO 15 K=1,N+1
  38 :         Q1=0.D0
  39 :         DO 14 I=M1+1,M
  40 :           Q1=Q1+A(I+1,K)
  41 :   14    CONTINUE
  42 :         A(M+2,K)=-Q1
  43 :   15  CONTINUE
  44 : C
  44 :   10  CALL SIMP1(A,MP,NP,M+1,L1,NL1,0,KP,BMAX)
  45 : C
  46 :       IF(BMAX.LE.EPS.AND.A(M+2,1).LT.-EPS)THEN
  47 :         ICASE=-1
  48 :         RETURN
  49 : C
  50 :       ELSEIF(BMAX.LE.EPS.AND.A(M+2,1).LE.EPS)THEN
  51 :         M12=M1+M2+1
  52 : C
  53 :         IF(M12.LE.M)THEN
  54 :           DO 16 IP=M12,M
  55 :             IF(IPOSV(IP).EQ.IP+N)THEN
  55 :               CALL SIMP1(A,MP,NP,IP,L1,NL1,1,KP,BMAX)
  56 :               IF(BMAX.GT.0.D0)GOTO 1
  57 :             ENDIF
  58 :   16      CONTINUE
  59 :         ENDIF
  60 : C
  61 :         IR=0
  62 :         M12=M12-1
  63 :         IF(M1+1.GT.M12)GOTO 30
  64 :         DO 18 I=M1+1,M12
  65 :           IF(L3(I-M1).EQ.1)THEN
  66 :             DO 17 K=1,N+1
  67 :               A(I+1,K)=-A(I+1,K)
  68 :  17         CONTINUE
  69 :           ENDIF
  70 :  18     CONTINUE
  71 :         GOTO 30
  72 : C
  73 :       ENDIF
  74 : C
  74 :       CALL SIMP2(A,M,N,MP,NP,L2,NL2,IP,KP,Q1,EPS)
  75 :       IF(IP.EQ.0)THEN
  76 :         ICASE=-1
  77 :         RETURN
  78 :       ENDIF
  79 : C
  79 :  1    CALL SIMP3(A,MP,NP,M+1,N,IP,KP)
  80 :       IF(IPOSV(IP).GE.N+M1+M2+1)THEN
  81 :         DO 19 K=1,NL1
  82 :           IF(L1(K).EQ.KP)GOTO 2
  83 :  19     CONTINUE
  84 :  2      NL1=NL1-1
  85 :         DO 21 IS=K,NL1
  86 :           L1(IS)=L1(IS+1)
  87 :  21     CONTINUE
  88 :       ELSE
  89 :         IF(IPOSV(IP).LT.N+M1+1)GOTO 20
  90 :         KH=IPOSV(IP)-M1-N
  91 :         IF(L3(KH).EQ.0)GOTO 20
  92 :         L3(KH)=0
  93 :       ENDIF
  94 : C
  95 :       A(M+2,KP+1)=A(M+2,KP+1)+1.D0
  96 :       DO 22 I=1,M+2
  97 :         A(I,KP+1)=-A(I,KP+1)
  98 :  22   CONTINUE
  99 : C
 100 :  20   IS=IZROV(KP)
 101 :       IZROV(KP)=IPOSV(IP)
 102 :       IPOSV(IP)=IS
 103 : C
 104 :       IF(IR.NE.0)GOTO 10
 105 : C
 105 :  30   CALL SIMP1(A,MP,NP,0,L1,NL1,0,KP,BMAX)
 106 :       IF(BMAX.LE.0.D0)THEN
 107 :         ICASE=0
 108 :         RETURN
 109 :       ENDIF
 110 : C
 110 :       CALL SIMP2(A,M,N,MP,NP,L2,NL2,IP,KP,Q1,EPS)
 111 :       IF(IP.EQ.0)THEN
 112 :         ICASE=1
 113 :         RETURN
 114 :       ENDIF
 115 : C
 115 :       CALL SIMP3(A,MP,NP,M,N,IP,KP)
 116 :       GOTO 20
 117 : C
 118 :       END
 119 :  

© Cast3M 2003 - All rights reserved.
Disclaimer