ottoin
C OTTOIN SOURCE FANDEUR 22/05/02 21:15:27 11359 & NCA,NN,MC,MM,SIGEL,DSIGT,DDE,GS,FC, & XINVL,SMAX,XLTR,PRECIZ,XCOMP, & XLAMC,KERRE) C---------------------------------------------------------------------- C C ENTREES : SIG0,DEPST,PRECIZ,MFR,KERRE C C SORTIES : SIGF C C----------------------------------------------------------------------- C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO * PARAMETER (XZER=0.D0,NC=4) DIMENSION SIGEL(*),DSIGT(*),DDE(*),XLTR(*),XCOMP(*) DIMENSION SMAX(*),ISING(*),IFERM(*),IBRUP(*) DIMENSION MM(*) DIMENSION DSIG(6) ,DSIGP(6) DIMENSION SAUX(6),DDPLAS(6) * DIMENSION GS(3) DIMENSION XINVL(3),NSITUA(4) * DIMENSION DFF(6),DGG(6) * DIMENSION JESEC(4) * DIMENSION AA(NC+1,NC+1),BB1(NC+1),BB2(NC+1) DIMENSION DX(NC+1),DDX(NC+1) DIMENSION VEC1(NC+1),VEC2(NC+1) DIMENSION DFDS(6,NC),DGDS(6,NC),HDFDQ(NC) DIMENSION LASIT(NC) DIMENSION VAUX1(6) EXTERNAL DDOT IF(IIMPI.EQ.42) THEN WRITE(IOIMP,74011) (ISING(IC),IC=1,NC) WRITE(IOIMP,74111) (IFERM(IC),IC=1,NC) WRITE(IOIMP,74211) (IBRUP(IC),IC=1,NC) WRITE(IOIMP,74311) (NN(IC),IC=1,NCA) 74011 FORMAT(5X,' ENTREE DANS OTTOIN - ISING = ',4I3/) 74111 FORMAT(5X,' ENTREE DANS OTTOIN - IFERM = ',4I3/) 74211 FORMAT(5X,' ENTREE DANS OTTOIN - IBRUP = ',4I3/) 74311 FORMAT(//5X,' ENTREE DANS OTTOIN - NN = ',4I3/) ENDIF * IF(IFERM(4).EQ.1.AND.ABS(FC(4)).GT.PRECIZ) THEN PRINT *,'OTTOIN - INCOHERENCE EN COMPRESSION ' KERRE=2 RETURN ENDIF * * INITIALISATIONS * NC1=NC+1 KERRE=0 PRECIE=1.D-10 * * DO IC=1,4 NSITUA(IC)=1 + ISING(IC) + IFERM(IC) + IBRUP(IC) IF(IIMPI.EQ.42) THEN WRITE(IOIMP,69980) IC,NSITUA(IC) 69980 FORMAT(//2X,' IC= ',I4,2X,' NSITUA= ',I4//) ENDIF * IF(NSITUA(IC).GT.2) THEN WRITE(IOIMP,74412) IC,ISING(IC),IFERM(IC),IBRUP(IC) 74412 FORMAT(2X,'####### CAS IMPOSSIBLE IC=',I3,2X, & 'ISING(IC)=',I3,2X,'IFERM(IC)=',I3,2X, & 'IBRUP(IC)=',I3/) KERRE=7 RETURN ENDIF ENDDO * DO 21 I1=1,NSITUA(1) LASIT(1)=I1 * * DO 23 I3=1,NSITUA(3) LASIT(3)=I3 * DO 24 I4=1,NSITUA(4) LASIT(4)=I4 * * TYPES 1 (ISING) ( IC=1 A 3 ) * 1 : PENTE2 (SECANTE) * 2 : PENTE * * TYPES 2 (IFERM) ( IC=1 A 4 ) * 1 : ELASTIQUE * 2 : PENTE SECANTE * * TYPES 3 (IBRUP) ( IC=1 A 3 ) * 1 : ELASTIQUE * 2 : PENTE * DO IC=1,3 IF(LASIT(IC).EQ.2) THEN ELSE IF(LASIT(IC).EQ.1.AND.ISING(IC).EQ.1) THEN ENDIF ENDDO IF(IIMPI.EQ.42) THEN 60080 FORMAT(//2X,' ******** SITUATION : I1 I2 I3 I4 ', & 4I3///) ENDIF IF(IIMPI.EQ.42) THEN 10080 FORMAT(/2X,' PENTE ',3(2X,1PE12.5)/) 10081 FORMAT(/2X,' PENTE2 ',3(2X,1PE12.5)/) 10082 FORMAT(/2X,' PENT ',3(2X,1PE12.5)/) ENDIF * * NCA2=0 DO IJ=1,NCA JJ=NN(IJ) IF(IIMPI.EQ.42) THEN WRITE(IOIMP,20080) JJ,LASIT(JJ),IFERM(JJ),IBRUP(JJ) 20080 FORMAT(/2X,'JJ=',I3,2X, 'LASIT=',I3,2X, & 'IFERM=',I3,2X,'IBRUP=',I3//) ENDIF IF(LASIT(JJ).EQ.1) THEN IF(IFERM(JJ).NE.1.AND.IBRUP(JJ).NE.1) THEN NCA2=NCA2+1 NN2(NCA2)=JJ ENDIF * ELSE IF(LASIT(JJ).EQ.2) THEN NCA2=NCA2+1 NN2(NCA2)=JJ IF(IFERM(JJ).EQ.1.AND.JJ.LE.3) THEN JESEC(JJ)=1 ENDIF ENDIF * ENDDO IF(IIMPI.EQ.42) THEN WRITE(IOIMP,60086) NCA,NCA2 60086 FORMAT(// & 2X,'NCA=',I3,2X,'NCA2=',I3/) ENDIF * * IF(NCA2.EQ.0) THEN GO TO 55 ENDIF * * INITIALISATIONS * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,60081) (SIGEL(I),I=1,6) 60081 FORMAT(2X,' SIGEL '/(6(1X,1PE12.5))/) ENDIF * * & DFDS,DGDS,HDFDQ,XCOMP,XLAMC,PRECIE, & PRECIZ,KERRE) IF(KERRE.NE.0) RETURN * * NDIM=NCA2 IF(IFOUR.EQ.-2) NDIM=NCA2+1 * IF(IIMPI.EQ.42) THEN WRITE(IOIMP,77010) NCA2,NDIM 77010 FORMAT(5X,'NCA2=',I3,2X,'NDIM =',I3/) WRITE(IOIMP,77018) (NN2(IJ),IJ=1,NCA2) 77018 FORMAT(5X,'NN2 ',5(1X,I3)) ENDIF * DO IJ=1,NCA2 * JJ=NN2(IJ) * DO IK=1,NCA2 JK=NN2(IK) IF(IK.EQ.IJ) AA(IK,IJ)=AA(IK,IJ)-HDFDQ(JK) ENDDO BB1(IJ)=FC(JJ) * * SPECIAL CP * IF(IFOUR.EQ.-2) THEN AA(IJ,NDIM)=-(DFDS(1,JJ)*DDE(1)+DFDS(2,JJ)*DDE(6) * +DFDS(3,JJ)*DDE(5)+DFDS(4,JJ)*DDE(10)) AA(NDIM,IJ)=VAUX1(1) ENDIF ENDDO * IF(IFOUR.EQ.-2) THEN AA(NDIM,NDIM)=-DDE(1) BB1(NDIM)=SIGEL(1) BB2(NDIM)=DSIGT(1) ENDIF * * IF(IIMPI.EQ.42) THEN * WRITE(IOIMP,77011) ((AA(I,J),J=1,5),I=1,5) *77011 FORMAT(5X,' MATRICE AA'/(5(1X,1PE12.5))) * WRITE(IOIMP,77012) (BB1(I),I=1,5) *77012 FORMAT(5X,' VECTEUR BB1'/(5(1X,1PE12.5))) * WRITE(IOIMP,70012) (BB2(I),I=1,5) *70012 FORMAT(5X,' VECTEUR BB2'/(5(1X,1PE12.5))) * ENDIF * * KERRE=0 IF(KERRE.NE.0) THEN PRINT *,' MATRICE SINGULIERE DANS OTTOIN ' RETURN ENDIF * IF(IIMPI.EQ.42) THEN * WRITE(IOIMP,77113) ((AA(I,J),J=1,5),I=1,5) *77113 FORMAT(5X,' MATRICE AA INVERSEE '/(5(1X,1PE12.5))) * ENDIF * * DO IJ=1,NDIM DDX(IJ)=VEC1(IJ)+VEC2(IJ) ENDDO IF(IIMPI.EQ.42) THEN WRITE(IOIMP,77013) (DDX(IJ),IJ=1,NDIM) 77013 FORMAT(5X,' OTTOIN - DDX CALCULE'/(5(1X,1PE12.5))) ENDIF * * DO IJ=1,NCA2 JJ=NN2(IJ) DO I=1,6 DDPLAS(I)=DDPLAS(I)+DGDS(I,JJ)*DDX(IJ) ENDDO ENDDO * * IF(IFOUR.EQ.-2) THEN DSIGP(1)=DSIGP(1)-DDE(1)*DDX(NDIM) DSIGP(2)=DSIGP(2)-DDE(6)*DDX(NDIM) DSIGP(3)=DSIGP(3)-DDE(5)*DDX(NDIM) DSIGP(4)=DSIGP(4)-DDE(10)*DDX(NDIM) ENDIF * DO I=1,6 DSIG(I)=DSIGT(I)-DSIGP(I) ENDDO IF(IIMPI.EQ.42) THEN WRITE(IOIMP,79013) (DSIG(I),I=1,6) 79013 FORMAT(5X,' DSIG CALCULE '/(6(1X,1PE12.5))) ENDIF * * IFLAG=0 DO IJ=1,NCA2 JJ=NN2(IJ) IF(ISING(JJ).EQ.1) THEN IF(DSIG(JJ).GT.PRECIZ) IFLAG=1 ENDIF * IF(IFERM(JJ).EQ.1) THEN IF(DDX(IJ).LT.0.D0) IFLAG=1 * AM 11/12/15 ON AJOUTE LE TEST (JJ.NE.4) CI DESSOUS IF(JJ.NE.4.AND.DSIG(JJ).LT.-PRECIZ) IFLAG=1 ENDIF ENDDO * DO I=1,3 IF(IFERM(I).EQ.1.AND.LASIT(I).EQ.1) THEN IF(DSIG(I).GT.PRECIZ) IFLAG=1 ENDIF ENDDO * DO I=1,3 IF(IBRUP(I).EQ.1.AND.LASIT(I).EQ.1) THEN IF(DSIG(I).GT.PRECIZ) IFLAG=1 ENDIF ENDDO * * MLR 9/7/99 * DO IJ=1,NCA JJ=NN(IJ) IF(JJ.EQ.4.AND.LASIT(4).EQ.1) THEN & PRECIE,PRECIZ,XCOMP,XLAMC,KERRE) * TRA = 0.D0 DO I=1,6 TRA = TRA + DFF(I)*DSIG(I) ENDDO IF(IIMPI.EQ.42) THEN WRITE(IOIMP,76621) TRA 76621 FORMAT(///2X,'OTTOIN ****** TRA = ',1PE12.5//) ENDIF IF(TRA.GT.PRECIZ) IFLAG=1 ENDIF ENDDO * * IF(IFLAG.EQ.0) THEN DO IJ=1,NCA2 JJ=NN2(IJ) IF(ISING(JJ).EQ.1) THEN ISING(JJ)=2 LEBIL(JJ)=0 ENDIF ISING(JJ)=3 LEBIL(JJ)=1 ENDIF ENDIF ENDDO GO TO 99 ENDIF * 55 CONTINUE * 24 CONTINUE * 23 CONTINUE * 22 CONTINUE * 21 CONTINUE * * EN CAS DE PROBLEME : * KERRE=7 * VALEUR DE KERRE A AMELIORER * WRITE(IOIMP,73312) 73312 FORMAT(2X,'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ' / & 4X,'ATTENTION - OTTOIN - PAS DE SOLUTION ' / & 2X,'ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'/) RETURN * 99 CONTINUE * IF(IIMPI.EQ.42) THEN 70801 FORMAT(///2X,'OTTOIN SORTIE - PENTE '/(4(1X,1PE12.5)/)) WRITE(IOIMP,76802) (LEBIL(I),I=1,NC) 76802 FORMAT(/2X,'OTTOIN SORTIE - LEBIL '/(4I5/)) WRITE(IOIMP,76803) (ISING(I),I=1,NC) 76803 FORMAT(/2X,'OTTOIN SORTIE - ISING '/(4I5/)) ENDIF * * RETRAITEMENT * NCA=NCA2 DO I=1,NCA NN(I)=NN2(I) ENDDO * MC2=0 DO I=1,MC * * TYPES 1 * IF(MM(I).GE.7.AND.MM(I).LE.9) THEN IC=MM(I)-6 IF(ISING(IC).EQ.3) GO TO 101 ENDIF IF(MM(I).GE.13.AND.MM(I).LE.15) THEN IC=MM(I)-12 IF(ISING(IC).EQ.2) GO TO 101 ENDIF * * TYPES 2 * IF(MM(I).GE.4.AND.MM(I).LE.6) THEN IC=MM(I)-3 IF(IFERM(IC).EQ.1.AND.JESEC(IC).EQ.0) GO TO 101 ENDIF * MC2=MC2+1 MM(MC2)=MM(I) 101 CONTINUE ENDDO MC=MC2 IF(IIMPI.EQ.42) THEN WRITE(IOIMP,44102) NCA 44102 FORMAT(2X,'OTTOIN - NOUVELLE VALEUR NCA =',I3/) WRITE(IOIMP,44103) (NN(IC),IC=1,NCA) 44103 FORMAT(2X,'OTTOIN - NOUVELLE LISTE NN '/16(1X,I3)/) WRITE(IOIMP,49102) MC 49102 FORMAT(2X,'OTTOIN - NOUVELLE VALEUR MC =',I3/) WRITE(IOIMP,49103) (MM(IC),IC=1,MC) 49103 FORMAT(2X,'OTTOIN - NOUVELLE LISTE MM '/16(1X,I3)/) ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales