1 : C POSNEG SOURCE BR232186 12/08/01 22:29:18 7456 2 : C JACOBA SOURCE BR 06/01/10 21:15:29 5284 3 : SUBROUTINE POSNEG(A,PPOS,PNEG) 4 : C====================================================================== 5 : C Routine permettant de calculer les parties positives et négatives 6 : C au sens de Ladevèze d'une matrice symétrique 3x3 7 : C OBJET 8 : C ----- 9 : C CALCUL DES PARTIES POS ET NEG D UNE MATRICE 3*3 SYMETRIQUE 10 : C 11 : C ENTREES 12 : C ------- 13 : C A(3,3) = MATRICE SYMETRIQUE 14 : C 15 : C SORTIES 16 : C ------- 17 : C PPOS(3,3) = PARTIE POSITIVE DAS LE REPERE INITIAL 18 : C 19 : C PNEG(3,3) = PARTIE NEGATIVE DAS LE REPERE INITIAL 20 : C 21 : C=============================================================== 22 : IMPLICIT INTEGER(I-N) 23 : IMPLICIT REAL*8 (A-H,O-Z) 24 : 25 : REAL*8 MATE1(3,3),MATE1VP(3),MATE1PP(3,3),TRAV(3,3) 26 : REAL*8 MATE1VPOS(3,3),MATE1VNEG(3,3),MATE1PPT(3,3) 27 : REAL*8 PPOS(3,3),PNEG(3,3),A(3,3) 28 : 29 : C Calcul 30 : DO I=1,3 31 : DO J=1,3 32 : MATE1(I,J) = A(I,J) 33 : ENDDO 34 : ENDDO 35 : 36 : C Diagonalisation 36 : CALL JACOBA(MATE1,3,MATE1VP,MATE1PP) 37 : 38 : C Séparation des parties positives et négatives 39 : DO I=1,3 40 : DO J=1,3 41 : MATE1VPOS(I,J) = 0.0D0 42 : MATE1VNEG(I,J) = 0.0D0 43 : ENDDO 44 : ENDDO 45 : 46 : DO I=1,3 47 : IF (MATE1VP(I).GE.0.0D0) THEN 48 : MATE1VPOS(I,I) = MATE1VP(I) 49 : ELSE 50 : MATE1VNEG(I,I) = MATE1VP(I) 51 : ENDIF 52 : ENDDO 53 : 54 : C Retour dans le repère initial 54 : CALL TRSPOD (MATE1PP,3,3,MATE1PPT) 55 : 55 : CALL MATMAT (MATE1PP,MATE1VPOS,3,3,3,TRAV) 55 : CALL MATMAT (TRAV,MATE1PPT,3,3,3,PPOS) 56 : 56 : CALL MATMAT (MATE1PP,MATE1VNEG,3,3,3,TRAV) 56 : CALL MATMAT (TRAV,MATE1PPT,3,3,3,PNEG) 57 : 58 : RETURN 59 : END 60 : 61 : 62 : 63 : 64 : 65 :
© Cast3M 2003 - All rights reserved.
Disclaimer