1 : C T1T2DP SOURCE CHAT 05/01/13 03:29:37 5004 2 : SUBROUTINE T1T2DP(SIG,DSIG,YOUN,ANU,RT1,RT2,H1,H2,RDP,ADP,HDP, 3 : 1 XLAM1,XLAM2,XLAM3,IDAM,ANG,EPPLDP,ALPHA,KERRE) 4 : IMPLICIT INTEGER(I-N) 5 : IMPLICIT REAL*8(A-H,O-Z) 6 : -INC CCOPTIO 7 : DIMENSION SIG(3),DSIG(3),SGG(3),DSGG(3),SFG(3),DSFG(3), 8 : 1 A(3),B(3),IDAM(3),EPC(3),SSI(3),SI(3),EPC1(3),SG1(3), 9 : 1 SG2(3),EC1(3),EC2(3),AT(4),BT(2),EPDP(3),EPPLDP(3) 10 : ITER=0 11 : Y=YOUN/(1.D0-ANU*ANU) 12 : DO 5 ITYP=1,3 13 : EPPLDP(ITYP)=0.D0 14 : 5 EPDP(ITYP)=0.D0 15 : XT=0.D0 16 : IF(IIMPI.EQ.9) WRITE(IOIMP,9999) 17 : 9999 FORMAT(1X,'T1T2DP TRIPLAGE TRACTION 1 TRACTION 2 DRUCKER',/) 18 : 9998 FORMAT(1X,'T1T2DP ',I4,'ITERATIONS INTERNES',/) 19 : C 20 : C------------------------------------------------ 21 : C TRIPLAGE TRACTION TRACTION DRUCKER 22 : C------------------------------------------------ 23 : C---------------------------------------------- 24 : C DEFINITION D UNE CONTRAINTE DE REFERENCE 25 : C SI RMAX DU DRUCKER INFERIEURE A CETTE VALEUR 26 : C ALORS SIGMA=0 27 : C---------------------------------------------- 28 : C 29 : RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP))) 30 : SIREF=1.E-6*YOUN 31 : C 32 : C-------------------------------------------------- 33 : C CAS OU LE RAYON DU DRUCKER EST INFERIEUR 34 : C A UNE VALEUR DE REFERENCE 35 : C-------------------------------------------------- 36 : C 37 : IF(SIREF.GT.RMAX) THEN 38 : DO 10 ITYP=1,3 39 : 10 SIG(ITYP)=SIG(ITYP)+DSIG(ITYP) 40 : RDP=0.D0 41 : HDP=0.D0 42 : ADP=0.D0 42 : CALL NORME(SIG,DL3) 43 : DL3=DL3/YOUN*10.D0 44 : XLAM3=XLAM3+DL3 44 : CALL CPHOIN(SIG,EPPLDP,YOUN,ANU) 45 : DO 20 ITYP=1,3 46 : IDAM(ITYP)=0 47 : DSIG(ITYP)=0.D0 48 : 20 SIG(ITYP)=0.D0 49 : IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER 50 : RETURN 51 : ENDIF 52 : C----------------------------------------------- 53 : C ON SE PLACE DANS LE REPERE DE FISSURATION 54 : C----------------------------------------------- 55 : C 55 : CALL CHREP(SIG,SFG,ANG) 55 : CALL CHREP(DSIG,DSFG,ANG) 56 : C 57 : C----------------------------------------------------- 58 : C ESTIMATION DU PAS D'INCREMENT DE CONTRAINTES 59 : C----------------------------------------------------- 60 : C 60 : CALL SIJ(SFG,SI,SIETOI) 60 : CALL EPSDP(SI,SIETOI,ADP,EPC) 60 : CALL CPHOMO(EPC,SSI,YOUN,ANU,ALPHA) 60 : CALL SCAL2(EPC,SSI,VAL) 61 : VAL=VAL-HDP 62 : IF(VAL.LT.0.D0) THEN 63 : KERRE=459 64 : RETURN 65 : ENDIF 65 : CALL SCAL(SSI,DSFG,VAL) 65 : CALL NORME(DSFG,VA1) 65 : CALL NORME(SSI,VA2) 66 : IF(VA1.EQ.0.D0) THEN 67 : IDAM(1)=0 68 : IDAM(2)=0 69 : IDAM(3)=0 70 : RETURN 71 : ENDIF 72 : RMIN=MIN((RDP/1.73),(RDP/(1.D0+2.D0*ADP))) 73 : X=VAL/VA1/VA2 74 : IF(X.GE.1.D0) THEN 75 : X=1.D0 76 : GOTO 25 77 : ENDIF 78 : X=1.D0/SQRT(1.0001D0-X*X)*RMIN/VA1/8.D0 79 : IF(X.GT.1.D0) X=1.D0 80 : C 81 : C---------------------------------------------------------- 82 : C ON ECOULE ET ON REGARDE LA VARIATION DE NORMALE 83 : C---------------------------------------------------------- 84 : C 85 : C 86 : C--------------------------------------- 87 : C RESOLUTION DU SYSTEME EN DL3 88 : C--------------------------------------- 89 : 25 X=X/2.D0 90 : EC1(1)=1.D0 91 : EC1(2)=0.D0 92 : EC1(3)=0.D0 93 : EC2(1)=0.D0 94 : EC2(2)=1.D0 95 : EC2(3)=0.D0 95 : CALL CPHOOB(EC1,SG1,YOUN,ANU) 95 : CALL CPHOOB(EC2,SG2,YOUN,ANU) 96 : 51 X=X*2.D0 97 : 52 RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP))) 98 : ITER=ITER+1 99 : 653 IF(ITER.GT.200) THEN 100 : KERRE=460 101 : RETURN 102 : ENDIF 103 : IF(SIREF.GT.RMAX) THEN 104 : RDP=0.D0 105 : ADP=0.D0 106 : HDP=0.D0 107 : DO 60 ITYP=1,3 108 : 60 SFG(ITYP)=SFG(ITYP)+(1.D0-XT)*DSFG(ITYP) 108 : CALL NORME(SFG,DL3) 109 : DL3=DL3/YOUN*10.D0 110 : XLAM3=XLAM3+DL3 110 : CALL CPHOIN(SFG,EPPLDP,YOUN,ANU) 111 : DO 70 ITYP=1,3 112 : 70 EPDP(ITYP)=EPDP(ITYP)+EPPLDP(ITYP) 112 : CALL CHREP(EPDP,EPPLDP,-ANG) 113 : DO 80 ITYP=1,3 114 : IDAM(ITYP)=0 115 : DSIG(ITYP)=0.D0 116 : 80 SIG(ITYP)=0.D0 117 : IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER 118 : RETURN 119 : ENDIF 120 : IF((XT+X).GT.1.D0) X=1.D0-XT 120 : CALL SIJ(SFG,SI,SIETOI) 120 : CALL EPSDP(SI,SIETOI,ADP,EPC) 120 : CALL CPHOMO(EPC,SSI,YOUN,ANU,ALPHA) 120 : CALL SCAL2(EPC,SSI,VAL) 121 : VAL=VAL-HDP 122 : IF(VAL.LT.0.D0) THEN 123 : KERRE=459 124 : RETURN 125 : ENDIF 126 : C 127 : C 128 : 90 ITER=ITER+1 129 : IF(ITER.GT.201) GOTO 653 130 : AT(1)=Y-H1 131 : AT(4)=Y-H2 132 : AT(2)=Y*ANU 133 : AT(3)=AT(2) 134 : DO 95 ITYP=1,3 135 : 95 DSGG(ITYP)=X*DSFG(ITYP) 136 : BT(1)=SFG(1)+DSGG(1)-RT1 137 : BT(2)=SFG(2)+DSGG(2)-RT2 137 : CALL SYLIN2(AT,BT,DL11,DL21) 138 : BT(1)=-SSI(1) 139 : BT(2)=-SSI(2) 139 : CALL SYLIN2(AT,BT,DL12,DL22) 140 : DO 100 ITYP=1,3 141 : A(ITYP)=SFG(ITYP)+DSGG(ITYP)-DL11*SG1(ITYP)-DL21*SG2(ITYP) 142 : 100 B(ITYP)=-DL12*SG1(ITYP)-DL22*SG2(ITYP)-SSI(ITYP) 142 : CALL DLAMDP(A,B,DL3,RDP,ADP,HDP,ITEST) 143 : IF(ITEST.EQ.1) THEN 144 : X=X/2.D0 145 : GOTO 90 146 : ENDIF 147 : DL1=DL11+DL3*DL12 148 : DL2=DL21+DL3*DL22 149 : DO 105 ITYP=1,3 150 : SGG(ITYP)=SFG(ITYP)-DL1*SG1(ITYP)-DL2*SG2(ITYP) 151 : 105 SGG(ITYP)=SGG(ITYP)-DL3*SSI(ITYP)+X*DSFG(ITYP) 152 : IF(DL1.LT.-1.D-10) IDAM(1)=0 153 : IF(DL2.LT.-1.D-10) IDAM(2)=0 154 : IF(DL3.LT.-1.D-10) IDAM(3)=0 155 : IF(IDAM(1).EQ.0.OR.IDAM(2).EQ.0.OR.IDAM(3).EQ.0) THEN 156 : DL1=0.D0 157 : DL2=0.D0 158 : DL3=0.D0 159 : X=0.D0 160 : GOTO 2000 161 : ENDIF 162 : C 163 : C------------------------------------------------------- 164 : C ON VERIFIE SI LA NORMALE DU DRUCKER VARIE PEU 165 : C------------------------------------------------------- 166 : C 166 : CALL SIJ(SGG,SI,SIETOI) 166 : CALL EPSDP(SI,SIETOI,ADP,EPC1) 166 : CALL SCAL(EPC,EPC1,VAL) 166 : CALL NORME(EPC,VA1) 166 : CALL NORME(EPC1,VA2) 167 : CO=VAL/VA1/VA2 168 : IF(CO.LT.0.99) THEN 169 : X=X/2.D0 170 : GOTO 90 171 : ENDIF 172 : C 173 : C------------------------------------------------- 174 : C CAS OU LA TRACTION PASSE EN DESSOUS DE 0 175 : C------------------------------------------------- 176 : C 177 : IF((RT1-H1*DL1).GE.-1.E-10) GOTO 200 178 : C 179 : C 180 : IF(H1.EQ.0.D0) H1=1.D0 181 : DL1=RT1/H1 182 : AT(1)=-DSFG(1) 183 : AT(3)=-DSFG(2) 184 : AT(4)=Y-H2 185 : AT(2)=Y*ANU 186 : BT(1)=SFG(1)-DL1*SG1(1) 187 : BT(2)=SFG(2)-DL1*SG1(2)-RT2 187 : CALL SYLIN2(AT,BT,X1,DL21) 188 : BT(1)=-SSI(1) 189 : BT(2)=-SSI(2) 189 : CALL SYLIN2(AT,BT,X2,DL22) 190 : DO 110 ITYP=1,3 191 : A(ITYP)=SFG(ITYP)+X1*DSFG(ITYP)-DL1*SG1(ITYP)-DL21*SG2(ITYP) 192 : 110 B(ITYP)=X2*DSFG(ITYP)-DL22*SG2(ITYP)-SSI(ITYP) 192 : CALL DLAMD(A,B,DL31,DL32,RDP,ADP,HDP,ITEST) 193 : DO 111 ITYP=1,3 194 : SGG(ITYP)=A(ITYP)+DL31*B(ITYP) 195 : 111 DSGG(ITYP)=A(ITYP)+DL32*B(ITYP) 195 : CALL SIJ(SGG,SI,SIETOI) 195 : CALL EPSDP(SI,SIETOI,ADP,EPC1) 195 : CALL SCAL(EPC,EPC1,VAL) 195 : CALL NORME(EPC,VA1) 195 : CALL NORME(EPC1,VA2) 196 : CO1=VAL/VA1/VA2 196 : CALL SIJ(DSGG,SI,SIETOI) 196 : CALL EPSDP(SI,SIETOI,ADP,EPC1) 196 : CALL SCAL(EPC,EPC1,VAL) 196 : CALL NORME(EPC,VA1) 196 : CALL NORME(EPC1,VA2) 197 : CO2=VAL/VA1/VA2 198 : XIN1=X1+X2*DL31 199 : XIN2=X1+X2*DL32 200 : DLIN1=DL21+DL31*DL22 201 : DLIN2=DL21+DL32*DL22 202 : IF(XIN1.GT.-1.E-10.AND.DLIN1.GT.-1.E-10.AND.XIN1.LE.X 203 : 1 .AND.CO1.GT.0.9) THEN 204 : DL3=DL31 205 : X=XIN1 206 : DL2=DLIN1 207 : GOTO 200 208 : ENDIF 209 : IF(XIN2.GT.-1.E-10.AND.DLIN2.GT.-1.E-10.AND.XIN2.LE.X 210 : 1 .AND.CO2.GT.0.9) THEN 211 : DL3=DL32 212 : X=XIN2 213 : DL2=DLIN2 214 : GOTO 200 215 : ENDIF 216 : IF(IIMPI.EQ.9) WRITE(IOIMP,10101) 217 : 10101 FORMAT(1X,'T1T2DP ERREUR TRAC 1') 218 : DL3=DL31 219 : X=XIN1 220 : DL2=DLIN1 221 : 200 IF((RT2-H2*DL2).GE.-1.E-10) GOTO 300 222 : C 223 : C------------------------------------------------- 224 : C CAS OU LA TRACTION 2 PASSE EN DESSOUS DE 0 225 : C------------------------------------------------- 226 : C 227 : C 228 : C 229 : IF(H2.EQ.0.D0) H2=1.D0 230 : DL2=RT2/H2 231 : AT(1)=-DSFG(1) 232 : AT(3)=-DSFG(2) 233 : AT(2)=Y-H1 234 : AT(4)=Y*ANU 235 : BT(1)=SFG(1)-DL2*SG2(1)-RT1 236 : BT(2)=SFG(2)-DL2*SG2(2) 236 : CALL SYLIN2(AT,BT,X1,DL11) 237 : BT(1)=-SSI(1) 238 : BT(2)=-SSI(2) 238 : CALL SYLIN2(AT,BT,X2,DL12) 239 : DO 210 ITYP=1,3 240 : A(ITYP)=SFG(ITYP)+X1*DSFG(ITYP)-DL11*SG1(ITYP)-DL2*SG2(ITYP) 241 : 210 B(ITYP)=X2*DSFG(ITYP)-DL12*SG1(ITYP)-SSI(ITYP) 241 : CALL DLAMD(A,B,DL31,DL32,RDP,ADP,HDP,ITEST) 242 : DO 211 ITYP=1,3 243 : SGG(ITYP)=A(ITYP)+DL31*B(ITYP) 244 : 211 DSGG(ITYP)=A(ITYP)+DL32*B(ITYP) 244 : CALL SIJ(SGG,SI,SIETOI) 244 : CALL EPSDP(SI,SIETOI,ADP,EPC1) 244 : CALL SCAL(EPC,EPC1,VAL) 244 : CALL NORME(EPC,VA1) 244 : CALL NORME(EPC1,VA2) 245 : CO1=VAL/VA1/VA2 245 : CALL SIJ(DSGG,SI,SIETOI) 245 : CALL EPSDP(SI,SIETOI,ADP,EPC1) 245 : CALL SCAL(EPC,EPC1,VAL) 245 : CALL NORME(EPC,VA1) 245 : CALL NORME(EPC1,VA2) 246 : CO2=VAL/VA1/VA2 247 : XIN1=X1+X2*DL31 248 : XIN2=X1+X2*DL32 249 : DLIN1=DL11+DL31*DL12 250 : DLIN2=DL11+DL32*DL12 251 : IF(XIN1.GT.-1.E-10.AND.DLIN1.GT.-1.E-10.AND.XIN1.LE.X 252 : 1 .AND.CO1.GT.0.9) THEN 253 : DL3=DL31 254 : X=XIN1 255 : DL1=DLIN1 256 : GOTO 300 257 : ENDIF 258 : IF(XIN2.GT.-1.E-10.AND.DLIN2.GT.-1.E-10.AND.XIN2.LE.X 259 : 1 .AND.CO2.GT.0.9) THEN 260 : DL3=DL32 261 : X=XIN2 262 : DL1=DLIN2 263 : GOTO 300 264 : ENDIF 265 : IF(IIMPI.EQ.9) WRITE(IOIMP,20202) 266 : 20202 FORMAT(1X,'T1T2DP ERREUR TRAC 2') 267 : DL3=DL31 268 : X=XIN1 269 : DL1=DLIN1 270 : 300 DO 310 ITYP=1,3 271 : SGG(ITYP)=SFG(ITYP)-DL1*SG1(ITYP)-DL2*SG2(ITYP) 272 : 310 SGG(ITYP)=SGG(ITYP)-DL3*SSI(ITYP)+X*DSFG(ITYP) 273 : RDP=RDP-DL3*HDP 274 : RMAX=MAX((RDP/1.73),(RDP/(1.D0-2.D0*ADP))) 275 : IF(RMAX.LT.SIREF) THEN 276 : RDP=0.D0 277 : GOTO 52 278 : ENDIF 279 : XT=XT+X 280 : DO 330 ITYP=1,3 281 : EPDP(ITYP)=EPDP(ITYP)+DL3*EPC(ITYP) 282 : 330 SFG(ITYP)=SGG(ITYP) 283 : XLAM1=XLAM1+DL1 284 : XLAM2=XLAM2+DL2 285 : XLAM3=XLAM3+DL3 286 : RT1=RT1-H1*DL1 287 : IF(RT1.LT.1.E-10) THEN 288 : H1=0.D0 289 : RT1=0.D0 290 : ENDIF 291 : RT2=RT2-H2*DL2 292 : IF(RT2.LT.1.E-10) THEN 293 : H2=0.D0 294 : RT2=0.D0 295 : ENDIF 296 : C=1.D0-1.D-10 297 : IF(XT.GE.C) THEN 298 : DO 350 ITYP=1,3 299 : IDAM(ITYP)=0 300 : 350 DSIG(ITYP)=0.D0 300 : CALL CHREP(SFG,SIG,-ANG) 300 : CALL CHREP(EPDP,EPPLDP,-ANG) 301 : IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER 302 : RETURN 303 : ENDIF 304 : GOTO 51 305 : 2000 CONTINUE 305 : CALL CHREP(SFG,SIG,-ANG) 306 : DO 2010 ITYP=1,3 307 : 2010 DSFG(ITYP)=(1.D0-XT)*DSFG(ITYP) 307 : CALL CHREP(DSFG,DSIG,-ANG) 307 : CALL CHREP(EPDP,EPPLDP,-ANG) 308 : IF(IIMPI.EQ.9) WRITE(IOIMP,9998) ITER 309 : RETURN 310 : END 311 :
© Cast3M 2003 - All rights reserved.
Disclaimer