Télécharger mlxadl.eso

Retour à la liste

Numérotation des lignes :

mlxadl
  1. C MLXADL SOURCE GOUNAND 21/04/06 21:15:14 10940
  2. SUBROUTINE MLXADL(MELEMX,NLDONN,lchang,mmot)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : MLXADL
  7. C DESCRIPTION : Ajustement (SEGADJ) du nombre d'éléments d'un
  8. C segment MELEMX
  9. C
  10. C On calcule un NLMAX automatiquement, éventuellement
  11. C supérieur à la valeur NLDONN donnée et on modifie NLCOU qui
  12. C devient égal à NLDONN
  13. C
  14. C Inspiré de topadv en supprimmant iopt
  15. C
  16. C LANGAGE : ESOPE
  17. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  18. C mél : gounand@semt2.smts.cea.fr
  19. C***********************************************************************
  20. C APPELES :
  21. C APPELES (E/S) :
  22. C APPELES (BLAS) :
  23. C APPELES (CALCUL) :
  24. C APPELE PAR :
  25. C***********************************************************************
  26. C SYNTAXE GIBIANE :
  27. C ENTREES :
  28. C ENTREES/SORTIES :
  29. C SORTIES :
  30. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  31. C***********************************************************************
  32. C VERSION : v1, 30/10/2017, version initiale
  33. C HISTORIQUE : v1, 30/10/2017, création
  34. C HISTORIQUE :
  35. C HISTORIQUE :
  36. C***********************************************************************
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. *del-INC SMLENTI
  40. *del POINTEUR JNBL.MLENTI
  41. *del-INC SMELEME
  42. *del POINTEUR JTOPO.MELEME
  43. *(pour impr)
  44. -INC TMATOP2
  45. *del*-INC STOPINV
  46. -INC TMATOP1
  47. *-INC SMELEMX
  48. logical lchang
  49. character*(*) mmot
  50. *
  51. * Executable statements
  52. *
  53. if (impr.ge.5) WRITE(IOIMP,*) 'Entrée dans mlxadl.eso'
  54. *
  55. lchang=.false.
  56. NLMAXO=MELEMX.NUMX(/2)
  57. NNMAX =MELEMX.NUMX(/1)
  58. NLCOUO=MELEMX.NLCOU
  59. * elseif (iopt.eq.1) then
  60. NLCOUN=NLDONN
  61. IF (NLCOUN.LE.NLMAXO) THEN
  62. * write(ioimp,*) 'pas besoin d''appeler mlxadl ???'
  63. * goto 9999
  64. * MELEMX.NLCOU=NLCOUN
  65. * return
  66. ELSE
  67. * NVMAXN=NVDONN+0
  68. * Stratégie d'augmentation
  69. NLMAX1=NLDONN
  70. * XCOF=1.414D0
  71. XCOF=2.D0
  72. NLMAX2=MELEMX.NLINI+INT(((NLMAXO-MELEMX.NLINI)*XCOF)+0.5D0)
  73. NLMAXN=MAX(NLMAX1,NLMAX2)
  74. * endif
  75.  
  76. IF (NLCOUN.LT.NLCOUO.or.NLMAXN.LT.NLCOUO) THEN
  77. write(ioimp,*) 'On ne peut pas redimensionner à une ',
  78. $ 'valeur plus petite que nlcou'
  79. goto 9999
  80. endif
  81.  
  82. lchang=.true.
  83. NLMAX=NLMAXN
  84. if (isgadj.gt.0)
  85. * $ write(ioimp,386) MELEMX,NLMAXO,NLMAXN,NLCOUN
  86. $ write(ioimp,386) mmot,NLMAXO,NLMAXN,NLCOUN
  87. *
  88. SEGADJ MELEMX
  89. ENDIF
  90. MELEMX.NLCOU=NLCOUN
  91. *
  92. * Normal termination
  93. *
  94. RETURN
  95. *
  96. * Format handling
  97. *
  98. * 386 FORMAT ('Segment MELEMX=',I8,' nbel max ajusté de ',I6,' à ',I6,
  99. * $ ' (nbel. courant=',I6,')')
  100. 386 FORMAT (A25,' nbel max ajusté de ',I6,' à ',I6,
  101. $ ' (nbel. courant=',I6,')')
  102. *
  103. * Error handling
  104. *
  105. 9999 CONTINUE
  106. MOTERR(1:8)='MLXADL '
  107. * 349 2
  108. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  109. CALL ERREUR(349)
  110. RETURN
  111. *
  112. * End of subroutine MLXADL
  113. *
  114. END
  115.  
  116.  
  117.  

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