Télécharger topv6.eso

Retour à la liste

Numérotation des lignes :

topv6
  1. C TOPV6 SOURCE GOUNAND 26/06/09 21:15:22 12566
  2. SUBROUTINE TOPV6(TRAVL,QTOL,ICBES)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : TOPV6
  7. C DESCRIPTION :
  8. *
  9. * Calcul des meilleurs candidats par maximum lexical
  10. *
  11. C
  12. C
  13. C
  14. C LANGAGE : ESOPE
  15. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  16. C mél : gounand@semt2.smts.cea.fr
  17. C***********************************************************************
  18. C VERSION : v1, 09/11/2017, version initiale
  19. C HISTORIQUE : v1, 09/11/2017, création
  20. C HISTORIQUE :
  21. C HISTORIQUE :
  22. C***********************************************************************
  23. -INC PPARAM
  24. -INC CCOPTIO
  25. -INC CCREEL
  26. -INC TMATOP1
  27. POINTEUR TRAVK.TRAVJ
  28. -INC SMLENTI
  29. POINTEUR LIDXCA.MLENTI
  30. POINTEUR LOKVOL.MLENTI
  31. POINTEUR LNQUAL.MLENTI
  32. POINTEUR LINDI.MLENTI
  33. POINTEUR LINDJ.MLENTI
  34. -INC SMLREEL
  35. POINTEUR LQUALS.MLREEL
  36. * POINTEUR LMAXQL.MLREEL
  37. *
  38. * Executable statements
  39. *
  40. * WRITE(IOIMP,*) 'coucou topv6'
  41. *
  42. LIDXCA=TRAVL.IDXCA
  43. LOKVOL=TRAVL.OKVOL
  44. LQUALS=TRAVL.QUALS
  45. LNQUAL=TRAVL.NQUAL
  46. LINDI=TRAVL.INDI
  47. LINDJ=TRAVL.INDJ
  48. * LMAXQL=TRAVL.MAXQL
  49. *
  50. * Calcule la liste des indices des meilleurs candidats dans ITVOL
  51. * cf. procedure MAXLEXI
  52. * Il est sans doute possible
  53. * de n'avoir que ILIND
  54. *
  55. IINDIC=1
  56. *
  57. NINDI=0
  58. DO IVOCOU=1,NVOCOU
  59. NINDI=NINDI+1
  60. LINDI.LECT(NINDI)=IVOCOU
  61. * LMAXQL.PROG(NINDI)=-1.D0
  62. ENDDO
  63. *
  64. 10 CONTINUE
  65. XMAX2=-1.D0
  66. *
  67. NINDJ=0
  68. *
  69. DO IQ=1,NINDI
  70. II=LINDI.LECT(IQ)
  71. ICAND=LOKVOL.LECT(II)
  72. IF (IINDIC.GT.(LNQUAL.LECT(ICAND))) THEN
  73. NINDJ=NINDJ+1
  74. LINDJ.LECT(NINDJ)=II
  75. ELSE
  76. IELDEB=LIDXCA.LECT(ICAND)
  77. * XMAX2=LMAXQL.PROG(IINDIC)
  78. XQUAL=LQUALS.PROG(IELDEB+IINDIC-1)
  79. XMAX2=MAX(XMAX2,XQUAL)
  80. * write(ioimp,*) 'II,ICAND,XQUAL=',II,ICAND,XQUAL
  81. * XMAX2=MAX(XMAX2,LQUALS.PROG(IELDEB+IINDIC-1))
  82. * LMAXQL.PROG(IINDIC)=XMAX2
  83. ENDIF
  84. ENDDO
  85. *
  86. * WRITE(IOIMP,*) 'IINDIC,XMAX2=',IINDIC,XMAX2
  87. *
  88. IF (NINDJ.GT.0) THEN
  89. DO IINDJ=1,NINDJ
  90. LINDI.LECT(IINDJ)=LINDJ.LECT(IINDJ)
  91. ENDDO
  92. NINDI=NINDJ
  93. *
  94. GOTO 20
  95. ELSE
  96. DO IQ=1,NINDI
  97. II=LINDI.LECT(IQ)
  98. ICAND=LOKVOL.LECT(II)
  99. IELDEB=LIDXCA.LECT(ICAND)
  100. XQUAL=LQUALS.PROG(IELDEB+IINDIC-1)
  101. * IF (ABS(XMAX-XQUAL).LE.XZPREC) THEN
  102. * Il faut faire tres attention à ce critère
  103. * XMAX2=LMAXQL.PROG(IINDIC)
  104. XPREC=MAX(XZPREC*1.D2,XMAX2*QTOL)
  105. IF (ABS(XMAX2-XQUAL).LE.XPREC) THEN
  106. NINDJ=NINDJ+1
  107. LINDJ.LECT(NINDJ)=II
  108. ENDIF
  109. ENDDO
  110. *
  111. DO IINDJ=1,NINDJ
  112. LINDI.LECT(IINDJ)=LINDJ.LECT(IINDJ)
  113. ENDDO
  114. NINDI=NINDJ
  115. *
  116. IF (NINDI.EQ.1) GOTO 20
  117. ENDIF
  118. *
  119. IINDIC=IINDIC+1
  120. GOTO 10
  121. 20 CONTINUE
  122. *
  123. ICBES=LOKVOL.LECT(LINDI.LECT(1))
  124. RETURN
  125. *
  126. *
  127. *
  128. 9999 CONTINUE
  129. MOTERR(1:8)='TOPV6 '
  130. * 349 2
  131. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  132. CALL ERREUR(349)
  133. RETURN
  134. *
  135. * End of subroutine TOPV6
  136. *
  137. END
  138.  
  139.  

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