Télécharger pouvlo.eso

Retour à la liste

Numérotation des lignes :

pouvlo
  1. C POUVLO SOURCE CB215821 24/04/12 21:16:53 11897
  2. SUBROUTINE POUVLO(IPMODL,MLMOTS,ISUP,ICARA)
  3. *-----------------------------------------------------------------------
  4. * ADDITION DU VECTEUR LOCAL POUR LES POUTRES
  5. * ET LES TUYAUX S'IL EST ABSENT EN 3D
  6. *-----------------------------------------------------------------------
  7. *
  8. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  9. * -----------
  10. *
  11. * IPMODL (E) POINTEUR D'OBJET MODELE
  12. * MLMOTS (E) POINTEUR SUR LE LISTMOTS DE CARACTERISTIQUES
  13. * ISUP (E) NUMERO DE SUPPORT DEMANDE
  14. * ICARA (E+S) POINTEUR SUR LE CHAMELEM
  15. *
  16. * LANGAGE:
  17. * --------
  18. *
  19. * ESOPE + FORTRAN77
  20. *
  21. *-----------------------------------------------------------------------
  22. *
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8(A-H,O-Z)
  25. REAL*8 XEPOU(3,2),VECT(3)
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC CCHAMP
  30. -INC SMCHAML
  31. -INC SMMODEL
  32. -INC SMLMOTS
  33. -INC SMELEME
  34. -INC SMCOORD
  35. *
  36. * SEGMENT INFO
  37. * INTEGER INFELE(JG)
  38. * ENDSEGMENT
  39. CHARACTER*(NCONCH) CONM
  40. *
  41. segact mcoord
  42. SEGACT,MLMOTS
  43. *
  44. * LE VECTEUR EXISTE T-IL DEJA ?
  45. *
  46. IVECT=0
  47. IVECX=0
  48. IVECY=0
  49. IVECZ=0
  50. DO 1 I=1,MOTS(/2)
  51. IF(MOTS(I).EQ.'VECT') THEN
  52. ivecT=1
  53. ENDIF
  54. IF(MOTS(I).EQ.'VX') THEN
  55. ivecx=1
  56. ENDIF
  57. IF(MOTS(I).EQ.'VY') THEN
  58. ivecy=1
  59. ENDIF
  60. IF(MOTS(I).EQ.'VZ') THEN
  61. ivecz=1
  62. ENDIF
  63. 1 CONTINUE
  64. * vecx vecy vecz existent. C'est OK
  65. if(ivecx.eq.1.and.ivecy.eq.1.and.ivecz.eq.1) then
  66. if (ivect.eq.0) then
  67. return
  68. else
  69. moterr='VECT'
  70. call erreur(7)
  71. return
  72. endif
  73. endif
  74.  
  75. *
  76. * ACTIVATIONS
  77. *
  78. MMODEL=IPMODL
  79. NSOUS=KMODEL(/1)
  80. MCHELM=ICARA
  81. SEGACT MCHELM
  82. *
  83. * BOUCLE SUR LES SOUS ZONES DU MODELE
  84. *
  85. DO 200 ISOUS=1,NSOUS
  86. *
  87. * TRAITEMENT DU MODELE
  88. *
  89. IMODEL=KMODEL(ISOUS)
  90. MELE =NEFMOD
  91. IPMAIL=IMAMOD
  92. CONM =CONMOD
  93. *
  94. *
  95. * INFORMATIONS SUR L'{L{MENT FINI
  96. *
  97. * CALL ELQUOI(MELE,0,ISUP,INFO,IMODEL)
  98. IF (IERR.NE.0) THEN
  99. SEGDES MCHELM
  100. RETURN
  101. ENDIF
  102. MFR =INFELE(13)
  103. IF(MFR.NE.7.AND.MFR.NE.13) THEN
  104. * SEGSUP INFO
  105. GO TO 200
  106. ENDIF
  107. *
  108. * RECHERCHE DE LA ZONE DU CHAMELEM
  109. *
  110. N1 = IMACHE(/1)
  111. N3 = INFCHE(/2)
  112. LAZON = 0
  113. DO 11 I=1,N1
  114. IF (IPMAIL.NE.IMACHE(I) .OR.
  115. . CONM.NE.CONCHE(I)) GO TO 11
  116. LAZON=I
  117. GO TO 12
  118. 11 CONTINUE
  119. *
  120. CALL ERREUR(472)
  121. SEGDES MCHELM
  122. * SEGSUP INFO
  123. RETURN
  124. *
  125. 12 CONTINUE
  126. MCHAML=ICHAML(LAZON)
  127. SEGACT MCHAML
  128. N2=NOMCHE(/2)
  129.  
  130. * y a t'il VECT
  131. ivect=0
  132. do i=1,n2
  133. if (nomche(i).eq.'VECT') ivect=i
  134.  
  135. enddo
  136. melval=0
  137. if(ivect.ne.0) then
  138. melval=ielval(ivect)
  139. segact melval
  140. endif
  141.  
  142.  
  143. N2=N2+3
  144. SEGADJ MCHAML
  145. NOMCHE(N2-2)='VX'
  146. TYPCHE(N2-2)='REAL*8'
  147. NOMCHE(N2-1)='VY'
  148. TYPCHE(N2-1)='REAL*8'
  149. NOMCHE(N2 )='VZ'
  150. TYPCHE(N2 )='REAL*8'
  151. MELEME=IPMAIL
  152. SEGACT MELEME
  153. NBNN=NUM(/1)
  154. *
  155. * CREATION DU MELVAL ET REMPLISSAGE
  156. *
  157. N2EL=0
  158. N2PTEL=0
  159. N1EL=NUM(/2)
  160. N1PTEL=1
  161. SEGINI MELVA1
  162. IELVAL(N2-2)=MELVA1
  163. SEGINI MELVA2
  164. IELVAL(N2-1)=MELVA2
  165. SEGINI MELVA3
  166. IELVAL(N2 )=MELVA3
  167. *
  168. DO 305 ID=1,N1EL
  169. CALL DOXE(XCOOR,IDIM,NBNN,NUM,ID,XEPOU)
  170. CALL POULOC(XEPOU,VECT,KERRE)
  171. IF(KERRE.NE.0) THEN
  172. INTERR(1)=ISOUS
  173. INTERR(2)=ID
  174. CALL ERREUR(128)
  175. SEGDES MELEME
  176. SEGDES MELVA1,melva2,melva3,MCHAML,MCHELM,MLMOTS
  177. * SEGSUP INFO
  178. ENDIF
  179. *
  180. * CREATION DU VECTEUR
  181. *
  182. if (melval.eq.0) then
  183. MELVA1.VELCHE(1,ID)=VECT(1)
  184. MELVA2.VELCHE(1,ID)=VECT(2)
  185. MELVA3.VELCHE(1,ID)=VECT(3)
  186. else
  187. ipt=melval.ielche(1,min(melval.ielche(/2),id))
  188. MELVA1.VELCHE(1,ID)=xcoor((ipt-1)*(idim+1)+1)
  189. MELVA2.VELCHE(1,ID)=xcoor((ipt-1)*(idim+1)+2)
  190. MELVA3.VELCHE(1,ID)=xcoor((ipt-1)*(idim+1)+3)
  191. endif
  192. 305 CONTINUE
  193. *
  194. * DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE ISOUS
  195. *
  196. SEGDES MELEME
  197. SEGDES MELVA1,melva2,melva3
  198. * SEGSUP INFO
  199. * suppression de VECT si il etait la
  200. if(ivect.ne.0) then
  201. do i=ivect+1,ielval(/1)
  202. nomche(i-1)=nomche(i)
  203. typche(i-1)=typche(i)
  204. ielval(i-1)=ielval(i)
  205. enddo
  206. n2=ielval(/1)-1
  207. segadj mchaml
  208. endif
  209. SEGDES MCHAML
  210. 200 CONTINUE
  211. *
  212. SEGDES MCHELM
  213. SEGDES,MLMOTS
  214. RETURN
  215. END
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  

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