1 : C HOOKUN SOURCE AM 08/02/14 21:24:15 6050 2 : SUBROUTINE HOOKUN(VALMAT,IB,IGAU,MFR,EXCEN,EPAIST, 3 : + MELE,NPINT,IFOU,KCAS,NBGMAT,NELMAT,SECT,LHOOK, 4 : + TXR,XLOC,XGLOB,D1HOOK,ROTHOO,DDHOMU,DDHOOK, 5 : + COBMA,XMOB,IRET) 6 : C 7 : C---------------------------------------------------------------------- 8 : C 9 : C Calcul de la matrice de HOOKE dans le cas d'un 10 : C matériau unidirectionnel 11 : C 12 : C Entrees: 13 : C -------- 14 : C VALMAT tableau de materiau 15 : C IB numero de l'element 16 : C IGAU numero du point de Gauss 17 : C MFR numero de formulation 18 : C EXCEN excentrement (coques minces avec ou sans cisail. transv) 19 : C EPAIST epaisseur (coques minces avec ou sans cisail. transv) 20 : C MELE numero de l'element fini 21 : C NPINT coque integree ou non 22 : C IFOU numero d'harmonique de Fourier 23 : C KCAS = 1 si on veut la matrice pour elle-meme 24 : C = 2 si on veut la matrice pour l'inverser ensuite 25 : C NBGMAT, NELMAT tailles des tableaux 26 : C SECT SECTION DE L'ELEMENT IB (<> 0 SI MFR.EQ.27) 27 : C LHOOK taille de la matrice de HOOKE 28 : C TXR,XLOC,XGLOB,D1HOOK,ROTHOO tableaux de travail 29 : C 30 : C Sorties: 31 : C -------- 32 : C DDHOOK matrice de HOOKE 33 : 34 : C IRET = 1 si option existante, 0 sinon 35 : C 36 : C--------------------------------------------------------------------- 37 : C 38 : IMPLICIT INTEGER(I-N) 39 : IMPLICIT REAL*8(A-H,O-Z) 40 : PARAMETER(UN=1.D0,DEUX=2.D0,UNDEMI=.5D0) 41 : CHARACTER*8 MATE 42 : C 43 : -INC CCHAMP 44 : -INC CCOPTIO 45 : C 46 : * 47 : DIMENSION VALMAT(*) 48 : DIMENSION DDHOOK(LHOOK,*),DDHOMU(LHOOK,*) 49 : DIMENSION COBMA(10),COBAUX(10) 50 : REAL*8 D3HOO1(3,3),D3HOO2(3,3),RO1HOO(3,3) 51 : REAL*8 D2HOO1(2,2),D2HOO2(2,2),RO2HOO(2,2) 52 : REAL*8 XLOC(IDIM,*),XGLOB(IDIM,*),TXR(IDIM,*) 53 : REAL*8 D1HOOK(LHOOK,*),ROTHOO(LHOOK,*) 54 : C 55 : C INITIALISATION 56 : C 57 : MATE='UNIDIREC' 57 : CALL ZERO(DDHOOK,LHOOK,LHOOK) 57 : CALL ZERO(D1HOOK,LHOOK,LHOOK) 57 : CALL ZERO(XGLOB,IDIM,IDIM) 57 : CALL ZERO(ROTHOO,LHOOK,LHOOK) 57 : CALL ZERO(COBMA,LHOOK,1) 57 : CALL ZERO(COBAUX,LHOOK,1) 58 : C 59 : IF ((MFR.EQ.1.OR.MFR.EQ.33).AND.IGAU.LE.NBGMAT) THEN 60 : c 61 : c Formulation massive 62 : c 63 : IF (MFR.EQ.1) THEN 64 : 65 : C MATRICE DE HOOKE /AXES D'ARMAURE 66 : D1HOOK(1,1)=VALMAT(1) 67 : 68 : ELSE 69 : c 70 : c Formulation milieu poreux 71 : c 72 : * elements massifs 73 : * 74 : 75 : IF(MELE.GE.79.AND.MELE.LE.83) THEN 75 : CALL PORMAO(VALMAT,MATE,IFOU,IDIM,TXR,XLOC,XGLOB, 76 : & D1HOOK,ROTHOO,DDHOOK,LHOOK, 77 : & COBMA,XMOB,KCAS,IRET) 78 : GO TO 2035 79 : * 80 : * elements joints 81 : * 82 : ELSE IF(MELE.GE.108.AND.MELE.LE.110) THEN 82 : CALL DOUO88(VALMAT,MATE,IFOU,LHOOK,DDHOOK,IRET) 83 : *********** COBMA ET XMOB PAS DEFINIS !!!! 84 : IRET=0 85 : GO TO 2035 86 : ELSE 87 : IRET=0 88 : GO TO 2035 89 : ENDIF 90 : * 91 : ENDIF 92 : * 93 : C DEFINITION DES AXES ORTHO./AXES LOCAUX 94 : IF(IDIM.EQ.2)THEN 95 : XLOC(1,1)=VALMAT(2) 96 : XLOC(2,1)=VALMAT(3) 97 : XLOC(1,2)=-XLOC(2,1) 98 : XLOC(2,2)=XLOC(1,1) 99 : ELSEIF(IDIM.EQ.3)THEN 100 : XLOC(1,1)=VALMAT(2) 101 : XLOC(2,1)=VALMAT(3) 102 : XLOC(3,1)=VALMAT(4) 103 : XLOC(1,2)=VALMAT(5) 104 : XLOC(2,2)=VALMAT(6) 105 : XLOC(3,2)=VALMAT(7) 106 : C 106 : CALL CROSS2(XLOC(1,1),XLOC(1,2),XLOC(1,3),IRR) 107 : ENDIF 108 : C 109 : C DEFINITION DES AXES ORTHO./AXES GLOBAUX 110 : C 111 : IF(IRET.EQ.1)THEN 112 : C 113 : DO 1045 K=1,IDIM 114 : DO 1045 J=1,IDIM 115 : DO 1045 I=1,IDIM 116 : XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J) 117 : 1045 CONTINUE 118 : C MATRICE DE TRANSFORMATION 119 : IF(IDIM.EQ.2)THEN 120 : ROTHOO(1,1)=XGLOB(1,1)*XGLOB(1,1) 121 : ROTHOO(1,2)=XGLOB(1,2)*XGLOB(1,2) 122 : ROTHOO(1,4)=XGLOB(1,1)*XGLOB(1,2) 123 : ROTHOO(2,1)=XGLOB(2,1)*XGLOB(2,1) 124 : ROTHOO(2,2)=XGLOB(2,2)*XGLOB(2,2) 125 : ROTHOO(2,4)=XGLOB(2,1)*XGLOB(2,2) 126 : ROTHOO(3,3)=UN 127 : ROTHOO(4,1)=DEUX*XGLOB(1,1)*XGLOB(2,1) 128 : ROTHOO(4,2)=DEUX*XGLOB(1,2)*XGLOB(2,2) 129 : ROTHOO(4,4)=XGLOB(1,2)*XGLOB(2,1)+XGLOB(1,1)*XGLOB(2,2) 130 : IF(IFOU.EQ.1)THEN 131 : ROTHOO(5,5)=XGLOB(1,1) 132 : ROTHOO(5,6)=XGLOB(1,2) 133 : ROTHOO(6,5)=XGLOB(2,1) 134 : ROTHOO(6,6)=XGLOB(2,2) 135 : ENDIF 136 : ELSEIF(IDIM.EQ.3)THEN 137 : DO 1050 IC=1,3 138 : DO 1050 IL=1,3 139 : ROTHOO(IL,IC)=XGLOB(IL,IC)*XGLOB(IL,IC) 140 : 1050 CONTINUE 141 : C 142 : DO 1060 IL=1,3 143 : ROTHOO(IL,4)=XGLOB(IL,1)*XGLOB(IL,2) 144 : ROTHOO(IL,5)=XGLOB(IL,2)*XGLOB(IL,3) 145 : ROTHOO(IL,6)=XGLOB(IL,1)*XGLOB(IL,3) 146 : 1060 CONTINUE 147 : C 148 : DO 1065 IC=1,3 149 : ROTHOO(4,IC)=DEUX*XGLOB(1,IC)*XGLOB(2,IC) 150 : ROTHOO(5,IC)=DEUX*XGLOB(2,IC)*XGLOB(3,IC) 151 : ROTHOO(6,IC)=DEUX*XGLOB(1,IC)*XGLOB(3,IC) 152 : 1065 CONTINUE 153 : C 154 : DO 1070 IL=4,6 155 : IL1=IL-3 156 : IL2=IL1+1 157 : IF(IL2.GT.3)IL2=IL2-3 158 : DO 1070 IC=4,6 159 : IC1=IC-3 160 : IC2=IC1+1 161 : IF(IC2.GT.3)IC2=IC2-3 162 : ROTHOO(IL,IC)=XGLOB(IL1,IC1)*XGLOB(IL2,IC2)+ 163 : . XGLOB(IL1,IC2)*XGLOB(IL2,IC1) 164 : 1070 CONTINUE 165 : DO 1075 IC=1,6 166 : AA=ROTHOO(6,IC) 167 : ROTHOO(6,IC)=ROTHOO(5,IC) 168 : ROTHOO(5,IC)=AA 169 : 1075 CONTINUE 170 : DO 1080 IL=1,6 171 : AA=ROTHOO(IL,6) 172 : ROTHOO(IL,6)=ROTHOO(IL,5) 173 : ROTHOO(IL,5)=AA 174 : 1080 CONTINUE 175 : ENDIF 176 : C 177 : C TRANSFORMATION DE LA MATRICE DE HOOKE ET DE COBAUX 178 : C 178 : CALL PRODT(DDHOOK,D1HOOK,ROTHOO,LHOOK,LHOOK) 179 : * 180 : IF (MFR.EQ.33) THEN 181 : DO 1085 IL=1,LHOOK 182 : DO 1085 IC=1,LHOOK 183 : COBMA(IL)=COBMA(IL)+ROTHOO(IC,IL)*COBAUX(IC) 184 : 1085 CONTINUE 185 : ENDIF 186 : ENDIF 187 : C 188 : ELSEIF (IGAU.LE.NBGMAT.AND. 189 : + (IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN 190 : C 191 : C Coques minces 192 : C 193 : IF(MFR.EQ.3) THEN 194 : C 195 : C CAS DKT INTEGRE 196 : C 197 : IF (NPINT.NE.0) THEN 198 : * CAS NON ENCORE IMPLEMENTE 199 : IRET=0 200 : GOTO 2035 201 : ELSE 202 : C 203 : C CAS TRIDIMENSIONNEL ET FOURIER 204 : C 205 : IF(IFOU.EQ.2.OR.IFOU.EQ.1) THEN 205 : CALL ZERO(D3HOO1,3,3) 206 : D3HOO1(1,1)=VALMAT(1) 207 : COSA=VALMAT(2) 208 : SINA=VALMAT(3) 209 : C 210 : COS2 = COSA**2 211 : SIN2 = SINA**2 212 : SINCOS = SINA * COSA 213 : C 214 : RO1HOO(1,1) = COS2 215 : RO1HOO(1,2) = SIN2 216 : RO1HOO(1,3) = SINCOS 217 : RO1HOO(2,1) = SIN2 218 : RO1HOO(2,2) = COS2 219 : RO1HOO(2,3) = - SINCOS 220 : RO1HOO(3,1) = - DEUX * SINCOS 221 : RO1HOO(3,2) = DEUX * SINCOS 222 : RO1HOO(3,3) = COS2 - SIN2 223 : C 224 : C PASSAGE DANS LE REPERE DE L'ELEMENT: 224 : CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3) 225 : DO 1090 J=1,3 226 : DO 1090 I=1,3 227 : DDHOOK(I,J) = D3HOO2(I,J) 228 : DDHOOK(I+3,J+3) = D3HOO2(I,J) 229 : 1090 CONTINUE 230 : C 231 : C CAS AXISYMETRIQUE ET DEFORMATIONS PLANES 232 : C 233 : ELSE IF(IFOU.EQ.0.OR.IFOU.EQ.-1.OR.IFOU.EQ.-3) THEN 233 : CALL ZERO(D2HOO1,2,2) 234 : D2HOO1(1,1)=VALMAT(1) 235 : COSA=VALMAT(2) 236 : SINA=VALMAT(3) 237 : COS2 = COSA**2 238 : SIN2 = SINA**2 239 : RO2HOO(1,1) = COS2 240 : RO2HOO(1,2) = SIN2 241 : RO2HOO(2,1) = SIN2 242 : RO2HOO(2,2) = COS2 243 : C 244 : C PASSAGE DANS LE REPERE DE L'ELEMENT: 244 : CALL PRODT (D2HOO2,D2HOO1,RO2HOO,2,2) 245 : DO 1095 J=1,2 246 : DO 1095 I=1,2 247 : DDHOOK(I,J) = D2HOO2(I,J) 248 : DDHOOK(I+2,J+2) = D2HOO2(I,J) 249 : 1095 CONTINUE 250 : C 251 : C CAS CONTRAINTES PLANES 252 : C 253 : ELSE IF(IFOU.EQ.-2) THEN 254 : YG1=VALMAT(1) 255 : DDHOOK(1,1)=YG1 256 : DDHOOK(3,3)=YG1 257 : C 258 : ELSE 259 : IRET=0 260 : ENDIF 261 : ENDIF 262 : C 263 : C Coques epaisses 264 : C 265 : ELSE IF(MFR.EQ.5) THEN 266 : C 267 : C CAS TRIDIMENSIONNEL 268 : C 269 : IF(IFOU.EQ.2) THEN 269 : CALL ZERO(D3HOO1,3,3) 269 : CALL ZERO(D2HOO2,2,2) 270 : D3HOO1(1,1)=VALMAT(1) 271 : COSA=VALMAT(2) 272 : SINA=VALMAT(3) 273 : C 274 : COS2 = COSA**2 275 : SIN2 = SINA**2 276 : SINCOS = SINA * COSA 277 : RO1HOO(1,1) = COS2 278 : RO1HOO(1,2) = SIN2 279 : RO1HOO(1,3) = SINCOS 280 : RO1HOO(2,1) = SIN2 281 : RO1HOO(2,2) = COS2 282 : RO1HOO(2,3) = - SINCOS 283 : RO1HOO(3,1) = - DEUX * SINCOS 284 : RO1HOO(3,2) = DEUX * SINCOS 285 : RO1HOO(3,3) = COS2 - SIN2 286 : C 287 : C PASSAGE DANS LE REPERE DE L'ELEMENT: 287 : CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3) 288 : DO 2000 J=1,3 289 : DO 2000 I=1,3 290 : DDHOOK(I,J) = D3HOO2(I,J) 291 : 2000 CONTINUE 292 : C 293 : ELSE 294 : IRET=0 295 : ENDIF 296 : C 297 : C Coques minces avec cisaillement transverse 298 : C 299 : ELSE IF(MFR.EQ.9) THEN 300 : C 301 : IF(IFOU.EQ.2) THEN 301 : CALL ZERO(D3HOO1,3,3) 301 : CALL ZERO(D2HOO2,2,2) 302 : D3HOO1(1,1)=VALMAT(1) 303 : COSA=VALMAT(2) 304 : SINA=VALMAT(3) 305 : C 306 : COS2 = COSA**2 307 : SIN2 = SINA**2 308 : SINCOS = SINA * COSA 309 : RO1HOO(1,1) = COS2 310 : RO1HOO(1,2) = SIN2 311 : RO1HOO(1,3) = SINCOS 312 : RO1HOO(2,1) = SIN2 313 : RO1HOO(2,2) = COS2 314 : RO1HOO(2,3) = - SINCOS 315 : RO1HOO(3,1) = - DEUX * SINCOS 316 : RO1HOO(3,2) = DEUX * SINCOS 317 : RO1HOO(3,3) = COS2 - SIN2 318 : C 319 : C PASSAGE DANS LE REPERE DE L'ELEMENT: 319 : CALL PRODT (D3HOO2,D3HOO1,RO1HOO,3,3) 320 : DO 2015 J=1,3 321 : DO 2015 I=1,3 322 : DDHOOK(I,J) = D3HOO2(I,J) 323 : DDHOOK(I+3,J+3) = D3HOO2(I,J) 324 : 2015 CONTINUE 325 : C 326 : ELSE 327 : IRET=0 328 : ENDIF 329 : C 330 : C Cas des barres 331 : C 332 : ELSE IF(MFR.EQ.27) THEN 333 : C 334 : YOU=VALMAT(1) 335 : DDHOOK(1,1)=YOU*SECT 336 : C 337 : ELSE 338 : IRET=0 339 : GOTO 2035 340 : ENDIF 341 : ENDIF 342 : C 343 : C Prise en compte de l'epaisseur et de l'excentrement 344 : C dans le cas des coques minces avec ou sans cisaillement 345 : C transverse 346 : C 347 : IF ((MFR.EQ.3.AND.NPINT.EQ.0).OR.MFR.EQ.9) THEN 347 : CALL HOOKMU(EPAIST,EXCEN,LHOOK,DDHOOK,DDHOMU) 348 : DO 1005 IO=1,LHOOK 349 : DO 1005 JO=1,LHOOK 350 : DDHOOK(IO,JO)=DDHOMU(IO,JO) 351 : 1005 CONTINUE 352 : ENDIF 353 : C 354 : 2035 RETURN 355 : END 356 : 357 : 358 : 359 : 360 : 361 : 362 : 363 : 364 : 365 : 366 :
© Cast3M 2003 - All rights reserved.
Disclaimer