otobo
C OTOBO SOURCE CHAT 05/01/13 02:06:53 5004 C C ================================================================== C CE SOUS-PROGRAMME EST APPELE DANS CERACA ET CCERAC. C IL REGARDE SI ON A FISSURE ET PAS REFERME LA FISSURE C DANS CE CAS ON APPELLE INCONDITIONNELLEMENT OTTOSEN C C ENTREES: C ------- C VAR0(NVARI) = VARIABLES INTERNES AU DEBUT DU PAS D'INTEGRATION C (NVARI= NBR. DE VARIABLES INTERNES) C C IVAL(NCOMAT) = INDICE DES COMPOSANTES DE MATERIAU C XMAT(NCOMAT) = CARACTERISTIQUES MECANIQUES DU MATERIAU C (NCOMAT = NBR. DE CARACTERISTIQUES MECANIQUES DU MATERIAU) C C SORTIES: C ------- C ITOTO = 1 ===> On appelle Ottosen Obligatoirement C ================================================================== C ICI IL FAUT PROGRAMMER EN FORTRAN PUR C =================================================================== C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO C PARAMETER (XZER=0.D0,DEUX=2.D0,TROIS=3.D0) C DIMENSION VAR0(*),XMAT(*),IVAL(*) C DIMENSION WMAX(3),W(3),WRUPT(3),WREOUV(3),GFTR(3),XLTR(3) C C******************************************************************* C=================================================================== C INITIALISATION DES VARIABLES INTERNES ET DES CARACTERISTIQUES C=================================================================== C C C################################################################### C=================================================================== C INITIALISATION DES CARACTERISTIQUES C=================================================================== C################################################################### C C Les 2 eres valeurs de Xmat_OBLIGATOIRES sont reservees pour des MOOBL C Les 2 eres valeurs de Xmat_FACULTATIF sont reservees pour des MOFAC C et la 3 eme en cas de contraintes planes (DIM3) C C C PRINT *,'ENTREE OTOBO' IF (IFOMOD.EQ.2.AND.MFR.EQ.1) THEN NOBL=22 ELSE NOBL=17 IF(MFR.EQ.1.AND.IFOUR.EQ.-2) THEN NOBL=18 ENDIF ENDIF C C=================================================== C----------------TRACTION SIMPLE-------------------- C=================================================== YOUN=XMAT(1) XNU =XMAT(2) XDLTR=XMAT(2+NOBL) IF (IVAL(2+NOBL).EQ.0) XDLTR=YOUN*1.2D-4 XDGFTR=XMAT(1+NOBL) IF (IVAL(1+NOBL).EQ.0) XDGFTR=XDLTR*3.9D-5 BTR=XMAT(6+NOBL) IF (IVAL(6+NOBL).EQ.0) BTR=0.2D0 XDWRUP=XMAT(8+NOBL) C C################################################################### C=================================================================== C INITIALISATION DES VARIABLES INTERNES C=================================================================== C################################################################### C C====================================== C---------CAS TRIDIMENSIONNEL MASSIF--- C====================================== C C NVARI=20 cf. IDVAR6 C IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN DO 10 IC=1,3 ICN=IC+NOBL WMAX(IC)=VAR0(IC+1) W(IC)=VAR0(IC+4) GFTR(IC)=XMAT(ICN+9) IF (GFTR(IC).EQ.XZER) GFTR(IC)=XDGFTR XLTR(IC)=XMAT(ICN+15) IF (XLTR(IC).EQ.XZER) XLTR(IC)=XDLTR WRUPT(IC)=XMAT(ICN+24) IF (WRUPT(IC).EQ.XZER) THEN IF(XDWRUP.EQ.XZER) THEN WRUPT(IC)=DEUX*GFTR(IC)/XLTR(IC) ELSE WRUPT(IC)=XDWRUP ENDIF ENDIF 10 CONTINUE ENDIF C C====================================== C-----------CAS CONT PLANE------------- C---- OU TRIDIM COQUES MINCES --------- C====================================== C C NVARI=12 cf. IDVAR6 C IF (IFOUR.EQ.-2.OR. . (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9))) THEN DO 11 IC=1,2 ICN=IC+NOBL WMAX(IC+1)=VAR0(IC+1) W(IC+1)=VAR0(IC+3) GFTR(IC+1)=XMAT(ICN+9) IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR XLTR(IC+1)=XMAT(ICN+13) IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR WRUPT(IC+1)=XMAT(ICN+19) IF (WRUPT(IC+1).EQ.XZER) THEN IF(XDWRUP.EQ.XZER) THEN WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1) ELSE WRUPT(IC+1)=XDWRUP ENDIF ENDIF 11 CONTINUE C C------------------------------------------------------------ C La direction normale au plan est une direction principale C elle est definie par VF1 et indice par 1 C------------------------------------------------------------ C WMAX(1)=XZER W(1)=XZER GFTR(1)=XDGFTR XLTR(1)=XDLTR WRUPT(1)=DEUX*GFTR(1)/XLTR(1) ENDIF C C=========================================== C-----------CAS DEFO PLANE/AXIS------------- C=========================================== C C NVARI=15 cf. IDVAR6 C IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR.IFOUR.EQ.0) THEN DO 12 IC=1,2 ICN=IC+NOBL WMAX(IC+1)=VAR0(IC+1) W(IC+1)=VAR0(IC+4) GFTR(IC+1)=XMAT(ICN+10) IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR XLTR(IC+1)=XMAT(ICN+16) IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR WRUPT(IC+1)=XMAT(ICN+25) IF (WRUPT(IC+1).EQ.XZER) THEN IF(XDWRUP.EQ.XZER) THEN WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1) ELSE WRUPT(IC+1)=XDWRUP ENDIF ENDIF 12 CONTINUE C C__________________________________________________________ C les caracteristiques dans la direction normale au plan C sont traitees particulierement C---------------------------------------------------------- C XDEPSR=XMAT(10+NOBL) IF (IVAL(10+NOBL).EQ.0) XDEPSR=TROIS*XDLTR/YOUN C C------------------------------------------------------------ C La direction normale au plan est une direction principale C elle est definie par VF1 et indice par 1 C------------------------------------------------------------ C WMAX(1)=VAR0(4) W(1)=VAR0(7) WRUPT(1)=XDEPSR ENDIF C####################################### C======================================= C---------ON DETERMINE SI ON DOIT OU NON C APPELER OTTOSEN ---------- C======================================= C C L'élement at-il été fissuré ou rompu IFIFI = 0 DO 13 I=1,3 IF (WMAX(I).GT.0.D0) THEN IFIFI = 1 ENDIF 13 CONTINUE ITOTO = 0 IF (IFIFI.NE.1) THEN C PRINT *,'IFIFI =0' RETURN ENDIF DO 14 I=1,3 WREOUV(I) = BTR*MIN(WMAX(I),WRUPT(I)) C PRINT *,'W(',I,')=',W(I) C PRINT *,'WREOUV(',I,')=',WREOUV(I),WRUPT(I),(BTR*WRUPT(I)) IF (W(I).GT.WREOUV(I)) THEN ITOTO = 1 ENDIF 14 CONTINUE C IF (ITOTO.EQ.0) THEN C PRINT *,'J ai refermé ma fissure ' C ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales