Télécharger pre21.eso

Retour à la liste

Numérotation des lignes :

pre21
  1. C PRE21 SOURCE OF166741 24/12/13 21:17:01 12097
  2. SUBROUTINE PRE21()
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRE21
  8. C
  9. C DESCRIPTION : Voir PRE2
  10. C
  11. C Cas gaz parfait multiespeces
  12. C
  13. C 1er ordre en espace, 1er ordre en temps
  14. C
  15. C Creations des object MCHAML IROF, IVITF, IPF, IYF
  16. C IGAMF
  17. C
  18. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  19. C
  20. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  21. C
  22. C************************************************************************
  23. C
  24. C
  25. C APPELES (Outils) : LIRTAB, ACMO, LEKTAB, QUETYP, ERREUR, LIROBJ,
  26. C QUEPOI, ECROBJ
  27. C
  28. C APPELES (Calcul) : PRE211 (2D)
  29. C
  30. C
  31. C************************************************************************
  32. C
  33. C HISTORIQUE (Anomalies et modifications éventuelles)
  34. C
  35. C HISTORIQUE : Créée le 11.6.98.
  36. C
  37. C************************************************************************
  38. C
  39. C**** Les variables
  40. C
  41. IMPLICIT INTEGER(I-N)
  42. INTEGER ICOND, IRETOU, IERR0, INDIC, NBCOMP
  43. & ,IDOMA, ICEN, IFACE, IFACEL, INORM, IROC, IVITC, IPC
  44. & ,IYC, IGAMC, IROF, IVITF, IPF, IYF, IGAMF, INEFMD
  45. & ,JGM,JGN,MMODEL
  46. C
  47. REAL*8 VALER, VAL1, VAL2
  48. CHARACTER*(4) NOMTOT(3)
  49. CHARACTER*(8) MTYPR, TYPE
  50. CHARACTER*(40) MESERR
  51. LOGICAL LOGAN,LOGNEG, LOGBOR
  52. C
  53. C**** Les Includes
  54. C
  55.  
  56. -INC PPARAM
  57. -INC CCOPTIO
  58. -INC SMLMOTS
  59. POINTEUR MLMVIT.MLMOTS
  60. C
  61. C**** Initialisation des parametres d'erreur
  62. C
  63. LOGAN = .FALSE.
  64. LOGNEG = .FALSE.
  65. LOGBOR = .FALSE.
  66. MESERR = ' '
  67. MOTERR(1:40) = MESERR(1:40)
  68. VALER = 0.0D0
  69. VAL1 = 0.0D0
  70. VAL2 = 0.0D0
  71. C
  72. C**** Initialisation des NOMTOT
  73. C
  74. NOMTOT(1) = ' '
  75. NOMTOT(2) = ' '
  76. NOMTOT(3) = ' '
  77. C
  78. C**** Lecture de l'objet MODELE
  79. C
  80. ICOND = 1
  81. CALL QUETYP(TYPE,ICOND,IRETOU)
  82.  
  83. IF(IRETOU.EQ.0.AND.TYPE.NE.'MMODEL')THEN
  84. WRITE(6,*)' On attend un objet MMODEL'
  85. RETURN
  86. ENDIF
  87. CALL LIROBJ('MMODEL ',MMODEL,ICOND,IRETOU)
  88. CALL ACTOBJ('MMODEL ',MMODEL,1)
  89. IF(IERR.NE.0)GOTO 9999
  90. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  91. IF(IERR.NE.0)GOTO 9999
  92. C
  93. C**** Lecture du MELEME SPG des points CENTRE.
  94. C
  95. C
  96. C CALL LEKTAB(IDOMA,'CENTRE',IP)
  97. C
  98. C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  99. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  100. C -> la correspondance global des noeuds saut!
  101. C
  102. C On peut utilizer ACCTAB ou ACMO
  103. C
  104. MTYPR = 'MAILLAGE'
  105. CALL ACMO(IDOMA,'CENTRE',MTYPR,ICEN)
  106. IF(IERR.NE.0)GOTO 9999
  107. C
  108. C**** Lecture du MELEME 'FACE'
  109. C
  110. MTYPR = 'MAILLAGE'
  111. CALL ACMO(IDOMA,'FACE',MTYPR,IFACE)
  112. IF(IERR.NE.0)GOTO 9999
  113. C
  114. C**** Lecture du MELEME 'FACEL'
  115. C
  116. MTYPR = 'MAILLAGE'
  117. CALL ACMO(IDOMA,'FACEL',MTYPR,IFACEL)
  118. IF(IERR.NE.0)GOTO 9999
  119. C
  120. C**** Lecture du CHPOINT contenant les normales aux faces
  121. C
  122. IF(IDIM .EQ. 2)THEN
  123. C Que les normales
  124. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  125. IF(IERR .NE. 0) GOTO 9999
  126. JGN = 4
  127. JGM = 2
  128. SEGINI MLMVIT
  129. MLMVIT.MOTS(1) = 'UX '
  130. MLMVIT.MOTS(2) = 'UY '
  131. CALL QUEPO1(INORM, IFACE, MLMVIT)
  132. SEGSUP MLMVIT
  133. IF(IERR.NE.0)GOTO 9999
  134. ELSE
  135. C Les normales et les tangentes
  136. MTYPR = ' '
  137. CALL ACMO(IDOMA,'MATROT',MTYPR,INORM)
  138. IF (MTYPR .NE. 'CHPOINT ') THEN
  139. CALL MATRAN(IDOMA,INORM)
  140. IF(IERR .NE. 0) GOTO 9999
  141. ENDIF
  142. C UX UY UZ RX RY RZ MX MY MZ
  143. JGN = 4
  144. JGM = 9
  145. SEGINI MLMVIT
  146. MLMVIT.MOTS(1) = 'UX '
  147. MLMVIT.MOTS(2) = 'UY '
  148. MLMVIT.MOTS(3) = 'UZ '
  149. MLMVIT.MOTS(4) = 'RX '
  150. MLMVIT.MOTS(5) = 'RY '
  151. MLMVIT.MOTS(6) = 'RZ '
  152. MLMVIT.MOTS(7) = 'MX '
  153. MLMVIT.MOTS(8) = 'MY '
  154. MLMVIT.MOTS(9) = 'MZ '
  155. CALL QUEPO1(INORM, IFACE, MLMVIT)
  156. SEGSUP MLMVIT
  157. IF(IERR.NE.0)GOTO 9999
  158. ENDIF
  159. C
  160. C**** Lecture du CHPOINT ROC
  161. C
  162. ICOND = 1
  163. CALL QUETYP(MTYPR,ICOND,IRETOU)
  164. IF(IERR .NE. 0)GOTO 9999
  165. IF(MTYPR .NE. 'CHPOINT ')THEN
  166. C
  167. C******* Message d'erreur standard
  168. C 37 2
  169. C On ne trouve pas d'objet de type %m1:8
  170. C
  171. MOTERR(1:8) = 'CHPOINT '
  172. CALL ERREUR(37)
  173. GOTO 9999
  174. ELSE
  175. ICOND = 1
  176. CALL LIROBJ(MTYPR,IROC,ICOND,IRETOU)
  177. CALL ACTOBJ(MTYPR,IROC,1)
  178. IF (IERR.NE.0) GOTO 9999
  179. ENDIF
  180. C
  181. C**** Control du CHPOINT: QUEPOI
  182. C
  183. C INDIC = 1 -> on impose le pointeur du support geometrique (IM1)
  184. C INDIC = 0 -> on ne fait que verifier le support geometrique (IM1)
  185. C
  186. C NBCOMP > 0 -> numero des composantes
  187. C
  188. C NOMTOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  189. C
  190. INDIC = 1
  191. NBCOMP = 1
  192. NOMTOT(1) = 'SCAL'
  193. CALL QUEPOI(IROC, ICEN, INDIC, NBCOMP, NOMTOT)
  194. IF(IERR .NE. 0)THEN
  195. IERR0 = IERR
  196.  
  197. C
  198. C******* Message d'erreur standard
  199. C -301 0 %m1:40
  200. C
  201. MOTERR(1:40) = 'CHPO1 = ??? '
  202. CALL ERREUR(-301)
  203.  
  204. GOTO 9999
  205. ENDIF
  206. C
  207. C**** Lecture du CHPOINT VITC
  208. C
  209. ICOND = 1
  210. CALL QUETYP(MTYPR,ICOND,IRETOU)
  211. IF(IERR .NE. 0)GOTO 9999
  212. IF(MTYPR .NE. 'CHPOINT ')THEN
  213. C
  214. C******* Message d'erreur standard
  215. C 37 2
  216. C On ne trouve pas d'objet de type %m1:8
  217. C
  218. MOTERR(1:8) = 'CHPOINT '
  219. CALL ERREUR(37)
  220. GOTO 9999
  221. ELSE
  222. ICOND = 1
  223. CALL LIROBJ('CHPOINT ',IVITC,ICOND,IRETOU)
  224. CALL ACTOBJ('CHPOINT ',IVITC,1)
  225. IF (IERR.NE.0) GOTO 9999
  226. ENDIF
  227. C
  228. C**** Control du CHPOINT
  229. C
  230. INDIC = 1
  231. NBCOMP = IDIM
  232. NOMTOT(1) = 'UX '
  233. NOMTOT(2) = 'UY '
  234. IF(IDIM .EQ. 3) NOMTOT(3) = 'UZ '
  235. CALL QUEPOI(IVITC, ICEN, INDIC, NBCOMP, NOMTOT)
  236. IF(IERR .NE. 0)THEN
  237. IERR0 = IERR
  238.  
  239. C
  240. C******* Message d'erreur standard
  241. C -301 0 %m1:40
  242. C
  243. MOTERR(1:40) = 'CHPO2 = ??? '
  244. CALL ERREUR(-301)
  245.  
  246. GOTO 9999
  247. ENDIF
  248. C
  249. C**** Lecture du CHPOINT PC
  250. C
  251. ICOND = 1
  252. CALL QUETYP(MTYPR,ICOND,IRETOU)
  253. IF(IERR .NE. 0)GOTO 9999
  254. IF(MTYPR .NE. 'CHPOINT ')THEN
  255. C
  256. C******* Message d'erreur standard
  257. C 37 2
  258. C On ne trouve pas d'objet de type %m1:8
  259. C
  260. MOTERR(1:8) = 'CHPOINT '
  261. CALL ERREUR(37)
  262. GOTO 9999
  263. ELSE
  264. ICOND = 1
  265. CALL LIROBJ('CHPOINT ',IPC,ICOND,IRETOU)
  266. CALL ACTOBJ('CHPOINT ',IPC,1)
  267. IF (IERR.NE.0) GOTO 9999
  268. ENDIF
  269. C
  270. C**** Control du CHPOINT
  271. C
  272. INDIC = 1
  273. NBCOMP = 1
  274. NOMTOT(1) = 'SCAL'
  275. CALL QUEPOI(IPC, ICEN, INDIC, NBCOMP, NOMTOT)
  276. IF(IERR .NE. 0)THEN
  277. IERR0 = IERR
  278.  
  279. C
  280. C******* Message d'erreur standard
  281. C -301 0 %m1:40
  282. C
  283. MOTERR(1:40) = 'CHPO3 = ??? '
  284. CALL ERREUR(-301)
  285.  
  286. GOTO 9999
  287. ENDIF
  288. C
  289. C**** Lecture du CHPOINT YC
  290. C
  291. ICOND = 1
  292. CALL QUETYP(MTYPR,ICOND,IRETOU)
  293. IF(IERR .NE. 0)GOTO 9999
  294. IF(MTYPR .NE. 'CHPOINT ')THEN
  295. C
  296. C******* Message d'erreur standard
  297. C 37 2
  298. C On ne trouve pas d'objet de type %m1:8
  299. C
  300. MOTERR(1:8) = 'CHPOINT '
  301. CALL ERREUR(37)
  302. GOTO 9999
  303. ELSE
  304. ICOND = 1
  305. CALL LIROBJ('CHPOINT ',IYC,ICOND,IRETOU)
  306. CALL ACTOBJ('CHPOINT ',IYC,1)
  307. IF (IERR.NE.0) GOTO 9999
  308. ENDIF
  309. C
  310. C**** Control du CHPOINT (on ne controlle que le maillage)
  311. C
  312. INDIC = 1
  313. NBCOMP = -1
  314. NOMTOT(1) = ' '
  315. CALL QUEPOI(IYC, ICEN, INDIC, NBCOMP, NOMTOT)
  316. IF(IERR .NE. 0)THEN
  317. IERR0 = IERR
  318.  
  319. C
  320. C******* Message d'erreur standard
  321. C -301 0 %m1:40
  322. C
  323. MOTERR(1:40) = 'CHPO4 = ??? '
  324. CALL ERREUR(-301)
  325.  
  326. GOTO 9999
  327. ENDIF
  328. C
  329. C**** Lecture du CHPOINT GAMC
  330. C
  331. ICOND = 1
  332. CALL QUETYP(MTYPR,ICOND,IRETOU)
  333. IF(IERR .NE. 0)GOTO 9999
  334. IF(MTYPR .NE. 'CHPOINT ')THEN
  335. C
  336. C******* Message d'erreur standard
  337. C 37 2
  338. C On ne trouve pas d'objet de type %m1:8
  339. C
  340. MOTERR(1:8) = 'CHPOINT '
  341. CALL ERREUR(37)
  342. GOTO 9999
  343. ELSE
  344. ICOND = 1
  345. CALL LIROBJ('CHPOINT ',IGAMC,ICOND,IRETOU)
  346. CALL ACTOBJ('CHPOINT ',IGAMC,1)
  347. IF (IERR.NE.0) GOTO 9999
  348. ENDIF
  349. C
  350. C**** Control du CHPOINT
  351. C
  352. INDIC = 1
  353. NBCOMP = 1
  354. NOMTOT(1) = 'SCAL'
  355. CALL QUEPOI(IGAMC, ICEN, INDIC, NBCOMP, NOMTOT)
  356. IF(IERR .NE. 0)THEN
  357. IERR0 = IERR
  358.  
  359. C
  360. C******* Message d'erreur standard
  361. C -301 0 %m1:40
  362. C
  363. MOTERR(1:40) = 'CHPO5 = ??? '
  364. CALL ERREUR(-301)
  365.  
  366. GOTO 9999
  367. ENDIF
  368. C
  369. C**** Centre -> Face
  370. C
  371. IF(IDIM .EQ. 2)THEN
  372. C
  373. C******* Deux Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  374. C temps
  375. C
  376. CALL PRE211(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IYC,IGAMC,
  377. & IROF,IVITF,IPF,IYF,IGAMF,
  378. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  379. ELSE
  380. C
  381. C******* Trois Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  382. C temps
  383. C
  384. CALL PRE212(ICEN,IFACE,IFACEL,INORM,IROC,IVITC,IPC,IYC,IGAMC,
  385. & IROF,IVITF,IPF,IYF,IGAMF,
  386. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  387. ENDIF
  388. C
  389. C**** Messages d'erreur
  390. C
  391. IF(LOGAN)THEN
  392. C
  393. C******* Anomalie detectée
  394. C
  395. C
  396. C******* Message d'erreur standard
  397. C -301 0
  398. C %m1:40
  399. C
  400. MOTERR(1:40) = MESERR(1:40)
  401. CALL ERREUR(-301)
  402. C
  403. C******* Message d'erreur standard
  404. C 5 3
  405. C Erreur anormale.contactez votre support
  406. C
  407. CALL ERREUR(5)
  408. GOTO 9999
  409. C
  410. ELSEIF(LOGNEG)THEN
  411. C
  412. C******* Message d'erreur standard
  413. C 41 2
  414. C %m1:8 = %r1 inférieur à %r2
  415. C
  416. MOTERR(1:8) = MESERR(1:8)
  417. REAERR(1) = REAL(VALER)
  418. REAERR(2) = 0.0
  419. CALL ERREUR(41)
  420. GOTO 9999
  421. ELSEIF(LOGBOR)THEN
  422. C
  423. C******* Message d'erreur standard
  424. C 42 2
  425. C %m1:8 = %r1 non compris entre %r2 et %r3
  426. C
  427. MOTERR(1:8) = MESERR(1:8)
  428. REAERR(1) = REAL(VALER)
  429. REAERR(2) = REAL(VAL1)
  430. REAERR(3) = REAL(VAL2)
  431. CALL ERREUR(42)
  432. GOTO 9999
  433. ELSE
  434. C
  435. C******* Ecriture de ROF, VITF, PF, YF, GAMMAF
  436. C
  437. MTYPR = 'MCHAML '
  438. CALL ACTOBJ(MTYPR,IGAMF,1)
  439. CALL ACTOBJ(MTYPR,IYF,1)
  440. CALL ACTOBJ(MTYPR,IPF,1)
  441. CALL ACTOBJ(MTYPR,IVITF,1)
  442. CALL ACTOBJ(MTYPR,IROF,1)
  443.  
  444. CALL ECROBJ(MTYPR,IGAMF)
  445. CALL ECROBJ(MTYPR,IYF)
  446. CALL ECROBJ(MTYPR,IPF)
  447. CALL ECROBJ(MTYPR,IVITF)
  448. CALL ECROBJ(MTYPR,IROF)
  449. ENDIF
  450. C
  451. 9999 CONTINUE
  452. END
  453.  
  454.  
  455.  
  456.  

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