Télécharger pre22.eso

Retour à la liste

Numérotation des lignes :

pre22
  1. C PRE22 SOURCE OF166741 24/12/13 21:17:02 12097
  2. SUBROUTINE PRE22(ORDTEM)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRE22
  8. C
  9. C DESCRIPTION : Voir PRE2
  10. C
  11. C Gas gaz parfait, multi-especes.
  12. C
  13. C 2me ordre en espace (1er ou 2me ordre en temps)
  14. C
  15. C Creations des object MCHAML IROF, IVITF, IPF,
  16. C IGAMF, IYF
  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 ACMM, ACCTAB, QUEPOI, ECROBJ
  27. C
  28. C
  29. C APPELES (Calcul) : PRE221 (2D)
  30. C
  31. C
  32. C************************************************************************
  33. C
  34. C HISTORIQUE (Anomalies et modifications éventuelles)
  35. C
  36. C HISTORIQUE : Créée le 10.7.98.
  37. C
  38. C************************************************************************
  39. C
  40. C**** Les variables
  41. C
  42. IMPLICIT INTEGER(I-N)
  43. INTEGER ORDTEM, ICOND, IRETOU, IERR0, INDIC, NBCOMP
  44. & ,IDOMA, ICEN, IFACE, IFACEL, INORM
  45. & ,IROC, IGRROC, IALROC
  46. & ,IVITC, IGRVC, IALVC
  47. & ,IPC ,IGRPC, IALPC
  48. & ,IGAMC, IROF, IVITF, IPF, IGAMF
  49. & ,IPGAS, ICP, ICV, NESP, I1, JG
  50. & ,IYC, IGRYC, IALYC, IYF
  51. & ,JGM,JGN,MMODEL, I2, ICEL
  52. REAL*8 VALER, VAL1, VAL2, DELTAT, CP, CV
  53. CHARACTER*(4) NOMTOT(9), CELLCH
  54. CHARACTER*(8) MTYPR, TYPE
  55. CHARACTER*(40) MESERR
  56. CHARACTER*(4) NOMGRA(27),NOMLIM(9)
  57. LOGICAL LOGAN,LOGNEG, LOGBOR,LOGTEM
  58. C
  59. C**** Variables en ACCTAB
  60. C
  61. INTEGER IVALI, IRETI,IVALR, IRETR, INEFMD
  62. REAL*8 XVALI,XVALR
  63. LOGICAL LOGII, LOGIR
  64. CHARACTER*(8) CHARR,MTYPI
  65. C
  66. C**** Nom de composantes de gradients (HP. <= 9 composantes)
  67. C
  68. DATA NOMGRA /'P1DX','P1DY','P1DZ',
  69. & 'P2DX','P2DY','P2DZ',
  70. & 'P3DX','P3DY','P3DZ',
  71. & 'P4DX','P4DY','P4DZ',
  72. & 'P5DX','P5DY','P5DZ',
  73. & 'P6DX','P6DY','P6DZ',
  74. & 'P7DX','P7DY','P7DZ',
  75. & 'P8DX','P8DY','P8DZ',
  76. & 'P9DX','P9DY','P9DZ'/
  77. C
  78. DATA NOMLIM /'P1 ',
  79. & 'P2 ',
  80. & 'P3 ',
  81. & 'P4 ',
  82. & 'P5 ',
  83. & 'P6 ',
  84. & 'P7 ',
  85. & 'P8 ',
  86. & 'P9 '/
  87. C
  88. C**** Les Includes
  89. C
  90.  
  91. -INC PPARAM
  92. -INC CCOPTIO
  93. -INC SMLMOTS
  94. -INC SMLREEL
  95. POINTEUR MLRECP.MLREEL, MLRECV.MLREEL
  96. POINTEUR MLMVIT.MLMOTS, MLMCOM.MLMOTS
  97. POINTEUR MLMESP.MLMOTS
  98. C
  99. C**** Initialisation des parametres d'erreur
  100. C
  101. LOGAN = .FALSE.
  102. LOGNEG = .FALSE.
  103. LOGBOR = .FALSE.
  104. MESERR = ' '
  105. MOTERR(1:40) = MESERR(1:40)
  106. VALER = 0.0D0
  107. VAL1 = 0.0D0
  108. VAL2 = 0.0D0
  109. C
  110. C**** Initialisation des NOMTOT
  111. C
  112. NOMTOT(1) = ' '
  113. NOMTOT(2) = ' '
  114. NOMTOT(3) = ' '
  115. NOMTOT(4) = ' '
  116. NOMTOT(5) = ' '
  117. NOMTOT(6) = ' '
  118. NOMTOT(7) = ' '
  119. NOMTOT(8) = ' '
  120. NOMTOT(9) = ' '
  121. C
  122. C**** Lecture de l'objet MODELE
  123. C
  124. ICOND = 1
  125. CALL QUETYP(TYPE,ICOND,IRETOU)
  126. CALL LIROBJ('MMODEL ',MMODEL,ICOND,IRETOU)
  127. CALL ACTOBJ('MMODEL ',MMODEL,1)
  128. IF(IERR.NE.0)GOTO 9999
  129. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  130. IF(IERR.NE.0)GOTO 9999
  131. C
  132. C**** Lecture du MELEME SPG des points CENTRE.
  133. C
  134. C
  135. C CALL LEKTAB(IDOMA,'CENTRE',IP)
  136. C
  137. C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  138. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  139. C -> la correspondance global des noeuds saut!
  140. C
  141. C On peut utilizer ACCTAB ou ACMO
  142. C
  143. MTYPR = 'MAILLAGE'
  144. CALL ACMO(IDOMA,'CENTRE',MTYPR,ICEN)
  145. IF(IERR.NE.0)GOTO 9999
  146. C
  147. C**** Lecture du MELEME 'FACE'
  148. C
  149. MTYPR = 'MAILLAGE'
  150. CALL ACMO(IDOMA,'FACE',MTYPR,IFACE)
  151. IF(IERR.NE.0)GOTO 9999
  152. C
  153. C**** Lecture du MELEME 'FACEL'
  154. C
  155. MTYPR = 'MAILLAGE'
  156. CALL ACMO(IDOMA,'FACEL',MTYPR,IFACEL)
  157. IF(IERR.NE.0)GOTO 9999
  158. C
  159. C**** Lecture du CHPOINT contenant les normales aux faces
  160. C
  161. IF(IDIM .EQ. 2)THEN
  162. C Que les normales
  163. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  164. IF(IERR .NE. 0) GOTO 9999
  165. JGN = 4
  166. JGM = 2
  167. SEGINI MLMVIT
  168. MLMVIT.MOTS(1) = 'UX '
  169. MLMVIT.MOTS(2) = 'UY '
  170. CALL QUEPO1(INORM, IFACE, MLMVIT)
  171. SEGSUP MLMVIT
  172. IF(IERR.NE.0)GOTO 9999
  173. ELSE
  174. C Les normales et les tangentes
  175. MTYPR = ' '
  176. CALL ACMO(IDOMA,'MATROT',MTYPR,INORM)
  177. IF (MTYPR .NE. 'CHPOINT ') THEN
  178. CALL MATRAN(IDOMA,INORM)
  179. IF(IERR .NE. 0) GOTO 9999
  180. ENDIF
  181. JGN = 4
  182. JGM = 9
  183. SEGINI MLMVIT
  184. MLMVIT.MOTS(1) = 'UX '
  185. MLMVIT.MOTS(2) = 'UY '
  186. MLMVIT.MOTS(3) = 'UZ '
  187. MLMVIT.MOTS(4) = 'RX '
  188. MLMVIT.MOTS(5) = 'RY '
  189. MLMVIT.MOTS(6) = 'RZ '
  190. MLMVIT.MOTS(7) = 'MX '
  191. MLMVIT.MOTS(8) = 'MY '
  192. MLMVIT.MOTS(9) = 'MZ '
  193. CALL QUEPO1(INORM, IFACE, MLMVIT)
  194. SEGSUP MLMVIT
  195. IF(IERR.NE.0)GOTO 9999
  196. C
  197. ENDIF
  198. C
  199. C**** N.B. On veut lire les objets sequentiellement.
  200. C Donc on utilise QUETYP pour controler que
  201. C le type de l'objet soit le bon.
  202. C
  203. C**** Lecture de la table des proprietes du gaz
  204. C
  205. ICOND = 1
  206. CALL QUETYP(MTYPR,ICOND,IRETOU)
  207. IF(IERR .NE. 0)GOTO 9999
  208. IF(MTYPR .NE. 'TABLE ')THEN
  209. C
  210. C******* Message d'erreur standard
  211. C 37 2
  212. C On ne trouve pas d'objet de type %m1:8
  213. C
  214. MOTERR(1:8) = 'TABLE '
  215. CALL ERREUR(37)
  216. GOTO 9999
  217. ELSE
  218. ICOND = 1
  219. CALL LIROBJ(MTYPR,IPGAS,ICOND,IRETOU)
  220. CALL ACTOBJ(MTYPR,IPGAS,1)
  221. IF(IERR .NE. 0)GOTO 9999
  222. ENDIF
  223. C
  224. C N.B: la table des propietes des gaz a ete deja controlle en PRIMIT
  225. C donc on ne la controlle pas ici!!!
  226. C
  227. C**** Les CPs
  228. C
  229. MTYPR = ' '
  230. CALL ACMO(IPGAS,'CP',MTYPR,ICP)
  231. IF(IERR .NE. 0)GOTO 9999
  232. C
  233. C**** Les CVs
  234. C
  235. MTYPR = ' '
  236. CALL ACMO(IPGAS,'CV',MTYPR,ICV)
  237. IF(IERR .NE. 0)GOTO 9999
  238. C
  239. C**** Les especes qui sont dans les Equations d'Euler
  240. C
  241. MTYPR = ' '
  242. CALL ACMO(IPGAS,'ESPEULE',MTYPR,MLMESP)
  243. IF(IERR .NE. 0)GOTO 9999
  244. C
  245. C**** Nom de l'espece qui n'est pas dans les equations d'Euler
  246. C
  247. MTYPI = 'MOT '
  248. MTYPR = 'MOT '
  249. CALL ACCTAB(IPGAS,MTYPI,IVALI,XVALI,'ESPNEULE',LOGII,IRETI,
  250. & MTYPR,IVALR,XVALR,CELLCH,LOGIR,IRETR)
  251. IF(IERR .NE. 0)GOTO 9999
  252. C
  253. C**** Control de compatibilite des donnes de la table
  254. C et creation des LISTREELs avec CP et CV
  255. C
  256. SEGACT MLMESP
  257. C
  258. C**** NESP = nombre d'especes dans lesequation d'Euler
  259. C
  260. NESP = MLMESP.MOTS(/2)
  261. C
  262. C**** List de CP et CV
  263. C
  264. JG = NESP+1
  265. SEGINI MLRECP
  266. SEGINI MLRECV
  267. DO I1 = 1, NESP
  268. C
  269. C******* N.B. NOMTOT est un CHARACTER*(4)
  270. C
  271. NOMTOT(1) = MLMESP.MOTS(I1)
  272. C
  273. C******* CALL ACMF(ICP,NOMC,CP) ne marche pas parce que on a
  274. C des blanches dans nos composantes
  275. C
  276. MTYPI = 'MOT '
  277. MTYPR = ' '
  278. CALL ACCTAB(ICP,MTYPI,IVALI,XVALI,NOMTOT(1), LOGII,IRETI,
  279. & MTYPR,IVALR,CP ,CHARR,LOGIR,IRETR)
  280. IF(IERR .NE. 0)GOTO 9999
  281. MLRECP.PROG(I1) = CP
  282. C
  283. MTYPI = 'MOT '
  284. MTYPR = ' '
  285. CALL ACCTAB(ICV,MTYPI,IVALI,XVALI,NOMTOT(1), LOGII,IRETI,
  286. & MTYPR,IVALR,CV ,CHARR,LOGIR,IRETR)
  287. IF(IERR .NE. 0)GOTO 9999
  288. MLRECV.PROG(I1) = CV
  289. ENDDO
  290. MTYPI = 'MOT '
  291. MTYPR = ' '
  292. CALL ACCTAB(ICP,MTYPI,IVALI,XVALI,CELLCH, LOGII,IRETI,
  293. & MTYPR,IVALR,CP ,CHARR,LOGIR,IRETR)
  294. IF(IERR .NE. 0)GOTO 9999
  295. MLRECP.PROG(JG) = CP
  296. C
  297. MTYPI = 'MOT '
  298. MTYPR = ' '
  299. CALL ACCTAB(ICV,MTYPI,IVALI,XVALI,CELLCH, LOGII,IRETI,
  300. & MTYPR,IVALR,CV ,CHARR,LOGIR,IRETR)
  301. IF(IERR .NE. 0)GOTO 9999
  302. MLRECV.PROG(JG) = CV
  303. C
  304. C**** Lecture du CHPOINT ROC
  305. C
  306. ICOND = 1
  307. CALL QUETYP(MTYPR,ICOND,IRETOU)
  308. IF(IERR .NE. 0)GOTO 9999
  309. IF(MTYPR .NE. 'CHPOINT ')THEN
  310. C
  311. C******* Message d'erreur standard
  312. C 37 2
  313. C On ne trouve pas d'objet de type %m1:8
  314. C
  315. MOTERR(1:8) = 'CHPOINT '
  316. CALL ERREUR(37)
  317. GOTO 9999
  318. ELSE
  319. ICOND = 1
  320. CALL LIROBJ(MTYPR,IROC,ICOND,IRETOU)
  321. CALL ACTOBJ(MTYPR,IROC,1)
  322. IF(IERR .NE. 0)GOTO 9999
  323. ENDIF
  324. C
  325. C**** Control du CHPOINT: QUEPOI
  326. C
  327. C INDIC = 1 -> on impose le pointeur du support geometrique (IM1)
  328. C INDIC = 0 -> on ne fait que verifier le support geometrique (IM1)
  329. C
  330. C NBCOMP > 0 -> numero des composantes
  331. C
  332. C NOMTOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  333. C
  334. INDIC = 1
  335. NBCOMP = 1
  336. NOMTOT(1) = 'SCAL'
  337. CALL QUEPOI(IROC, ICEN, INDIC, NBCOMP, NOMTOT)
  338. IF(IERR .NE. 0)THEN
  339. IERR0 = IERR
  340.  
  341. C
  342. C******* Message d'erreur standard
  343. C -301 0 %m1:40
  344. C
  345. MOTERR(1:40) = 'CHPO1 = ??? '
  346. CALL ERREUR(-301)
  347.  
  348. GOTO 9999
  349. ENDIF
  350. C
  351. C**** Lecture du CHPOINT GRADROC
  352. C
  353. ICOND = 1
  354. CALL QUETYP(MTYPR,ICOND,IRETOU)
  355. IF(IERR .NE. 0)GOTO 9999
  356. IF(MTYPR .NE. 'CHPOINT ')THEN
  357. C
  358. C******* Message d'erreur standard
  359. C 37 2
  360. C On ne trouve pas d'objet de type %m1:8
  361. C
  362. MOTERR(1:8) = 'CHPOINT '
  363. CALL ERREUR(37)
  364. GOTO 9999
  365. ELSE
  366. ICOND = 1
  367. CALL LIROBJ(MTYPR,IGRROC,ICOND,IRETOU)
  368. CALL ACTOBJ(MTYPR,IGRROC,1)
  369. IF (IERR.NE.0) GOTO 9999
  370. ENDIF
  371. C
  372. C**** Control du CHPOINT: QUEPOI
  373. C
  374. C INDIC = 1 -> on impose le pointeur du support geometrique (IM1)
  375. C INDIC = 0 -> on ne fait que verifier le support geometrique (IM1)
  376. C
  377. C NBCOMP = 2 -> on teste le noms des composantes
  378. C
  379. C NOMTOT(1) = ' ' obligatoire s'on connais pas les noms des composantes
  380. C
  381. JGN=4
  382. JGM=IDIM
  383. SEGINI MLMCOM
  384. MLMCOM.MOTS(1)='P1DX'
  385. MLMCOM.MOTS(2)='P1DY'
  386. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P1DZ'
  387. CALL QUEPO1(IGRROC, ICEN, MLMCOM)
  388. SEGSUP MLMCOM
  389. IF(IERR .NE. 0)THEN
  390. IERR0 = IERR
  391.  
  392. C
  393. C******* Message d'erreur standard
  394. C -301 0 %m1:40
  395. C
  396. MOTERR(1:40) = 'CHPO2 = ??? '
  397. CALL ERREUR(-301)
  398.  
  399. GOTO 9999
  400. ENDIF
  401. C
  402. C**** Lecture du CHPOINT IALROC
  403. C
  404. ICOND = 1
  405. CALL QUETYP(MTYPR,ICOND,IRETOU)
  406. IF(IERR .NE. 0)GOTO 9999
  407. IF(MTYPR .NE. 'CHPOINT ')THEN
  408. C
  409. C******* Message d'erreur standard
  410. C 37 2
  411. C On ne trouve pas d'objet de type %m1:8
  412. C
  413. MOTERR(1:8) = 'CHPOINT '
  414. CALL ERREUR(37)
  415. GOTO 9999
  416. ELSE
  417. ICOND = 1
  418. CALL LIROBJ(MTYPR,IALROC,ICOND,IRETOU)
  419. CALL ACTOBJ(MTYPR,IALROC,1)
  420. IF (IERR.NE.0) GOTO 9999
  421. ENDIF
  422. C
  423. C**** Control du CHPOINT: QUEPOI
  424. C
  425. INDIC = 1
  426. NBCOMP = 1
  427. NOMTOT(1) = 'P1'
  428. CALL QUEPOI(IALROC, ICEN, INDIC, NBCOMP, NOMTOT)
  429. IF(IERR .NE. 0)THEN
  430. IERR0 = IERR
  431.  
  432. C
  433. C******* Message d'erreur standard
  434. C -301 0 %m1:40
  435. C
  436. MOTERR(1:40) = 'CHPO3 = ??? '
  437. CALL ERREUR(-301)
  438.  
  439. GOTO 9999
  440. ENDIF
  441. C
  442. C
  443. C**** Lecture du CHPOINT VITC
  444. C
  445. ICOND = 1
  446. CALL QUETYP(MTYPR,ICOND,IRETOU)
  447. IF(IERR .NE. 0)GOTO 9999
  448. IF(MTYPR .NE. 'CHPOINT ')THEN
  449. C
  450. C******* Message d'erreur standard
  451. C 37 2
  452. C On ne trouve pas d'objet de type %m1:8
  453. C
  454. MOTERR(1:8) = 'CHPOINT '
  455. CALL ERREUR(37)
  456. GOTO 9999
  457. ELSE
  458. ICOND = 1
  459. CALL LIROBJ(MTYPR,IVITC,ICOND,IRETOU)
  460. CALL ACTOBJ(MTYPR,IVITC,1)
  461. IF (IERR.NE.0) GOTO 9999
  462. ENDIF
  463. C
  464. C**** Control du CHPOINT
  465. C
  466. JGN=4
  467. JGM=IDIM
  468. SEGINI MLMCOM
  469. MLMCOM.MOTS(1) = 'UX '
  470. MLMCOM.MOTS(2) = 'UY '
  471. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'UZ '
  472. CALL QUEPO1(IVITC, ICEN, MLMCOM)
  473. SEGSUP MLMCOM
  474. IF(IERR .NE. 0)THEN
  475. IERR0 = IERR
  476.  
  477. C
  478. C******* Message d'erreur standard
  479. C -301 0 %m1:40
  480. C
  481. MOTERR(1:40) = 'CHPO4 = ??? '
  482. CALL ERREUR(-301)
  483.  
  484. GOTO 9999
  485. ENDIF
  486. C
  487. C**** Lecture du CHPOINT GRADVITC
  488. C
  489. ICOND = 1
  490. CALL QUETYP(MTYPR,ICOND,IRETOU)
  491. IF(IERR .NE. 0)GOTO 9999
  492. IF(MTYPR .NE. 'CHPOINT ')THEN
  493. C
  494. C******* Message d'erreur standard
  495. C 37 2
  496. C On ne trouve pas d'objet de type %m1:8
  497. C
  498. MOTERR(1:8) = 'CHPOINT '
  499. CALL ERREUR(37)
  500. GOTO 9999
  501. ELSE
  502. ICOND = 1
  503. CALL LIROBJ(MTYPR,IGRVC,ICOND,IRETOU)
  504. CALL ACTOBJ(MTYPR,IGRVC,1)
  505. IF (IERR.NE.0) GOTO 9999
  506. ENDIF
  507. C
  508. C**** Control du CHPOINT: QUEPOI
  509. C
  510. JGN=4
  511. IF(IDIM .EQ. 2)THEN
  512. JGM=4
  513. SEGINI MLMCOM
  514. MLMCOM.MOTS(1) = 'P1DX'
  515. MLMCOM.MOTS(2) = 'P1DY'
  516. MLMCOM.MOTS(3) = 'P2DX'
  517. MLMCOM.MOTS(4) = 'P2DY'
  518. ELSE
  519. JGM=9
  520. SEGINI MLMCOM
  521. MLMCOM.MOTS(1) = 'P1DX'
  522. MLMCOM.MOTS(2) = 'P1DY'
  523. MLMCOM.MOTS(3) = 'P1DZ'
  524. MLMCOM.MOTS(4) = 'P2DX'
  525. MLMCOM.MOTS(5) = 'P2DY'
  526. MLMCOM.MOTS(6) = 'P2DZ'
  527. MLMCOM.MOTS(7) = 'P3DX'
  528. MLMCOM.MOTS(8) = 'P3DY'
  529. MLMCOM.MOTS(9) = 'P3DZ'
  530. ENDIF
  531. CALL QUEPO1(IGRVC, ICEN, MLMCOM)
  532. SEGSUP MLMCOM
  533. IF(IERR .NE. 0)THEN
  534. IERR0 = IERR
  535.  
  536. C
  537. C******* Message d'erreur standard
  538. C -301 0 %m1:40
  539. C
  540. MOTERR(1:40) = 'CHPO5 = ??? '
  541. CALL ERREUR(-301)
  542.  
  543. GOTO 9999
  544. ENDIF
  545. C
  546. C**** Lecture du CHPOINT IALVC
  547. C
  548. ICOND = 1
  549. CALL QUETYP(MTYPR,ICOND,IRETOU)
  550. IF(IERR .NE. 0)GOTO 9999
  551. IF(MTYPR .NE. 'CHPOINT ')THEN
  552. C
  553. C******* Message d'erreur standard
  554. C 37 2
  555. C On ne trouve pas d'objet de type %m1:8
  556. C
  557. MOTERR(1:8) = 'CHPOINT '
  558. CALL ERREUR(37)
  559. GOTO 9999
  560. ELSE
  561. ICOND = 1
  562. CALL LIROBJ(MTYPR,IALVC,ICOND,IRETOU)
  563. CALL ACTOBJ(MTYPR,IALVC,1)
  564. IF (IERR.NE.0) GOTO 9999
  565. ENDIF
  566. C
  567. C**** Control du CHPOINT: QUEPOI
  568. C
  569. JGN=4
  570. JGM=IDIM
  571. SEGINI MLMCOM
  572. MLMCOM.MOTS(1) = 'P1 '
  573. MLMCOM.MOTS(2) = 'P2 '
  574. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P3 '
  575. CALL QUEPO1(IALVC, ICEN, MLMCOM)
  576. SEGSUP MLMCOM
  577. IF(IERR .NE. 0)THEN
  578. IERR0 = IERR
  579.  
  580. C
  581. C******* Message d'erreur standard
  582. C -301 0 %m1:40
  583. C
  584. MOTERR(1:40) = 'CHPO6 = ??? '
  585. CALL ERREUR(-301)
  586.  
  587. GOTO 9999
  588. ENDIF
  589. C
  590. C**** Lecture du CHPOINT PC
  591. C
  592. ICOND = 1
  593. CALL QUETYP(MTYPR,ICOND,IRETOU)
  594. IF(IERR .NE. 0)GOTO 9999
  595. IF(MTYPR .NE. 'CHPOINT ')THEN
  596. C
  597. C******* Message d'erreur standard
  598. C 37 2
  599. C On ne trouve pas d'objet de type %m1:8
  600. C
  601. MOTERR(1:8) = 'CHPOINT '
  602. CALL ERREUR(37)
  603. GOTO 9999
  604. ELSE
  605. ICOND = 1
  606. CALL LIROBJ(MTYPR,IPC,ICOND,IRETOU)
  607. CALL ACTOBJ(MTYPR,IPC,1)
  608. IF (IERR.NE.0) GOTO 9999
  609. ENDIF
  610. C
  611. C**** Control du CHPOINT
  612. C
  613. INDIC = 1
  614. NBCOMP = 1
  615. NOMTOT(1) = 'SCAL'
  616. CALL QUEPOI(IPC, ICEN, INDIC, NBCOMP, NOMTOT)
  617. IF(IERR .NE. 0)THEN
  618. IERR0 = IERR
  619.  
  620. C
  621. C******* Message d'erreur standard
  622. C -301 0 %m1:40
  623. C
  624. MOTERR(1:40) = 'CHPO7 = ??? '
  625. CALL ERREUR(-301)
  626.  
  627. GOTO 9999
  628. ENDIF
  629. C
  630. C**** Lecture du CHPOINT GRADPC
  631. C
  632. ICOND = 1
  633. CALL QUETYP(MTYPR,ICOND,IRETOU)
  634. IF(IERR .NE. 0)GOTO 9999
  635. IF(MTYPR .NE. 'CHPOINT ')THEN
  636. C
  637. C******* Message d'erreur standard
  638. C 37 2
  639. C On ne trouve pas d'objet de type %m1:8
  640. C
  641. MOTERR(1:8) = 'CHPOINT '
  642. CALL ERREUR(37)
  643. GOTO 9999
  644. ELSE
  645. ICOND = 1
  646. CALL LIROBJ(MTYPR,IGRPC,ICOND,IRETOU)
  647. CALL ACTOBJ(MTYPR,IGRPC,1)
  648. IF (IERR.NE.0) GOTO 9999
  649. ENDIF
  650. C
  651. C**** Control du CHPOINT: QUEPOI
  652. C
  653. C
  654. JGN=4
  655. JGM=IDIM
  656. SEGINI MLMCOM
  657. MLMCOM.MOTS(1)='P1DX'
  658. MLMCOM.MOTS(2)='P1DY'
  659. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P1DZ'
  660. CALL QUEPO1(IGRPC, ICEN, MLMCOM)
  661. IF(IERR .NE. 0)THEN
  662. IERR0 = IERR
  663.  
  664. C
  665. C******* Message d'erreur standard
  666. C -301 0 %m1:40
  667. C
  668. MOTERR(1:40) = 'CHPO8 = ??? '
  669. CALL ERREUR(-301)
  670.  
  671. GOTO 9999
  672. ENDIF
  673. C
  674. C**** Lecture du CHPOINT IALPC
  675. C
  676. ICOND = 1
  677. CALL QUETYP(MTYPR,ICOND,IRETOU)
  678. IF(IERR .NE. 0)GOTO 9999
  679. IF(MTYPR .NE. 'CHPOINT ')THEN
  680. C
  681. C******* Message d'erreur standard
  682. C 37 2
  683. C On ne trouve pas d'objet de type %m1:8
  684. C
  685. MOTERR(1:8) = 'CHPOINT '
  686. CALL ERREUR(37)
  687. GOTO 9999
  688. ELSE
  689. ICOND = 1
  690. CALL LIROBJ(MTYPR,IALPC,ICOND,IRETOU)
  691. CALL ACTOBJ(MTYPR,IALPC,1)
  692. IF (IERR.NE.0) GOTO 9999
  693. ENDIF
  694. C
  695. C**** Control du CHPOINT: QUEPOI
  696. C
  697. INDIC = 1
  698. NBCOMP = 1
  699. NOMTOT(1) = 'P1'
  700. CALL QUEPOI(IALPC, ICEN, INDIC, NBCOMP, NOMTOT)
  701. IF(IERR .NE. 0)THEN
  702. IERR0 = IERR
  703.  
  704. C
  705. C******* Message d'erreur standard
  706. C -301 0 %m1:40
  707. C
  708. MOTERR(1:40) = 'CHPO9 = ??? '
  709. CALL ERREUR(-301)
  710.  
  711. GOTO 9999
  712. ENDIF
  713. C
  714. C**** Lecture du CHPOINT YC
  715. C
  716. ICOND = 1
  717. CALL QUETYP(MTYPR,ICOND,IRETOU)
  718. IF(IERR .NE. 0)GOTO 9999
  719. IF(MTYPR .NE. 'CHPOINT ')THEN
  720. C
  721. C******* Message d'erreur standard
  722. C 37 2
  723. C On ne trouve pas d'objet de type %m1:8
  724. C
  725. MOTERR(1:8) = 'CHPOINT '
  726. CALL ERREUR(37)
  727. GOTO 9999
  728. ELSE
  729. ICOND = 1
  730. CALL LIROBJ(MTYPR,IYC,ICOND,IRETOU)
  731. CALL ACTOBJ(MTYPR,IYC,1)
  732. IF (IERR.NE.0) GOTO 9999
  733. ENDIF
  734. C
  735. C**** Control du CHPOINT
  736. C
  737. CALL QUEPO1(IYC, ICEN, MLMESP)
  738. IF(IERR .NE. 0)THEN
  739. IERR0 = IERR
  740.  
  741. C
  742. C******* Message d'erreur standard
  743. C -301 0 %m1:40
  744. C
  745. MOTERR(1:40) = 'CHPO10 = ??? '
  746. CALL ERREUR(-301)
  747.  
  748. GOTO 9999
  749. ENDIF
  750. C
  751. C**** Lecture du CHPOINT GRADYC
  752. C
  753. ICOND = 1
  754. CALL QUETYP(MTYPR,ICOND,IRETOU)
  755. IF(IERR .NE. 0)GOTO 9999
  756. IF(MTYPR .NE. 'CHPOINT ')THEN
  757. C
  758. C******* Message d'erreur standard
  759. C 37 2
  760. C On ne trouve pas d'objet de type %m1:8
  761. C
  762. MOTERR(1:8) = 'CHPOINT '
  763. CALL ERREUR(37)
  764. GOTO 9999
  765. ELSE
  766. ICOND = 1
  767. CALL LIROBJ(MTYPR,IGRYC,ICOND,IRETOU)
  768. CALL ACTOBJ(MTYPR,IGRYC,1)
  769. IF (IERR.NE.0) GOTO 9999
  770. ENDIF
  771. C
  772. C**** Control du CHPOINT: QUEPOI
  773. C
  774. JGN=4
  775. JGM=IDIM*NESP
  776. SEGINI MLMCOM
  777. C NESP < 10
  778. IF(NESP .GE. 10)THEN
  779. WRITE(IOIMP,*) 'NESP >= 10!'
  780. C
  781. C******* Message d'erreur standard
  782. C 21 2
  783. C Données incompatibles
  784. C
  785. CALL ERREUR(21)
  786. GOTO 9999
  787. ENDIF
  788. C
  789. ICEL = 0
  790. DO I1 = 1, NESP, 1
  791. DO I2 = 1, IDIM
  792. ICEL = ICEL + 1
  793. ICOM = 3 * (I1 -1) + I2
  794. MLMCOM.MOTS(ICEL) = NOMGRA(ICOM)
  795. ENDDO
  796. ENDDO
  797. CALL QUEPO1(IGRYC, ICEN, MLMCOM)
  798. SEGSUP MLMCOM
  799. IF(IERR .NE. 0)THEN
  800. IERR0 = IERR
  801.  
  802. C
  803. C******* Message d'erreur standard
  804. C -301 0 %m1:40
  805. C
  806. MOTERR(1:40) = 'CHPO11 = ??? '
  807. CALL ERREUR(-301)
  808.  
  809. GOTO 9999
  810. ENDIF
  811. C
  812. C**** Lecture du CHPOINT IALYC
  813. C
  814. ICOND = 1
  815. CALL QUETYP(MTYPR,ICOND,IRETOU)
  816. IF(IERR .NE. 0)GOTO 9999
  817. IF(MTYPR .NE. 'CHPOINT ')THEN
  818. C
  819. C******* Message d'erreur standard
  820. C 37 2
  821. C On ne trouve pas d'objet de type %m1:8
  822. C
  823. MOTERR(1:8) = 'CHPOINT '
  824. CALL ERREUR(37)
  825. GOTO 9999
  826. ELSE
  827. ICOND = 1
  828. CALL LIROBJ(MTYPR,IALYC,ICOND,IRETOU)
  829. CALL ACTOBJ(MTYPR,IALYC,1)
  830. IF (IERR.NE.0) GOTO 9999
  831. ENDIF
  832. C
  833. C**** Control du CHPOINT: QUEPOI
  834. C
  835. JGN = 4
  836. JGM = NESP
  837. SEGINI MLMCOM
  838. DO I1 = 1, NESP, 1
  839. MLMCOM.MOTS(I1)=NOMLIM(I1)
  840. ENDDO
  841. CALL QUEPO1(IALYC, ICEN, MLMCOM)
  842. SEGSUP MLMCOM
  843. IF(IERR .NE. 0)THEN
  844. IERR0 = IERR
  845.  
  846. C
  847. C******* Message d'erreur standard
  848. C -301 0 %m1:40
  849. C
  850. MOTERR(1:40) = 'CHPO12 = ??? '
  851. CALL ERREUR(-301)
  852.  
  853. GOTO 9999
  854. ENDIF
  855. C
  856. C**** Lecture du CHPOINT GAMC
  857. C
  858. ICOND = 1
  859. CALL QUETYP(MTYPR,ICOND,IRETOU)
  860. IF(IERR .NE. 0)GOTO 9999
  861. IF(MTYPR .NE. 'CHPOINT ')THEN
  862. C
  863. C******* Message d'erreur standard
  864. C 37 2
  865. C On ne trouve pas d'objet de type %m1:8
  866. C
  867. MOTERR(1:8) = 'CHPOINT '
  868. CALL ERREUR(37)
  869. GOTO 9999
  870. ELSE
  871. ICOND = 1
  872. CALL LIROBJ(MTYPR,IGAMC,ICOND,IRETOU)
  873. CALL ACTOBJ(MTYPR,IGAMC,1)
  874. IF (IERR.NE.0) GOTO 9999
  875. ENDIF
  876. C
  877. C**** Control du CHPOINT
  878. C
  879. INDIC = 1
  880. NBCOMP = 1
  881. NOMTOT(1) = 'SCAL'
  882. CALL QUEPOI(IGAMC, ICEN, INDIC, NBCOMP, NOMTOT)
  883. IF(IERR .NE. 0)THEN
  884. IERR0 = IERR
  885.  
  886. C
  887. C******* Message d'erreur standard
  888. C -301 0 %m1:40
  889. C
  890. MOTERR(1:40) = 'CHPO10 = ??? '
  891. CALL ERREUR(-301)
  892.  
  893. GOTO 9999
  894. ENDIF
  895. IF(ORDTEM .EQ. 1)THEN
  896. C
  897. C******* Deux Dimensions, Une Espece, 2er ordre en espace, 1er ordre en
  898. C temps
  899. C
  900. LOGTEM = .FALSE.
  901. DELTAT = 0.0D0
  902. ELSE
  903. LOGTEM = .TRUE.
  904. ICOND = 1
  905. CALL LIRREE(DELTAT,ICOND,IRETOU)
  906. IF(IERR .NE. 0)GOTO 9999
  907. ENDIF
  908. IF(IDIM .EQ. 2)THEN
  909. C
  910. C******* Deux Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  911. C temps
  912. C
  913. CALL PRE221(LOGTEM,
  914. & ICEN,IFACE,IFACEL,INORM,
  915. & IROC, IGRROC, IALROC,
  916. & IVITC, IGRVC, IALVC,
  917. & IPC ,IGRPC, IALPC,
  918. & MLRECV, MLRECP, MLMESP,
  919. & IYC ,IGRYC, IALYC,
  920. & IGAMC,
  921. & DELTAT,
  922. & IROF,IVITF,IPF,IGAMF,IYF,
  923. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  924. ELSE
  925. C
  926. C******* Trois Dimensions, Une Espece, 1er ordre en espace, 1er ordre en
  927. C temps
  928. C
  929. CALL PRE222(LOGTEM,
  930. & ICEN,IFACE,IFACEL,INORM,
  931. & IROC, IGRROC, IALROC,
  932. & IVITC, IGRVC, IALVC,
  933. & IPC ,IGRPC, IALPC,
  934. & MLRECV, MLRECP, MLMESP,
  935. & IYC ,IGRYC, IALYC,
  936. & IGAMC,
  937. & DELTAT,
  938. & IROF,IVITF,IPF,IGAMF,IYF,
  939. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  940. ENDIF
  941. C
  942. C**** Messages d'erreur
  943. C
  944. IF(LOGAN)THEN
  945. C
  946. C******* Anomalie detectée
  947. C
  948. C
  949. C******* Message d'erreur standard
  950. C -301 0
  951. C %m1:40
  952. C
  953. MOTERR(1:40) = MESERR(1:40)
  954. CALL ERREUR(-301)
  955. C
  956. C******* Message d'erreur standard
  957. C 5 3
  958. C Erreur anormale.contactez votre support
  959. C
  960. CALL ERREUR(5)
  961. GOTO 9999
  962. C
  963. ELSEIF(LOGNEG)THEN
  964. C
  965. C******* Message d'erreur standard
  966. C 41 2
  967. C %m1:8 = %r1 inférieur à %r2
  968. C
  969. MOTERR(1:8) = MESERR(1:8)
  970. REAERR(1) = REAL(VALER)
  971. REAERR(2) = 0.0
  972. CALL ERREUR(41)
  973. GOTO 9999
  974. ELSEIF(LOGBOR)THEN
  975. C
  976. C******* Message d'erreur standard
  977. C 42 2
  978. C %m1:8 = %r1 non compris entre %r2 et %r3
  979. C
  980. MOTERR(1:8) = MESERR(1:8)
  981. REAERR(1) = REAL(VALER)
  982. REAERR(2) = REAL(VAL1)
  983. REAERR(3) = REAL(VAL2)
  984. CALL ERREUR(42)
  985. GOTO 9999
  986. ELSE
  987. C
  988. C******* Ecriture de ROF, VITF, PF, YF, GAMMAF
  989. C
  990. MTYPR = 'MCHAML '
  991. CALL ACTOBJ(MTYPR,IGAMF,1)
  992. CALL ACTOBJ(MTYPR,IYF,1)
  993. CALL ACTOBJ(MTYPR,IPF,1)
  994. CALL ACTOBJ(MTYPR,IVITF,1)
  995. CALL ACTOBJ(MTYPR,IROF,1)
  996.  
  997. CALL ECROBJ(MTYPR,IGAMF)
  998. CALL ECROBJ(MTYPR,IYF)
  999. CALL ECROBJ(MTYPR,IPF)
  1000. CALL ECROBJ(MTYPR,IVITF)
  1001. CALL ECROBJ(MTYPR,IROF)
  1002. ENDIF
  1003. C
  1004. 9999 CONTINUE
  1005. END
  1006.  
  1007.  
  1008.  
  1009.  

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