Télécharger propto.eso

Retour à la liste

Numérotation des lignes :

propto
  1. C PROPTO SOURCE GOUNAND 21/04/06 21:15:22 10940
  2. SUBROUTINE PROPTO
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : PROPTO
  7. C DESCRIPTION : Une implémentation de l'amélioration d'une topologie
  8. C autour d'un élément. On reprend OPTITOPO pour le corps
  9. C du programme. On reprend l'extraction et la topologie inverse de
  10. C EXTO. Le point crucial sera d'implémenter la modification de la
  11. C topologie : enlever les anciens éléments et mettre les nouveaux.
  12. C
  13. C Ici, on fait les entrées-sorties et on initialise le common avec
  14. C les options globales.
  15. C
  16. C
  17. C LANGAGE : ESOPE
  18. C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  19. C mél : gounand@semt2.smts.cea.fr
  20. C***********************************************************************
  21. C APPELES :
  22. C APPELES (E/S) :
  23. C APPELES (BLAS) :
  24. C APPELES (CALCUL) :
  25. C APPELE PAR :
  26. C***********************************************************************
  27. C SYNTAXE GIBIANE :
  28. C ENTREES :
  29. C ENTREES/SORTIES :
  30. C SORTIES :
  31. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  32. C***********************************************************************
  33. C VERSION : v1, 04/10/2017, version initiale
  34. C HISTORIQUE : v1, 04/10/2017, création
  35. C HISTORIQUE :
  36. C HISTORIQUE :
  37. C***********************************************************************
  38. -INC PPARAM
  39. -INC CCOPTIO
  40. -INC TMATOP2
  41. -INC SMELEME
  42. POINTEUR ITOPO.MELEME
  43. POINTEUR IELEM.MELEME
  44. * TOPologie Améliorée
  45. POINTEUR ITOPA.MELEME
  46. -INC SMLMOTS
  47. -INC SMCHPOI
  48. POINTEUR ICMETR.MCHPOI
  49. * METrique sur la topologie Améliorée
  50. POINTEUR ICMETA.MCHPOI
  51. INTEGER IMPR,IRET
  52. integer oooval
  53. parameter(ncle=10)
  54. character*8 mtyp
  55. character*4 mcle(ncle)
  56. logical lmet
  57.  
  58. data mcle /'IMPR','VERI','VTOL','QTOL','VIRT','SGAJ','ALGO'
  59. $ ,'AJNO','NCMA','STMA'/
  60. * data mmet /'SANS','DENS','CSTE','ISOT','ANIS'/
  61. *
  62. * Executable statements
  63. *
  64. impr=0
  65. IF (IMPR.Ge.5) WRITE(IOIMP,*) 'Entrée dans propto.eso'
  66. *
  67. * Initialisation des données dans le common TMATOP2
  68. * Attention, il faut mettre les mêmes valeurs par défaut
  69. * que dans ryo2v et prtopv
  70. *
  71. impr=0
  72. iveri=0
  73. isgadj=0
  74. xvtol=1.d-11
  75. qtol=1.d-2
  76. ipvirt=0
  77. imet=0
  78. imomet=0
  79. xdens=0.d0
  80. icmetr=0
  81. ialgo=0
  82. iajno=0
  83. incma=1000
  84. istma=0
  85. * write(ioimp,*) 'propto : entree =',OOOVAL(2,1)
  86. * Entrees
  87. CALL LIROBJ('MAILLAGE',ITOPO,1,IRETOU)
  88. IF (IERR.NE.0) RETURN
  89. CALL LIROBJ('MAILLAGE',IELEM,1,IRETOU)
  90. IF (IERR.NE.0) RETURN
  91. CALL QUETYP(MTYP,0,IRET)
  92. if (iret.EQ.1) then
  93. if (MTYP.NE.'MOT ') THEN
  94. *
  95. * Lecture de la métrique voulue :
  96. c LOG1 : pas de métrique,
  97. c FLOT1 : taille de maille ;
  98. C CHPO1 : inverse de la métrique isotrope, nom de composante G ou
  99. C anisotrope, noms de composante G11, G21, G22, (G31, G32, G33 en
  100. C 3D)
  101. *
  102. IF (MTYP.EQ.'LOGIQUE ') THEN
  103. call lirlog(lmet,1,IRLOG)
  104. IF (IERR.NE.0) RETURN
  105. ELSEIF (MTYP.EQ.'CHPOINT ') THEN
  106. CALL LIROBJ('CHPOINT',ICMETR,1,IRET)
  107. IF (IERR.NE.0) RETURN
  108. call extr11(icmetr,mlmots)
  109. if (ierr.ne.0) return
  110. segact mlmots
  111. CALL PLACE(MOTS,MOTS(/2),iplac,'G ')
  112. if (iplac.ne.0) then
  113. imet=3
  114. else
  115. imet=4
  116. endif
  117. segsup mlmots
  118. elseif (MTYP.EQ.'FLOTTANT'.OR.MTYP.EQ.'ENTIER') then
  119. call lirree(XDENS,1,IRET)
  120. IF (IERR.NE.0) RETURN
  121. imet=2
  122. else
  123. * 39 2
  124. * On ne veut pas d'objet de type %m1:8
  125. MOTERR(1:8)=MTYP
  126. CALL ERREUR(39)
  127. RETURN
  128. endif
  129. endif
  130. endif
  131. *
  132. * Mots-Clefs
  133. *
  134. 10 continue
  135. call lirmot(mcle,ncle,imot,0)
  136. if (imot.eq.1) then
  137. * call lirree(xval,1,iret)
  138. * impr=3
  139. CALL LIRENT(impr,1,IRET)
  140. IF (IERR.NE.0) RETURN
  141. elseif (imot.eq.2) then
  142. * iveri=2
  143. CALL LIRENT(iveri,1,IRET)
  144. IF (IERR.NE.0) RETURN
  145. elseif (imot.eq.3) then
  146. CALL LIRREE(XVTOL,1,IRET)
  147. IF (IERR.NE.0) RETURN
  148. elseif (imot.eq.4) then
  149. CALL LIRREE(QTOL,1,IRET)
  150. IF (IERR.NE.0) RETURN
  151. elseif (imot.eq.5) then
  152. CALL LIROBJ('POINT',IPVIRT,0,IRET)
  153. IF (IERR.NE.0) RETURN
  154. IF (IRET.EQ.0) THEN
  155. CALL LIRENT(IPVIRT,1,IRET)
  156. IF (IERR.NE.0) RETURN
  157. IF (IPVIRT.NE.0) THEN
  158. write(ioimp,*)
  159. $ 'On voulait lire un point ou un entier nul'
  160. goto 9999
  161. ENDIF
  162. ENDIF
  163. elseif (imot.eq.6) then
  164. * isgadj=1
  165. CALL LIRENT(isgadj,1,IRET)
  166. IF (IERR.NE.0) RETURN
  167. elseif (imot.eq.7) then
  168. CALL LIRENT(ialgo,1,IRET)
  169. IF (IERR.NE.0) RETURN
  170. elseif (imot.eq.8) then
  171. CALL LIRENT(iajno,1,IRET)
  172. IF (IERR.NE.0) RETURN
  173. elseif (imot.eq.9) then
  174. CALL LIRENT(incma,1,IRET)
  175. IF (IERR.NE.0) RETURN
  176. elseif (imot.eq.10) then
  177. CALL LIRENT(istma,1,IRET)
  178. IF (IERR.NE.0) RETURN
  179. elseif (imot.ne.0) then
  180. MOTERR(1:8)=MCLE(imot)
  181. Write(ioimp,*) MOTERR(1:8)
  182. * Option indisponible
  183. CALL ERREUR(19)
  184. RETURN
  185. endif
  186. if (imot.ne.0) goto 10
  187. * write(ioimp,*) 'imet=',imet
  188. *
  189. * Test des paramètres
  190. *
  191. *!debug if (impr.ge.3) then
  192. if (impr.ge.2) then
  193. write(ioimp,*) 'Opto parameters :'
  194. write(ioimp,186) 'impr',impr,'iveri',iveri,'ipvirt',ipvirt
  195. $ ,'imet',imet,'isgadj',isgadj,'ialgo',ialgo,'iajno',iajno
  196. $ ,'incma',incma,'istma',istma
  197. write(ioimp,188) 'xvtol',xvtol,'qtol',qtol
  198. endif
  199. *
  200. * Initialisation des sorties du common
  201. *
  202. jparco=0
  203. jexplo=0
  204. jchang=0
  205. jnascm=0
  206. * Traitement
  207. * write(ioimp,*) 'coucou propto, iveri=',iveri
  208. * write(ioimp,*) 'propto : avant opto1 =',OOOVAL(2,1)
  209. * Restituer le CHPOINT sur tous les noeuds ??
  210. CALL OPTO1(ITOPO,IELEM,IPVIRT,ICMETR,
  211. $ ITOPA,ICMETA)
  212. * write(ioimp,*) 'propto : apres opto1 =',OOOVAL(2,1)
  213. IF (IERR.NE.0) RETURN
  214. * Sorties
  215. CALL ECRENT(JNASCM)
  216. CALL ECRENT(JPARCO)
  217. CALL ECRENT(JCHANG)
  218. CALL ECRENT(JEXPLO)
  219. *del if (imet.gt.1) then
  220. if (imet.le.2) then
  221. if (irlog.eq.1) then
  222. call ecrlog(lmet)
  223. else
  224. CALL ECRREE(XDENS)
  225. endif
  226. else
  227. CALL ECROBJ('CHPOINT',ICMETA)
  228. endif
  229. *del endif
  230. CALL ECROBJ('MAILLAGE',ITOPA)
  231. *
  232. * Normal termination
  233. *
  234. * write(ioimp,*) 'propto : sortie =',OOOVAL(2,1)
  235. RETURN
  236. *
  237. * Format handling
  238. *
  239. 186 FORMAT (2X,12(A6,'=',I6,2X))
  240. 188 FORMAT (2X,12(A6,'=',1PG12.5,2X))
  241. *
  242. * Error handling
  243. *
  244. 9999 CONTINUE
  245. MOTERR(1:8)='PROPTO '
  246. * 349 2
  247. *Problème non prévu dans le s.p. %m1:8 contactez votre assistance
  248. CALL ERREUR(349)
  249. RETURN
  250. *
  251. * End of subroutine PROPTO
  252. *
  253. END
  254.  
  255.  
  256.  

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