C BROYDE SOURCE CHAT 05/01/12 21:42:40 5004 SUBROUTINE BROYDE(QUASIN) C C----------------------------------------------------- C METHODE QN DE BROYDEN C C D. Combescure, P. Pegon 14/6/95 C----------------------------------------------------- C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) SEGMENT,QUASIN REAL*8 XH0(MN,MN) REAL*8 WUP(MN,ITM),YUP(MN,ITM) INTEGER IT REAL*8 R(MN) REAL*8 D(MN),DES(MN) ENDSEGMENT DATA UN/1.D0/ C MN =WUP(/1) ITM=WUP(/2) C ITM1=IT IT=IT+1 C C SI IT=0 ON FAIT UN mNR, SINON QN (sans test) C IF(IT.GT.0)THEN C C ON UPDATE YUP C CALL MULVEC(YUP(1,IT),DES,UN,MN) C C ON CALCULE DES=-H(i-1)*R(i) C CALL MATVE1(XH0,R,MN,MN,DES,2) CALL MULVEC(DES,DES,-UN,MN) IF(ITM1.GT.1)THEN DO IE1=1,ITM1 CC=SCVECT(YUP(1,IE1),DES,MN) CALL PLVECT(DES,UN,WUP(1,IE1),CC,MN,DES) ENDDO ENDIF C C ON UPDATE WUP C BET=SCVECT(YUP(1,IT),YUP(1,IT),MN)-SCVECT(YUP(1,IT),DES,MN) BET=UN/BET CALL MULVEC(WUP(1,IT),DES,BET,MN) C C ON CALCULE DES=-H(i)*R(i) C CC=SCVECT(YUP(1,IT),DES,MN) CALL PLVECT(DES,UN,WUP(1,IT),CC,MN,DES) ELSE CALL MATVE1(XH0,R,MN,MN,DES,2) CALL MULVEC(DES,DES,-UN,MN) ENDIF C C AJOURNEMENT DE D C CALL PLVECT(D,UN,DES,UN,MN,D) C RETURN END