Télécharger hbmlir.eso

Retour à la liste

Numérotation des lignes :

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

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