Télécharger condu.eso

Retour à la liste

Numérotation des lignes :

  1. C CONDU SOURCE CB215821 17/01/16 21:15:13 9279
  2.  
  3. SUBROUTINE CONDU
  4.  
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7.  
  8. -INC CCOPTIO
  9. -INC SMCHAML
  10. -INC SMMODEL
  11. POINTEUR MODTHR.MMODEL,MODRAY.MMODEL,MODCNV.MMODEL,MODTHM.MMODEL
  12. POINTEUR MOELEC.MMODEL,MODIFF.MMODEL
  13. -INC SMRIGID
  14.  
  15. IPRIGI = 0
  16. IPMODR = 0
  17. IPMODC = 0
  18.  
  19. C =========================================
  20. C 1- LECTURE DES ARGUMENTS DE L'OPERATEUR
  21. C =========================================
  22. C 1.1 - Lecture OBLIGATOIRE du modele (MODORI)
  23. C =====
  24. MOTERR(1:8)=' MODELE '
  25. CALL MESLIR(-137)
  26. CALL LIROBJ('MMODEL',MODORI,1,IRet)
  27. IF (IERR.NE.0) RETURN
  28. C =====
  29. C 1.2 - Lecture OBLIGATOIRE du champ de caracteristiques (MCHORI)
  30. C =====
  31. CALL MESLIR(-135)
  32. CALL LIROBJ('MCHAML',IPIN,1,IRet)
  33. IF (IERR.NE.0) RETURN
  34. CALL REDUAF(IPIN,MODORI,MCHORI,0,IR,KER)
  35. IF(IR .NE. 1) CALL ERREUR(KER)
  36. IF(IERR .NE. 0) RETURN
  37.  
  38. C =========================================
  39. C 2- QUELQUES VERIFICATIONS DES ARGUMENTS
  40. C =========================================
  41. C 2.1 - Verification du type du champ (MCHORI)
  42. C =====
  43. MCHELM = MCHORI
  44. SEGACT,MCHELM
  45. IF (TITCHE(1:8).NE.'CARACTER') THEN
  46. SEGDES,MCHELM
  47. MOTERR(1:16) = 'CARACTERISTIQUES'
  48. CALL ERREUR(291)
  49. RETURN
  50. ENDIF
  51. C =====
  52. C 2.2 - Verification du contenu du modele (MODORI)
  53. C Separation des formulations DIFFUSION & ELECTROSTATIQUE
  54. C et des formulations THERMIQUE & THERMOHYDRIQUE
  55. C =====
  56. MMODEL = MODORI
  57. SEGACT,MMODEL
  58. NSOUS = KMODEL(/1)
  59. N1 = NSOUS
  60. SEGINI,MOELEC,MODTHM,MODRAY,MODCNV,MODTHR,MODIFF
  61. IELEC = 0
  62. ITHEM = 0
  63. IRAYE = 0
  64. ICONV = 0
  65. ITHER = 0
  66. IDIFF = 0
  67.  
  68. DO isous = 1, NSOUS
  69. IMODEL = KMODEL(isous)
  70. SEGACT,IMODEL
  71. IF (FORMOD(1).EQ.'ELECTROSTATIQUE ') THEN
  72. IELEC = IELEC + 1
  73. MOELEC.KMODEL(IELEC) = IMODEL
  74. ELSE IF (FORMOD(1).EQ.'THERMOHYDRIQUE ') THEN
  75. ITHEM = ITHEM + 1
  76. MODTHM.KMODEL(ITHEM) = IMODEL
  77. ELSE IF (FORMOD(1).EQ.'DIFFUSION ') THEN
  78. IDIFF = IDIFF + 1
  79. MODIFF.KMODEL(IDIFF) = IMODEL
  80. ELSE IF (FORMOD(1).EQ.'THERMIQUE ') then
  81. NMAT = MATMOD(/2)
  82. CALL PLACE(MATMOD,NMAT,ipl,'RAYONNEMENT')
  83. IF (ipl.NE.0) THEN
  84. IRAYE = IRAYE + 1
  85. MODRAY.KMODEL(IRAYE) = IMODEL
  86. ELSE
  87. CALL PLACE(MATMOD,NMAT,ipl,'CONVECTION')
  88. IF (ipl.NE.0) THEN
  89. ICONV = ICONV + 1
  90. MODCNV.KMODEL(ICONV) = IMODEL
  91. ELSE
  92. ITHER = ITHER + 1
  93. MODTHR.KMODEL(ITHER) = IMODEL
  94. ENDIF
  95. ENDIF
  96. ELSE
  97. N1 = N1 - 1
  98. ENDIF
  99. ENDDO
  100. C Verification que le modele MODORI contient au moins un sous-modele
  101. C dont la formulation est traitee ici !
  102. IF (N1.LE.0) THEN
  103. MOTERR(1:8) = 'MMODEL '
  104. INTERR(1) = MODORI
  105. CALL ERREUR(356)
  106. GOTO 9991
  107. ENDIF
  108.  
  109. IF (IELEC.GT.0) THEN
  110. C =======================================================
  111. C 3- CONSTRUCTION DE LA MATRICE DE CONDUCTIVITE
  112. C POUR LA FORMULATION ELECTROSTATIQUE
  113. C =======================================================
  114. C Modele contenant uniquement des formulations DIFFUSION et ELECTROSTATIQUE
  115. N1 = IELEC
  116. SEGADJ,MOELEC
  117. IPMODR = MOELEC
  118. C Calcul de la matrice : tout est fait dans RIGI1
  119. ipch = 0
  120. imat = 1
  121. CALL RIGI1(IPMODR,MCHORI,ipch,imat,IPRIGI,IRET)
  122. IF (IRET.NE.1) GOTO 9991
  123. MRIGID = IPRIGI
  124. ENDIF
  125.  
  126. NSOUS = ITHEM + IRAYE + ICONV + ITHER + IDIFF
  127. IF (NSOUS.GT.0) THEN
  128. C ================================================================
  129. C 4- CONSTRUCTION DE LA MATRICE DE CONDUCTIVITE
  130. C POUR LES FORMULATIONS THERMIQUE, DIFFUSION ET THERMOHYDRIQUE
  131. C ================================================================
  132. C 4.1 - Initialisation de la matrice si necessaire
  133. C =====
  134. IF (IPRIGI.EQ.0) THEN
  135. NRIGEL = 0
  136. SEGINI,MRIGID
  137. MTYMAT = 'RIGIDITE'
  138. ICHOLE = 0
  139. IMGEO1 = 0
  140. IMGEO2 = 0
  141. C* IFORIG = IFOMOD
  142. IFORIG = IFOUR
  143. ISUPEQ = 0
  144. IPRIGI = MRIGID
  145. ELSE
  146. MRIGID = IPRIGI
  147. SEGACT,MRIGID*MOD
  148. ENDIF
  149. C =====
  150. C 4.2 - Modele avec uniquement les formulations THERMIQUE, DIFFUSION et THERMOHYDRIQUE
  151. C =====
  152. N1 = NSOUS
  153. SEGINI,MMODEL
  154. isous = 0
  155. IF (ITHEM.GT.0) THEN
  156. DO i = 1, ITHEM
  157. isous = isous + 1
  158. KMODEL(isous) = MODTHM.KMODEL(i)
  159. ENDDO
  160. ENDIF
  161. IF (IRAYE.GT.0) THEN
  162. DO i = 1, IRAYE
  163. isous = isous + 1
  164. KMODEL(isous) = MODRAY.KMODEL(i)
  165. ENDDO
  166. ENDIF
  167. IF (ICONV.GT.0) THEN
  168. DO i = 1, ICONV
  169. isous = isous + 1
  170. KMODEL(isous) = MODCNV.KMODEL(i)
  171. ENDDO
  172. ENDIF
  173. IF (ITHER.GT.0) THEN
  174. DO i = 1, ITHER
  175. isous = isous + 1
  176. KMODEL(isous) = MODTHR.KMODEL(i)
  177. ENDDO
  178. ENDIF
  179. IF (IDIFF.GT.0) THEN
  180. DO i = 1, IDIFF
  181. isous = isous + 1
  182. KMODEL(isous) = MODIFF.KMODEL(i)
  183. ENDDO
  184. ENDIF
  185. IPMODC = MMODEL
  186.  
  187. C =====
  188. C 4.3 - Reduction du champ au modele precedemment reduit
  189. C =====
  190. MCHELM = MCHORI
  191. CALL REDUAF(MCHORI,IPMODC,IPCHEC,0,IRET,KERRE)
  192. SEGDES,MCHELM
  193. IF (IRET.NE.1) THEN
  194. CALL ERREUR(KERRE)
  195. GOTO 9990
  196. ENDIF
  197. ISUPCH = 0
  198. CALL QUESUP(IPMODC,IPCHEC,6,0,ISUPCH,IRET)
  199. IF (ISUPCH.GT.1) GOTO 9990
  200. C NB : La verification du support est effectuee ici pour l'instant,
  201. C car tous les formulations considerees ici s'appuient sur le
  202. C meme support (IRET = 1, 2 ou 6).
  203.  
  204. C =====
  205. C 4.4 - Remplissage de la matrice pour chaque modele concerne
  206. C =====
  207. c Formulation thermohydrique
  208. IF (ITHEM.GT.0) THEN
  209. DO i = 1, ITHEM
  210. IMODEL = MODTHM.KMODEL(i)
  211. SEGACT,IMODEL
  212. CALL THCOND(IMODEL,IPCHEC,ISUPCH, IPRIGI)
  213. IF (IERR.NE.0) GOTO 9990
  214. ENDDO
  215. ENDIF
  216.  
  217. c Formulation rayonnement
  218. IF (IRAYE.GT.0) THEN
  219. MCHELM = IPCHEC
  220. DO i = 1, IRAYE
  221. IMODEL = MODRAY.KMODEL(i)
  222. SEGACT,IMODEL
  223. * on accepte le sous-modele de rayonnement que si le mchaml
  224. * correspondant contient une composante H !
  225. SEGACT,MCHELM
  226. imaray = IMACHE(/1)
  227. DO j = 1, imaray
  228. IF (imache(j).eq.IMAMOD .AND. conche(j).eq.CONMOD) then
  229. mchaml = ichaml(j)
  230. SEGACT,mchaml
  231. CALL PLACE(nomche,nomche(/2),ipl,'H ')
  232. IF (ipl.NE.0) then
  233. CALL TCONVE(IMODEL,IPCHEC,ISUPCH, IPRIGI)
  234. IF (IERR.NE.0) GOTO 9990
  235. GOTO 4420
  236. ENDIF
  237. SEGDES,mchaml
  238. ENDIF
  239. ENDDO
  240. 4420 CONTINUE
  241. ENDDO
  242. SEGDES,MCHELM
  243. ENDIF
  244.  
  245. c Formulation convection
  246. IF (ICONV.GT.0) THEN
  247. DO i = 1, ICONV
  248. IMODEL = MODCNV.KMODEL(i)
  249. SEGACT,IMODEL
  250. CALL TCONVE(IMODEL,IPCHEC,ISUPCH, IPRIGI)
  251. IF (IERR.NE.0) GOTO 9990
  252. ENDDO
  253. ENDIF
  254.  
  255. c Formulation conduction
  256. IF (ITHER.GT.0) THEN
  257. DO i = 1, ITHER
  258. IMODEL = MODTHR.KMODEL(i)
  259. SEGACT,IMODEL
  260. CALL TCONDU(IMODEL,IPCHEC,ISUPCH, IPRIGI)
  261. IF (IERR.NE.0) GOTO 9990
  262. ENDDO
  263. ENDIF
  264.  
  265. c Formulation diffusion
  266. IF (IDIFF.GT.0) THEN
  267. DO i = 1, IDIFF
  268. IMODEL = MODIFF.KMODEL(i)
  269. SEGACT,IMODEL
  270. CALL TCONDU(IMODEL,IPCHEC,ISUPCH, IPRIGI)
  271. IF (IERR.NE.0) GOTO 9990
  272. ENDDO
  273. ENDIF
  274. ENDIF
  275.  
  276. NRIGEL = IRIGEL(/2)
  277. IF (NRIGEL.EQ.0) THEN
  278. CALL ERREUR(19)
  279. ENDIF
  280.  
  281. 9990 CONTINUE
  282. IF (IERR.NE.0) THEN
  283. SEGSUP,MRIGID
  284. ELSE
  285. SEGDES,MRIGID
  286. CALL ECROBJ('RIGIDITE',IPRIGI)
  287. ENDIF
  288. 9991 CONTINUE
  289. MMODEL = MODORI
  290. DO isous = 1, NSOUS
  291. IMODEL = KMODEL(isous)
  292. SEGDES,IMODEL
  293. ENDDO
  294. SEGDES,MMODEL
  295. C SEGSUP,MOELEC,MODTHR,MODTHM,MODRAY,MODCNV,MODIFF
  296.  
  297. RETURN
  298. END
  299.  
  300.  
  301.  

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