Télécharger arpope.eso

Retour à la liste

Numérotation des lignes :

arpope
  1. C ARPOPE SOURCE PV 22/04/15 17:10:46 11344
  2. SUBROUTINE ARPOPE (IPRIGI,IPMASS,IPAMOR,QUAD,SIGMA,IPRTRA)
  3.  
  4.  
  5. ***********************************************************************
  6. *
  7. * A R P O P E
  8. *
  9. * FONCTION:
  10. * ---------
  11. *
  12. * CONSTRUCTION DES OPERATEURS DE TRAVAIL POUR ARPACK
  13. *
  14. *
  15. * PARAMETRES: (E)=ENTREE (S)=SORTIE
  16. * -----------
  17. *
  18. *
  19. * IPRIGI ENTIER (E) POINTEUR DE LA RIGIDITE
  20. *
  21. * IPMASS ENTIER (E) POINTEUR DE LA MASSE
  22. *
  23. * IPAMOR ENTIER (E) POINTEUR DE L'AMORTISSEMENT
  24. *
  25. * QUAD LOGIQUE (E) PROBLEME QUADRATIQUE OU NON
  26. *
  27. * SIGMA COMPLEXE DP (E) VALEUR DU SHIFT
  28. *
  29. * IPRTRA ENTIER (S) POINTEUR VERS LE SEGMENT DES OPERATEURS
  30. *
  31. *
  32. * SOUS-PROGRAMMES APPELES:
  33. * ------------------------
  34. *
  35. * DECALE, TRIANG, LDMT1
  36. *
  37. * AUTEUR, DATE DE CREATION:
  38. * -------------------------
  39. *
  40. * PASCAL BOUDA 17 JUILLET 2015
  41. *
  42. * LANGAGE:
  43. * --------
  44. *
  45. * FORTRAN 77 & 90
  46. *
  47. ************************************************************************
  48.  
  49. IMPLICIT INTEGER(I-N)
  50. IMPLICIT REAL*8 (A-H,O-Z)
  51.  
  52.  
  53. -INC PPARAM
  54. -INC CCOPTIO
  55. -INC SMRIGID
  56. -INC TARWORK
  57. -INC CCREEL
  58.  
  59.  
  60. INTEGER IPRIGI
  61. INTEGER IPMASS
  62. INTEGER IPAMOR
  63. LOGICAL QUAD
  64. COMPLEX*16 SIGMA
  65. INTEGER IPRTRA
  66.  
  67. INTEGER IPBUFF
  68. INTEGER IPINT
  69. INTEGER IPCHO
  70. INTEGER NBR, NRG
  71.  
  72. * Liste des operateurs construits
  73. *
  74. * K MATRICE DE RIGIDITE
  75. * M MATRICE DE MASSE
  76. * C MATRICE D'AMORTISSEMENT
  77.  
  78.  
  79. * RIGI(1)=K
  80. * RIGI(2)=M OU KSIGMA
  81. * RIGI(3)=C
  82. * RIGI(4)=K-RE(SIGMA)*M
  83. * RIGI(5)=C+RE(SIGMA)*M
  84. * RIGI(6)=K+RE(SIGMA)*(C+RE(SIGMA)*M)
  85.  
  86. * SYME indique si l'operateur construit est symetrique
  87. *ou non
  88.  
  89. xspetl = xspeti
  90. NB=6
  91. SEGINI MRITRA
  92.  
  93. DO i=1,RIGI(/1)
  94. RIGI(i)=0
  95. ENDDO
  96.  
  97. RIGI(1)=IPRIGI
  98. RIGI(2)=IPMASS
  99.  
  100.  
  101. IF (.NOT. QUAD) THEN
  102.  
  103. CALL DECALE(IPRIGI,IPMASS,REAL(SIGMA),IPBUFF)
  104. RIGI(4)=IPBUFF
  105.  
  106. ELSE
  107.  
  108. RIGI(3)=IPAMOR
  109.  
  110. CALL DECALE (IPAMOR,IPMASS,-REAL(SIGMA),IPINT)
  111. RIGI(5)=IPINT
  112.  
  113. CALL DECALE (IPRIGI,IPINT,-REAL(SIGMA),IPBUFF)
  114. RIGI(6)=IPBUFF
  115.  
  116. ENDIF
  117.  
  118. *Triangularisation des operateurs de travail si necessaire
  119. DO i=1,RIGI(/1)
  120.  
  121. IF (RIGI(i) .NE. 0) THEN
  122.  
  123. MRIGID=RIGI(i)
  124. SEGACT MRIGID
  125. IPCHO=ICHOLE
  126.  
  127. NRG = IRIGEL(/1)
  128. NBR = IRIGEL(/2)
  129.  
  130. SYME(i)=0
  131.  
  132. IF (NRG .GE. 7) THEN
  133. DO j=1,NBR
  134. IANTI=IRIGEL(7,j)
  135. IF (IANTI .GT. 0) THEN
  136. SYME(i)=1
  137. ENDIF
  138. ENDDO
  139. ENDIF
  140.  
  141. SEGDES MRIGID
  142.  
  143. IF (IPCHO .EQ. 0) THEN
  144. IPBUFF=RIGI(i)
  145. IF (SYME(i) .EQ. 0) THEN
  146. CALL TRIANG (IPBUFF,xspetl,0)
  147. IF (IERR .NE. 0) RETURN
  148. ELSE
  149. CALL LDMT1(IPBUFF,xspetl)
  150. IF (IERR .NE. 0) RETURN
  151. ENDIF
  152. RIGI(i)=IPBUFF
  153. ENDIF
  154.  
  155. ENDIF
  156.  
  157. ENDDO
  158.  
  159.  
  160. IPRTRA=MRITRA
  161. SEGDES MRITRA
  162.  
  163. END
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  

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