Télécharger divu.eso

Retour à la liste

Numérotation des lignes :

divu
  1. C DIVU SOURCE CB215821 24/04/12 21:15:37 11897
  2. SUBROUTINE DIVU
  3. C-----------------------------------------------------------------------
  4. C Calcul la divergence d'un champ de vecteur (en général la vitesse)
  5. C discretise dans l'espace de Raviart Thomas de plus petit degre.
  6. C-----------------------------------------------------------------------
  7. C
  8. C On obtient la DIVERGENCE de la vitesse en sommant les débits sur
  9. C chaque élément, chaque débit étant de support la normale sortante.
  10. C C'est pourquoi nous avons besoin du MCHAML d'orientation des normales
  11. C de référence afin de modifier la valeur algébrique du débit.
  12. C
  13. C---------------------------
  14. C Phrase d'appel (GIBIANE) :
  15. C---------------------------
  16. C
  17. C CHP1 = DIVU MMODEL TABLE1 CHP2 CHAM1 (CHP3 (CHP4))
  18. C
  19. C------------------------
  20. C Opérandes et résultat :
  21. C------------------------
  22. C
  23. C CHP1 : CHAMPOINT centre contenant la divergence de la vitesse
  24. C MMODEL : Objet MMODEL spécifiant la formulation
  25. C TABLE1 : Objet table DOMAINE regroupant les infos géometriques
  26. C CHP2 : CHAMPOINT contenant le debit aux faces
  27. C CHAM1 : MCHAML sens de la normale à la face (1=out , -1=in)
  28. C CHP3 : CHAMPOIN contenant une fonction aux centres des elements
  29. C CHP4 : CHAMPOIN contenant les valeurs de cette fonction sur les
  30. C limites du domaine(le support est contitué par des points face)
  31. C
  32. C-----------------------------------------------------------------------
  33. C
  34. C Langage : ESOPE + FORTRAN77
  35. C
  36. C Auteurs : F.DABBENE 01/94
  37. C Complements : C. LE POTIER ET F. AURIOL 20/00
  38. C-----------------------------------------------------------------------
  39. IMPLICIT INTEGER(I-N)
  40. IMPLICIT REAL*8 (A-H,O-Z)
  41. *
  42.  
  43. -INC PPARAM
  44. -INC CCOPTIO
  45. -INC SMCHAML
  46. -INC SMCHPOI
  47. -INC SMELEME
  48. -INC SMMODEL
  49. -INC SMTABLE
  50. *
  51. SEGMENT IPMAHY
  52. INTEGER MAHYBR(NSOUS)
  53. ENDSEGMENT
  54. *
  55. CHARACTER*4 NOMTOT(1)
  56. CHARACTER*8 CHARIN,LETYPE
  57. *
  58. * Initialisations
  59. *
  60. CHARIN = 'MAILLAGE'
  61. *
  62. * Lecture du MMODEL
  63. *
  64. CALL LIROBJ('MMODEL ',IPMODE,1,IRET1)
  65. CALL ACTOBJ('MMODEL ',IPMODE,1)
  66. IF (IERR.NE.0) RETURN
  67. *
  68. * Lecture de la TABLE domaine
  69. *
  70. IPTABL = 0
  71. CALL LEKMOD(IPMODE,IPTABL,IRET)
  72. IF (IERR.NE.0) RETURN
  73. CALL LEKTAB(IPTABL,CHARIN,IOBRE)
  74. IF (IERR.NE.0) RETURN
  75. IPGEOM = IOBRE
  76. CALL LEKTAB(IPTABL,'ELTFA',IOBRE)
  77. IF (IERR.NE.0) RETURN
  78. IELTFA = IOBRE
  79. CALL LEKTAB(IPTABL,'CENTRE',IOBRE)
  80. IF (IERR.NE.0) RETURN
  81. IPCENT = IOBRE
  82. CALL LEKTAB(IPTABL,'FACE',IOBRE)
  83. IF (IERR.NE.0) RETURN
  84. IPFACE = IOBRE
  85. CALL LEKTAB(IPTABL,'FACEL',IOBRE)
  86. IF (IERR.NE.0) RETURN
  87. IFACEL = IOBRE
  88. *
  89. * Lecture du CHAMPOINT de debit (nom de composantes FLUX)
  90. *
  91. CALL LIROBJ('CHPOINT ',ICHP1,1,IRET1)
  92. CALL ACTOBJ('CHPOINT ',ICHP1,1)
  93. IF (IERR.NE.0) RETURN
  94. *
  95. * Lecture du CHAMELEM
  96. *
  97. CALL LIROBJ('MCHAML ',IPIN,1,IRET1)
  98. CALL ACTOBJ('MCHAML ',IPIN,1)
  99. CALL REDUAF(IPIN,IPMODE,IPCHEL,0,IR,KER)
  100. IF(IR .NE. 1) CALL ERREUR(KER)
  101. IF(IERR .NE. 0) RETURN
  102. C CALL LEKTAB(IPTABL,'XXNORMAE',IPCHEL)
  103. C IF (IERR.NE.0) RETURN
  104. *
  105. * Lecture du CHAMPOINT de la fonction aux centres
  106. *
  107. IPFONC=0
  108. CALL LIROBJ('CHPOINT ',ICHP2,0,IRET2)
  109. IF (IERR.NE.0) RETURN
  110. IF(IRET2.EQ.1)THEN
  111. CALL ACTOBJ('CHPOINT ',ICHP2,1)
  112. INDIC = 1
  113. NBCOMP = 1
  114. NOMTOT(1) = 'SCAL'
  115. CALL QUEPOI(ICHP2,IPCENT,INDIC,NBCOMP,NOMTOT)
  116. IF (IERR.NE.0) RETURN
  117. ICLIM=0
  118. CALL LIROBJ('CHPOINT ',ICLIM,0,IRLIM)
  119. IF(IRLIM .EQ. 1) CALL ACTOBJ('CHPOINT ',ICLIM,1)
  120. CALL DIVUFN(ICHP2,ICLIM,IPFACE,IFACEL,ICHP1,IPCHEL,IPFONC)
  121.  
  122. * VERRUE
  123. * CALL ECCHPO(ipfonc)
  124. ENDIF
  125. *
  126. * Test CHAMPOINT de FLUX
  127. *
  128. INDIC = 1
  129. NBCOMP = 1
  130. NOMTOT(1) = 'FLUX'
  131. CALL QUEPOI(ICHP1,IPFACE,INDIC,NBCOMP,NOMTOT)
  132. IF (IERR.NE.0) RETURN
  133. *
  134. * Test de la formulation contenu dans MMODEL
  135. *
  136. MMODEL = IPMODE
  137. SEGACT MMODEL
  138. NSOUS = KMODEL(/1)
  139. SEGINI IPMAHY
  140. IDARCY = 0
  141. IPT1=IPGEOM
  142. IPT2=IPGEOM
  143. DO 10 ISOUS=1,NSOUS
  144. IF(NSOUS.GT.1)THEN
  145. SEGACT IPT2
  146. IPT1=IPT2.LISOUS(ISOUS)
  147. ENDIF
  148. IMODEL = KMODEL(ISOUS)
  149. SEGACT IMODEL
  150. LETYPE = FORMOD(1)
  151. IF (LETYPE.EQ.'DARCY') THEN
  152. IDARCY = IDARCY + 1
  153. MAHYBR(ISOUS) = IPT1
  154. ENDIF
  155. 10 CONTINUE
  156. IF (IDARCY.EQ.0) THEN
  157. SEGSUP IPMAHY
  158. MOTERR = LETYPE
  159. CALL ERREUR(193)
  160. RETURN
  161. ENDIF
  162. *
  163. * Récuperation des pointeurs ELTFA pour les zones ou DARCY est defini
  164. *
  165. MELEME = IELTFA
  166. SEGACT MELEME
  167. LZONES = LISOUS(/1)
  168. IF (LZONES.EQ.0) LZONES = 1
  169. IPT1 = IPGEOM
  170. SEGACT IPT1
  171. DO 30 ISOUS=1,NSOUS
  172. IMAMEL = MAHYBR(ISOUS)
  173. IF (IMAMEL.NE.0) THEN
  174. DO 20 ISZ=1,LZONES
  175. IF (LZONES.EQ.1) THEN
  176. IPT2 = IPT1
  177. IPT3 = MELEME
  178. ELSE
  179. IPT2 = IPT1.LISOUS(ISZ)
  180. IPT3 = LISOUS(ISZ)
  181. ENDIF
  182. IF (IPT2.EQ.IMAMEL) THEN
  183. MAHYBR(ISOUS) = IPT3
  184. GOTO 30
  185. ENDIF
  186. 20 CONTINUE
  187. IF (IMAMEL.EQ.MAHYBR(ISOUS)) THEN
  188. MOTERR(1:8) = ' MODELE '
  189. MOTERR(1:16) = ' ELTFA '
  190. INTERR(1) = ISOUS
  191. CALL ERREUR(698)
  192. SEGSUP IPMAHY
  193. RETURN
  194. ENDIF
  195. ENDIF
  196. 30 CONTINUE
  197. *
  198. * Test du SUPPORT du MCHAML d'orientation : On teste qu'à chaque zone
  199. * du MODELE ou Darcy est défini correspond une zone du MCHAML
  200. *
  201. MCHELM = IPCHEL
  202. SEGACT MCHELM
  203. NCH1 = IMACHE(/1)
  204. NBOK = 0
  205. DO 50 ISOUS=1,NSOUS
  206. IMAMEL = MAHYBR(ISOUS)
  207. IF (IMAMEL.NE.0) THEN
  208. DO 40 JSOUS=1,NCH1
  209. IF (IMACHE(JSOUS).EQ.IMAMEL) NBOK=NBOK+1
  210. 40 CONTINUE
  211. ENDIF
  212. 50 CONTINUE
  213. SEGSUP IPMAHY
  214. IF (NBOK.NE.NCH1) THEN
  215. MOTERR(1:8) = ' ORIENT '
  216. MOTERR(9:16)= ' ELTFA '
  217. CALL ERREUR(135)
  218. RETURN
  219. ENDIF
  220. *
  221. * Calcul de la divergence du champ de vecteur connu via ses flux
  222. *
  223. CALL DIVU1(ICHP1,IPCHEL,IPFACE,IPCENT,IPFONC,IRET)
  224.  
  225. CALL ACTOBJ('CHPOINT ',IRET,1)
  226. CALL ECROBJ('CHPOINT ',IRET)
  227.  
  228. IF(IPFONC.NE.0)THEN
  229. CALL ACTOBJ('CHPOINT ',IPFONC,1)
  230. CALL ECROBJ('CHPOINT ',IPFONC)
  231. * CALL ECCHPO(ipfonc)
  232. * CALL ECCHPO(iret)
  233. MCHPOI=IPFONC
  234. MSOUPO=IPCHP(1)
  235. MPOVAL=IPOVAL
  236. ENDIF
  237.  
  238. END
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  

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