Télécharger psacce.eso

Retour à la liste

Numérotation des lignes :

psacce
  1. C PSACCE SOURCE CB215821 20/11/25 13:37:47 10792
  2. SUBROUTINE PSACCE(IRAID,IMASS,IMAIL,MTRAV,DIR, ICHP1)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * P S A C C E
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * calcule le pseudo-mode en d{placement pour une acc{l{ration
  14. * sismique d'ensemble.
  15. *
  16. * MODULES UTILISES:
  17. * -----------------
  18. *
  19.  
  20. -INC PPARAM
  21. -INC CCOPTIO
  22. -INC CCREEL
  23. -INC SMCHPOI
  24. *
  25. * PARAMETRES: (e)=entr{e (s)=sortie
  26. * -----------
  27. *
  28. * IRAID (e) pointeur sur la matrice K de la structure.
  29. * IMASS (e) pointeur sur la matrice M de la stuctureE.
  30. * IMAIL (e) pointeur sur le maillage de la structure.
  31. * MTRAV (e) pointeur sur les modes de la structure.
  32. * DIR (e) direction de l'excitation sismique.
  33. * ICHP1 (s) pointeur sur le pseudo-mode en d{placement.
  34. *
  35. CHARACTER*2 DIR
  36. SEGMENT MTRAV
  37. REAL*8 FREQ(NBMODE),MN(NBMODE),MW2(NBMODE),
  38. & QX(NBMODE),QY(NBMODE),QZ(NBMODE)
  39. INTEGER DEPL(NBMODE)
  40. ENDSEGMENT
  41. *
  42. *
  43. * AUTEUR, DATE DE CREATION:
  44. * -------------------------
  45. *
  46. * Lionel VIVAN Juillet 1988
  47. *
  48. ************************************************************************
  49. *
  50. SEGMENT PSTRA
  51. REAL*8 QSMW2(NBMODE)
  52. ENDSEGMENT
  53. *
  54. ICHP1 = 0
  55. SEGACT MTRAV
  56. NBMODE = FREQ(/1)
  57. SEGINI PSTRA
  58. IF (DIR .EQ. 'UX') THEN
  59. DO 4 I = 1,NBMODE
  60. QSMW2(I) = -1.D0 * QX(I) / MW2(I)
  61. 4 CONTINUE
  62. ELSE IF (DIR .EQ. 'UY') THEN
  63. DO 6 I = 1,NBMODE
  64. QSMW2(I) = -1.D0 * QY(I) / MW2(I)
  65. 6 CONTINUE
  66. ELSE
  67. DO 8 I = 1,NBMODE
  68. QSMW2(I) = -1.D0 * QZ(I) / MW2(I)
  69. 8 CONTINUE
  70. ENDIF
  71. *
  72. * r{solution du syst}me statique
  73. *
  74. * est-on en axisym{trique ?
  75. *
  76. IF (IFOUR.EQ.0 .OR. IFOUR.EQ.1) THEN
  77. IF (DIR .EQ. 'UX') THEN
  78. CALL ECRREE(1.D0)
  79. CALL ECRCHA('UT')
  80. CALL ECRREE(-1.D0)
  81. CALL ECRCHA('UR')
  82. CALL ECRENT(2)
  83. CALL ECROBJ('MAILLAGE',IMAIL)
  84. CALL MANUCH
  85. IF (IERR.NE.0) RETURN
  86. CALL LIROBJ('CHPOINT ',ICHPT,1,IRETOU)
  87. IF (IERR.NE.0) RETURN
  88. ELSE IF (DIR .EQ. 'UY') THEN
  89. CALL ECRREE(-1.D0)
  90. CALL ECRCHA('UT')
  91. CALL ECRREE(-1.D0)
  92. CALL ECRCHA('UR')
  93. CALL ECRENT(2)
  94. CALL ECROBJ('MAILLAGE',IMAIL)
  95. CALL MANUCH
  96. IF (IERR.NE.0) RETURN
  97. CALL LIROBJ('CHPOINT ',ICHPT,1,IRETOU)
  98. IF (IERR.NE.0) RETURN
  99. ELSE
  100. CALL ECRREE(-1.D0)
  101. CALL ECRCHA('UZ')
  102. CALL ECRENT(1)
  103. CALL ECROBJ('MAILLAGE',IMAIL)
  104. CALL MANUCH
  105. IF (IERR.NE.0) RETURN
  106. CALL LIROBJ('CHPOINT ',ICHPT,1,IRETOU)
  107. IF (IERR.NE.0) RETURN
  108. ENDIF
  109. *
  110. MCHPOI = ICHPT
  111. SEGACT MCHPOI
  112. IFOPOI = IFOUR
  113. NS = IPCHP(/1)
  114. DO 10 I = 1,NS
  115. MSOUPO = IPCHP(I)
  116. SEGACT MSOUPO
  117. NC = NOHARM(/1)
  118. DO 20 IC = 1,NC
  119. IF (IFOUR .EQ. 1) THEN
  120. IF (DIR .EQ. 'UX') THEN
  121. NOHARM(IC) = 1
  122. ELSE IF (DIR .EQ. 'UY') THEN
  123. NOHARM(IC) = -1
  124. ELSE
  125. NOHARM(IC) = 0
  126. ENDIF
  127. ELSE
  128. NOHARM(IC) = 0
  129. ENDIF
  130. 20 CONTINUE
  131. SEGDES MSOUPO
  132. 10 CONTINUE
  133. SEGDES MCHPOI
  134. ELSE
  135. CALL ECRREE(-1.D0)
  136. CALL ECRCHA(DIR)
  137. CALL ECRENT(1)
  138. CALL ECROBJ('MAILLAGE',IMAIL)
  139. CALL MANUCH
  140. IF (IERR.NE.0) RETURN
  141. CALL LIROBJ('CHPOINT ',ICHPT,1,IRETOU)
  142. IF (IERR.NE.0) RETURN
  143. ENDIF
  144. *
  145. CALL MUCPRI(ICHPT,IMASS,ICHP2)
  146. IF (IERR.NE.0) RETURN
  147. *
  148. CALL ECROBJ('CHPOINT ',ICHP2)
  149. CALL ECROBJ('RIGIDITE',IRAID)
  150. CALL RESOU
  151. IF (IERR.NE.0) RETURN
  152. CALL LIROBJ('CHPOINT ',ICHPST,1,IRETOU)
  153. IF (IERR.NE.0) RETURN
  154. *
  155. * r{solution du syst}me dynamique
  156. *
  157. DO 30 ID = 1,NBMODE
  158. XFLOT = QSMW2(ID)
  159. IPHI = DEPL(ID)
  160. IF (ID .EQ. 1) THEN
  161. CALL MUCHPO(IPHI,XFLOT,ICHPDY,1)
  162. IF (IERR.NE.0) RETURN
  163. ELSE
  164. CALL ADCHPO(ICHPDY,IPHI,ICHP3,1D0,XFLOT)
  165. IF (IERR.NE.0) RETURN
  166. CALL DECHPO(ICHPDY)
  167. IF (IERR.NE.0) RETURN
  168. ICHPDY = ICHP3
  169. ENDIF
  170. 30 CONTINUE
  171. *
  172. * calcul du pseudo-mode
  173. *
  174. CALL ADCHPO(ICHPST,ICHPDY,ICHP1,1D0,-1D0)
  175. IF (IERR.NE.0) RETURN
  176. *
  177. * destruction
  178. *
  179. CALL DECHPO(ICHPST)
  180. IF (IERR.NE.0) RETURN
  181. CALL DECHPO(ICHPDY)
  182. IF (IERR.NE.0) RETURN
  183. CALL DECHPO(ICHPT)
  184. IF (IERR.NE.0) RETURN
  185. *
  186. SEGSUP PSTRA
  187. SEGDES MTRAV
  188. *
  189. END
  190.  
  191.  
  192.  
  193.  
  194.  

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