Télécharger topadv.eso

Retour à la liste

Numérotation des lignes :

topadv
  1. C TOPADV SOURCE GOUNAND 25/11/24 21:15:17 12406
  2. SUBROUTINE TOPADV(TRAVJ,NVDONN,iopt,lchang,mmot)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : TOPADV
  7. C DESCRIPTION : Ajustement (SEGADJ) du nombre d'éléments d'un
  8. C segment TRAVJ et de ses éventuels sous-objets.
  9. C
  10. C iopt=0 : on impose NVMAX à la valeur NVDONN donnée
  11. C on ne modifie pas NVCOU
  12. C iopt=1 : on calcule un NVMAX automatiquement, éventuellement
  13. C supérieur à la valeur NVDONN donnée et on modifie NVCOU qui
  14. C devient égal à NVDONN
  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, 11/10/2017, version initiale
  33. C HISTORIQUE : v1, 11/10/2017, création
  34. C HISTORIQUE :
  35. C HISTORIQUE :
  36. C***********************************************************************
  37. -INC PPARAM
  38. -INC CCOPTIO
  39. -INC SMLENTI
  40. POINTEUR JNBL.MLENTI
  41. -INC SMELEME
  42. POINTEUR JTOPO.MELEME
  43. -INC TMATOP2
  44. -INC TMATOP1
  45. *-INC STOPINV
  46. *-INC STRAVJ
  47. logical lchang
  48. character*(*) mmot
  49. INTEGER IMPR,IRET
  50. *
  51. * Executable statements
  52. *
  53. if (impr.ge.5) WRITE(IOIMP,*) 'Entrée dans topadv.eso'
  54. *
  55. lchang=.false.
  56. NVMAXO=TRAVJ.NVMAX
  57. NVCOUO=TRAVJ.NVCOU
  58. if (iopt.eq.0) then
  59. NVCOUN=NVCOUO
  60. NVMAXN=NVDONN
  61. if (nvmaxn.eq.nvmaxo) then
  62. * write(ioimp,*) 'pas besoin d''appeler topadv ???'
  63. * goto 9999
  64. return
  65. endif
  66. elseif (iopt.eq.1) then
  67. NVCOUN=NVDONN
  68. IF (NVCOUN.LE.NVMAXO) THEN
  69. * write(ioimp,*) 'pas besoin d''appeler topadv ???'
  70. * goto 9999
  71. TRAVJ.NVCOU=NVCOUN
  72. return
  73. ELSE
  74. * NVMAXN=NVDONN+0
  75. * Stratégie d'augmentation
  76. NVMAX1=NVDONN
  77. * XCOF=1.414D0
  78. XCOF=2.D0
  79. NVMAX2=TRAVJ.NVINI+INT(((NVMAXO-TRAVJ.NVINI)*XCOF)+0.5D0)
  80. NVMAXN=MAX(NVMAX1,NVMAX2)
  81. ENDIF
  82. endif
  83.  
  84. IF (NVCOUN.LT.NVCOUO.or.NVMAXN.LT.NVCOUO) THEN
  85. write(ioimp,*) 'On ne peut pas redimensionner a une ',
  86. $ 'valeur plus petite que nvcou'
  87. goto 9999
  88. endif
  89.  
  90. lchang=.true.
  91. TRAVJ.NVMAX=NVMAXN
  92. if (isgadj.gt.0)
  93. $ write(ioimp,286) mmot,NVMAXO,NVMAXN,NVCOUN
  94. *
  95. JTOPO=TRAVJ.TOPO
  96. if (jtopo.ne.0) then
  97. NBNN=JTOPO.NUM(/1)
  98. NBELEM=NVMAXN
  99. NBSOUS=0
  100. NBREF=0
  101. segadj jtopo
  102. endif
  103. *
  104. TOPINV=TRAVJ.TOPI
  105. if (topinv.ne.0) then
  106. IDIMP=IDIM+1
  107. NBELEM=NVMAXN
  108. NBPTS=TIC(/1)
  109. SEGADJ TOPINV
  110. endif
  111. *
  112. jnbl=travj.nbl
  113. if (jnbl.ne.0) then
  114. jg=nvmaxn
  115. segadj jnbl
  116. endif
  117. TRAVJ.NVCOU=NVCOUN
  118. *
  119. * Normal termination
  120. *
  121. RETURN
  122. *
  123. * Format handling
  124. *
  125. 286 FORMAT ('In topadv: ',A25,' nbel max ajuste de ',I6,' a ',I6,
  126. $ ' (nbel. courant=',I6,')')
  127. *
  128. * Error handling
  129. *
  130. 9999 CONTINUE
  131. MOTERR(1:8)='TOPADV '
  132. * 349 2
  133. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  134. CALL ERREUR(349)
  135. RETURN
  136. *
  137. * End of subroutine TOPADV
  138. *
  139. END
  140.  
  141.  

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