Télécharger indi2.eso

Retour à la liste

Numérotation des lignes :

indi2
  1. C INDI2 SOURCE PV 22/04/26 21:15:04 11344
  2. SUBROUTINE INDI2(IMAIL)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : INDI2
  7. C DESCRIPTION : Indicateur de qualite du mailleur topologique
  8. C
  9. C
  10. C
  11. C LANGAGE : ESOPE
  12. C AUTEUR : Stephane GOUNAND (CEA/DES/ISAS/DM2S/SEMT/LTA)
  13. C mel : gounand@semt2.smts.cea.fr
  14. C***********************************************************************
  15. C APPELES :
  16. C APPELES (E/S) :
  17. C APPELES (BLAS) :
  18. C APPELES (CALCUL) :
  19. C APPELE PAR :
  20. C***********************************************************************
  21. C SYNTAXE GIBIANE :
  22. C ENTREES : IMAIL
  23. C ENTREES/SORTIES :
  24. C SORTIES : ICHA
  25. C***********************************************************************
  26. C VERSION : v1, 31/03/2021, version initiale
  27. C HISTORIQUE : v1, 31/03/2021, creation
  28. C HISTORIQUE :
  29. C HISTORIQUE :
  30. C***********************************************************************
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC SMLREEL
  34. -INC SMLMOTS
  35. -INC SMELEME
  36. -INC SMCHAML
  37. *
  38. CHARACTER*8 MOLREE(1)
  39. DATA MOLREE/'LISTREEL'/
  40. *
  41. logical lmet
  42. *
  43. * Executable statements
  44. *
  45. MELEME=IMAIL
  46. * Initialisation des données dans le common CCMATOP
  47. * Attention, il faut mettre les mêmes valeurs par défaut
  48. * que dans proptt et prtopv
  49. xvtol=1.D-11
  50. ipvirt=0
  51. imet=0
  52. xdens=0.d0
  53. icmetr=0
  54. imomet=0
  55. impr=0
  56. iveri=2
  57. * 2020/05/02
  58. call lirmot(MOLREE,1,ilistr,0)
  59. if (ierr.ne.0) return
  60. * 2020/04/29 SG
  61. * Pas de gestion du noeud virtuel car cela n'est pas compatible
  62. * avec la transformation du MLREEL en CHAMELEM
  63. c$$$* Mot-clé VIRT pour gérer le noeud virtuel
  64. c$$$ call lirmot(mcle,ncle,imot,0)
  65. c$$$ IF (IERR.NE.0) RETURN
  66. c$$$ if (imot.eq.1) then
  67. c$$$ CALL LIROBJ('POINT',IPVIRT,0,IRET)
  68. c$$$ IF (IERR.NE.0) RETURN
  69. c$$$ IF (IRET.EQ.0) THEN
  70. c$$$ CALL LIRENT(IPVIRT,1,IRET)
  71. c$$$ IF (IERR.NE.0) RETURN
  72. c$$$ IF (IPVIRT.NE.0) THEN
  73. c$$$ write(ioimp,*)
  74. c$$$ $ 'On voulait lire un point ou un entier nul'
  75. c$$$ goto 9999
  76. c$$$ ENDIF
  77. c$$$ ENDIF
  78. c$$$ endif
  79. *
  80. * Lecture de la métrique voulue :
  81. c LOG1 : pas de métrique,
  82. c FLOT1 : taille de maille ;
  83. C CHPO1 : inverse de la métrique isotrope, nom de composante G ou
  84. C anisotrope, noms de composante G11, G21, G22, (G31, G32, G33 en
  85. C 3D)
  86. *
  87. imet=0
  88. call lirlog(lmet,0,IRET)
  89. IF (IERR.NE.0) RETURN
  90. if (iret.eq.0) then
  91. call lirree(XDENS,0,IRET)
  92. IF (IERR.NE.0) RETURN
  93. if (iret.eq.1) then
  94. imet=2
  95. else
  96. CALL LIROBJ('CHPOINT',ICMETR,0,IRET)
  97. IF (IERR.NE.0) RETURN
  98. if (iret.eq.1) then
  99. call extr11(icmetr,mlmots)
  100. if (ierr.ne.0) return
  101. segact mlmots
  102. CALL PLACE(MOTS,MOTS(/2),iplac,'G ')
  103. if (iplac.ne.0) then
  104. imet=3
  105. else
  106. imet=4
  107. endif
  108. segsup mlmots
  109. endif
  110. endif
  111. else
  112. if(lmet) imet=1
  113. endif
  114. * write(ioimp,*) 'imet=',imet
  115. CALL QUALI7(MELEME,IPVIRT,IMET,IMOMET,XDENS,ICMETR,XVTOL,MLREEL
  116. $ ,IMPR,IVERI)
  117. IF (IERR.NE.0) RETURN
  118. if (ilistr.eq.1) then
  119. CALL ECROBJ('LISTREEL',MLREEL)
  120. else
  121. *
  122. * Transformation du MLREEL en MCHAML
  123. *
  124. SEGACT MELEME
  125. NBSOUS=LISOUS(/1)
  126. IF (NBSOUS.NE.0) THEN
  127. CALL ERREUR(25)
  128. RETURN
  129. ENDIF
  130. NBELEM=NUM(/2)
  131. SEGACT MLREEL
  132. JG=PROG(/1)
  133. IF (JG.NE.NBELEM) THEN
  134. CALL ERREUR(5)
  135. RETURN
  136. ENDIF
  137. * Création du CHAMELEM
  138. N1PTEL=1
  139. N1EL=NBELEM
  140. N2PTEL=0
  141. N2EL=0
  142. SEGINI,MELVAL
  143. DO IELEM=1,NBELEM
  144. VELCHE(1,IELEM)=PROG(IELEM)
  145. ENDDO
  146. *
  147. N2=1
  148. SEGINI,MCHAML
  149. * NOMCHE(1)='QUALTOPO'
  150. * Eviter les problèmes dans certains opérateurs avec les noms de 4
  151. * lettres ?
  152. NOMCHE(1)='TOPO'
  153. TYPCHE(1)='REAL*8'
  154. *
  155. IELVAL(1)=MELVAL
  156. *
  157. L1=7
  158. N1=1
  159. N3=6
  160. SEGINI,MCHELM
  161. TITCHE='QUALITE'
  162. CONCHE(1)=' '
  163. INFCHE(1,1)=0
  164. INFCHE(1,2)=0
  165. INFCHE(1,3)=NIFOUR
  166. INFCHE(1,4)=0
  167. INFCHE(1,5)=0
  168. INFCHE(1,6)=0
  169. IFOCHE=IFOUR
  170. *
  171. IMACHE(1)=MELEME
  172. ICHAML(1)=MCHAML
  173. * Sortie
  174. SEGSUP MLREEL
  175. CALL ACTOBJ('MCHAML',MCHELM,1)
  176. CALL ECROBJ('MCHAML',MCHELM)
  177. ENDIF
  178. *
  179. * Normal termination
  180. *
  181. RETURN
  182. *
  183. * End of subroutine INDI2
  184. *
  185. END
  186.  
  187.  
  188.  
  189.  
  190.  

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