Télécharger pschoc.eso

Retour à la liste

Numérotation des lignes :

pschoc
  1. C PSCHOC SOURCE CHAT 05/01/13 02:37:16 5004
  2. SUBROUTINE PSCHOC(IRAID,MTRAV,IPCH,NORM,IJ, ICHP1)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8(A-H,O-Z)
  5. ************************************************************************
  6. *
  7. * P S C H O C
  8. * -----------
  9. *
  10. * FONCTION:
  11. * ---------
  12. *
  13. * calcule le pseudo-mode en d{placement pour une force de choc.
  14. *
  15. * MODULES UTILISES:
  16. * -----------------
  17. *
  18.  
  19. -INC PPARAM
  20. -INC CCOPTIO
  21. -INC CCREEL
  22. -INC SMCOORD
  23. *
  24. * PARAMETRES: (e)=entr{e (s)=sortie
  25. * -----------
  26. *
  27. * IRAID (e) pointeur sur la matrice K de la structure.
  28. * MTRAV (e) pointeur sur un segemnt contenant les modes.
  29. * IPCH (e) point de choc.
  30. * NORM (e) normale de choc.
  31. * IJ (e) point de la structure IJ
  32. * ICHP1 (s) pointeur sur le pseudo-mode en d{placement.
  33. *
  34. *
  35. SEGMENT MTRAV
  36. REAL*8 FREQ(NBMODE),MN(NBMODE),MW2(NBMODE),
  37. & QX(NBMODE),QY(NBMODE),QZ(NBMODE)
  38. INTEGER DEPL(NBMODE)
  39. ENDSEGMENT
  40. *
  41. *
  42. * AUTEUR, DATE DE CREATION:
  43. * -------------------------
  44. *
  45. * Lionel VIVAN Juillet 1988
  46. *
  47. ************************************************************************
  48. *
  49. ICHP1 = 0
  50. *
  51. * normalisation de la normale
  52. *
  53. IPNV = (IDIM + 1) * (NORM - 1)
  54. PS = 0.D0
  55. DO 10 ID = 1,IDIM
  56. XC = XCOOR(IPNV + ID)
  57. PS = PS + XC * XC
  58. 10 CONTINUE
  59. IF (PS.LT.XPETIT) THEN
  60. CALL ERREUR(162)
  61. RETURN
  62. ENDIF
  63. RACPS = SQRT(PS)
  64. XX = XCOOR(IPNV + 1) / RACPS
  65. XY = XCOOR(IPNV + 2) / RACPS
  66. IF (IDIM.EQ.3) THEN
  67. XZ = XCOOR(IPNV + 3) / RACPS
  68. ENDIF
  69. IF (IJ.EQ.2) THEN
  70. XX = -1.D0 * XX
  71. XY = -1.D0 * XY
  72. IF (IDIM.EQ.3) THEN
  73. XZ = -1.D0 * XZ
  74. ENDIF
  75. ENDIF
  76. *
  77. * liste des composantes
  78. *
  79. IF (IDIM.EQ.3) THEN
  80. CALL ECRCHA('UZ')
  81. ENDIF
  82. CALL ECRCHA('UY')
  83. CALL ECRCHA('UX')
  84. CALL MOTS
  85. CALL LIROBJ('LISTMOTS',IMOT1,1,IRETOU)
  86. IF (IERR.NE.0) RETURN
  87. IF (IDIM.EQ.3) THEN
  88. CALL ECRCHA('FZ')
  89. ENDIF
  90. CALL ECRCHA('FY')
  91. CALL ECRCHA('FX')
  92. CALL MOTS
  93. CALL LIROBJ('LISTMOTS',IMOT2,1,IRETOU)
  94. IF (IERR.NE.0) RETURN
  95. *
  96. * cr{ation du chpoint force
  97. *
  98. IF (IDIM.EQ.3) THEN
  99. CALL ECRREE(XZ)
  100. CALL ECRCHA('FZ')
  101. ENDIF
  102. CALL ECRREE(XY)
  103. CALL ECRCHA('FY')
  104. CALL ECRREE(XX)
  105. CALL ECRCHA('FX')
  106. CALL ECRENT(IDIM)
  107. CALL ECROBJ('POINT',IPCH)
  108. CALL ECRCHA('CHPO')
  109. CALL MANUEL
  110. CALL LIROBJ('CHPOINT ',ICHP2,1,IRETOU)
  111. IF (IERR.NE.0) RETURN
  112. *
  113. SEGACT MTRAV
  114. NBMODE = FREQ(/1)
  115. *
  116. * r{solution du syst}me statique
  117. *
  118. CALL ECROBJ('CHPOINT ',ICHP2)
  119. CALL ECROBJ('RIGIDITE',IRAID)
  120. CALL RESOU
  121. CALL LIROBJ('CHPOINT ',ICHPST,1,IRETOU)
  122. IF (IERR.NE.0) RETURN
  123. *
  124. * r{solution du syst}me dynamique
  125. *
  126. DO 70 ID = 1,NBMODE
  127. IPHI = DEPL(ID)
  128. CALL XTY1(IPHI,ICHP2,IMOT1,IMOT2,XPHINF)
  129. IF (IERR.NE.0) RETURN
  130. XFLOT = XPHINF / MW2(ID)
  131. IF (ID .EQ. 1) THEN
  132. CALL MUCHPO(IPHI,XFLOT,ICHPDY,1)
  133. IF (IERR.NE.0) RETURN
  134. ELSE
  135. CALL ADCHPO(ICHPDY,IPHI,ICHP4,1D0,XFLOT)
  136. IF (IERR.NE.0) RETURN
  137. CALL DECHPO(ICHPDY)
  138. IF (IERR.NE.0) RETURN
  139. ICHPDY = ICHP4
  140. ENDIF
  141. 70 CONTINUE
  142. *
  143. * calcul du pseudo-mode
  144. *
  145. CALL ADCHPO(ICHPST,ICHPDY,ICHP1,1D0,-1D0)
  146. IF (IERR.NE.0) RETURN
  147. CALL DECHPO(ICHPST)
  148. IF (IERR.NE.0) RETURN
  149. CALL DECHPO(ICHPDY)
  150. IF (IERR.NE.0) RETURN
  151. *
  152. SEGDES MTRAV
  153. *
  154. END
  155.  
  156.  
  157.  
  158.  

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