Télécharger ylap22.eso

Retour à la liste

Numérotation des lignes :

ylap22
  1. C YLAP22 SOURCE CB215821 20/11/25 13:44:12 10792
  2. C YLAP11 SOURCE LEPOTIER 03/02/13 21:24:03 4578
  3. SUBROUTINE YLAP22()
  4. C************************************************************************
  5. C
  6. C PROJET : CASTEM 2000
  7. C
  8. C NOM : YLAPL11
  9. C
  10. C DESCRIPTION : Voir YLAPL1
  11. C
  12. C
  13. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  14. C
  15. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/LTMF
  16. C
  17. C************************************************************************
  18. C
  19. C
  20. C APPELES (E/S) : LIRMOT, ERREUR
  21. C
  22. C
  23. C APPELES : YLAPL12
  24. C
  25. C************************************************************************
  26. C
  27. C*** ENTREE / SORTIE (voir Phrase d'appel GIBIANE)
  28. C
  29. C***********************************************************************
  30. C
  31. C HISTORIQUE (Anomalies et modifications éventuelles)
  32. C
  33. C HISTORIQUE : 11/02/2003 Ajout de l'option MIXT pour la température
  34. C
  35. C************************************************************************
  36. C
  37. IMPLICIT INTEGER(I-N)
  38.  
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. -INC SMCHPOI
  42. -INC SMLMOTS
  43. POINTEUR MLMNOM.MLMOTS
  44. POINTEUR MLDEFO.MLMOTS
  45. -INC SMCHAML
  46. POINTEUR ICOGRV.MCHELM
  47. POINTEUR ICOGRT.MCHELM
  48. C
  49. C**** Variables de COOPTIO
  50. C
  51. C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
  52. C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
  53. C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
  54. C & ,IECHO, IIMPI, IOSPI
  55. C & ,IDIM
  56. C & ,MCOORD
  57. C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
  58. C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
  59. C & ,NORINC,NORVAL,NORIND,NORVAD
  60. C & ,NUCROU, IPSAUV
  61. C
  62. C**** Variables de SMLMOTS
  63. C
  64. INTEGER JGM, JGN
  65. C
  66. C**** Variables de SMMATRIK
  67. C
  68. INTEGER NKID, NKMT, NMATRI, NRIGE
  69. C
  70. C**** Variables du programme
  71. C
  72. INTEGER ICELL, IRET, INDIC, NBCOMP
  73. & , IDOMA, MELEMC, MELEMF, MELEFL, ICHPSU, ICHPDI, ICHPVO
  74. & , INORM
  75. & , IRN, IVN, ITN, IGRVN, IGRTN
  76. & , IVNIMP, ITAUIM, ITIMP,IQIMP,IMIXT
  77. & , ILIINC, NC, INEFMD, ICOND
  78. & , IJACO, ICHFLU, ICHRES, NSOUPO,ICLAU
  79. REAL*8 MU,KAPPA,CV,DELTAT,XKT
  80. CHARACTER*(40) MESERR
  81. CHARACTER*4 MOT,LFLUX(2), LIMPL(2)
  82. CHARACTER*8 MOT2
  83. CHARACTER*8 TYPE
  84. LOGICAL LOGRES,LOGIMP,LOGAN
  85. C
  86. DATA LFLUX/'FLUX','RESI'/
  87. DATA LIMPL/'EXPL','IMPL'/
  88. C
  89. C**** Initialisation des variables pour la gestion des erreurs.
  90. C
  91. MESERR = ' '
  92. LOGAN = .FALSE.
  93. LOGRES =.TRUE.
  94. C
  95. C******* Flux ou residu?
  96. C
  97. C
  98. CALL LIRMOT(LIMPL,2,ICELL,1)
  99. IF(IERR .NE. 0)GOTO 9999
  100. IF(ICELL .EQ. 1)THEN
  101. LOGIMP=.FALSE.
  102. ELSEIF(ICELL .EQ. 2)THEN
  103. LOGIMP=.TRUE.
  104. ELSE
  105. WRITE(IOIMP,*) 'Erreur de programmation'
  106. CALL ERREUR(5)
  107. GOTO 9999
  108. ENDIF
  109.  
  110.  
  111. C
  112. C**********************************
  113. C**** Lecture de l'objet MODELE ***
  114. C**********************************
  115. C
  116. c CALL GIBTEM(XKT)
  117. c WRITE(6,*) 'XKT1=',XKT
  118. ICOND = 1
  119. CALL QUETYP(TYPE,ICOND,IRET)
  120.  
  121. IF(IRET.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  122. WRITE(6,*)' On attend un objet MMODEL'
  123. RETURN
  124. ENDIF
  125. CALL LIROBJ('MMODEL',MMODEL,ICOND,IRET)
  126. IF(IERR.NE.0)GOTO 9999
  127. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  128. IF(IERR.NE.0)GOTO 9999
  129. c CALL GIBTEM(XKT)
  130. c WRITE(6,*) 'XKT2=',XKT
  131. C
  132. C**** Centre, FACE et FACEL
  133. C
  134. CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  135. c CALL GIBTEM(XKT)
  136. c WRITE(6,*) 'XKT3=',XKT
  137. IF(IERR .NE. 0) GOTO 9999
  138. C
  139. CALL LEKTAB(IDOMA,'FACE',MELEMF)
  140. c CALL GIBTEM(XKT)
  141. c WRITE(6,*) 'XKT4=',XKT
  142. IF(IERR .NE. 0) GOTO 9999
  143. C
  144. CALL LEKTAB(IDOMA,'FACEL',MELEFL)
  145. c CALL GIBTEM(XKT)
  146. c WRITE(6,*) 'XKT5=',XKT
  147. IF(IERR .NE. 0) GOTO 9999
  148. C
  149. C**** Lecture du CHPOINT contenant les surfaces des faces.
  150. C
  151. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  152. c CALL GIBTEM(XKT)
  153. c WRITE(6,*) 'XKT6=',XKT
  154. IF(IERR .NE. 0) GOTO 9999
  155. C
  156. C**** Lecture du CHPOINT contenant les diametres minimums.
  157. C
  158. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  159. c CALL GIBTEM(XKT)
  160. c WRITE(6,*) 'XKT7=',XKT
  161. IF(IERR .NE. 0) GOTO 9999
  162. C
  163. C**** Lecture du CHPOINT contenant les volumes
  164. C
  165. CALL LEKTAB(IDOMA,'XXVOLUM',ICHPVO)
  166. c CALL GIBTEM(XKT)
  167. c WRITE(6,*) 'XKT8=',XKT
  168. IF(IERR .NE. 0) GOTO 9999
  169. C
  170. C********** Les normales aux faces
  171. C
  172. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  173. IF(IERR .NE. 0) GOTO 9999
  174.  
  175. C
  176. C
  177. C
  178. C
  179. C**** Température
  180. C
  181. TYPE='CHPOINT '
  182. CALL LIROBJ(TYPE,ITN,1,IRET)
  183. IF(IERR .NE. 0) GOTO 9999
  184. JGN = 4
  185. JGM = 1
  186. SEGINI MLMNOM
  187. MLMNOM.MOTS(1) = 'SCAL'
  188. CALL QUEPO1(ITN, MELEMC, MLMNOM)
  189. IF(IERR .NE. 0) GOTO 9999
  190. SEGSUP MLMNOM
  191. C
  192. C
  193. C
  194. C**** Gradient de la temperature
  195. C
  196. TYPE='CHPOINT '
  197. CALL LIROBJ(TYPE,IGRTN,1,IRET)
  198. IF(IERR .NE. 0) GOTO 9999
  199. JGN = 4
  200. JGM=1
  201. SEGINI MLMNOM
  202. MLMNOM.MOTS(1) = 'FLUX'
  203. CALL QUEPO1(IGRTN, MELEMF, MLMNOM)
  204. IF(IERR .NE. 0) GOTO 9999
  205. SEGSUP MLMNOM
  206.  
  207. C
  208. IF (LOGIMP) THEN
  209. CALL LIROBJ('MCHAML ',ICOGRT,1,IRET)
  210. IF(IERR .NE. 0) GOTO 9999
  211. ENDIF
  212.  
  213. CALL LIRCHA(MOT,0,IRET)
  214. IF(IRET .NE. 0)THEN
  215. IF(MOT .EQ. 'QIMP')THEN
  216. TYPE='CHPOINT '
  217. CALL LIROBJ(TYPE,IQIMP,1,IRET)
  218. IF(IERR .NE. 0) GOTO 9999
  219. MCHPOI = IQIMP
  220. SEGACT MCHPOI
  221. NSOUPO = MCHPOI.IPCHP(/1)
  222. SEGDES MCHPOI
  223. IF(NSOUPO .GT.0)THEN
  224. JGN = 4
  225. JGM =1
  226. SEGINI MLMNOM
  227. MLMNOM.MOTS(1) = 'FLUX'
  228. CALL QUEPO1(IQIMP, 0, MLMNOM)
  229. IF(IERR .NE. 0) GOTO 9999
  230. SEGSUP MLMNOM
  231. ELSE
  232. IQIMP=0
  233. ENDIF
  234. ELSE
  235. IQIMP=0
  236. C********** Je m'excuse et je le remets dans la pile
  237. C
  238. CALL REFUS
  239. ENDIF
  240. ELSE
  241. IQIMP=0
  242. ENDIF
  243.  
  244. C
  245. C Conditions aux limites mixtes
  246. C
  247. CALL LIRCHA(MOT,0,IRET)
  248. IF(IRET .NE. 0)THEN
  249. IF(MOT .EQ. 'MIXT')THEN
  250. TYPE='CHPOINT '
  251. CALL LIROBJ(TYPE,IMIXT,1,IRET)
  252. IF(IERR .NE. 0) GOTO 9999
  253. MCHPOI = IMIXT
  254. SEGACT MCHPOI
  255. NSOUPO = MCHPOI.IPCHP(/1)
  256. SEGDES MCHPOI
  257. IF(NSOUPO .GT.0)THEN
  258. ELSE
  259. IMIXT=0
  260. ENDIF
  261. ELSE
  262. IMIXT=0
  263. C
  264. C********** Je m'excuse et je le remets dans la pile
  265. C
  266. CALL REFUS
  267. ENDIF
  268. ELSE
  269. IMIXT=0
  270. ENDIF
  271. C
  272. C Température imposée
  273. C
  274. CALL LIRCHA(MOT,0,IRET)
  275. IF(IRET .NE. 0)THEN
  276. IF(MOT .EQ. 'TIMP')THEN
  277. TYPE='CHPOINT '
  278. CALL LIROBJ(TYPE,ITIMP,1,IRET)
  279. IF(IERR .NE. 0) GOTO 9999
  280. MCHPOI = ITIMP
  281. SEGACT MCHPOI
  282. NSOUPO = MCHPOI.IPCHP(/1)
  283. SEGDES MCHPOI
  284. IF(NSOUPO .GT.0)THEN
  285. JGN = 4
  286. JGM = 1
  287. SEGINI MLMNOM
  288. MLMNOM.MOTS(1) = 'SCAL'
  289. CALL QUEPO1(ITIMP, 0, MLMNOM)
  290. IF(IERR .NE. 0) GOTO 9999
  291. SEGSUP MLMNOM
  292. ELSE
  293. ITIMP=0
  294. ENDIF
  295. ELSE
  296. ITIMP=0
  297. C
  298. C********** Je m'excuse et je le remets dans la pile
  299. C
  300. CALL REFUS
  301. ENDIF
  302. ELSE
  303. ITIMP=0
  304. ENDIF
  305. C
  306. C
  307. C
  308. C Test des données
  309. C
  310. IF (.NOT.LOGIMP.AND.(ITIMP.NE.0)) THEN
  311. C**** La temperature imposéé à la paroi ne serve pas dans le
  312. C cas de proprietés physiques constantes en explicite
  313. MESERR='TIMP = ??? '
  314. WRITE(IOIMP,*) MESERR
  315. C********** Message d'erreur standard
  316. C 21 2
  317. C Données incompatibles
  318. C
  319. CALL ERREUR(21)
  320. GOTO 9999
  321. ENDIF
  322. C
  323. c CALL GIBTEM(XKT)
  324. c WRITE(6,*) 'XKT1=',XKT
  325. IF (LOGIMP) THEN
  326. c IF (IDIM.EQ.2) THEN
  327. CALL YLAP1T(ITN,ICOGRT,
  328. $ ITIMP,IQIMP,IMIXT,
  329. $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,IJACO)
  330. c ELSEIF (IDIM.EQ.3) THEN
  331. c CALL YLAP2T(MU,KAPPA,CV,IRN,IVN,ITN,
  332. c $ IGRVN,ICOGRV,ICOGRT,
  333. c $ IVNIMP,ITAUIM,ITIMP,IQIMP,IMIXT,
  334. c $ MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPVO,MLMOTS,
  335. c $ IJACO)
  336. c ELSE
  337. c WRITE(IOIMP,*) 'IDIM=',IDIM,' ILLICITE.'
  338. c CALL ERREUR(5)
  339. c GOTO 9999
  340. c ENDIF
  341.  
  342. ELSE
  343. C
  344. C******* Objet MATRIK vide en explicite
  345. C
  346. NRIGE=7
  347. NMATRI=0
  348. NKID =9
  349. NKMT =7
  350. SEGINI MATRIK
  351. SEGDES MATRIK
  352. IJACO = MATRIK
  353. ENDIF
  354. C
  355. C**** Creation des flux aux interfaces
  356. C
  357. JGN=4
  358. JGM=1
  359. SEGINI MLDEFO
  360. DO ICELL=1,1,1
  361. MLDEFO.MOTS(ICELL)='RETN'
  362. ENDDO
  363. TYPE = 'CHPOINT '
  364. CALL KRCHP1(TYPE, MELEMF, ICHFLU, MLDEFO)
  365. CALL GIBTEM(XKT)
  366. C
  367. C**** Calcul des flux et du pas du temps.
  368. C
  369. c IF(IDIM.EQ.2)THEN
  370. CALL YLA12T(IGRTN,IQIMP,MELEMC,MELEMF,MELEFL,
  371. & ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
  372. CALL GIBTEM(XKT)
  373. c ELSE
  374. c CALL YLAP13T(MU,KAPPA,CV,IRN,IVN,IGRVN,IGRTN,
  375. c & IVNIMP,ITAUIM,IQIMP,
  376. c & MELEMC,MELEMF,MELEFL,ICHPSU,INORM,ICHPDI,ICHFLU,DELTAT)
  377. c ENDIF
  378. IF(IERR .NE. 0)GOTO 9999
  379. C
  380. C**** Calcul de residu (si LOGRES = .TRUE.)
  381. C
  382. IF(LOGRES)THEN
  383. TYPE = 'CHPOINT '
  384. CALL KRCHP1(TYPE, MELEMC, ICHRES, MLDEFO)
  385. IF(IERR.NE.0) GOTO 9999
  386. C
  387. c CALL GIBTEM(XKT)
  388. c WRITE(6,*) 'XKT3=',XKT
  389. CALL KONRE1(MELEMC,MELEMF,MELEFL,ICHPVO,
  390. & ICHFLU, ICHRES,
  391. & LOGAN,MESERR)
  392. IF(LOGAN)THEN
  393. C
  394. C******* Anomalie detectée
  395. C
  396. C
  397. C******* Message d'erreur standard
  398. C -301 0
  399. C %m1:40
  400. C
  401. MOTERR(1:40) = MESERR(1:40)
  402. WRITE(IOIMP,*) MOTERR(1:40)
  403. C
  404. C******* Message d'erreur standard
  405. C 5 3
  406. C Erreur anormale.contactez votre support
  407. C
  408. CALL ERREUR(5)
  409. GOTO 9999
  410. ENDIF
  411. ELSE
  412. SEGSUP MLDEFO
  413. ICHRES = 0
  414. ENDIF
  415.  
  416. C
  417. C**** Sortie
  418. C
  419. CALL ECRREE(DELTAT)
  420. TYPE = 'CHPOINT '
  421. IF(ICHRES .NE. 0) CALL ECROBJ(TYPE,ICHRES)
  422. IF(ICHFLU .NE. 0) CALL ECROBJ(TYPE,ICHFLU)
  423. TYPE='MATRIK '
  424. CALL ECROBJ(TYPE,IJACO)
  425. C
  426. 9999 RETURN
  427. END
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.  
  441.  
  442.  
  443.  
  444.  

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