Télécharger reclch.eso

Retour à la liste

Numérotation des lignes :

  1. C RECLCH SOURCE JC220346 16/04/25 21:15:18 8915
  2. SUBROUTINE RECLCH(ILCHP1,ITBAS1,NBMOD1,ILCHP2)
  3. ************************************************************************
  4. * NOM : RECLCH
  5. * DESCRIPTION : Recombine les coefficients de projection d'un signal
  6. * instationnaires avec les modes correspondants
  7. ************************************************************************
  8. * APPELE PAR : recomb.eso
  9. ************************************************************************
  10. * ENTREES : ILCHP1 = pointeur vers le LISTCHPO des coefficients de
  11. * projection (voir l'operateur PJBA)
  12. * ITBAS1 = pointeur vers la TABLE de sous-type BASE_MODALE
  13. * NBMOD1 = nombre de modes concernes (0 => tous)
  14. * SORTIES : ILCHP2 = pointeur vers l'objet LISTCHPO contenant le
  15. * signal instationnaire projete sur les NBMOD1
  16. * premiers modes
  17. ************************************************************************
  18. * SYNTAXE (GIBIANE) :
  19. *
  20. * LCHPO2 = RECO LCHPO1 TBAS1 (NMOD1) ;
  21. *
  22. ************************************************************************
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8 (A-H,O-Z)
  25. -INC CCOPTIO
  26. -INC SMLCHPO
  27. -INC SMCHPOI
  28. -INC SMELEME
  29. -INC SMTABLE
  30. *
  31. SEGMENT,ICHMOD(NMO)
  32. SEGMENT,IPOMOD(NMO)
  33. SEGMENT,COEMOD(NMO)*D
  34. *
  35. CHARACTER*8 CHA8
  36. CHARACTER*12 CH12
  37. *
  38. LOGICAL ZLOGI
  39. *
  40. *
  41. * NOMBRE DE MODES CONTENUS DANS LA TABLE
  42. * ======================================
  43. CALL ACCTAB(ITBAS1,'MOT',0,0.D0,'MODES',.TRUE.,0,
  44. & 'TABLE',IVAL,XVAL,CHA8,ZLOGI,MTAB1)
  45. SEGACT,MTAB1
  46. MLOTA=MTAB1.MLOTAB
  47. NBMOD2=0
  48. DO I=1,MLOTA
  49. IF (MTAB1.MTABTI(I).EQ.'ENTIER') NBMOD2=NBMOD2+1
  50. ENDDO
  51. SEGDES,MTAB1
  52. IF (NBMOD2.EQ.0) THEN
  53. MOTERR(1:8)='TABLE'
  54. CALL ERREUR(1027)
  55. RETURN
  56. ENDIF
  57. *
  58. *
  59. * NOMBRE DE MODES SUR LESQUELS CALCULER LA PROJECTION
  60. * ===================================================
  61. IF (NBMOD1.GT.0) THEN
  62. IF (NBMOD1.GT.NBMOD2) THEN
  63. INTERR(1)=NBMOD1
  64. CALL ERREUR(36)
  65. RETURN
  66. ENDIF
  67. NMO=NBMOD1
  68. ELSE
  69. NMO=NBMOD2
  70. ENDIF
  71. *
  72. *
  73. * MEMORISATION DU POINTEUR DU CHPOINT ET DU NOEUD DE CHAQUE MODE
  74. * ==============================================================
  75. SEGINI,ICHMOD,IPOMOD
  76. DO IMO=1,NMO
  77. CALL ACCTAB(MTAB1,'ENTIER',IMO,0.D0,'MOT',.TRUE.,0,
  78. & 'TABLE',IVAL,XVAL,CHA8,ZLOGI,ITAB2)
  79. IF (IERR.NE.0) RETURN
  80. *
  81. CALL ACCTAB(ITAB2,'MOT',0,0.D0,'DEFORMEE_MODALE',.TRUE.,0,
  82. & 'CHPOINT',IVAL,XVAL,CHA8,ZLOGI,ICHP3)
  83. IF (IERR.NE.0) RETURN
  84. ICHMOD(IMO)=ICHP3
  85. *
  86. CALL ACCTAB(ITAB2,'MOT',0,0.D0,'POINT_REPERE',.TRUE.,0,
  87. & 'POINT',IVAL,XVAL,CHA8,ZLOGI,IPOI3)
  88. IF (IERR.NE.0) RETURN
  89. IPOMOD(IMO)=IPOI3
  90. *
  91. ENDDO
  92. *
  93. *
  94. *
  95. * CALCUL DE LA RECOMBINAISON MODALE, POUR CHAQUE PAS DE TEMPS
  96. * ===========================================================
  97. *
  98. MLCHP1=ILCHP1
  99. SEGACT,MLCHP1
  100. N1=MLCHP1.ICHPOI(/1)
  101. *
  102. SEGINI,MLCHP2
  103. ILCHP2=MLCHP2
  104. *
  105. WRITE(CHA8,FMT='(I8)') NMO
  106. CALL LIMCHA(CHA8,I1,I2)
  107. *
  108. * BOUCLE SUR LES PAS DE TEMPS
  109. DO IT=1,N1
  110. ICHPO1=MLCHP1.ICHPOI(IT)
  111. MCHPO1=ICHPO1
  112. SEGACT,MCHPO1
  113. MSOUP1=MCHPO1.IPCHP(1)
  114. SEGACT,MSOUP1
  115. IPT1=MSOUP1.IGEOC
  116. SEGACT,IPT1
  117. NPO1=IPT1.NUM(/2)
  118. MPOVA1=MSOUP1.IPOVAL
  119. SEGACT,MPOVA1
  120.  
  121. SEGINI,COEMOD
  122. *
  123. * BOUCLE SUR LES MODES
  124. DO IMO=1,NMO
  125. IPO1=IPOMOD(IMO)
  126. DO K=1,NPO1
  127. IF (IPT1.NUM(1,K).EQ.IPO1) GOTO 10
  128. ENDDO
  129. INTERR(1)=IMO
  130. WRITE(CHA8,FMT='(I8)') IT
  131. CALL LIMCHA(CHA8,I1,I2)
  132. MOTERR(1:8)=CHA8(I1:I2)
  133. CALL ERREUR(1054)
  134. RETURN
  135. 10 COEMOD(IMO)=MPOVA1.VPOCHA(K,1)
  136. ENDDO
  137. *
  138. CALL COMBIL(ICHMOD,COEMOD,NMO,ICHPO2)
  139. IF (IERR.NE.0) RETURN
  140. MCHPO2=ICHPO2
  141. SEGACT,MCHPO2*MOD
  142. WRITE(CH12,FMT='(I12)') IT
  143. CALL LIMCHA(CH12,I3,I4)
  144. WRITE(MCHPO2.MOCHDE,FMT='(5A)') " PROJECTION SUR ",CHA8(I1:I2),
  145. & " MODES A L'INSTANT #",CH12(I3:I4)
  146. MLCHP2.ICHPOI(IT)=ICHPO2
  147. *
  148. SEGDES,MPOVA1,IPT1,MSOUP1,MCHPO1,MCHPO2
  149. SEGSUP,COEMOD
  150. *
  151. ENDDO
  152. *
  153. SEGDES,MLCHP1,MLCHP2
  154. SEGSUP,ICHMOD,IPOMOD
  155. *
  156. RETURN
  157. *
  158. END
  159. *
  160. *
  161.  

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