Télécharger calnu6.eso

Retour à la liste

Numérotation des lignes :

calnu6
  1. C CALNU6 SOURCE GOUNAND 25/04/30 21:15:02 12258
  2. SUBROUTINE CALNU6(KMINCT,PMTOT,IZATOT,
  3. $ IRENU,
  4. $ KTYPI,IORINC,MLAG1,MLAG2,
  5. $ IPBLOC,
  6. $ NEWNUM,
  7. $ IMPR,IRET)
  8. IMPLICIT REAL*8 (A-H,O-Z)
  9. IMPLICIT INTEGER (I-N)
  10. C***********************************************************************
  11. C NOM : CALNU6
  12. C PROJET : Noyau linéaire NLIN
  13. C DESCRIPTION : Calcul d'une renumérotation avec minimisation d'un
  14. C profil PUIS placement des inconnues suivant l'ordre
  15. C donné par LIORD
  16. C Dans calnum, on effectuait les choses suivantes :
  17. C - minimisation du profil sur les ddl sans les ML.
  18. C - insertion des ML dans la nouvelle numérotation
  19. C Maintenant, on essaie la chose suivante :
  20. C - minimisation du profil sur les ddl AVEC les ML.;
  21. C - retrait des ML de la numérotation ;
  22. C - réinsertion des ML pour les placer après les ddl non
  23. C ML auxquels ils sont liés.
  24. C
  25. C On essaie de faire correctement le traitement des multiplicateurs
  26. C de Lagrange.
  27. C
  28. C
  29. C
  30. C IRENU=1 'RIEN' : pas de renumérotation
  31. C 2 'SLOA' : algorithme de chez Sloan
  32. C 3 'GIPR' : Gibbs-King (profile reduction)
  33. C 4 'GIBA' : Gibbs-Poole-Stockmeyer (bandwidth reduction)
  34. C
  35. C LANGAGE : ESOPE
  36. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  37. C mél : gounand@semt2.smts.cea.fr
  38. C***********************************************************************
  39. C APPELES : RENUME
  40. C APPELES (UTIL.) : ISETI, ISHELI, RSETXI
  41. C APPELE PAR : PRASEM
  42. C***********************************************************************
  43. C ENTREES : KMINCT, PMTOT, IRENU
  44. C SORTIES : NEWNUM
  45. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  46. C***********************************************************************
  47. C VERSION : v1, 22/04/2025, version initiale
  48. C HISTORIQUE : v1, 22/04/2025, création
  49. C HISTORIQUE :
  50. C***********************************************************************
  51. C
  52. -INC PPARAM
  53. -INC CCOPTIO
  54. POINTEUR KMINCT.MINC
  55. POINTEUR PMTOT.PMORS
  56. POINTEUR IZATOT.IZA
  57. -INC SMLENTI
  58. INTEGER JG
  59. POINTEUR LITYP.MLENTI
  60. POINTEUR LINIV.MLENTI
  61. POINTEUR DDLINC.MLENTI
  62. *inu POINTEUR DDLPT.MLENTI
  63. POINTEUR NEWNUM.MLENTI
  64. POINTEUR KRDDL.MLENTI
  65. POINTEUR NNUTOT.MLENTI
  66. POINTEUR PRMDDL.MLENTI
  67. SEGMENT LML
  68. POINTEUR ML(NINC).MLENTI
  69. ENDSEGMENT
  70. POINTEUR DDLDIM.MLENTI
  71. POINTEUR ITTDDL.MLENTI
  72. POINTEUR INUDDL.MLENTI
  73. POINTEUR LDD.LML
  74. POINTEUR LDDI.MLENTI
  75. POINTEUR NNU.LML
  76. POINTEUR NNUI.MLENTI
  77. POINTEUR NNUJ.MLENTI
  78. POINTEUR NNUK.MLENTI
  79. POINTEUR PRM.LML
  80. POINTEUR PRMI.MLENTI
  81. *-INC SMLLOGI
  82. SEGMENT MLLOGI
  83. LOGICAL LOGI(JG)
  84. ENDSEGMENT
  85. POINTEUR DDLOK.MLLOGI
  86. * POINTEUR PTLAG.MLLOGI
  87. POINTEUR DDLLAG.MLLOGI
  88. *
  89. *STAT-INC SMSTAT
  90. *
  91. INTEGER IMPR,IRET
  92. INTEGER IRENU
  93. *
  94. INTEGER ITOTPO,JTTDDL
  95. INTEGER NTOTPO,NTTDDL
  96. LOGICAL LLAG,LRELA,LMG
  97. *
  98. * Executable statements
  99. *
  100. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans calnu6'
  101. *
  102. * Construction de DDLINC : c'est un tableau d'entiers tel que :
  103. * DDLINC(jttddl) = ordre du ddl
  104. *
  105. * SEGPRT,KMINCT
  106. * SEGPRT,PMTOT
  107. * SEGPRT,LITYP
  108. * SEGPRT,LINIV
  109. * Obtention de la nouvelle numérotation des ddl
  110. * In RENUME : SEGINI NNUTOT
  111. CALL RENUME(PMTOT,IRENU,NNUTOT,IMPR,IRET)
  112. IF (IRET.NE.0) GOTO 9999
  113. LMG=(KTYPI.EQ.7.OR.KTYPI.EQ.8.OR.KTYPI.EQ.10.OR.KTYPI.EQ.11)
  114. * write(ioimp,*) 'LMG=',LMG
  115. IF (LMG) THEN
  116. CALL KRES23(KMINCT,PMTOT,IZATOT,NNUTOT,IORINC,KTYPI,
  117. $ NEWNUM,IPBLOC)
  118. IF (IERR.NE.0) GOTO 9999
  119. ELSE
  120. CALL KRES24(KMINCT,PMTOT,NNUTOT,MLAG1,MLAG2,
  121. $ NEWNUM)
  122. IF (IERR.NE.0) GOTO 9999
  123. IPBLOC=0
  124. ENDIF
  125. IF (NEWNUM.NE.NNUTOT) SEGSUP NNUTOT
  126. *
  127. * Normal termination
  128. *
  129. IRET=0
  130. RETURN
  131. *
  132. * Format handling
  133. *
  134. *
  135. * Error handling
  136. *
  137. 9999 CONTINUE
  138. IRET=1
  139. WRITE(IOIMP,*) 'An error was detected in subroutine calnu6'
  140. RETURN
  141. *
  142. * End of subroutine CALNU6
  143. *
  144. END
  145.  
  146.  

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