Télécharger posneg.eso

Retour à la liste

Numérotation des lignes :

posneg
  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
  37. CALL JACOBA(MATE1,3,MATE1VP,MATE1PP)
  38.  
  39. C Séparation des parties positives et négatives
  40. DO I=1,3
  41. DO J=1,3
  42. MATE1VPOS(I,J) = 0.0D0
  43. MATE1VNEG(I,J) = 0.0D0
  44. ENDDO
  45. ENDDO
  46.  
  47. DO I=1,3
  48. IF (MATE1VP(I).GE.0.0D0) THEN
  49. MATE1VPOS(I,I) = MATE1VP(I)
  50. ELSE
  51. MATE1VNEG(I,I) = MATE1VP(I)
  52. ENDIF
  53. ENDDO
  54.  
  55. C Retour dans le repère initial
  56. CALL TRSPOD (MATE1PP,3,3,MATE1PPT)
  57.  
  58. CALL MATMAT (MATE1PP,MATE1VPOS,3,3,3,TRAV)
  59. CALL MATMAT (TRAV,MATE1PPT,3,3,3,PPOS)
  60.  
  61. CALL MATMAT (MATE1PP,MATE1VNEG,3,3,3,TRAV)
  62. CALL MATMAT (TRAV,MATE1PPT,3,3,3,PNEG)
  63.  
  64. RETURN
  65. END
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales