Télécharger quepoi.eso

Retour à la liste

Numérotation des lignes :

quepoi
  1. C QUEPOI SOURCE CB215821 20/11/25 13:38:08 10792
  2. SUBROUTINE QUEPOI(ICHP1,IPSG,INDIC,NBCOMP,NOMTOT)
  3. C-----------------------------------------------------------------------
  4. C On teste le champoint ICHP1 afin de vérifier :
  5. C 1) qu'il est non partitionné
  6. C 2) qu'il a le bon nombre de composantes et/ou les bonnes composantes
  7. C 3) que son support géométrique est IPSG
  8. C Si INDIC vaut 1 en entrée, on modifie, si besoin, l'ordonnencement
  9. C des infos du CHPO afin d'imposer le SPG de pointeur IPSG. Si INDIC
  10. C vaut 0, des supports différents générent INDIC=-4 mais on n'imprime
  11. C pas de message d'erreur.
  12. C-----------------------------------------------------------------------
  13. C
  14. C---------------------------
  15. C Parametres Entree/Sortie :
  16. C---------------------------
  17. C
  18. C E/ ICHP1 : Champoint à tester
  19. C E/ IPSG : Maillage de référence, en général de type POI1
  20. C E/S INDIC : En entrée,
  21. C 0 On ne fait que vérifier le support géométrique,
  22. C 1 On impose le pointeur du support géométrique.
  23. C En sortie,
  24. C -4 si les spgs sont différents (points différents),
  25. C -3 si le nom des composantes sont incorrects,
  26. C -2 si le nombre de composantes est incorrect,
  27. C -1 si le champoint est partitionné,
  28. C 0 si les spgs sont identiques,
  29. C 1 si les points sont identiques.
  30. C E/S NBCOMP : En entrée,
  31. C >0 si on teste le nombre de compoantes,
  32. C 0 si on veut recuperer les noms de composantes,
  33. C -1 si on ne veut faire aucun test.
  34. C En sortie,
  35. C nombre de composantes du CHPO.
  36. C E/S NOMTOT : En entrée,
  37. C noms des composantes à tester (si NBCOMP > 0),
  38. C remplir NOMTOT(1)=' ' dans l'appelant sinon.
  39. C En sortie,
  40. C noms des composantes du CHPO (si NBCOMP = 0),
  41. C non rempli sinon.
  42. C
  43. C-----------------------------------------------------------------------
  44. C ATTENTION: TOUJOURS initialiser NOMTOT(dim) dans le prg appelant
  45. C (dim=1 si NBCOMP=0, dim=NBCOMP sinon)
  46. C-----------------------------------------------------------------------
  47. C
  48. C Langage : ESOPE + FORTRAN77
  49. C
  50. C Auteurs : F.AURIOL 09/93
  51. C
  52. C-----------------------------------------------------------------------
  53. IMPLICIT INTEGER(I-N)
  54. IMPLICIT REAL*8 (A-H,O-Z)
  55. CHARACTER*(*) NOMTOT(*)
  56. C
  57.  
  58. -INC PPARAM
  59. -INC CCOPTIO
  60. -INC SMELEME
  61. -INC SMCHPOI
  62. -INC SMCOORD
  63. SEGMENT IBEXIS
  64. INTEGER IEXIS(NBPTS)
  65. ENDSEGMENT
  66. C
  67. ININI = INDIC
  68. C
  69. C- Test si le CHPO est partitionné
  70. C
  71. MCHPOI = ICHP1
  72. SEGACT MCHPOI
  73. NSOUPO = IPCHP(/1)
  74. IF (NSOUPO.NE.1) THEN
  75. INDIC = -1
  76. MOTERR(1:8) = 'CHAMPOIN'
  77. CALL ERREUR(132)
  78. RETURN
  79. ENDIF
  80. C
  81. C- Test/Récupération du nom des composantes
  82. C
  83. MSOUPO = IPCHP(1)
  84. SEGACT MSOUPO
  85. NBCOM1 = NBCOMP
  86. NBCOMP = NOCOMP(/2)
  87. IF (NBCOM1.GT.-1) THEN
  88. IF (NBCOM1.EQ.0) THEN
  89. DO 5 ICOMP=1,NBCOMP
  90. NOMTOT(ICOMP) = NOCOMP(ICOMP)
  91. 5 CONTINUE
  92. ELSE
  93. IF (NBCOM1.NE.NBCOMP) THEN
  94. INDIC = -2
  95. MOTERR(1:8) = ' QUEPOI '
  96. MOTERR(9:16) = 'CHAMPOIN'
  97. INTERR(1) = NBCOM1
  98. INTERR(2) = NBCOMP
  99. CALL ERREUR(699)
  100. RETURN
  101. ENDIF
  102. IF (NOMTOT(1).NE.' ') THEN
  103. DO 10 ICOMP=1,NBCOMP
  104. CALL PLACE(NOMTOT,NBCOMP,IPOS,NOCOMP(ICOMP))
  105. IF (IPOS.EQ.0) THEN
  106. INDIC = -3
  107. MOTERR= NOCOMP(ICOMP)
  108. CALL ERREUR(197)
  109. RETURN
  110. ENDIF
  111. 10 CONTINUE
  112. ENDIF
  113. ENDIF
  114. ENDIF
  115. C
  116. C- Récupération des infos du MSOUPO utilisées
  117. C
  118. IPT2 = IGEOC
  119. MPOVAL = IPOVAL
  120. C
  121. C- Transforme le maillage en POI1 si maillage quelconque
  122. C- Le maillage POI1 de pointeur IPT1 est actif au retour de CHANGE
  123. C
  124. MELEME = IPSG
  125. SEGACT MELEME
  126. IPT1 = MELEME
  127. NBSOUS = LISOUS(/1)
  128. IF ((NBSOUS.NE.0).OR.(ITYPEL.NE.1)) THEN
  129. CALL CHANGE(IPT1,1)
  130. IF (IERR.NE.0) RETURN
  131. ENDIF
  132. C
  133. C- Si égalité des pointeurs INDIC=0
  134. C
  135. IF (IPT2.EQ.IPT1) THEN
  136. INDIC = 0
  137. RETURN
  138. ENDIF
  139. C
  140. C- Dans le cas d'un MELEME de POI1 création d'un CHPO de support
  141. C- géométrique le POI1 en question.
  142. C
  143. IF (ININI.EQ.1) THEN
  144. N = IPT1.NUM(/2)
  145. NC = NBCOMP
  146. SEGINI MPOVA1
  147. ENDIF
  148. C
  149. C- Recherche si les points du MELEME de type POI1 sont dans le CHPO
  150. C- et ordonnencement si INDIC=1
  151. C
  152. NUMPT1 = IPT1.NUM(/2)
  153. SEGACT IPT2
  154. NUMPT2 = IPT2.NUM(/2)
  155. IF (NUMPT1.NE.NUMPT2) GOTO 110
  156. SEGINI IBEXIS
  157. DO 20 IEL=1,NBPTS
  158. IEXIS(IEL)=0
  159. 20 CONTINUE
  160. DO 30 IEL=1,NUMPT1
  161. NOE = IPT1.NUM(1,IEL)
  162. IEXIS(NOE)=IEL
  163. 30 CONTINUE
  164. IF (ININI.NE.1) THEN
  165. DO 15 IP=1,NUMPT2
  166. NOE=IPT2.NUM(1,IP)
  167. IF(IEXIS(NOE).EQ.0)GO TO 110
  168. 15 CONTINUE
  169. ELSE
  170. SEGACT MPOVAL
  171. DO 60 IP=1,NUMPT2
  172. NOE=IPT2.NUM(1,IP)
  173. IEL=IEXIS(NOE)
  174. IF(IEL.EQ.0)GO TO 110
  175. DO 50 NC1=1,NC
  176. MPOVA1.VPOCHA(IEL,NC1) = VPOCHA(IP,NC1)
  177. 50 CONTINUE
  178. 60 CONTINUE
  179. ENDIF
  180. SEGSUP IBEXIS
  181. C
  182. C- Traitement si points identiques
  183. C
  184. IF (ININI.EQ.1) THEN
  185. segact mpoval*mod
  186. DO 100 IEL=1,NUMPT1
  187. DO 90 NC1=1,NC
  188. VPOCHA(IEL,NC1) = MPOVA1.VPOCHA(IEL,NC1)
  189. 90 CONTINUE
  190. 100 CONTINUE
  191. SEGSUP MPOVA1
  192. SEGACT MSOUPO*MOD
  193. IGEOC = IPT1
  194. ENDIF
  195. INDIC = 1
  196. GOTO 120
  197. C
  198. C- Traitement si supports géométriques différents
  199. C
  200. 110 CONTINUE
  201. INDIC = -4
  202. IF (ININI.EQ.1) THEN
  203. SEGSUP MPOVA1
  204. MOTERR(1:8) = 'CHPOINT '
  205. MOTERR(9:16) = 'MAILLAGE'
  206. INTERR(1) = 1
  207. CALL ERREUR(698)
  208. ENDIF
  209. C
  210. C- Ménage
  211. C
  212. 120 CONTINUE
  213. *
  214. RETURN
  215. END
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  

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