Télécharger flux.eso

Retour à la liste

Numérotation des lignes :

  1. C FLUX SOURCE CB215821 19/08/01 21:15:58 10279
  2.  
  3. C=======================================================================
  4. C= F L U X =
  5. C= ------- =
  6. C= =
  7. C= OPERATEUR CAST3M "FLUX" : =
  8. C= ------------------------- =
  9. C= FF1 = 'FLUX' MODL1 | VFLU MAI1 ( 'DIRE' POI1 ) | ( 'PEAU' ) ; =
  10. C= | CH1 | =
  11. C= | CH2 LMOTS | =
  12. C= =
  13. C= Cet operateur sert a calculer les flux nodaux equivalents a une =
  14. C= condition de flux de chaleur impose (CHPOINT au second membre). =
  15. C= =
  16. C= ARGUMENTS : =
  17. C= ----------- =
  18. C= MODL1 (MMODEL) Modele (global) associe a la structure =
  19. C= VFLU (FLOTTANT) Valeur algebrique du flux (constante) =
  20. C= MAI1 (MAILLAGE) Partie de la structure ou on impose le flux de =
  21. C= chaleur de valeur VFLU. =
  22. C= CH1 (CHPOINT ou MCHAML) Valeurs algebriques des flux =
  23. C= 'DIRE' (MOT) Indique que le flux est incline par rapport a =
  24. C= a la normale a la (sur)face =
  25. C= POI1 (POINT) Direction du flux dans le repere global =
  26. C= CH2 (CHPOINT ou MCHAML) Champ a plusieurs composantes =
  27. C= LMOTS (LISTMOTS) Liste des composantes de CH2, la premiere est =
  28. C= associee a la direction X, la deuxieme a Y et =
  29. C= la troisieme a Z (en 3D) =
  30. C= PEAU (MOT) Indique la peau etudie dans le cas des COQUES =
  31. C= =
  32. C= RESULTAT : =
  33. C= ---------- =
  34. C= FF1 (CHPOINT) Flux nodaux equivalents a la condition de flux =
  35. C= de nature DISCRETE =
  36. C= =
  37. C= CREATION / MODIF : =
  38. C= ------------------ =
  39. C= Creation : Denis ROBERT, le 25 janvier 1988. =
  40. C= Modif : BP, 30/07/2013 : ajout de la possibilité que CH1 et CH2 =
  41. C= soient des MCHAML =
  42. C= =
  43. C=======================================================================
  44.  
  45. SUBROUTINE FLUX
  46.  
  47. IMPLICIT INTEGER(I-N)
  48. IMPLICIT REAL*8 (A-H,O-Z)
  49.  
  50. -INC CCOPTIO
  51. -INC SMCHPOI
  52. -INC SMLMOTS
  53. -INC SMMODEL
  54.  
  55. PARAMETER (NP=2)
  56. CHARACTER*4 PEAU
  57. CHARACTER*4 MOPEAU(NP),MOFLU(1)
  58. CHARACTER*4 MOCOMP
  59.  
  60. DATA MOPEAU / 'INFE','SUPE' /
  61. DATA MOFLU / 'DIRE' /
  62.  
  63. C 1 - LECTURE DES ARGUMENTS DE L'OPERATEUR
  64. C ==========================================
  65. C 1.1 - Lecture OBLIGATOIRE du modele (IPMODL)
  66. C =====
  67. MOTERR(1:8)=' MODELE '
  68. CALL MESLIR(-137)
  69. CALL LIROBJ('MMODEL ',IPMODL,1,iOK)
  70. CALL ACTOBJ('MMODEL ',IPMODL,1)
  71. IF (IERR.NE.0) RETURN
  72. C =====
  73. C 1.2 - Lecture OBLIGATOIRE des flux de chaleur donnes par :
  74. C 1) un CHPOINT (IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  75. C ou 2) un MCHAML (-IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  76. C ou 3) un maillage (IPGEOM) et un flottant (VALFLU)
  77. C =====
  78. IPCHPO=0
  79. MLMOTX=0
  80. VALFLU=0.
  81. CALL MESLIR(-164)
  82. CALL LIROBJ('CHPOINT ',IPCHPO,0,iOK)
  83. IF (IERR.NE.0) RETURN
  84. cbp : on ajoute la possibilité de lire un mchaml
  85. IF (iOK.EQ.0) THEN
  86. CALL LIROBJ('MCHAML ',IPIN,0,iOK)
  87. IF (IERR.NE.0) RETURN
  88. IPCHPO=0
  89. IF (iOK .EQ. 1) THEN
  90. CALL ACTOBJ('MCHAML ',IPIN,1)
  91. CALL REDUAF(IPIN,IPMODL,IPCHPO,0,IR,KER)
  92. IF(IR .NE. 1) CALL ERREUR(KER)
  93. IF(IERR .NE. 0) RETURN
  94. IPCHPO = -1*IPCHPO
  95. ENDIF
  96. ENDIF
  97.  
  98. IF (iOK.EQ.1) THEN
  99. CALL ACTOBJ('CHPOINT ',IPCHPO,1)
  100. CALL LIROBJ('LISTMOTS',MLMOTX,0,iOK)
  101. IF (IERR.NE.0) RETURN
  102. IF (MLMOTX.NE.0) THEN
  103. MLMOTS=MLMOTX
  104. SEGACT,MLMOTS
  105. NCOMP = MOTS(/2)
  106. IF (NCOMP.NE.IDIM) THEN
  107. CALL ERREUR(21)
  108. RETURN
  109. ENDIF
  110. ENDIF
  111. IPCHP2 = IPCHPO
  112.  
  113. ELSE
  114. CALL MESLIR(-163)
  115. CALL LIRREE(VALFLU,1,iOK)
  116. IF (IERR.NE.0) RETURN
  117. MOTERR(1:8)='MAILLAGE'
  118. CALL MESLIR(-137)
  119. CALL LIROBJ('MAILLAGE',IPGEOM,1,iOK)
  120. CALL ACTOBJ('MAILLAGE',IPGEOM,1)
  121. IF (IERR.NE.0) RETURN
  122. CALL MANUC2(VALFLU,IPGEOM,1,IPCHP2)
  123. IF (IERR.NE.0) RETURN
  124. ENDIF
  125.  
  126. C =====
  127. C 1.3 - Lecture FACULTATIVE du MOT 'DIRE' et du vecteur associe
  128. C =====
  129. NUMPOI=-1
  130. CALL LIRMOT(MOFLU,1,iOK,0)
  131. IF (iOK.NE.0) THEN
  132. CALL MESLIR(-162)
  133. CALL LIROBJ('POINT',NUMPOI,1,iOK)
  134. IF (IERR.NE.0) GOTO 10
  135. ENDIF
  136. C =====
  137. C 1.4 - Lecture FACULTATIVE du MOT associe a la PEAU (cas des COQUES)
  138. C =====
  139. PEAU=' '
  140. CALL MESLIR (-260)
  141. CALL LIRMOT(MOPEAU,NP,LP,0)
  142. IF (IERR.NE.0) GOTO 10
  143. IF (LP.NE.0) PEAU=MOPEAU(LP)
  144.  
  145. C 2 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
  146. C ======================================================
  147. C 2.1 - Verification de la formulation (unique) du modele
  148. C =====
  149. ITHER = 0
  150. ITHHY = 0
  151. IELEC = 0
  152. IDIFF = 0
  153. MMODEL = IPMODL
  154. NSOUS = KMODEL(/1)
  155. DO ISOUS = 1, NSOUS
  156. IMODEL = KMODEL(ISOUS)
  157. NFOR = FORMOD(/2)
  158. IF (NFOR.EQ.1) THEN
  159. IF (FORMOD(1).EQ.'THERMIQUE') THEN
  160. ITHER = 1
  161. ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE') THEN
  162. ITHHY = 1
  163. ELSE IF (FORMOD(1).EQ.'ELECTROSTATIQUE') THEN
  164. IELEC = 1
  165. ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
  166. IDIFF = 1
  167. ELSE
  168. MOTERR(1:8) = FORMOD(1)
  169. CALL ERREUR(193)
  170. ENDIF
  171. ELSE IF (NFOR.GT.1) THEN
  172. MOTERR(1:8) = FORMOD(1)
  173. CALL ERREUR(193)
  174. ENDIF
  175. ENDDO
  176.  
  177. IF (IERR.NE.0) GOTO 10
  178. IF ((ITHER+ITHHY+IELEC+IDIFF).NE.1) THEN
  179. *AV Affiner l'erreur !
  180. write(ioimp,*) 'Une seule formulation dans le modele !'
  181. CALL ERREUR(21)
  182. GOTO 10
  183. ENDIF
  184. C =====
  185. C 2.2 - Recuperation du modele de la formulation retenue
  186. C =====
  187. IF (ITHER .EQ. 1) CALL ECRCHA('THERMIQUE')
  188. IF (ITHHY .EQ. 1) CALL ECRCHA('THERMOHYDRIQUE')
  189. IF (IELEC .EQ. 1) CALL ECRCHA('ELECTROSTATIQUE')
  190. IF (IDIFF .EQ. 1) CALL ECRCHA('DIFFUSION')
  191. CALL ECRCHA('FORM')
  192. CALL ECROBJ('MMODEL',IPMODL)
  193. CALL EXTRAI
  194. CALL LIROBJ('MMODEL',IPMODL,1,IRet)
  195. IF (IERR.NE.0) GOTO 10
  196. C =====
  197. C 2.3 - Adequation nom de composante source & modele
  198. C =====
  199. MOCOMP = ' '
  200. IF (ITHER .EQ. 1) THEN
  201. IF (MOCOMP.EQ.' ') MOCOMP = 'Q '
  202. IF (MOCOMP.NE.'Q ') CALL ERREUR(665)
  203. C* A finir pour la thermohydrique
  204. ELSE IF (ITHHY .EQ. 1) THEN
  205. MOCOMP = 'Q '
  206. ELSE
  207. IPCOMP = 0
  208. CALL NOVARD(IPMODL,'FORC')
  209. CALL LIROBJ('LISTMOTS',IPCOMP,1,IRet)
  210. IF (IERR.NE.0) RETURN
  211. MLMOTS = IPCOMP
  212. SEGACT,MLMOTS
  213. NCOMP = MOTS(/2)
  214. * Normalement : NCOMP est non nul !
  215. * Cas particulier de la diffusion en attendant un traitement adequat ?
  216. IF (IDIFF.EQ.1 .AND. NCOMP.GT.1) THEN
  217. write(ioimp,*) 'Modele de DIFFUSION a une seule quantite SVP'
  218. CALL ERREUR(21)
  219. ENDIF
  220. IF (MOCOMP.EQ.' ') MOCOMP = MOTS(1)
  221. CALL PLACE(MOTS,NCOMP,IRet,MOCOMP)
  222. IF (IRet.EQ.0) CALL ERREUR(665)
  223. SEGSUP,MLMOTS
  224. ENDIF
  225. IF (IERR.NE.0) GOTO 10
  226.  
  227. C 3 - CALCUL DES FLUX NODAUX EQUIVALENTS
  228. C ========================================
  229. IPFLUX=0
  230. CALL FLUX2(IPMODL,IPCHP2,NUMPOI,MOCOMP,PEAU,MLMOTX,IPFLUX)
  231. IF (IERR.NE.0) GOTO 10
  232.  
  233. C 4 - ECRITURE DU CHPOINT RESULTAT
  234. C ==================================
  235. C= Attribution d'une nature DISCRETE au CHPOINT resultat
  236. IF (IPFLUX.NE.0) THEN
  237. MCHPOI=IPFLUX
  238. NAT=MAX(1,JATTRI(/1))
  239. NSOUPO=IPCHP(/1)
  240. SEGADJ,MCHPOI
  241. JATTRI(1)=2
  242. IPFLUX=MCHPOI
  243.  
  244. CALL ACTOBJ('CHPOINT ',IPFLUX,1)
  245. CALL ECROBJ('CHPOINT ',IPFLUX)
  246. ENDIF
  247.  
  248. C 5 - MENAGE : Destruction eventuelle de CHPOINT intermediaire
  249. C ==============
  250. 10 CONTINUE
  251. IF (IPCHPO.EQ.0) CALL DTCHPO(IPCHP2)
  252.  
  253. END
  254.  
  255.  
  256.  
  257.  

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