1 : C CQ4GR1 SOURCE CHAT 11/03/16 21:18:22 6902 2 : 3 : SUBROUTINE CQ4GR1(XE,RG,IPOIN1,IDISS,IXMATR,IPMINT,iel) 4 : C======================================================================= 5 : C 6 : C CALCULE LA MATRICE DE RAIDEUR LIEE A LA VARIATION DE PRESSION DUE 7 : C AU MOUVEMENT SUIVANT VECZ DANS UN CHAMP DE PESANTEUR 8 : c élément coq4 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 15 : C 16 : C ENTREE 17 : C XE(4,4)=COODONNEES DE L ELEMENT 18 : C RG =MASSE VOLUMIQUE * ACCELERATION DE GRAVITE 19 : C IPOIN1 =VECTEUR(POINT) DEFINISSANT LE SENS DE GRAVITE 20 : * IDISS : 0 ---> MATRICE SYMETRIQUE 21 : * 1 ---> MATRICE DISSYMETRIQUE 22 : * IXMATR : pointeur du segment xmatri 23 : * ipmint: pointeur sur le segment d'integration 24 : C TRAVAIL 25 : C XEL(4,4) =COORDONNEES LOCALES DE L ELEMENT 26 : C BPSS(3,3) =MATRICE DE PASSAGE 27 : C VECN(3) =VECTEUR DEFINISSANT LA NORMALE 28 : C VECZ(3) =VECTEUR DEFINISSANT LE SENS DE GRAVITE 29 : * rel : matrice masse (repeur local) avec rho=1. Elle sert à 30 : * calculer les termes de la matrice de rigidité qui sont 31 : * similaires. 32 : C 33 : * ON CALCULE : 34 : C RE(24,24)=MATRICE DE RAIDEUR REPERE GLOBAL (dans le segment xmatri) 35 : C 36 : C JUILLET 95 I. POLITOPOULOS 37 : C 38 : C======================================================================= 39 : IMPLICIT INTEGER(I-N) 40 : IMPLICIT REAL*8(A-H,O-Z) 41 : -INC CCOPTIO 42 : -INC SMCOORD 43 : -INC SMRIGID 44 : -INC SMINTE 45 : -INC SMMODEL 46 : 47 : DIMENSION XE(3,4),XEL(3,4),BPSS(3,3),XRE(24,24) 48 : DIMENSION VECZ(3),VECN(3),RHOMAT(6,6), SHPWRK(6,4) 49 : DIMENSION BGENE(6,24),REL(24,24) 50 : 51 : MINTE=IPMINT 52 : C 53 : C COORDONNEES LOCALES 54 : C 54 : CALL CQ4LOC(XE,XEL,BPSS,IERT,0) 55 : C 56 : C MISE A 0 DE LA MATRICE 57 : C 58 : XMATRI = IXMATR 59 : 60 : C 61 : C CONSTRUCTION DE LA NORMALE 62 : **** il serait plus correct d'utiliser celle calculée dans cq4loc 63 : **** mais elle n'est pas en sortie et je suis paresseux 64 : C 65 : XG1 = XE(1,2) - XE(1,1) 66 : YG1 = XE(2,2) - XE(2,1) 67 : ZG1 = XE(3,2) - XE(3,1) 68 : XG2 = XE(1,3) - XE(1,1) 69 : YG2 = XE(2,3) - XE(2,1) 70 : ZG2 = XE(3,3) - XE(3,1) 71 : VECN(1) = YG1*ZG2 - ZG1*YG2 72 : VECN(2) = ZG1*XG2 - XG1*ZG2 73 : VECN(3) = XG1*YG2 - YG1*XG2 74 : XNORM = VECN(1)*VECN(1) + VECN(2)*VECN(2) + VECN(3)*VECN(3) 75 : XNORM = SQRT(XNORM) 76 : DO 10 IA=1,3 77 : VECN(IA) = VECN(IA)/XNORM 78 : 10 CONTINUE 79 : 80 : C 81 : C DETERMINATION ET NORMALISATION DE VECZ 82 : C 83 : IF (IPOIN1.NE.0) THEN 84 : VECZ(1) = XCOOR((IPOIN1-1)*(IDIM+1) + 1) 85 : VECZ(2) = XCOOR((IPOIN1-1)*(IDIM+1) + 2) 86 : VECZ(3) = XCOOR((IPOIN1-1)*(IDIM+1) + 3) 87 : ELSE 88 : VECZ(1) = VECN(1) 89 : VECZ(2) = VECN(2) 90 : VECZ(3) = VECN(3) 91 : ENDIF 92 : XNORM = VECZ(1)*VECZ(1) + VECZ(2)*VECZ(2) + VECZ(3)*VECZ(3) 93 : XNORM = SQRT(XNORM) 94 : DO 20 IA=1,3 95 : VECZ(IA) = VECZ(IA)/XNORM 96 : 20 CONTINUE 97 : 98 : 99 : c 100 : c construction de la matrice masse dans le repere local avec rho=1 101 : c 101 : CALL ZERO(RHOMAT,6,6) 102 : RHOMAT( 1, 1)=1.D0 103 : RHOMAT( 2, 2)=1.D0 104 : RHOMAT( 3, 3)=1.D0 104 : CALL ZERO(REL,24,24) 105 : DO 21 IGAU=1,4 105 : CALL NCOQ4(IGAU,XEL,SHPTOT,SHPWRK,BGENE,DJAC,IERT) 106 : C IERT=1 JACOBIANO=<0 106 : IF(IERT.EQ.1) CALL ERREUR(664) 107 : DJAC=DJAC*POIGAU(IGAU) 108 : LRE = 24 108 : CALL BDBST(BGENE,DJAC,RHOMAT,LRE,6,REL) 109 : 21 CONTINUE 110 : 111 : 112 : C 113 : C TERMES DE LA MATRICE DANS LE REPERE GLOBAL 114 : C 115 : DO 100 IA=1,19,6 116 : DO 110 IC= 1,3 117 : IAA = IA + IC - 1 118 : DO 120 IB=1,19,6 119 : DO 130 ID = 1,3 120 : IBB = IB + ID -1 121 : XRE(IBB ,IAA) =REL(IB,IA)*VECN(ID)*VECZ(IC)*RG 122 : 130 CONTINUE 123 : 120 CONTINUE 124 : 110 CONTINUE 125 : 100 CONTINUE 126 : 127 : * symetrisation de la matrice 128 : DO 200 IA=1,19,6 129 : DO 210 IC= 1,3 130 : IAA = IA + IC - 1 131 : DO 220 IB=1,19,6 132 : DO 230 ID = 1,3 133 : IBB = IB + ID -1 134 : IF (IDISS.EQ.0) THEN 135 : RE(IAA,IBB,iel) = 0.5D0*(XRE(IAA, IBB) + XRE(IBB,IAA)) 136 : ELSE 137 : RE(IAA,IBB,iel) = XRE(IAA,IBB) 138 : ENDIF 139 : 230 CONTINUE 140 : 220 CONTINUE 141 : 210 CONTINUE 142 : 200 CONTINUE 143 : 144 : 145 : RETURN 146 : END 147 : 148 : 149 : 150 : 151 : 152 : 153 : 154 : 155 : 156 : 157 : 158 : 159 : 160 :
© Cast3M 2003 - All rights reserved.
Disclaimer