Télécharger indi2.eso

Retour à la liste

Numérotation des lignes :

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

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