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