Télécharger flux.eso

Retour à la liste

Numérotation des lignes :

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

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