Télécharger flux.eso

Retour à la liste

Numérotation des lignes :

  1. C FLUX SOURCE CB215821 16/12/05 21:39:28 9237
  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. IF (IERR.NE.0) RETURN
  71. C =====
  72. C 1.2 - Lecture OBLIGATOIRE des flux de chaleur donnes par :
  73. C 1) un CHPOINT (IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  74. C ou 2) un MCHAML (-IPCHPO) avec ou sans LISTMOTS (MLMOTX)
  75. C ou 3) un maillage (IPGEOM) et un flottant (VALFLU)
  76. C =====
  77. IPCHPO=0
  78. MLMOTX=0
  79. VALFLU=0.
  80. CALL MESLIR(-164)
  81. CALL LIROBJ('CHPOINT',IPCHPO,0,iOK)
  82. IF (IERR.NE.0) RETURN
  83. cbp : on ajoute la possibilité de lire un mchaml
  84. IF (iOK.EQ.0) THEN
  85. CALL LIROBJ('MCHAML',IPIN,0,iOK)
  86. IF (IERR.NE.0) RETURN
  87. IPCHPO=0
  88. IF (iOK .EQ. 1) THEN
  89. CALL REDUAF(IPIN,IPMODL,IPCHPO,0,IR,KER)
  90. IF(IR .NE. 1) CALL ERREUR(KER)
  91. IF(IERR .NE. 0) RETURN
  92. IPCHPO = -1*IPCHPO
  93. ENDIF
  94. ENDIF
  95. IF (iOK.EQ.1) THEN
  96. CALL LIROBJ('LISTMOTS',MLMOTX,0,iOK)
  97. IF (IERR.NE.0) RETURN
  98. IF (MLMOTX.NE.0) THEN
  99. MLMOTS=MLMOTX
  100. SEGACT,MLMOTS
  101. NCOMP = MOTS(/2)
  102. SEGDES,MLMOTS
  103. IF (NCOMP.NE.IDIM) THEN
  104. CALL ERREUR(21)
  105. RETURN
  106. ENDIF
  107. ENDIF
  108. IPCHP2 = IPCHPO
  109. ELSE
  110. CALL MESLIR(-163)
  111. CALL LIRREE(VALFLU,1,iOK)
  112. IF (IERR.NE.0) RETURN
  113. MOTERR(1:8)='MAILLAGE'
  114. CALL MESLIR(-137)
  115. CALL LIROBJ('MAILLAGE',IPGEOM,1,iOK)
  116. IF (IERR.NE.0) RETURN
  117. CALL MANUC2(VALFLU,IPGEOM,1,IPCHP2)
  118. IF (IERR.NE.0) RETURN
  119. ENDIF
  120. C =====
  121. C 1.3 - Lecture FACULTATIVE du MOT 'DIRE' et du vecteur associe
  122. C =====
  123. NUMPOI=-1
  124. CALL LIRMOT(MOFLU,1,iOK,0)
  125. IF (iOK.NE.0) THEN
  126. CALL MESLIR(-162)
  127. CALL LIROBJ('POINT',NUMPOI,1,iOK)
  128. IF (IERR.NE.0) GOTO 10
  129. ENDIF
  130. C =====
  131. C 1.4 - Lecture FACULTATIVE du MOT associe a la PEAU (cas des COQUES)
  132. C =====
  133. PEAU=' '
  134. CALL MESLIR (-260)
  135. CALL LIRMOT(MOPEAU,NP,LP,0)
  136. IF (IERR.NE.0) GOTO 10
  137. IF (LP.NE.0) PEAU=MOPEAU(LP)
  138.  
  139. C 2 - EXTRACTION DE LA FORMULATION A TRAITER DU MODELE
  140. C ======================================================
  141. C 2.1 - Verification de la formulation (unique) du modele
  142. C =====
  143. ITHER = 0
  144. ITHHY = 0
  145. IELEC = 0
  146. IDIFF = 0
  147. MMODEL = IPMODL
  148. SEGACT,MMODEL
  149. NSOUS = KMODEL(/1)
  150. DO ISOUS = 1, NSOUS
  151. IMODEL = KMODEL(ISOUS)
  152. SEGACT,IMODEL
  153. NFOR = FORMOD(/2)
  154. IF (NFOR.EQ.1) THEN
  155. IF (FORMOD(1).EQ.'THERMIQUE') THEN
  156. ITHER = 1
  157. ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE') THEN
  158. ITHHY = 1
  159. ELSE IF (FORMOD(1).EQ.'ELECTROSTATIQUE') THEN
  160. IELEC = 1
  161. ELSE IF (FORMOD(1).EQ.'DIFFUSION') THEN
  162. IDIFF = 1
  163. ELSE
  164. MOTERR(1:8) = FORMOD(1)
  165. CALL ERREUR(193)
  166. ENDIF
  167. ELSE IF (NFOR.GT.1) THEN
  168. MOTERR(1:8) = FORMOD(1)
  169. CALL ERREUR(193)
  170. ENDIF
  171. SEGDES,IMODEL
  172. ENDDO
  173. SEGDES,MMODEL
  174. IF (IERR.NE.0) GOTO 10
  175. IF ((ITHER+ITHHY+IELEC+IDIFF).NE.1) THEN
  176. *AV Affiner l'erreur !
  177. write(ioimp,*) 'Une seule formulation dans le modele !'
  178. CALL ERREUR(21)
  179. GOTO 10
  180. ENDIF
  181. C =====
  182. C 2.2 - Recuperation du modele de la formulation retenue
  183. C =====
  184. IF (ITHER .EQ. 1) CALL ECRCHA('THERMIQUE')
  185. IF (ITHHY .EQ. 1) CALL ECRCHA('THERMOHYDRIQUE')
  186. IF (IELEC .EQ. 1) CALL ECRCHA('ELECTROSTATIQUE')
  187. IF (IDIFF .EQ. 1) CALL ECRCHA('DIFFUSION')
  188. CALL ECRCHA('FORM')
  189. CALL ECROBJ('MMODEL',IPMODL)
  190. CALL EXTRAI
  191. CALL LIROBJ('MMODEL',IPMODL,1,IRet)
  192. IF (IERR.NE.0) GOTO 10
  193. C =====
  194. C 2.3 - Adequation nom de composante source & modele
  195. C =====
  196. MOCOMP = ' '
  197. IF (ITHER .EQ. 1) THEN
  198. IF (MOCOMP.EQ.' ') MOCOMP = 'Q '
  199. IF (MOCOMP.NE.'Q ') CALL ERREUR(665)
  200. C* A finir pour la thermohydrique
  201. ELSE IF (ITHHY .EQ. 1) THEN
  202. MOCOMP = 'Q '
  203. ELSE
  204. IPCOMP = 0
  205. CALL NOVARD(IPMODL,'FORC')
  206. CALL LIROBJ('LISTMOTS',IPCOMP,1,IRet)
  207. IF (IERR.NE.0) RETURN
  208. MLMOTS = IPCOMP
  209. SEGACT,MLMOTS
  210. NCOMP = MOTS(/2)
  211. * Normalement : NCOMP est non nul !
  212. * Cas particulier de la diffusion en attendant un traitement adequat ?
  213. IF (IDIFF.EQ.1 .AND. NCOMP.GT.1) THEN
  214. write(ioimp,*) 'Modele de DIFFUSION a une seule quantite SVP'
  215. CALL ERREUR(21)
  216. ENDIF
  217. IF (MOCOMP.EQ.' ') MOCOMP = MOTS(1)
  218. CALL PLACE(MOTS,NCOMP,IRet,MOCOMP)
  219. IF (IRet.EQ.0) CALL ERREUR(665)
  220. SEGSUP,MLMOTS
  221. ENDIF
  222. IF (IERR.NE.0) GOTO 10
  223.  
  224. C 3 - CALCUL DES FLUX NODAUX EQUIVALENTS
  225. C ========================================
  226. IPFLUX=0
  227. CALL FLUX2(IPMODL,IPCHP2,NUMPOI,MOCOMP,PEAU,MLMOTX,IPFLUX)
  228. IF (IERR.NE.0) GOTO 10
  229.  
  230. C 4 - ECRITURE DU CHPOINT RESULTAT
  231. C ==================================
  232. C= Attribution d'une nature DISCRETE au CHPOINT resultat
  233. IF (IPFLUX.NE.0) THEN
  234. MCHPOI=IPFLUX
  235. SEGACT,MCHPOI*MOD
  236. NAT=MAX(1,JATTRI(/1))
  237. NSOUPO=IPCHP(/1)
  238. SEGADJ,MCHPOI
  239. JATTRI(1)=2
  240. SEGDES,MCHPOI
  241. IPFLUX=MCHPOI
  242. CALL ECROBJ('CHPOINT',IPFLUX)
  243. ENDIF
  244.  
  245. C 5 - MENAGE : Destruction eventuelle de CHPOINT intermediaire
  246. C ==============
  247. 10 CONTINUE
  248. IF (IPCHPO.EQ.0) CALL DTCHPO(IPCHP2)
  249.  
  250. RETURN
  251. END
  252.  
  253.  
  254.  

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