1 : C OTOBO SOURCE CHAT 05/01/13 02:06:53 5004 2 : SUBROUTINE OTOBO(VAR0,XMAT,IVAL,ITOTO,MFR) 3 : C 4 : C ================================================================== 5 : C CE SOUS-PROGRAMME EST APPELE DANS CERACA ET CCERAC. 6 : C IL REGARDE SI ON A FISSURE ET PAS REFERME LA FISSURE 7 : C DANS CE CAS ON APPELLE INCONDITIONNELLEMENT OTTOSEN 8 : C 9 : C ENTREES: 10 : C ------- 11 : C VAR0(NVARI) = VARIABLES INTERNES AU DEBUT DU PAS D'INTEGRATION 12 : C (NVARI= NBR. DE VARIABLES INTERNES) 13 : C 14 : C IVAL(NCOMAT) = INDICE DES COMPOSANTES DE MATERIAU 15 : C XMAT(NCOMAT) = CARACTERISTIQUES MECANIQUES DU MATERIAU 16 : C (NCOMAT = NBR. DE CARACTERISTIQUES MECANIQUES DU MATERIAU) 17 : C 18 : C SORTIES: 19 : C ------- 20 : C ITOTO = 1 ===> On appelle Ottosen Obligatoirement 21 : C ================================================================== 22 : C ICI IL FAUT PROGRAMMER EN FORTRAN PUR 23 : C =================================================================== 24 : C 25 : IMPLICIT INTEGER(I-N) 26 : IMPLICIT REAL*8(A-H,O-Z) 27 : -INC CCOPTIO 28 : C 29 : PARAMETER (XZER=0.D0,DEUX=2.D0,TROIS=3.D0) 30 : C 31 : DIMENSION VAR0(*),XMAT(*),IVAL(*) 32 : C 33 : DIMENSION WMAX(3),W(3),WRUPT(3),WREOUV(3),GFTR(3),XLTR(3) 34 : C 35 : C******************************************************************* 36 : C=================================================================== 37 : C INITIALISATION DES VARIABLES INTERNES ET DES CARACTERISTIQUES 38 : C=================================================================== 39 : C 40 : C 41 : C################################################################### 42 : C=================================================================== 43 : C INITIALISATION DES CARACTERISTIQUES 44 : C=================================================================== 45 : C################################################################### 46 : C 47 : C Les 2 eres valeurs de Xmat_OBLIGATOIRES sont reservees pour des MOOBL 48 : C Les 2 eres valeurs de Xmat_FACULTATIF sont reservees pour des MOFAC 49 : C et la 3 eme en cas de contraintes planes (DIM3) 50 : C 51 : C 52 : C PRINT *,'ENTREE OTOBO' 53 : IF (IFOMOD.EQ.2.AND.MFR.EQ.1) THEN 54 : NOBL=22 55 : ELSE 56 : NOBL=17 57 : IF(MFR.EQ.1.AND.IFOUR.EQ.-2) THEN 58 : NOBL=18 59 : ENDIF 60 : ENDIF 61 : C 62 : C=================================================== 63 : C----------------TRACTION SIMPLE-------------------- 64 : C=================================================== 65 : YOUN=XMAT(1) 66 : XNU =XMAT(2) 67 : XDLTR=XMAT(2+NOBL) 68 : IF (IVAL(2+NOBL).EQ.0) XDLTR=YOUN*1.2D-4 69 : XDGFTR=XMAT(1+NOBL) 70 : IF (IVAL(1+NOBL).EQ.0) XDGFTR=XDLTR*3.9D-5 71 : BTR=XMAT(6+NOBL) 72 : IF (IVAL(6+NOBL).EQ.0) BTR=0.2D0 73 : XDWRUP=XMAT(8+NOBL) 74 : C 75 : C################################################################### 76 : C=================================================================== 77 : C INITIALISATION DES VARIABLES INTERNES 78 : C=================================================================== 79 : C################################################################### 80 : C 81 : C====================================== 82 : C---------CAS TRIDIMENSIONNEL MASSIF--- 83 : C====================================== 84 : C 85 : C NVARI=20 cf. IDVAR6 86 : C 87 : IF (IFOUR.EQ.2.AND.MFR.EQ.1) THEN 88 : DO 10 IC=1,3 89 : ICN=IC+NOBL 90 : WMAX(IC)=VAR0(IC+1) 91 : W(IC)=VAR0(IC+4) 92 : GFTR(IC)=XMAT(ICN+9) 93 : IF (GFTR(IC).EQ.XZER) GFTR(IC)=XDGFTR 94 : XLTR(IC)=XMAT(ICN+15) 95 : IF (XLTR(IC).EQ.XZER) XLTR(IC)=XDLTR 96 : WRUPT(IC)=XMAT(ICN+24) 97 : IF (WRUPT(IC).EQ.XZER) THEN 98 : IF(XDWRUP.EQ.XZER) THEN 99 : WRUPT(IC)=DEUX*GFTR(IC)/XLTR(IC) 100 : ELSE 101 : WRUPT(IC)=XDWRUP 102 : ENDIF 103 : ENDIF 104 : 10 CONTINUE 105 : ENDIF 106 : C 107 : C====================================== 108 : C-----------CAS CONT PLANE------------- 109 : C---- OU TRIDIM COQUES MINCES --------- 110 : C====================================== 111 : C 112 : C NVARI=12 cf. IDVAR6 113 : C 114 : IF (IFOUR.EQ.-2.OR. 115 : . (IFOUR.EQ.2.AND.(MFR.EQ.3.OR.MFR.EQ.9))) THEN 116 : DO 11 IC=1,2 117 : ICN=IC+NOBL 118 : WMAX(IC+1)=VAR0(IC+1) 119 : W(IC+1)=VAR0(IC+3) 120 : GFTR(IC+1)=XMAT(ICN+9) 121 : IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR 122 : XLTR(IC+1)=XMAT(ICN+13) 123 : IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR 124 : WRUPT(IC+1)=XMAT(ICN+19) 125 : IF (WRUPT(IC+1).EQ.XZER) THEN 126 : IF(XDWRUP.EQ.XZER) THEN 127 : WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1) 128 : ELSE 129 : WRUPT(IC+1)=XDWRUP 130 : ENDIF 131 : ENDIF 132 : 11 CONTINUE 133 : C 134 : C------------------------------------------------------------ 135 : C La direction normale au plan est une direction principale 136 : C elle est definie par VF1 et indice par 1 137 : C------------------------------------------------------------ 138 : C 139 : WMAX(1)=XZER 140 : W(1)=XZER 141 : GFTR(1)=XDGFTR 142 : XLTR(1)=XDLTR 143 : WRUPT(1)=DEUX*GFTR(1)/XLTR(1) 144 : ENDIF 145 : C 146 : C=========================================== 147 : C-----------CAS DEFO PLANE/AXIS------------- 148 : C=========================================== 149 : C 150 : C NVARI=15 cf. IDVAR6 151 : C 152 : IF (IFOUR.EQ.-1.OR.IFOUR.EQ.-3.OR.IFOUR.EQ.0) THEN 153 : DO 12 IC=1,2 154 : ICN=IC+NOBL 155 : WMAX(IC+1)=VAR0(IC+1) 156 : W(IC+1)=VAR0(IC+4) 157 : GFTR(IC+1)=XMAT(ICN+10) 158 : IF (GFTR(IC+1).EQ.XZER) GFTR(IC+1)=XDGFTR 159 : XLTR(IC+1)=XMAT(ICN+16) 160 : IF (XLTR(IC+1).EQ.XZER) XLTR(IC+1)=XDLTR 161 : WRUPT(IC+1)=XMAT(ICN+25) 162 : IF (WRUPT(IC+1).EQ.XZER) THEN 163 : IF(XDWRUP.EQ.XZER) THEN 164 : WRUPT(IC+1)=DEUX*GFTR(IC+1)/XLTR(IC+1) 165 : ELSE 166 : WRUPT(IC+1)=XDWRUP 167 : ENDIF 168 : ENDIF 169 : 12 CONTINUE 170 : C 171 : C__________________________________________________________ 172 : C les caracteristiques dans la direction normale au plan 173 : C sont traitees particulierement 174 : C---------------------------------------------------------- 175 : C 176 : XDEPSR=XMAT(10+NOBL) 177 : IF (IVAL(10+NOBL).EQ.0) XDEPSR=TROIS*XDLTR/YOUN 178 : C 179 : C------------------------------------------------------------ 180 : C La direction normale au plan est une direction principale 181 : C elle est definie par VF1 et indice par 1 182 : C------------------------------------------------------------ 183 : C 184 : WMAX(1)=VAR0(4) 185 : W(1)=VAR0(7) 186 : WRUPT(1)=XDEPSR 187 : ENDIF 188 : 189 : C####################################### 190 : C======================================= 191 : C---------ON DETERMINE SI ON DOIT OU NON 192 : C APPELER OTTOSEN ---------- 193 : C======================================= 194 : C 195 : C L'élement at-il été fissuré ou rompu 196 : IFIFI = 0 197 : DO 13 I=1,3 198 : IF (WMAX(I).GT.0.D0) THEN 199 : IFIFI = 1 200 : ENDIF 201 : 13 CONTINUE 202 : ITOTO = 0 203 : IF (IFIFI.NE.1) THEN 204 : C PRINT *,'IFIFI =0' 205 : RETURN 206 : ENDIF 207 : DO 14 I=1,3 208 : WREOUV(I) = BTR*MIN(WMAX(I),WRUPT(I)) 209 : C PRINT *,'W(',I,')=',W(I) 210 : C PRINT *,'WREOUV(',I,')=',WREOUV(I),WRUPT(I),(BTR*WRUPT(I)) 211 : IF (W(I).GT.WREOUV(I)) THEN 212 : ITOTO = 1 213 : ENDIF 214 : 14 CONTINUE 215 : C IF (ITOTO.EQ.0) THEN 216 : C PRINT *,'J ai refermé ma fissure ' 217 : C ENDIF 218 : RETURN 219 : END 220 : 221 : 222 : 223 : 224 : 225 : 226 : 227 : 228 : 229 : 230 : 231 :
© Cast3M 2003 - All rights reserved.
Disclaimer