C CALPIN SOURCE CHAT 05/01/12 21:47:53 5004 C CALPIN SOURCE INSL 24/10/96 SUBROUTINE CALPIN(IFOU,STRN,SIGM,SIGR,S1,DEP,NSTRS,EBC, 1 AA,BB,DK1,DK2,ILOI,RB,EX,PXY) C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION S1(NSTRS),DFSI(6),STRN(NSTRS),DGSI(6),SIGR(NSTRS) DIMENSION DEP(NSTRS,NSTRS),D6(6,6),DP(6,6),S(6) DIMENSION SS(100,6),CR(100,3),SIGM(NSTRS) C------------------------------------------------------------------- C WRITE(*,*) '**** ON EST DANS CALPIN ******' C------------------------------------------------------------------- CALL ZERO(S1,NSTRS,1) CALL ZERO(DEP,NSTRS,NSTRS) C------------------------------------------------------------------- TU=RB PRB=1.D-5 NIB=2 ICHOI=1 IPREM=0 C------------------------------------------------------------------- BETC=EBC/EX C------------------------------------------------------------------- PAEC0=EBC/(1.D0-BETC) CALL CRIOTO(SIGR,SEQ,FCRI,NSTRS,TU,AA,BB,DK1,DK2) IF(SEQ.LT.1.D-10) IPREM=1 IF(SEQ.GT.TU) SEQ=TU C------------------------------------------------------------------- DO 10 I=1,NSTRS IF(IPREM.EQ.0) THEN S1(I)=SIGR(I) ELSE S1(I)=SIGR(I)+SIGM(I) ENDIF 10 CONTINUE C------------------------------------------------------------------- IF(IPREM.EQ.1) THEN IF(NIB.EQ.1) NIB = 10 CALL CRIOTO(S1,SEQ,FCRI,NSTRS,TU,AA,BB,DK1,DK2) ENDIF C------------------------------------------------------------------- SEQ0=SEQ CALL ZERO(CR,100,3) CALL ZERO(SS,100,6) C------------------------------------------------------------------- DO 1 II=1,NIB SEQ1=SEQ C------------------------------------------------------------------- C ************************************** C * BOUCLE SUR LES ITERATIONS INTERNES * C ************************************** C------------------------------------------------------------------- IF(SEQ.LT.1.D-10) THEN CALL ZERO(DEP,NSTRS,NSTRS) GOTO 40 ENDIF CALL DFSIG(S1,DFSI,DGSI,SEQ1,NSTRS,RB,AA,BB,DK1,DK2,ILOI) H2=0.D0 DO 92 I=1,NSTRS H2=H2+DFSI(I)*DGSI(I) 92 CONTINUE PAEC=PAEC0*H2 C------------------------------------------------------------------- CALL DEPO(S1,DEP,PAEC,SEQ1,NSTRS,IFOU,D6,DP,EX,PXY,AA,BB, & DK1,DK2,RB,ILOI) C------------------------------------------------------------------- 40 CONTINUE CALL BST(DEP,STRN,NSTRS,NSTRS,S) DO 45 I=1,NSTRS S1(I)=SIGR(I)+S(I) 45 CONTINUE CALL CRIOTO(S1,SEQ,FCRI,NSTRS,SEQ1,AA,BB,DK1,DK2) C--------------------------------------------------------------------- IF(DABS(FCRI).LT.PRB) GOTO 7 DO 4 J=1,NSTRS SS(II,J)=S1(J) 4 CONTINUE CR(II,1)=FCRI CR(II,2)=SEQ CR(II,3)=PAEC C------------------------------------------------------------------- C ************************************************ C * FIN DE LA BOUCLE SUR LES ITERATIONS INTERNES * C ************************************************ 1 CONTINUE C-------------------------------------------------------------------------- DMMN1=DABS(CR(1,1)) NO=1 DO 5 J=1,NIB ACR=DABS(CR(J,1)) IF(DMMN1 .GE. ACR) THEN DMMN1=DABS(CR(J,1)) NO=J ENDIF 5 CONTINUE DO 6 J=1,NSTRS S1(J)=SS(NO,J) IF(DABS(S1(I)).LT.1.D-8) S1(I)=0.D0 6 CONTINUE SEQ=CR(NO,2) PAEC=CR(NO,3) 7 CONTINUE C---------------------------------------------------------------------- IF(SEQ.GT.TU) SEQ=TU CALL DEPO(S1,DEP,PAEC,SEQ,NSTRS,IFOU,D6,DP,EX,PXY,AA,BB, 1 DK1,DK2,RB,ILOI) C-------------------------------------------------------------------------- 200 CONTINUE C-------------------------------------------------------------------------- 1991 FORMAT(18(1X,E12.5)) C-------------------------------------------------------------------------- RETURN END