Télécharger ordr3d.eso

Retour à la liste

Numérotation des lignes :

ordr3d
  1. C ORDR3D SOURCE FD218221 24/02/07 21:15:22 11834
  2. subroutine ordr3d(ndim,nordre,Fval,affiche,actift,NBRACTT)
  3.  
  4. c classement des numeros de critere du plus grand au plus petit dans
  5. c le tableau d entiers nordre (1 est le numero de l actif le plus grand)
  6.  
  7. implicit real*8 (a-h,o-z)
  8. implicit integer (i-n)
  9.  
  10. c dimension du classement
  11. integer ndim
  12. c tableau de classement
  13. integer nordre(ndim)
  14. c valeur des criteres
  15. real*8 Fval(ndim)
  16. logical affiche,affiche_local
  17. c logique critere ACTIFT
  18. logical ACTIFT(ndim)
  19. c nombre de critere actifs
  20. integer NBRACTT
  21.  
  22. c variables locales
  23. integer iordre,ival,iaux,nbr_inactif
  24.  
  25. c option d affichage
  26. affiche_local=affiche
  27. c affiche_local=.true.
  28.  
  29. c initialisation de nordre et comptage des actifs
  30. NBRACTT=0
  31. nbr_inactif=0
  32. do idir=1,ndim
  33. if(actift(idir)) then
  34. NBRACTT=NBRACTT+1
  35. nordre(NBRACTT)=idir
  36. else
  37. nbr_inactif=nbr_inactif+1
  38. nordre(ndim-(nbr_inactif-1))=idir
  39. end if
  40. end do
  41. if(nbractt+nbr_inactif.ne.ndim) then
  42. print*,'ordr3d de inclusion3d: pb de classement criteres'
  43. stop
  44. end if
  45.  
  46. c classement du plus grand au plus petit
  47. c on parcourt la liste des criteres
  48. do iordre=1,ndim-1
  49. c on compare avec tous ceux au dessous a vec le courant
  50. do ival=iordre+1,ndim
  51. if((Fval(nordre(ival)).gt.Fval(nordre(iordre))).and.
  52. # actift(nordre(ival))) then
  53. c on echange
  54. iaux=nordre(iordre)
  55. nordre(iordre)=nordre(ival)
  56. nordre(ival)=iaux
  57. end if
  58. end do
  59. end do
  60.  
  61. C c classement des inactifs du plus grand au plus petit
  62. C c on parcourt la liste des criteres
  63. C do iordre=NBRACTT+1,ndim
  64. C c on compare avec tous ceux au dessous
  65. C do ival=iordre+1,ndim
  66. C if(Fval(nordre(ival)).gt.Fval(nordre(iordre))) then
  67. C c on echange
  68. C iaux=nordre(iordre)
  69. C nordre(iordre)=nordre(ival)
  70. C nordre(ival)=iaux
  71. C end if
  72. C end do
  73. C end do
  74.  
  75.  
  76. if (affiche_local) then
  77. print*,'Dans ordr3d'
  78. do iordre=1,ndim
  79. write(*,'(A15,I2,A2,I2,1X,A2,I2,A2,E10.3,L2)')
  80. # 'Numero d ordre(,',iordre,')=',nordre(iordre),
  81. # 'F(',nordre(iordre),')=',Fval(nordre(iordre)),
  82. # actift(nordre(iordre))
  83. end do
  84. c read*
  85. end if
  86.  
  87. return
  88. end
  89.  
  90.  
  91.  
  92.  
  93.  

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