Télécharger convma.eso

Retour à la liste

Numérotation des lignes :

convma
  1. C CONVMA SOURCE PV090527 25/01/07 14:42:28 12115
  2.  
  3. C=======================================================================
  4. C= C O N V M A =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul des flux nodaux equivalents a une condition de convection =
  10. C= forcee. Sousprogramme appele par CONVEC (convec.eso). =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= IPMODE (E) Pointeur sur le segment MMODEL =
  15. C= IPCHCA (E) Pointeur sur le segment MCHELM de CARACTERISTIQUES =
  16. C= IPCHPO (E) Pointeur sur le CHPOINT contenant la temperature =
  17. C= exterieure le long de la surface de convection =
  18. C= IPCONV (S) Pointeur sur le champ des flux equivalents =
  19. C= =
  20. C= Variables locales : =
  21. C= ------------------- =
  22. C= IPGEOM Pointeur sur un MAILLAGE elementaire du CHPOINT =
  23. C= IPOGEO Pointeur sur un MAILLAGE commun au CHPOINT et au MASSIF =
  24. C= =
  25. C= Denis ROBERT, le 28 avril 1988. =
  26. C= =
  27. C= CORRECTIONS =
  28. C= CB215821 24/02/2016 : Correction d'une erreur dans les COQx =
  29. C= Mauvaise utilisation de MATMOD =
  30. C= Ajout d'une erreur 1050 =
  31. C=======================================================================
  32.  
  33. SUBROUTINE CONVMA (IPMODE,IPCHCA,IPCHPO,IPCONV)
  34.  
  35. IMPLICIT INTEGER(I-N)
  36. IMPLICIT REAL*8 (A-H,O-Z)
  37.  
  38. -INC PPARAM
  39. -INC CCOPTIO
  40. -INC CCHAMP
  41. -INC SMCOORD
  42.  
  43. -INC SMCHAML
  44. -INC SMCHPOI
  45. -INC SMMODEL
  46. -INC SMELEME
  47.  
  48. SEGMENT MPTVAL
  49. INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU)
  50. CHARACTER*16 TYVAL(NCOSOU)
  51. ENDSEGMENT
  52. SEGMENT NOTYPE
  53. CHARACTER*16 TYPE(NBTYPE)
  54. ENDSEGMENT
  55.  
  56. PARAMETER (NINF=3)
  57. INTEGER INFOS(NINF)
  58. CHARACTER*(NCONCH) CONM
  59. CHARACTER*(LOCOMP) MOCOMP,NOMATT,NOMCQ
  60. CHARACTER*10 PEAU
  61. LOGICAL ltelq
  62.  
  63. C ===
  64. C 0 - QUELQUES INITIALISATIONS ET SEGMENTS UTILES
  65. C ===
  66. IPCONV=0
  67.  
  68. NBROBL = 1
  69. NBRFAC = 0
  70. SEGINI,nomid
  71. nomid.LESOBL(1) = 'H '
  72. MOMATR = nomid
  73.  
  74. NBTYPE=1
  75. SEGINI,notype
  76. notype.TYPE(1) = 'REAL*8'
  77. MOTYR8 = notype
  78.  
  79. C CHAMP/ELT ELEMENTAIRE DES CHALEURS NODALES EQUIVALENTES
  80. N2=1
  81. SEGINI,MCHAM2
  82. MCHAM2.NOMCHE(1) = ' '
  83. MCHAM2.TYPCHE(1) = 'REAL*8'
  84. MCHAM2.IELVAL(1) = -99
  85. IPCHAM2 = MCHAM2
  86.  
  87. L1=7
  88. N1=1
  89. N3=6
  90. SEGINI,MCHEL2
  91. MCHEL2.TITCHE ='CHALEUR'
  92. MCHEL2.IFOCHE = IFOUR
  93. C* MCHEL2.IFOCHE = IFOMOD
  94. MCHEL2.CONCHE(1) = ' '
  95. MCHEL2.IMACHE(1) = -99
  96. MCHEL2.ICHAML(1) = IPCHAM2
  97. MCHEL2.INFCHE(1,3) = NIFOUR
  98. MCHEL2.INFCHE(1,4) = 0
  99. MCHEL2.INFCHE(1,6) = 1
  100. IPCHEL2 = MCHEL2
  101.  
  102. C 1 - QUELQUES TRANSFORMATIONS SUR LES DONNEES
  103. C ==============================================
  104. C 1.1 - Creation d'un objet MAILLAGE contenant une seule fois tous les
  105. C points du CHPOINT IPCHPO (CHPOINT ACTIF EN E/S)
  106. C (fusion des maillages supports de tous les MSOUPO)
  107. C =====
  108. MCHPOI=IPCHPO
  109. c* SEGACT,MCHPOI
  110. MSOUPO=IPCHP(1)
  111. c* SEGACT,MSOUPO
  112. IPGEOM=IGEOC
  113. c* SEGDES,MSOUPO
  114. ltelq=.false.
  115. DO i=2,IPCHP(/1)
  116. MSOUPO=IPCHP(i)
  117. c* SEGACT,MSOUPO
  118. IGEO1=IGEOC
  119. c* SEGDES,MSOUPO
  120. CALL FUSE(IPGEOM,IGEO1,IRET,ltelq)
  121. if (ierr.ne.0) goto 100
  122. IPGEOM=IRET
  123. ENDDO
  124. c* SEGDES,MCHPOI
  125. c* meleme=IPGEOM
  126. c* segact,meleme
  127. C =====
  128. C 1.2 - Recuperation du MMODEL (ACTIF EN E/S)
  129. C =====
  130. MMODEL = IPMODE
  131. c* SEGACT,MMODEL
  132. NSOUS = mmodel.KMODEL(/1)
  133.  
  134. C =====
  135. C 1.3 - Determination du support du champ de caracteristiques H
  136. C =====
  137. CALL QUESUP(IPMODE,IPCHCA,0,0,iok,ISUPCA)
  138. IF (IERR.NE.0 .OR. iok.EQ.9999) THEN
  139. write(ioimp,*) 'CONVEC : ISUPCA incorrect'
  140. CALL ERREUR(21)
  141. goto 100
  142. ENDIF
  143.  
  144. C ========================================================
  145. C 2 - BOUCLE SUR LES ZONES ELEMENTAIRES DU MODELE (iSou)
  146. C ========================================================
  147. DO iSou= 1, NSOUS
  148.  
  149. iOK = 0
  150.  
  151. ICHELS = 0
  152. IPTEMP = 0
  153. IVAMAT = 0
  154. IPCHEQ = 0
  155.  
  156. C =====
  157. C 2.1 - Analyse du sous-modele (iSou)
  158. C =====
  159. IMODEL = KMODEL(iSou)
  160. c* SEGACT,IMODEL
  161.  
  162. IPMAIL = imodel.IMAMOD
  163. CONM = imodel.CONMOD
  164.  
  165. C RECUPERATION DES CARACTERISTIQUES D'INTEGRATION
  166. NEF = imodel.NEFMOD
  167. NLG = NUMGEO(NEF)
  168. CALL TSHAPE(NLG,'GAUSS',IPINTE)
  169. if (ierr.NE.0) then
  170. call erreur(251)
  171. goto 100
  172. endif
  173.  
  174. PEAU = ' '
  175. C Formulation COQx (COQ2,COQ3,COQ4,COQ6,COQ8)
  176. IF (NEF.EQ.44 .OR. NEF.EQ.27 .OR. NEF.EQ.56 .OR.
  177. & NEF.EQ.49 .OR. NEF.EQ.41) THEN
  178. if (imodel.matmod(/2) .lt. 3) then
  179. moterr(1:4) = NOMTP(NEF)
  180. call erreur(1050)
  181. goto 100
  182. endif
  183.  
  184. PEAU = imodel.MATMOD(3)
  185. IF (PEAU .EQ. 'INFERIEURE') THEN
  186. nomatt = 'TINF'
  187. nomcq = 'QINF'
  188. ELSEIF (PEAU .EQ. 'SUPERIEURE') THEN
  189. nomatt = 'TSUP'
  190. nomcq = 'QSUP'
  191. ELSE
  192. moterr(1:8) = 'MOT '
  193. moterr(9:16) = PEAU(1:8)
  194. call erreur(11)
  195. goto 100
  196. ENDIF
  197. C Formulation STANDARD (pas COQx)
  198. ELSE
  199. nomatt = 'T '
  200. nomcq = 'Q '
  201. ENDIF
  202.  
  203. C ON GENERE UN CHAMELEM ELEMENTAIRE A PARTIR DU CHPOINT
  204. C DE TEMPERATURE EXTERIEURE ET DU MAILLAGE ELEMENTAIRE IPMAIL
  205. CALL CHAME1(IPMAIL,0,IPCHPO,' ',ICHELS,ISUPCA)
  206. if (ierr.ne.0) GOTO 10
  207. MCHEL1 = ICHELS
  208. c* SEGACT,MCHEL1
  209. MCHAM1 = MCHEL1.ICHAML(1)
  210. c* SEGACT,MCHAM1
  211. C Recherche de la bonne composante (meme s'il n'y en a qu'une)
  212. ivfr = 0
  213. DO i = 1, mcham1.ielval(/1)
  214. IF (mcham1.NOMCHE(i)(1:4).EQ.nomatt) ivfr=i
  215. ENDDO
  216. IF (ivfr.EQ.0) THEN
  217. MOTERR(1:4) = nomatt
  218. MOTERR(5:30) = 'de TEMPERATURE exterieure'
  219. CALL ERREUR(77)
  220. GOTO 10
  221. ENDIF
  222. IPTEMP = mcham1.IELVAL(ivfr)
  223.  
  224. C RECUPERATION DU COEFFICIENT D'ECHANGE
  225. C ON GENERE UN CHAMELEM ELEMENTAIRE DE CARACTERISTIQUES ET
  226. C DU MAILLAGE ELEMENTAIRE IPMAIL
  227. CALL IDENT(IPMAIL,CONM,IPCHCA,0,INFOS,IOK)
  228. CALL KOMCHA(IPCHCA,IPMAIL,CONM,MOMATR,MOTYR8,1,INFOS,3,IVAMAT)
  229. if (ierr .ne. 0) goto 10
  230. MPTVAL = IVAMAT
  231. if (mptval.ival(/1) .lt. 1) then
  232. call erreur(472)
  233. goto 10
  234. endif
  235. IPCOEF = mptval.IVAL(1)
  236.  
  237. C CALCUL DES FLUX NODAUX EQUIVALENTS
  238. IF (NLG.EQ.1) THEN
  239. CALL INTCN0(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  240. ELSE IF (NLG.EQ.2.OR.NLG.EQ.3) THEN
  241. CALL INTCN1(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  242. ELSE IF (NLG.EQ.4.OR.NLG.EQ.6.OR.NLG.EQ.8.OR.
  243. & NLG.EQ.10) THEN
  244. CALL INTCN2(IPTEMP,IPCOEF,IPMAIL,IPINTE,IPCHEQ)
  245. ENDIF
  246. IF (ierr.ne.0) goto 10
  247.  
  248. C CHAMELEM ELEMENTAIRE DES CHALEURS NODALES EQUIVALENTES
  249. MCHEL2 = IPCHEL2
  250. c* segact,mchel2*mod
  251. MCHEL2.IMACHE(1) = IPMAIL
  252. MCHEL2.CONCHE(1) = CONM
  253. C* MCHEL2.INFCHE(1,4) = IPINTE
  254. C* MCHEL2.INFCHE(1,6) = 6
  255. MCHAM2 = IPCHAM2
  256. c* segact,mcham2*mod
  257. MCHAM2.NOMCHE(1) = nomcq
  258. MCHAM2.IELVAL(1) = IPCHEQ
  259.  
  260. C ON TRANSFORME LE CHAMELEM EN CHPOINT
  261. CALL CHAMPO(IPCHEL2,0,IPCHP1,idum)
  262. if (ierr.ne.0) goto 10
  263.  
  264. C ON REGROUPE,LE CAS ECHEANT,LES DIFFERENTS CHPOINTS
  265. IF (iSou.GT.1) THEN
  266. CALL ADCHPO(IPCHP1,IPCONV,IPCRET,1.D0,1.D0)
  267. CALL DTCHPO(IPCHP1)
  268. CALL DTCHPO(IPCONV)
  269. IF (IPCRET.EQ.0) GOTO 10
  270. IPCONV=IPCRET
  271. ELSE
  272. IPCONV=IPCHP1
  273. ENDIF
  274. c* ? interet
  275. CALL ACTOBJ('CHPOINT ',IPCONV,1)
  276.  
  277. iOK=1
  278. 10 continue
  279. c* iptemp peut provenir d'un preconditionnement : donc a ne pas detruire
  280. c* if (iptemp.ne.0) then
  281. c* melval = iptemp
  282. c* segsup,melval
  283. c* endif
  284. c* ichels peut provenir d'un preconditionnement : donc a ne pas detruire
  285. c* if (ichels.ne.0) then
  286. c* mchel1 = ichels
  287. c* segsup,mchel1
  288. c* endif
  289. if (ipcheq.ne.0) then
  290. melval = ipcheq
  291. segsup,melval
  292. endif
  293. if (ivamat.ne.0) then
  294. mptval = ivamat
  295. segsup,mptval
  296. endif
  297. IF (iOK.EQ.0) GOTO 100
  298.  
  299. ENDDO
  300. C =============================
  301. C 2 - FIN DE LA BOUCLE (iSou)
  302. C =============================
  303.  
  304. C Menage final
  305. 100 CONTINUE
  306. nomid = MOMATR
  307. SEGSUP,nomid
  308. notype = MOTYR8
  309. SEGSUP,notype
  310.  
  311. mchaml = IPCHAM2
  312. mchelm = IPCHEL2
  313. SEGSUP,mchaml,mchelm
  314.  
  315. c return
  316. END
  317.  
  318.  
  319.  
  320.  
  321.  

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