Télécharger hbmlir.eso

Retour à la liste

Numérotation des lignes :

hbmlir
  1. C HBMLIR SOURCE CB215821 24/04/12 21:16:14 11897
  2. c
  3. C DEVLIR SOURCE CB215821 16/12/05 21:15:17 9237
  4. SUBROUTINE HBMLIR(ITBAS,ITKM,ITA,ITLIA,ITCHAR,ITINIT,ITOPT,
  5. & NINS,ITREDU,IPARNUM,KPREF,KCPR,NHBM,NFFT)
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8(A-H,O-Z)
  8. *--------------------------------------------------------------------*
  9. * *
  10. * Operateur DYNC : continuation par longueur d'arc *
  11. * ________________________________________________ *
  12. * *
  13. * Lecture et coherence des operandes, verification des supports *
  14. * objets TBAS, TKM, TA et TINIT. *
  15. * Obtention de la liste des points de reference. *
  16. * *
  17. * Parametres: *
  18. * *
  19. * e ITBAS Table representant une base modale *
  20. * e ITKM Table contenant les matrices de raideur et de masse *
  21. * e ITA Table contenant la matrice des amortissements *
  22. * e ITLIA Table rassemblant la description des liaisons *
  23. * e ITCHAR Table contenant les chargements *
  24. * e ITINIT Table donnant les conditions initiales *
  25. * e ITOPT
  26. * e NP Nombre de pas de temps *
  27. * e NINS On veut un resultat tous les NINS pas de calcul *
  28. * e ITREDU Table contenant les noms d'inconnues de la base B *
  29. * auxquelles on se restreint *
  30. * s KPREF Segment des points de reference *
  31. * s KCPR Segment des points *
  32. * *
  33. *--------------------------------------------------------------------*
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC SMMODEL
  37. segment mwinit
  38. integer jpdep,jpvit,jrepr
  39. endsegment
  40. segment mtbas
  41. integer itbmod,lsstru(np1),nsstru
  42. endsegment
  43. *
  44. PARAMETER ( ZERO=0.D0 )
  45. LOGICAL LOAMOR,L0,L1
  46. CHARACTER*8 TYPOBJ
  47. CHARACTER*72 CHARRE,CHARRI
  48. *
  49. NINS = 1
  50. *
  51. ITBAS = 0
  52. ITKM = 0
  53. ITA = 0
  54. ITLIA = 0
  55. ITCHAR = 0
  56. ITINIT = 0
  57. ITOPT = 0
  58. ITREDU = 0
  59. IPARNUM= 0
  60. ITINV = 0
  61. *
  62. * A/ Lecture des operandes, les tables puis les autres:
  63. *
  64. CALL MESLIR(-261)
  65. CALL LIRTAB('BASE_MODALE',ITBAS,0,IRET)
  66. IF (IRET.EQ.0) THEN
  67. CALL LIRTAB('ENSEMBLE_DE_BASES',ITBAS,0,IRET)
  68. ENDIF
  69. IF (IERR.NE.0) RETURN
  70. IF (ITBAS.NE.0 .AND. IIMPI.EQ.333) THEN
  71. WRITE(IOIMP,*)' on a lu la table definissant la base modale.'
  72. ENDIF
  73. *
  74. CALL MESLIR(-262)
  75. CALL LIRTAB('RAIDEUR_ET_MASSE',ITKM,0,IRET)
  76. IF (IERR.NE.0) RETURN
  77. IF (ITKM.NE.0 .AND. IIMPI.EQ.333) THEN
  78. WRITE(IOIMP,*)
  79. & ' on a lu la table definissant les matrices de raideurs.'
  80. ENDIF
  81. *
  82. IF (ITKM.EQ.0 .AND. ITBAS.eq.0) THEN
  83. WRITE(IOIMP,*) 'Absence de base modale ou de matrice K et M'
  84. MOTERR(1:8)='TABLE'
  85. CALL ERREUR(37)
  86. RETURN
  87. ENDIF
  88. *
  89. CALL MESLIR(-263)
  90. CALL LIRTAB('AMORTISSEMENT',ITA,0,IRET)
  91. IF (IERR.NE.0) RETURN
  92. IF (ITA.NE.0 .AND. IIMPI.EQ.333) THEN
  93. WRITE(IOIMP,*)
  94. & ' on a lu la table definissant une matrice d''amortissement.'
  95. ENDIF
  96. *
  97. CALL MESLIR(-264)
  98. CALL LIRTAB('LIAISON',ITLIA,0,IRET)
  99. IF (IERR.NE.0) RETURN
  100. IF (ITLIA.NE.0 .AND. IIMPI.EQ.333) THEN
  101. WRITE(IOIMP,*)' on a lu la table definissant les liaisons.'
  102. ENDIF
  103. *
  104. CALL MESLIR(-265)
  105. cbp CALL LIRTAB('CHARFREQ',ITCHAR,0,IRET)
  106. CALL LIRTAB('CHARGEMENT',ITCHAR,0,IRET)
  107. IF (IERR.NE.0) RETURN
  108. IF (ITCHAR.NE.0 .AND. IIMPI.EQ.333) THEN
  109. WRITE(IOIMP,*)' on a lu la table definissant les chargements.'
  110. ENDIF
  111. *
  112. CALL MESLIR(-266)
  113. CALL LIRTAB('INITIAL',ITINIT,0,IRET)
  114. IF (IERR.NE.0) RETURN
  115. IF (ITINIT.NE.0 .AND. IIMPI.EQ.333) THEN
  116. WRITE(IOIMP,*)
  117. &' on a lu la table definissant les conditions initiales.'
  118. ENDIF
  119. *
  120. CALL MESLIR(-267)
  121. cbp CALL LIRTAB('PAR_CONT',IPARNUM,0,IRET)
  122. CALL LIRTAB('PARAMETRES_NUMERIQUES',IPARNUM,0,IRET)
  123. IF (IERR.NE.0) RETURN
  124. IF (IPARNUM.NE.0 .AND. IIMPI.EQ.333) THEN
  125. WRITE(IOIMP,*)
  126. &' on a lu la table definissant les parametres de continuation.'
  127. ENDIF
  128. *
  129. CALL MESLIR(-268)
  130. CALL LIRTAB('REPRISE',IREP,0,IRET)
  131. IF (IERR.NE.0) RETURN
  132. IF (IREP.NE.0 .AND. IIMPI.EQ.333) THEN
  133. WRITE(IOIMP,*)
  134. &' on a lu la table definissant la reprise'
  135. ENDIF
  136. *
  137. CALL MESLIR(-270)
  138. CALL LIRTAB('RESTRICTION',ITREDU,0,IRET)
  139. IF (IERR.NE.0) RETURN
  140. *
  141. * CALL MESLIR(-269)
  142. * CALL LIRENT(NP,1,IRET)
  143. * IF (IERR.NE.0) RETURN
  144. CALL MESLIR(-271)
  145. CALL LIRENT(NHBM,1,IRET)
  146. IF (IERR.NE.0) RETURN
  147. IF (NHBM.NE.0 .AND. IIMPI.EQ.333) THEN
  148. WRITE(IOIMP,*)' On a lu le nombre d''harmoniques.'
  149. ENDIF
  150. *
  151. CALL MESLIR(-272)
  152. CALL LIRENT(NFFT,1,IRET)
  153. IF (IERR.NE.0) RETURN
  154. *
  155. CALL MESLIR(-273)
  156. CALL LIRENT(NINS,0,IRET)
  157. IF (IERR.NE.0) RETURN
  158. *
  159. * B/ Coherence des operandes
  160. *
  161. IF (ITBAS.EQ.0 .AND. ITKM.EQ.0) THEN
  162. CALL ERREUR(478)
  163. RETURN
  164. ENDIF
  165. IF (ITCHAR.EQ.0 .AND. ITINIT.EQ.0 .AND. IREP.EQ.0) THEN
  166. CALL ERREUR(479)
  167. RETURN
  168. ENDIF
  169. *
  170. IF (NINS.LE.0) THEN
  171. IF(LANGUE.EQ.'ANGL') THEN
  172. MOTERR(1:40)='calculation steps between two outputs'
  173. ELSE
  174. MOTERR(1:40)='pas de calcul entre deux sorties'
  175. ENDIF
  176. CALL ERREUR(480)
  177. RETURN
  178. ENDIF
  179. *
  180. * C/ Verification des supports des objets TBAS, TKM, TA et TINIT
  181. * et obtention de la liste des points de reference
  182. *
  183. it1 = itbas
  184. CALL DYNE13(IT1,ITKM,KPREF,KCPR,.false.)
  185. IF (IERR.NE.0) RETURN
  186. END
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  

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