Télécharger divu1.eso

Retour à la liste

Numérotation des lignes :

  1. C DIVU1 SOURCE PV 09/03/12 21:19:20 6325
  2. SUBROUTINE DIVU1(IRE1,IRE2,IRE3,IRE4,IRE5,IRET)
  3. C-----------------------------------------------------------------------
  4. C Calcul la divergence à partir des FLUX.
  5. C Le CHAMPOINT résultat est de support CENTRE.
  6. C-----------------------------------------------------------------------
  7. C
  8. C---------------------------
  9. C Parametres Entree/Sortie :
  10. C---------------------------
  11. C
  12. C E/ IRE1 : Champoint de type FLUX
  13. C E/ IRE2 : Mchaml des orientation de normale (1=out,-1=in)
  14. C E/ IRE3 : MELEME des points FACE
  15. C E/ IRE4 : MELEME des points CENTRE
  16. C E/ IRE5 : CHPOIN des points CENTRE
  17. C /S IRET : Champoint resultat de composante SCAL
  18. C
  19. C----------------------
  20. C Tableaux de travail :
  21. C----------------------
  22. C
  23. C ICPR(I)=J : Le noeud I a le numero J dans le MELEME des faces
  24. C Correspondance numerotation globale/locale
  25. C INUI(I)=J : Le Ieme noeud local est le Jeme global
  26. C Correspondance numerotation locale/globale
  27. C NNGOT : Nombre de noeuds total du domaine
  28. C
  29. C----------------------
  30. C Variables en COMMON :
  31. C----------------------
  32. C
  33. C IFOMOD : cf CCOPTIO.INC
  34. C
  35. C-----------------------------------------------------------------------
  36. C
  37. C Langage : ESOPE + FORTRAN77
  38. C
  39. C Auteurs : F.DABBENE 01/94
  40. C Complements : C. LE POTIER ET F. AURIOL 20/00
  41. C
  42. C-----------------------------------------------------------------------
  43. IMPLICIT INTEGER(I-N)
  44. IMPLICIT REAL*8 (A-H,O-Z)
  45. *
  46. -INC CCOPTIO
  47. -INC SMELEME
  48. -INC SMCHPOI
  49. -INC SMCHAML
  50. -INC SMCOORD
  51. *
  52. SEGMENT ICCPR
  53. INTEGER ICPR(NNGOT) , INUI(NNGOT)
  54. ENDSEGMENT
  55. C
  56. C= INITIALISATIONS
  57. C
  58. MCHPOI = IRE1
  59. MCHELM = IRE2
  60. IPT1 = IRE3
  61. IPT2 = IRE4
  62. C
  63. C= Initialisations à partir de la rigidité
  64. C
  65. NNGOT = XCOOR(/1)/(IDIM+1)
  66. SEGINI ICCPR
  67. IRET = 0
  68. *
  69. *= Creation des tableaux ICPR et INUI pour le maillage IPT1 des FACES
  70. *
  71. SEGACT IPT1
  72. N2 = IPT1.NUM(/2)
  73. IK = 0
  74. NBFACE = N2
  75. DO 10 I2=1,N2
  76. K = IPT1.NUM(1,I2)
  77. IF (ICPR(K).EQ.0) THEN
  78. IK = IK + 1
  79. ICPR(K) = IK
  80. INUI(IK)= K
  81. ENDIF
  82. 10 CONTINUE
  83. SEGDES IPT1
  84. C
  85. C- Récupération du pointeur MPOVAL des flux
  86. C
  87. SEGACT MCHPOI
  88. MSOUPO = IPCHP(1)
  89. SEGACT MSOUPO
  90. MPOVA1 = IPOVAL
  91. SEGDES MSOUPO
  92. SEGDES MCHPOI
  93. C
  94. C------------------------------------------
  95. C Création du CHAMPOINT SCAL contenant DIVu
  96. C------------------------------------------
  97. C
  98. NSOUPO = 1
  99. NAT = 1
  100. SEGINI MCHPOI
  101. IRET = MCHPOI
  102. IFOPOI = IFOMOD
  103. JATTRI(1) = 1
  104. NC = 1
  105. SEGINI MSOUPO
  106. IPCHP(1) = MSOUPO
  107. SEGDES MCHPOI
  108. NOCOMP(1) = 'SCAL'
  109. IGEOC = IRE4
  110. SEGACT IPT2
  111. N = IPT2.NUM(/2)
  112. SEGDES IPT2
  113. SEGINI MPOVAL
  114. IPOVAL = MPOVAL
  115. NOHARM(1) = NIFOUR
  116. SEGDES MSOUPO
  117. C
  118. C------------------------------------------------
  119. C= Boucle sur les ZONES ELEMENTAIRES du MCHAML
  120. C------------------------------------------------
  121. C
  122. ITELEM = 0
  123. SEGACT MCHELM
  124. SEGACT MPOVA1
  125. NRIGEL = IMACHE(/1)
  126. IF(IRE5.EQ.0)THEN
  127. DO 40 IRI=1,NRIGEL
  128. C
  129. C Recuperation du MELEME et activation
  130. C
  131. MELEME = IMACHE(IRI)
  132. SEGACT MELEME
  133. N1 = NUM(/1)
  134. N2 = NUM(/2)
  135. C
  136. C Récupération du pointeur MELVAL du MCHAML d'orientation
  137. C
  138. MCHAML = ICHAML(IRI)
  139. SEGACT MCHAML
  140. MELVAL = IELVAL(1)
  141. SEGDES MCHAML
  142. SEGACT MELVAL
  143. C
  144. C------------------------------
  145. C= Boucle 30 sur les ELEMENTs.
  146. C------------------------------
  147. C
  148. DO 30 I2=1,N2
  149. ITELEM = ITELEM + 1
  150. DO 20 IN=1,N1
  151. VALIN1 = MPOVA1.VPOCHA(ICPR(NUM(IN,I2)),1)*VELCHE(IN,I2)
  152. VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1
  153. 20 CONTINUE
  154. 30 CONTINUE
  155. SEGDES MELVAL, MELEME
  156. 40 CONTINUE
  157. ELSE
  158. C
  159. C Cas ou l'on a une fonction
  160. C
  161. MCHPO2=IRE5
  162. SEGACT MCHPO2
  163. MSOUP2=MCHPO2.IPCHP(1)
  164. SEGACT MSOUP2
  165. MPOVA2= MSOUP2.IPOVAL
  166. SEGACT MPOVA2
  167. DO 70 IRI=1,NRIGEL
  168. C
  169. C Recuperation du MELEME et activation
  170. C
  171. MELEME = IMACHE(IRI)
  172. SEGACT MELEME
  173. N1 = NUM(/1)
  174. N2 = NUM(/2)
  175. C
  176. C Récupération du pointeur MELVAL du MCHAML d'orientation
  177. C
  178. MCHAML = ICHAML(IRI)
  179. SEGACT MCHAML
  180. MELVAL = IELVAL(1)
  181. SEGDES MCHAML
  182. SEGACT MELVAL
  183. C
  184. C------------------------------
  185. C= Boucle sur les ELEMENTs.
  186. C------------------------------
  187. C
  188. DO 60 I2=1,N2
  189. ITELEM = ITELEM + 1
  190. DO 50 IN=1,N1
  191. VALIN1 = MPOVA1.VPOCHA(ICPR(NUM(IN,I2)),1)*VELCHE(IN,I2)
  192. * * MPOVA2.VPOCHA(ICPR(NUM(IN,I2)),1)
  193. VPOCHA(ITELEM,1) = VPOCHA(ITELEM,1) + VALIN1
  194. 50 CONTINUE
  195. 60 CONTINUE
  196. SEGDES MELVAL, MELEME
  197. 70 CONTINUE
  198. SEGDES MPOVA2,MSOUP2,MCHPO2
  199. ENDIF
  200. SEGDES MCHELM
  201. SEGDES MPOVA1
  202. SEGDES MPOVAL
  203. SEGSUP ICCPR
  204. C
  205. RETURN
  206. END
  207.  
  208.  
  209.  
  210.  
  211.  

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