hbmzx
C HBMZX SOURCE OF166741 26/05/11 21:15:18 12538 *======================================================================= * ZX: calcul du produit Z(w)*X * * Z : Matrice de raideur dynamique * = | w²*kron(DL²,M) + w*kron(DL,C) + kron(I,K) si LOGAMO * | w²*kron(DL²,M) + kron(I,K) sinon * X : coefficients de Fourier * w : frequence *======================================================================= *----- Declarations ---------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) REAL*8 X(NT),ZX(NT),OMEG REAL*8 XM(NDDL,NDDL),XC(NDDL,NDDL),XK(NDDL,NDDL) REAL*8 CF INTEGER NT,NDDL,ISD,H,I,J,M,P,Q LOGICAL LOGAMO * Nombre d'harmoniques NH = (NT/NDDL - 1)/2 *------ Matrices diagonales -------------------------------------------- IF (ISD.EQ.1) THEN * Termes constants DO 1 P=1,NDDL ZX(P) = XK(P,1)*X(P) 1 CONTINUE c -cas non conservatif (i.e. avec amortissement) IF (LOGAMO) THEN DO 10 J=1,2*NH * Termes pairs (sin) IF (MOD(J,2).EQ.0) THEN cf = -J * 0.5D0 r_z1 = OMEG*cf r_z2 = r_z1*r_z1 DO 11 I = 1,NDDL ZX(J*nddl+I)= (XK(I,1)-r_z2*XM(I,1))*x(J*nddl+I) & +r_z1*XC(I,1)*x((J-1)*nddl+I) 11 CONTINUE * Termes impairs (cos) ELSE cf = (J+1)*0.5D0 r_z1 = OMEG*cf r_z2 = r_z1*r_z1 DO 12 I = 1,NDDL ZX(J*nddl+I)=(XK(I,1)-r_z2*XM(I,1))*X(J*nddl+I) & +r_z1*XC(I,1)*x((J+1)*NDDL+I) 12 CONTINUE ENDIF 10 CONTINUE c -cas conservatif (i.e. sans amortissement) ELSE DO 20 J=1,2*NH * Termes pairs (sin) IF (MOD(J,2).EQ.0) THEN cf = -J * 0.5D0 r_z1 = OMEG*cf r_z2 = r_z1*r_z1 DO 21 I = 1,NDDL ZX(J*nddl+I)=(XK(I,1)- r_z2*XM(I,1))*x(J*nddl+I) 21 CONTINUE * Termes impairs (cos) ELSE cf = (J+1) * 0.5D0 r_z1 = OMEG*cf r_z2 = r_z1*r_z1 DO 22 I = 1,NDDL ZX(J*nddl+I)=(XK(I,1)-r_z2*XM(I,1))*X(J*nddl+I) 22 CONTINUE ENDIF 20 CONTINUE ENDIF *------ Matrices generales --------------------------------------------- ELSE * Termes constants DO 101 P=1,NDDL r_z = 0.D0 DO 102 Q=1,NDDL r_z = r_z + XK(P,Q)*X(Q) 102 CONTINUE ZX(P) = r_z 101 CONTINUE c -cas non conservatif (i.e. avec amortissement) IF (LOGAMO) THEN DO 111 J=2,2,2*NH r_z1 = J*OMEG r_z2 = r_z1 * r_z1 DO 112 M=1,NDDL ZX(J*NDDL+M) = 0.D0 DO 113 H=1,NDDL ZX(J*NDDL+M)=ZX(J*NDDL+M)+(XK(M,H)-r_z2*XM(M,H)) & *X(J*NDDL+H)+r_z1*XC(M,H)*X((J+1)*NDDL+H) ZX((J+1)*NDDL+M)=ZX((J+1)*NDDL+M)-(XK(M,H)+r_z2 & *XM(M,H))*X((J+1)*NDDL+H)-r_z1*XC(M,H)*X(J*NDDL+H) 113 CONTINUE 112 CONTINUE 111 CONTINUE c -cas conservatif (i.e. sans amortissement) ELSE DO 121 J=2,2,2*NH r_z2 = (J*OMEG)**2 DO 122 M=1,NDDL ZX(J*NDDL+M) = 0.D0 DO 123 H=1,NDDL ZX(J*NDDL+M)=ZX(J*NDDL+M)+(XK(M,H)-r_z2*XM(M,H)) & *X(J*NDDL+H) ZX((J+1)*NDDL+M)=ZX((J+1)*NDDL+M)+(XK(M,H)-r_z2 & *XM(M,H))*X((J+1)*NDDL+H) 123 CONTINUE 122 CONTINUE 121 CONTINUE ENDIF ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales