1 : C DKTGR1 SOURCE CHAT 09/10/09 21:17:17 6519 2 : SUBROUTINE DKTGR1(XE,RG,IPOIN1,IDISS,IXMATR,iel) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8(A-H,O-Z) 5 : C======================================================================= 6 : C 7 : C CALCULE LA MATRICE DE RAIDEUR LIEE A LA VARIATION DE PRESSION DUE 8 : C AU MOUVEMENT SUIVANT VECZ DANS UN CHAMP DE PESANTEUR 9 : C 10 : C cette matrice est non symetrique mais combinée avec la mattrice kp 11 : c donne une matrice symetrique c'est pourquoi on calcule les matrices 12 : c symetriques et dissymetriques. 13 : c 14 : c on utilise des fonctions de formes linéaires meme pour les ddl normaux 15 : c au plan car c'est ce qu'on fait pour kp et ksig aussi. 16 : c 17 : C 18 : C ENTREE 19 : C XE(3,3)=COODONNEES DE L ELEMENT 20 : C RG =MASSE VOLUMIQUE * ACCELERATION DE GRAVITE 21 : C IPOIN1 =VECTEUR(POINT) DEFINISSANT LE SENS DE GRAVITE 22 : * IDISS : 0 ---> MATRICE SYMETRIQUE 23 : * 1 ---> MATRICE DISSYMETRIQUE 24 : * IXMATR : pointeur du segment xmatri 25 : * iel njumero de l'element 26 : C TRAVAIL 27 : C XEL(3,3) =COORDONNEES LOCALES DE L ELEMENT 28 : C BPSS(3,3) =MATRICE DE PASSAGE 29 : C VECN(3) =VECTEUR DEFINISSANT LA NORMALE 30 : C VECZ(3) =VECTEUR DEFINISSANT LE SENS DE GRAVITE 31 : C SORTIES 32 : C RE(18,18)=MATRICE DE RAIDEUR REPERE GLOBAL (dans le segment xmatri) 33 : C 34 : C JUILLET 95 I. POLITOPOULOS 35 : C 36 : C======================================================================= 37 : -INC CCOPTIO 38 : -INC SMCOORD 39 : -INC SMRIGID 40 : 41 : DIMENSION XE(3,3),XEL(3,3),BPSS(3,3),XRE(18,18) 42 : DIMENSION VECZ(3),VECN(3) 43 : DATA UNSIX,UN12/.166666666666666666D0,.833333333333333333D-1/ 44 : 45 : C 46 : C MATRICE DE PASSAGE 47 : C 47 : CALL VPAST(XE,BPSS) 48 : C 49 : C COORDONNEES LOCALES 50 : C 50 : CALL VCORLC(XE,XEL,BPSS) 51 : C 52 : C MISE A 0 DE LA MATRICE 53 : C 54 : XMATRI = IXMATR 55 : 56 : X21=XEL(1,2)-XEL(1,1) 57 : Y31=XEL(2,3)-XEL(2,1) 58 : SURF=X21*Y31*.5D0*RG 59 : 60 : C 61 : C CONSTRUCTION DE LA NORMALE 62 : C 63 : XG1 = XE(1,2) - XE(1,1) 64 : YG1 = XE(2,2) - XE(2,1) 65 : ZG1 = XE(3,2) - XE(3,1) 66 : XG2 = XE(1,3) - XE(1,1) 67 : YG2 = XE(2,3) - XE(2,1) 68 : ZG2 = XE(3,3) - XE(3,1) 69 : VECN(1) = YG1*ZG2 - ZG1*YG2 70 : VECN(2) = ZG1*XG2 - XG1*ZG2 71 : VECN(3) = XG1*YG2 - YG1*XG2 72 : XNORM = VECN(1)*VECN(1) + VECN(2)*VECN(2) + VECN(3)*VECN(3) 73 : XNORM = SQRT(XNORM) 74 : DO 10 IA=1,3 75 : VECN(IA) = VECN(IA)/XNORM 76 : 10 CONTINUE 77 : 78 : C 79 : C DETERMINATION ET NORMALISATION DE VECZ 80 : C 81 : IF (IPOIN1.NE.0) THEN 82 : VECZ(1) = XCOOR((IPOIN1-1)*(IDIM+1) + 1) 83 : VECZ(2) = XCOOR((IPOIN1-1)*(IDIM+1) + 2) 84 : VECZ(3) = XCOOR((IPOIN1-1)*(IDIM+1) + 3) 85 : ELSE 86 : VECZ(1) = VECN(1) 87 : VECZ(2) = VECN(2) 88 : VECZ(3) = VECN(3) 89 : ENDIF 90 : XNORM = VECZ(1)*VECZ(1) + VECZ(2)*VECZ(2) + VECZ(3)*VECZ(3) 91 : XNORM = SQRT(XNORM) 92 : DO 20 IA=1,3 93 : VECZ(IA) = VECZ(IA)/XNORM 94 : 20 CONTINUE 95 : 96 : C 97 : C TERMES DE LA MATRICE DANS LE REPERE GLOBAL 98 : C 99 : DO 100 IA=1,13,6 100 : DO 110 IC= 1,3 101 : IAA = IA + IC - 1 102 : DO 120 IB=1,13,6 103 : DO 130 ID = 1,3 104 : IBB = IB + ID -1 105 : IF (IA.NE.IB) THEN 106 : XRE(IBB ,IAA) =UN12*VECN(ID)*VECZ(IC)*SURF 107 : ELSE 108 : XRE(IBB ,IAA) =UNSIX*VECN(ID)*VECZ(IC)*SURF 109 : ENDIF 110 : 130 CONTINUE 111 : 120 CONTINUE 112 : 110 CONTINUE 113 : 100 CONTINUE 114 : 115 : * symetrisation de la matrice 116 : DO 200 IA=1,13,6 117 : DO 210 IC= 1,3 118 : IAA = IA + IC - 1 119 : DO 220 IB=1,13,6 120 : DO 230 ID = 1,3 121 : IBB = IB + ID -1 122 : IF (IDISS.EQ.0) THEN 123 : RE(IAA,IBB,iel) = 0.5D0*(XRE(IAA, IBB) + XRE(IBB,IAA)) 124 : ELSE 125 : RE(IAA,IBB,iel) = XRE(IAA,IBB) 126 : ENDIF 127 : 230 CONTINUE 128 : 220 CONTINUE 129 : 210 CONTINUE 130 : 200 CONTINUE 131 : 132 : 133 : RETURN 134 : END 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : 143 :
© Cast3M 2003 - All rights reserved.
Disclaimer