dktgr1
C DKTGR1 SOURCE CHAT 09/10/09 21:17:17 6519 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C C CALCULE LA MATRICE DE RAIDEUR LIEE A LA VARIATION DE PRESSION DUE C AU MOUVEMENT SUIVANT VECZ DANS UN CHAMP DE PESANTEUR C C cette matrice est non symetrique mais combinée avec la mattrice kp c donne une matrice symetrique c'est pourquoi on calcule les matrices c symetriques et dissymetriques. c c on utilise des fonctions de formes linéaires meme pour les ddl normaux c au plan car c'est ce qu'on fait pour kp et ksig aussi. c C C ENTREE C XE(3,3)=COODONNEES DE L ELEMENT C RG =MASSE VOLUMIQUE * ACCELERATION DE GRAVITE C IPOIN1 =VECTEUR(POINT) DEFINISSANT LE SENS DE GRAVITE * IDISS : 0 ---> MATRICE SYMETRIQUE * 1 ---> MATRICE DISSYMETRIQUE * IXMATR : pointeur du segment xmatri * iel njumero de l'element C TRAVAIL C XEL(3,3) =COORDONNEES LOCALES DE L ELEMENT C BPSS(3,3) =MATRICE DE PASSAGE C VECN(3) =VECTEUR DEFINISSANT LA NORMALE C VECZ(3) =VECTEUR DEFINISSANT LE SENS DE GRAVITE C SORTIES C RE(18,18)=MATRICE DE RAIDEUR REPERE GLOBAL (dans le segment xmatri) C C JUILLET 95 I. POLITOPOULOS C C======================================================================= -INC PPARAM -INC CCOPTIO -INC SMCOORD -INC SMRIGID DIMENSION XE(3,3),XEL(3,3),BPSS(3,3),XRE(18,18) DIMENSION VECZ(3),VECN(3) DATA UNSIX,UN12/.166666666666666666D0,.833333333333333333D-1/ C C MATRICE DE PASSAGE C C C COORDONNEES LOCALES C C C MISE A 0 DE LA MATRICE C XMATRI = IXMATR X21=XEL(1,2)-XEL(1,1) Y31=XEL(2,3)-XEL(2,1) SURF=X21*Y31*.5D0*RG C C CONSTRUCTION DE LA NORMALE C XG1 = XE(1,2) - XE(1,1) YG1 = XE(2,2) - XE(2,1) ZG1 = XE(3,2) - XE(3,1) XG2 = XE(1,3) - XE(1,1) YG2 = XE(2,3) - XE(2,1) ZG2 = XE(3,3) - XE(3,1) VECN(1) = YG1*ZG2 - ZG1*YG2 VECN(2) = ZG1*XG2 - XG1*ZG2 VECN(3) = XG1*YG2 - YG1*XG2 XNORM = VECN(1)*VECN(1) + VECN(2)*VECN(2) + VECN(3)*VECN(3) XNORM = SQRT(XNORM) DO 10 IA=1,3 VECN(IA) = VECN(IA)/XNORM 10 CONTINUE C C DETERMINATION ET NORMALISATION DE VECZ C IF (IPOIN1.NE.0) THEN VECZ(1) = XCOOR((IPOIN1-1)*(IDIM+1) + 1) VECZ(2) = XCOOR((IPOIN1-1)*(IDIM+1) + 2) VECZ(3) = XCOOR((IPOIN1-1)*(IDIM+1) + 3) ELSE VECZ(1) = VECN(1) VECZ(2) = VECN(2) VECZ(3) = VECN(3) ENDIF XNORM = VECZ(1)*VECZ(1) + VECZ(2)*VECZ(2) + VECZ(3)*VECZ(3) XNORM = SQRT(XNORM) DO 20 IA=1,3 VECZ(IA) = VECZ(IA)/XNORM 20 CONTINUE C C TERMES DE LA MATRICE DANS LE REPERE GLOBAL C DO 100 IA=1,13,6 DO 110 IC= 1,3 IAA = IA + IC - 1 DO 120 IB=1,13,6 DO 130 ID = 1,3 IBB = IB + ID -1 IF (IA.NE.IB) THEN XRE(IBB ,IAA) =UN12*VECN(ID)*VECZ(IC)*SURF ELSE XRE(IBB ,IAA) =UNSIX*VECN(ID)*VECZ(IC)*SURF ENDIF 130 CONTINUE 120 CONTINUE 110 CONTINUE 100 CONTINUE * symetrisation de la matrice DO 200 IA=1,13,6 DO 210 IC= 1,3 IAA = IA + IC - 1 DO 220 IB=1,13,6 DO 230 ID = 1,3 IBB = IB + ID -1 IF (IDISS.EQ.0) THEN RE(IAA,IBB,iel) = 0.5D0*(XRE(IAA, IBB) + XRE(IBB,IAA)) ELSE RE(IAA,IBB,iel) = XRE(IAA,IBB) ENDIF 230 CONTINUE 220 CONTINUE 210 CONTINUE 200 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales