C CMAXOA SOURCE KICH 09/09/11 21:16:12 6505 SUBROUTINE CMAXOA(wrk52,wrk53,wrk54,WR12,IB,IGAU,NBGMAT, & NELMAT,NWA,NCHAIN,EPSFLU) * * MODELE MAXOTT : RECUPERATION DES INFORMATIONS * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC CCOPTIO -INC SMEVOLL -INC SMLREEL -INC CCHAMP -INC DECHE * SEGMENT WR12 REAL*8 EM0(2,NWA(1)),EM1(2,NWA(2)),EM2(2,NWA(3)) REAL*8 EM3(2,NWA(4)),EM4(2,NWA(5)),EM5(2,NWA(6)) REAL*8 EM6(2,NWA(7)),EM7(2,NWA(8)),EM8(2,NWA(9)) REAL*8 SM0(NSTRS),SM1(NSTRS),SM2(NSTRS),SM3(NSTRS) REAL*8 SM4(NSTRS),SM5(NSTRS),SM6(NSTRS),SM7(NSTRS) REAL*8 SM8(NSTRS) ENDSEGMENT DIMENSION NWA(9),IPX(9),IPY(9) DIMENSION EPSFLU(8) * *--------------------------------------- * donnees materielles de type evolution *--------------------------------------- DO JC=1,9 NWA(JC)=0 IPX(JC)=0 IPY(JC)=0 END DO * offsets pour caracteristiques de type 'evolution' * * deformations planes / axisymetrique * IF ((IFOMOD.EQ.-1.AND.IFOUR.NE.-2).OR. & (IFOMOD.EQ.0.OR.IFOMOD.EQ.1)) THEN IMAXOBL = 10 IMAXFAC = 51 * * contraintes planes / 3D coques minces * ELSE IF((IFOMOD.EQ.-1.AND.IFOUR.EQ.-2).OR. & (IFOMOD.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9))) THEN IMAXOBL = 10 IMAXFAC = 46 * * tridimensionnelle massive * ELSE IMAXOBL = 15 IMAXFAC = 57 ENDIF * * em0 * MEVOLL=NINT(XMAT(IMAXOBL)) SEGACT MEVOLL KEVOLL=IEVOLL(1) SEGACT KEVOLL MLREEL=IPROGX IPX(1)=IPROGX IPY(1)=IPROGY SEGACT MLREEL NWA(1)=PROG(/1) SEGDES KEVOLL*NOMOD SEGDES MEVOLL*NOMOD * * em1 a em4 * KED=IMAXOBL+1 DO JC=2,5 MEVOLL=NINT(XMAT(KED)) KED=KED+2 SEGACT MEVOLL KEVOLL=IEVOLL(1) SEGACT KEVOLL MLREEL=IPROGX IPX(JC)=IPROGX IPY(JC)=IPROGY SEGACT MLREEL NWA(JC)=PROG(/1) SEGDES KEVOLL*NOMOD SEGDES MEVOLL*NOMOD END DO * * em5 a em8 * NCHAIN=5 KED=IMAXFAC DO JC=6,9 MEVOLL=NINT(XMAT(KED)) KED=KED+2 IF(MEVOLL.GT.0) THEN SEGACT MEVOLL KEVOLL=IEVOLL(1) SEGACT KEVOLL MLREEL=IPROGX IPX(JC)=IPROGX IPY(JC)=IPROGY SEGACT MLREEL NWA(JC)=PROG(/1) NCHAIN=NCHAIN+1 SEGDES KEVOLL*NOMOD SEGDES MEVOLL*NOMOD ENDIF END DO *------------------------------------ * creation du segment de travail *------------------------------------ SEGINI WR12 * * recuperation des caracteristiques * materielles et des variables internes * D'abord les composantes obligatoires * * tridimensionnelle massive * IF(IFOUR.EQ.2.AND.MFR.EQ.1) THEN MXVREE = 22 * * deformations planes / axisymetrique * ELSE IF(IFOUR.EQ.-1.OR.IFOUR.EQ.-3 & .OR.IFOUR.EQ.0.OR.IFOUR.EQ.1) THEN MXVREE = 17 * * contraintes planes / 3D coques minces * ELSE MXVREE = 14 ENDIF * DO JC=0,5 IF(JC.NE.0) THEN MLREEL=IPX(JC) MLREE1=IPY(JC) SEGACT MLREE1 ENDIF MLREE2=NINT(VAR0(JC+MXVREE)) SEGACT MLREE2 IF(JC.EQ.0) THEN DO JD=1,NSTRS EPSFLU(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.1) THEN DO JD=1,NWA(1) EM0(1,JD)=PROG(JD) EM0(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM0(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.2) THEN DO JD=1,NWA(2) EM1(1,JD)=PROG(JD) EM1(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM1(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.3) THEN DO JD=1,NWA(3) EM2(1,JD)=PROG(JD) EM2(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM2(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.4) THEN DO JD=1,NWA(4) EM3(1,JD)=PROG(JD) EM3(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM3(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.5) THEN DO JD=1,NWA(5) EM4(1,JD)=PROG(JD) EM4(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM4(JD)=MLREE2.PROG(JD) END DO ENDIF END DO * * traitement des composantes facultatives * DO JC=6,9 IF(IPX(JC).NE.0) THEN MLREEL=IPX(JC) MLREE1=IPY(JC) SEGACT MLREE1 MLREE2=NINT(VAR0(JC+MXVREE)) SEGACT MLREE2 IF(JC.EQ.6) THEN DO JD=1,NWA(6) EM5(1,JD)=PROG(JD) EM5(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM5(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.7) THEN DO JD=1,NWA(7) EM6(1,JD)=PROG(JD) EM6(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM6(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.8) THEN DO JD=1,NWA(8) EM7(1,JD)=PROG(JD) EM7(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM7(JD)=MLREE2.PROG(JD) END DO ELSE IF(JC.EQ.9) THEN DO JD=1,NWA(9) EM8(1,JD)=PROG(JD) EM8(2,JD)=MLREE1.PROG(JD) END DO DO JD=1,NSTRS SM8(JD)=MLREE2.PROG(JD) END DO ENDIF ENDIF END DO * * DESACTIVATION DES SEGMENTS PROG * DO 10 JC=0,9 IF (IPX(JC).EQ.0) GO TO 10 IF (JC.NE.0) THEN MLREEL=IPX(JC) SEGDES MLREEL*NOMOD MLREE1=IPY(JC) SEGDES MLREE1*NOMOD ENDIF MLREE2=NINT(VAR0(JC+MXVREE)) SEGDES MLREE2*NOMOD 10 CONTINUE * RETURN END